久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3187|回復: 0
打印 上一主題 下一主題
收起左側

單片機音樂倒數計數器程序

[復制鏈接]
跳轉到指定樓層
樓主
字符型LCD(16×2)顯示器,顯示格式為“TIME 分分:秒秒”。
⑵ 用4個按鍵操作來設置當前想要倒計數的時間。
   ⑶ 一旦按下鍵則開始倒計數,當計數為0時,發出一陣音樂聲。
   ⑷ 程序執行后工作指示燈LCD閃動,表示程序開始執行,按下操作鍵K1~K4動作如下:
            ● K1---可調整倒計數的時間1~60分鐘。
            ● K2---設置倒計數的時間為5分鐘,顯示“0500”。
            ● K3---設置倒計數的時間為10分鐘,顯示“1000”。
            ● K4--設置倒計數的時間為20分鐘,顯示“2000”
   ⑸ 復位后LCD的畫面應能顯示倒計時的分鐘和秒數,此時按K1鍵,則在LCD上顯示出設置畫面。此時,若:
   ● 按K2鍵---增加倒計數的時間1分鐘。
   ● 按K2鍵---減少倒計數的時間1分鐘。
   ● 按K4鍵---設置完成。



單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define time 100
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uint t,flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60;
  7. uchar num,j,i,k=0;
  8. uchar code table[]="TIME   00:00";
  9. uint code table1[]={64580,64684,64777,64820,64898,64968,65030};
  10. sbit key1=P3^2;
  11. sbit key2=P3^3;
  12. sbit key3=P3^4;
  13. sbit key4=P3^5;
  14. sbit P1_5=P2^5;
  15. sbit RS=P2^0;
  16. sbit RW=P2^1;
  17. sbit E=P2^2;
  18. sbit led_red=P1^0;
  19. void write_time(uint addr,uint date);
  20. /////////延時函數///////
  21. void delay(uint z)
  22. {
  23.         uint x,y;
  24.         for(x=z;x>0;x--)
  25.                 for(y=110;y>0;y--);
  26. }
  27. ///////延時1S////////////
  28. void delay1(void)
  29. {
  30.     uchar a,b,c;
  31.     for(c=13;c>0;c--)
  32.         for(b=247;b>0;b--)
  33.             for(a=142;a>0;a--);
  34.   
  35. }
  36. ////////1602寫命令函數//////
  37. void write_com(uchar com)
  38. {
  39.         RS=0;
  40.         P0=com;
  41.         delay(5);
  42.         E=1;
  43.         delay(10);
  44.         E=0;
  45. }
  46. //////1602寫數據函數//////
  47. void write_date(uchar date)
  48. {
  49.         RS=1;
  50.         P0=date;
  51.         delay(5);
  52.         E=1;
  53.         delay(10);
  54.         E=0;
  55. }
  56. //////按鍵1處理函數///////
  57. void KEY1()
  58. {
  59.     while(flag1)
  60.         {
  61.             if(key2==0)
  62.                 {
  63.                     delay(time);
  64.                         if(key2==0)
  65.                         {  
  66.                             if(minute<=60)
  67.                                 minute=minute+1;
  68.                                 write_time(7,minute);
  69.                         }
  70.                 }
  71.                 if(key3==0)
  72.                 {
  73.                     delay(time);
  74.                         if(key3==0)
  75.                         {
  76.                             if(minute>0)
  77.                         minute=minute-1;
  78.                                 write_time(7,minute);
  79.                         }
  80.                 }
  81.                 if(key4==0||key5==0)
  82.                 {
  83.                     delay(150);
  84.                         if(key4==0||key5==0)
  85.                         {
  86.                         flag1=0;
  87.                                 flag =1;
  88.                                 TR0=1;
  89.                         }
  90.                 }
  91.         }
  92. }
  93. //////按鍵2處理函數//////
  94. void KEY2()
  95. {
  96.     minute=5;
  97.         write_time(7,minute);
  98.         while(flag2)
  99.         {
  100.             if(key5==0)
  101.                     {
  102.                             delay(time);
  103.                                 if(key5==0)
  104.                                 {
  105.                                     flag2=0;
  106.                                         flag =1;
  107.                                         TR0=1;
  108.                                 }
  109.                         }
  110.         }
  111. }
  112. //////按鍵3處理函數//////
  113. void KEY3()
  114. {
  115.     minute=10;
  116.         write_time(7,minute);
  117.         while(flag3)
  118.         {
  119.             if(key5==0)
  120.                     {
  121.                             delay(time);
  122.                                 if(key5==0)
  123.                                 {
  124.                                     flag3=0;
  125.                                         flag =1;
  126.                                         TR0=1;
  127.                                 }
  128.                         }
  129.         }
  130. }
  131. //////按鍵4處理函數//////
  132. void KEY4()
  133. {
  134.     minute=20;
  135.         write_time(7,minute);
  136.         while(flag4)
  137.         {
  138.             if(key5==0)
  139.                     {
  140.                             delay(150);
  141.                                 if(key5==0)
  142.                                 {
  143.                                     flag4=0;
  144.                                         flag =1;
  145.                                         TR0=1;
  146.                                 }
  147.                         }
  148.         }
  149. }

  150. void write_time(uint addr,uint date)
  151. {
  152.     uint ge,shi;
  153.         ge=date%10;
  154.         shi=date/10;
  155.     write_com(0x80+addr);
  156.         write_date(0x30+shi);
  157.         write_date(0x30+ge);
  158.         if(addr==7&&date==0)
  159.             j=1;
  160.         if(j==1&&addr==10&&date==0)
  161.         {
  162.             flag0=1;
  163.             TR0=0;
  164.                 TR1=1;
  165.                 flag5=1;
  166.         }
  167.             
  168. }

  169. //////初始化函數//////
  170. void init()
  171. {
  172.     P1=0xff;
  173.         RW=0;
  174.         write_com(0x38);
  175.         write_com(0x0c);
  176.         write_com(0x06);
  177.         write_com(0x80);
  178.         TMOD=0x11;
  179.         TH0=(65536-50000)/256;
  180.         TL0=(65536-50000)%256;
  181.         TH1=0xfc;
  182.         TL1=0x44;
  183.         ET1=1;
  184.         ET0=1;
  185. //        TR1=1;
  186. //        TR0=1;
  187.         EA=1;
  188.         flag0=1;
  189.         for(num=0;num<12;num++)
  190.         {
  191.                 write_date(table[num]);
  192.                 delay(20);
  193.         }
  194. }

  195. void start()
  196. {
  197.         if(key1==0)
  198.         {       
  199.             delay(time);
  200.                 if(key1==0)
  201.                 {       
  202.                     flag0=0;
  203.                     flag1=1;
  204.                     KEY1();
  205.                 }
  206.         }
  207.         if(key2==0)
  208.         {
  209.                 delay(time);
  210.                 if(key2==0)
  211.                 {
  212.                     flag0=0;
  213.                     flag2=1;
  214.                         KEY2();
  215.                 }
  216.         }
  217.         if(key3==0)
  218.         {
  219.                 delay(time);
  220.                 if(key3==0)
  221.                 {
  222.                         flag0=0;
  223.                     flag3=1;
  224.                         KEY3();
  225.                 }
  226.         }
  227.         if(key4==0)
  228.         {
  229.                 delay(150);
  230.                 if(key4==0)
  231.                 {
  232.                     flag0=0;
  233.                     flag4=1;
  234.                         KEY4();
  235.                 }
  236.         }
  237. }

  238. void write_time0()
  239. {
  240.         minute=minute-1;
  241.         write_time(7,minute);
  242.         write_time(10,59);
  243.         flag=0;   
  244. }

  245. void counter()
  246. {
  247.         if(t==20)
  248.         {
  249.                 led_red=led_red^1;
  250.                 if(flag==1)
  251.                 write_time0();
  252.                 t=0;
  253.             second=second-1;

  254.                 write_time(10,second);
  255.                 if(k==1&&second==59)
  256.                 {
  257.                     if(minute>0)                 
  258.                           minute=minute-1;
  259.                         write_time(7,minute);
  260.                 }
  261.                 if(second==0)
  262.                 {       
  263.                     k=1;
  264.                         second=60;
  265.                 }
  266.         }
  267. }

  268. int main()
  269. {
  270.     init();
  271.     while(1)
  272.         {
  273.             while(flag0)
  274.                 start();
  275.                 counter();
  276.                 while(flag5)
  277.                 {
  278.                         delay1();
  279.                     i++;
  280.                     if(i>7)
  281.                             i=0;
  282.                 }
  283.         }
  284.         return 0;
  285. }

  286. void inter0()  interrupt 1
  287. {
  288.         TH0=(65536-50000)/256;
  289.         TL0=(65536-50000)%256;
  290.         t++;
  291. }

  292. void initer1() interrupt 3
  293. {
  294.         TH1=table1[i]/256;
  295.         TL1=table1[i]%256;
  296.         P1_5=~P1_5;
  297.         if(key5==0)
  298.         {
  299.             delay(100);
  300.                 if(key5==0)
  301.                 {
  302.                   TR1=0;
  303.                         flag5=0;
  304.                         k=0;
  305.                         j=0;
  306.                 }
  307.         }
  308. }
復制代碼



評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美视频一区 | 午夜视频一区二区三区 | 成人精品一区亚洲午夜久久久 | 日本在线视频一区二区 | 在线视频亚洲 | 国产精品免费在线 | 日韩欧美网 | 国产免费播放视频 | 国产精品成人一区二区三区 | 久久久av| 久久黄色网 | 一区二区三区四区在线视频 | 久久久久久久国产 | 国产美女视频一区 | 欧美日韩久 | 国产激情毛片 | 日韩精品一区二区久久 | 在线观看亚洲一区二区 | 视频精品一区二区三区 | 欧洲一区二区三区 | 国产一级一级毛片 | 国产激情视频在线免费观看 | 国产成人自拍一区 | 亚洲区视频| 日本亚洲精品成人欧美一区 | 一区二区三区观看视频 | 日本不卡一区二区三区 | 日韩午夜在线播放 | 欧美一级视频免费看 | 久久久久久成人 | 日韩欧美一级精品久久 | 乱码av午夜噜噜噜噜动漫 | 精品国产乱码久久久久久88av | 超碰导航 | 精品久久国产老人久久综合 | 亚洲一区二区三区免费在线 | 成人免费视频观看 | 中文字幕av网站 | 国产精品久久久久影院色老大 | 青青草网站在线观看 | 日韩亚洲一区二区 |