找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机啤酒瓶计数原理图+程序

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. void T0_init();
  3. unsigned char code table[]={0xC0,0XF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  4. unsigned char dat_T=0,aa;
  5. unsigned int counter=0;
  6. unsigned char dat_Q=0;

  7. void delay(unsigned int time)
  8. {
  9.         unsigned int i,j;
  10.         for(i=0;i<time;i++)
  11.                 for(j=0;j<120;j++)
  12.                 ;
  13. }

  14. void display1()
  15. {

  16.         P2=0x01;
  17.         P1=table[dat_T/10];
  18.         delay(10);

  19.         P2=0x02;
  20.         P1=table[dat_T%10];
  21.         delay(10);
  22.        

  23.         P2=0x04;
  24.         P1=table[dat_Q/10];               
  25.         delay(10);

  26.         P2=0x08;
  27.         P1=table[dat_Q%10];
  28.         delay(10);

  29. }

  30. void calspeed()
  31. {
  32.         if(aa>=20) //20*50ms=1s计算一次          or aa==20
  33.         {       
  34.         dat_T=counter;
  35.         counter=0;//清零脉冲数       
  36.         aa=0; //清零标志
  37.         }
  38. }
  39. main()
  40. {
  41.         EA  = 1;        //开总中断
  42.         EX0=1;                  //外部中断0
  43.         IT0=1;                //下降沿方式  触发方式
  44.         TMOD = 0x01;                                   //定时器0 工作方式一
  45.         TH0= (65536 - 50000)/256;           //定时50ms
  46.         TL0= (65536 - 50000)%256;
  47.         ET0 = 0;        //定时器开关
  48.         TR0 = 1;                                          
  49.         while(1)
  50.         {
  51.          display1();
  52.          calspeed();          
  53.          }
  54.                
  55. }
  56. void T0_init()        interrupt 1          //定时器中断0
  57. {

  58.         TH0 = (65536-50000)/256;
  59.         TL0 = (65536-50000)%256;
  60.         aa++;               
  61. }
  62. void int0() interrupt 0           //外部中断0
  63. {

  64.          dat_T++;
  65.          if(dat_T>11)
  66.         {
  67.                 dat_Q++;
  68.                 dat_T=0;
  69.         }
  70. }
复制代码

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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