找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1572|回复: 0
打印 上一主题 下一主题
收起左侧

单片机啤酒瓶计数实验源程序+Proteus仿真

[复制链接]
跳转到指定楼层
楼主
实验说明:在源程序中计算初值为0xf7,运用定时计数的方式2对程序进行计数,当程序开始运行,每按下一次按键(即每装一瓶啤酒)LED显示的计数就会+1直到8为止,当装满8瓶时再加1时LED的计数溢出就会跳转到0,这时相当于装满了9瓶,程序停止。直到下一箱啤酒开始装箱,依次反复进行。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg52.h>
  2. char led[]={0x3f,0x06,0x5b,0x4f,0x66,
  3.             0x6d,0x7d,0x07,0x7f,0x6f};  //led显示字模
  4. sbit P37=P3^7;
  5. sbit P34=P3^4;
  6. void delay(unsigned int time)  //约4ms的延时函数
  7. {
  8.   unsigned int j;
  9.   for (;time>0;time--);
  10.     for (j=0;j<500;j++);
  11. }

  12. void t0() interrupt 1
  13. {
  14.   TR0=0;           //停止计数
  15.   P37=0;           //启动电机运转
  16.   delay(1000); //延时,等待下一空箱运转到位待装啤酒
  17.   P37=1;           //停止电机运转
  18.   TR0=1;           //启动计数
  19. }
  20. /**********主函数**************/
  21. void main()
  22. {
  23. char i;
  24. TMOD=0x06;                //T0计数方式
  25. TL0=0xf7;                //计数初值247
  26. TH0=0xf7;
  27. TR0=1;                        //启动T0计数
  28. ET0=1;                   //开中断
  29. EA=1;
  30. P37=1;                        //停止电机运转
  31. while(1)
  32. {
  33.   i=256-TL0;          //获取计数差值
  34.   P0=led[9-i];          //显示已装了多少啤酒
  35.   delay(1000);
  36.   if(i==1)                 //是否已经装了(9-1)=8瓶
  37.   {
  38.    while(P34==1);  //等待装最后一瓶
  39.    P0=0x71;                        //显示已经装满符号
  40.    delay(100);
  41.   }
  42. }
  43. }
复制代码

所有资料51hei提供下载:
9瓶装啤酒瓶.zip (69.34 KB, 下载次数: 15)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表