欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機音樂倒數(shù)計數(shù)器程序

[復(fù)制鏈接]
ID:967186 發(fā)表于 2021-12-6 00:02 | 顯示全部樓層 |閱讀模式
字符型LCD(16×2)顯示器,顯示格式為“TIME 分分:秒秒”。
⑵ 用4個按鍵操作來設(shè)置當(dāng)前想要倒計數(shù)的時間。
   ⑶ 一旦按下鍵則開始倒計數(shù),當(dāng)計數(shù)為0時,發(fā)出一陣音樂聲。
   ⑷ 程序執(zhí)行后工作指示燈LCD閃動,表示程序開始執(zhí)行,按下操作鍵K1~K4動作如下:
            ● K1---可調(diào)整倒計數(shù)的時間1~60分鐘。
            ● K2---設(shè)置倒計數(shù)的時間為5分鐘,顯示“0500”。
            ● K3---設(shè)置倒計數(shù)的時間為10分鐘,顯示“1000”。
            ● K4--設(shè)置倒計數(shù)的時間為20分鐘,顯示“2000”
   ⑸ 復(fù)位后LCD的畫面應(yīng)能顯示倒計時的分鐘和秒數(shù),此時按K1鍵,則在LCD上顯示出設(shè)置畫面。此時,若:
   ● 按K2鍵---增加倒計數(shù)的時間1分鐘。
   ● 按K2鍵---減少倒計數(shù)的時間1分鐘。
   ● 按K4鍵---設(shè)置完成。
01.jpg
51hei.png 51hei.png

單片機源程序如下:
  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. /////////延時函數(shù)///////
  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寫命令函數(shù)//////
  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寫數(shù)據(jù)函數(shù)//////
  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處理函數(shù)///////
  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處理函數(shù)//////
  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處理函數(shù)//////
  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處理函數(shù)//////
  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. //////初始化函數(shù)//////
  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. }
復(fù)制代碼



評分

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

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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