找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1597|回復(fù): 0
收起左側(cè)

單片機(jī)啤酒瓶計(jì)數(shù)原理圖+程序

[復(fù)制鏈接]
ID:661343 發(fā)表于 2019-12-11 11:06 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
批注 2019-12-11 110207.png

單片機(jī)源程序如下:
  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計(jì)算一次          or aa==20
  33.         {       
  34.         dat_T=counter;
  35.         counter=0;//清零脈沖數(shù)       
  36.         aa=0; //清零標(biāo)志
  37.         }
  38. }
  39. main()
  40. {
  41.         EA  = 1;        //開總中斷
  42.         EX0=1;                  //外部中斷0
  43.         IT0=1;                //下降沿方式  觸發(fā)方式
  44.         TMOD = 0x01;                                   //定時(shí)器0 工作方式一
  45.         TH0= (65536 - 50000)/256;           //定時(shí)50ms
  46.         TL0= (65536 - 50000)%256;
  47.         ET0 = 0;        //定時(shí)器開關(guān)
  48.         TR0 = 1;                                          
  49.         while(1)
  50.         {
  51.          display1();
  52.          calspeed();          
  53.          }
  54.                
  55. }
  56. void T0_init()        interrupt 1          //定時(shí)器中斷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. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表