标题: 51单片机自动售水机程序 [打印本页]

作者: 李春雨    时间: 2020-2-9 21:53
标题: 51单片机自动售水机程序


单片机源程序如下:
  1. #include "stc.h"
  2. #include "button.h"
  3. #include "smg.h"
  4. #include "AT24C02.h"
  5. sbit led1=P0^0;
  6. sbit bell=P0^6;
  7. sbit relay=P0^4;  
  8. unsigned char flag_s7,flag_s6;
  9. int money=0,amount=0;//价格 容量
  10. unsigned char count,flag_count;
  11. unsigned char state;         //控制数码管两种显示界面 按键控制
  12. #define EXE_EN P2 = (P2&0X1F)|0XA0;  P2 &= 0X1F
  13. void init_time0()          //1微妙加1
  14. {
  15.         TMOD=0x01;
  16.         TH0=(65536-50000)/256;//定时50ms
  17.         TL0=(65536-50000)%256;
  18.         ET0=1;
  19.         //TR0=1;
  20.         EA=1;
  21. }
  22. void time0() interrupt 1
  23. {
  24.    TH0=(65536-50000)/256;
  25.    TL0=(65536-50000)%256;
  26.    count++;
  27.    if(count==20)
  28.    {
  29.    count=0;
  30.    flag_count=1;
  31.    }
  32. }
  33. void key()
  34. {
  35.         unsigned char kk=keyboard();
  36.         unsigned char guan=get_lux(0x41);

  37.         if(guan<64)
  38.         {
  39.             P0=0xff;
  40.             P2&=0x1f;
  41.             P2|=0x80;
  42.             led1=0;//灯l2亮   
  43.                 P2&=0x1f;       
  44.         }
  45.         if(guan>=64)
  46.         {
  47.                 P0=0xff;
  48.             P2&=0x1f;
  49.             P2|=0x80;
  50.             led1=1;//灯l1灭   
  51.                 P2&=0x1f;
  52.         }
  53.         if(kk==7)
  54.         {
  55.         flag_s7=1;
  56.         state=1;
  57.         TR0=1;                  //启动定时器
  58.         }
  59.         if(kk==6)
  60.         {
  61.                 flag_s6=1;
  62.                 state=2;
  63.         }
  64.         if(flag_s7)
  65.         {
  66.           flag_s7=0;bell=0;relay=1;EXE_EN;             
  67.         }
  68.         if(flag_s6)
  69.         {
  70.          TR0=0;                 //关闭定时器
  71.          flag_s6=0;bell=0;relay=0;EXE_EN;
  72.         }
  73.         if(state==1)
  74.         {
  75.             display_s(1,0); display(2,5); display(3,0);
  76.                 display(4,amount/100); display_s(5,amount%100/10); display(6,amount%10); display(7,0);
  77.         }
  78.         if(state==2)
  79.         {
  80.                 display_s(1,0); display(2,5); display(3,0);
  81.                 display(4,money/1000); display_s(5,money%1000/100); display(6,money%100/10); display(7,money%10);
  82.         }

  83.         if(flag_count==1)
  84.         {
  85.                 flag_count=0;
  86.                 money=money+5;
  87.                 amount=amount+1;
  88.         }
  89.         if(amount==9990){flag_s6=1;state=2;}
  90. }
  91. void main()
  92. {
  93.     init_time0();
  94.         while(1)
  95.         {
  96.           key();
  97.         }
  98. }
复制代码


所有资料51hei提供下载:
自动售水机.rar (540.59 KB, 下载次数: 42)



作者: zjywzxz    时间: 2020-2-10 22:33
不错呀
作者: ileile    时间: 2020-6-9 13:08
请问有protues的仿真图吗?
作者: ileile    时间: 2020-6-9 13:09
楼主是不是ZBDX的呀
作者: 13317970316    时间: 2020-10-10 13:46
你写这个程序花了多长时间?
作者: 夏一    时间: 2020-10-22 22:39
不会用




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1