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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1854|回復: 2
收起左側

單片機電子時鐘修改時間的按鍵沒有作用?哪位大佬幫忙看一下?

[復制鏈接]
ID:418072 發表于 2019-4-23 18:51 | 顯示全部樓層 |閱讀模式
修改時間的按鍵沒有作用 哪位大佬幫忙看一下?
0.png

單片機源程序如下:

  1. #include <reg51.h>
  2. #include "lcd1602.h"
  3. #include "ds1302.h"
  4. #include "ds18b20.h"
  5. #include "delay.h"


  6. #define uint unsigned int
  7. #define uchar unsigned char

  8. void play1();
  9. void play2();

  10. sbit key1=P3^3;
  11. sbit key2=P3^4;
  12. sbit key3=P3^5;
  13. sbit key4=P3^6;
  14. sbit key5=P2^4;

  15. sbit LED=P1^4;
  16. sbit LED1=P1^3;
  17. sbit Beef=P2^0;

  18. uchar sec;
  19. unsigned int Temp;
  20. unsigned int TMP;
  21. unsigned char flag=0;
  22. unsigned char flag1=0;
  23. unsigned char num,count,key4num,key5num;

  24. unsigned char shi=21,fen=55,miao=0;




  25. uchar code tone1[]={
  26. 115,115,102,115,86,91,115,115,102,115,77,86,
  27. 115,115,57,68,86,91,102,61,61,68,86,77,86,0};


  28. uchar code beat1[]={
  29. 3,1,4,4,4,8,3,1,4,4,4,8,
  30. 3,1,4,4,4,4,4,3,1,4,4,4,8,0
  31. };


  32. uchar code tone2[]={
  33. 77,91,77,57,68,57,77,77,115,102,91,102,115,102,
  34. 77,91,11,57,61,68,57,77,77,102,91,86,121,115,0};


  35. uchar code beat2[]={
  36. 2,1,1,4,2,2,4,2,1,1,2,1,1,8,
  37. 2,1,1,2,2,2,2,4,2,1,1,2,2,8,0
  38. };

  39. void play1()
  40. {
  41. uint i=0,j,k;
  42. while(beat1[i]!=0||tone1[i]!=0)       
  43. {
  44. for(j=0;j<beat1[i]*50;j++)
  45. {
  46.    Beef=~Beef;
  47.    for(k=0;k<tone1[i];k++);
  48. }
  49.      Delay_1ms();
  50.          i++;
  51. }
  52. }

  53.         void play2()
  54. {
  55. uint i=0,j,k;
  56. while(beat2[i]!=0||tone2[i]!=0)       
  57. {
  58. for(j=0;j<beat2[i]*50;j++)
  59. {
  60.    Beef=~Beef;
  61.    for(k=0;k<tone2[i];k++);
  62. }
  63.      Delay_1ms();
  64.          i++;
  65. }
  66. }

  67. void display_temp();

  68. void delay(uint n)  
  69. {
  70.     uchar  a,b,c,d;
  71. for(d=n;d>0;d--)
  72.     for(c=1;c>0;c--)
  73.         for(b=222;b>0;b--)
  74.             for(a=12;a>0;a--);
  75. }

  76. void display_time()
  77. {
  78.            LCD1602_num(2,7,BCD_hex(TIME[0]) );//秒         
  79.         LCD1602_char(2,6,':');
  80.         LCD1602_num(2,4,BCD_hex(TIME[1])); //分
  81.         LCD1602_char(2,3,':');
  82.         LCD1602_num(2,1,BCD_hex(TIME[2])); //時

  83.         LCD1602_num(1,7,BCD_hex(TIME[3]) );//日          
  84.         LCD1602_char(1,6,'/');
  85.         LCD1602_num(1,4,BCD_hex(TIME[4])); //月
  86.         LCD1602_char(1,3,'/');
  87.         LCD1602_num(1,1,BCD_hex(TIME[6])); //年
  88.     LCD1602_num(1,12,BCD_hex(TIME[5]-1));//周
  89. }
  90. void display_temp(unsigned int dat)
  91. {
  92.            LCD1602_string(1,10,"W:");
  93.         LCD1602_char(1,15,'0'+sec/10%10);
  94.         LCD1602_char(1,16,'0'+sec%10);
  95.         LCD1602_char(2,10,dat/100%10+'0');
  96.         LCD1602_char(2,11,dat/10%10+'0');
  97.         LCD1602_char(2,12,'.');
  98.         LCD1602_char(2,13,dat%10+'0');
  99.         LCD1602_char(2,14,'C');
  100. }
  101. void Time0_init()
  102. {
  103. TMOD=0x01; //定時器0工作在模式1,
  104. TH0=(65536-50000)/256; //高8位=60
  105. TL0=(65536-50000)%256; //低8位
  106. TR0=1; //開定時器0
  107. ET0=1; //使能定時器0中斷
  108. EA=1; //開總中斷
  109. }

  110. void display_nz()
  111. {
  112.           LCD1602_num(2,7,miao);//秒         
  113.         LCD1602_char(2,6,':');
  114.         LCD1602_num(2,4,fen); //分
  115.         LCD1602_char(2,3,':');
  116.         LCD1602_num(2,1,shi); //時
  117. }


  118.        
  119. void main(void)
  120. {
  121.         LCD1602_init();   //初始化
  122. //        Ds1302InitTime();
  123.         Init_DS18B20();//初始化ds1820
  124.         Ds1302ReadTime();
  125.         Readtemp();
  126.          sec=60;
  127.    
  128.         while(1)
  129.         {
  130.                              if(BCD_hex(TIME[1])==fen&&BCD_hex(TIME[2])==shi)
  131.                 {
  132.                   LED1=0;
  133.                   Beef=0;

  134.                 }
  135.                 else
  136.                 {
  137.                 LED1=1;
  138.                 Beef=1;
  139.                 }
  140.                 if(Temp>260&&Temp<300)
  141.                 {
  142.                   LED=0;

  143.                 }
  144.                 else
  145.                 {
  146.                 LED=1;
  147.                 }


  148. if(key5==0)
  149.     {
  150.      Delay_1ms();
  151.         if(key5==0)
  152.         {
  153.           key5num++;
  154.         if(key5num>=4)
  155.         {
  156.         key5num=0;
  157.         }
  158.         }         
  159.         }


  160.         if(key5num==1)
  161.         {
  162.         delay(100) ;
  163.            sec--;
  164.         }
  165.         if(key5num==2)
  166.         {
  167.          delay(30);
  168.     play1();
  169.         delay(3000);       
  170.         }
  171.         if(key5num==3)
  172.         {
  173.          delay(30);
  174.     play2();
  175.         delay(3000);       
  176.         }

  177.        
  178.                


  179.                 if(flag==0)          //不修改時間就讀取時間顯示時間
  180.                 {
  181.                         Ds1302ReadTime(); ;          //讀取時間
  182.                         display_time();         //顯示時間
  183.                 }
  184.                 else         //修改時間
  185.                 {
  186.                         if(key2==0)
  187.                         {
  188.                            Delay_1ms();
  189.                            if(key2==0 )
  190.                            {
  191.                                 fen++;
  192.                                 if(fen==60)
  193.                                  fen=0;
  194.                                  
  195.                            }
  196.                         }
  197.                         if(key3==0)
  198.                         {
  199.                            Delay_1ms();
  200.                            if(key3==0)
  201.                            {
  202.                                  fen--;
  203.                                  if(fen==-1)
  204.                                  fen=59;
  205.                                
  206.                            }
  207.                         }
  208. //                   display_time();
  209.                    display_nz();                   //顯示修改當前時間
  210.                 }

  211.                 Temp=Readtemp();//讀取溫度
  212.                 display_temp(Temp);        //顯示溫度

  213. if(key4==0)
  214.     {
  215.      Delay_1ms();
  216.         if(key4==0)
  217.         {
  218.           key4num++;
  219.         if(key4num>=6)
  220.         {
  221.         key4num=0;
  222.         }
  223.         }         
  224.         }


  225.         if(key4num==1)
  226.         {
  227.          Delay_1ms();
  228.                 if(key2==0)
  229.         {
  230.                  Delay_1ms();
  231.              TMP=BCD_hex(TIME[1]);
  232.                  TMP++;       
  233.                  hex_BCD(TIME[1]);
  234.         }
  235.                 if(key3==0)
  236.         {
  237.          Delay_1ms();
  238.               TMP=BCD_hex(TIME[1]);
  239.                  TMP--;       
  240.                  hex_BCD(TIME[1]);
  241.         }  
  242.         }
  243.        
  244.        
  245.         if(key4num==2)
  246.         {
  247.          Delay_1ms();
  248.                 if(key2==0)
  249.         {
  250.                  Delay_1ms();
  251.                TMP=BCD_hex(TIME[2]);
  252.                    TMP++;       
  253.                  hex_BCD(TIME[2]);
  254.         }  
  255.                 if(key3==0)
  256.         {
  257.                  Delay_1ms();
  258.                TMP=BCD_hex(TIME[2]);
  259.                  TMP--;       
  260.                  hex_BCD(TIME[2]);
  261.         }  
  262.         }
  263.        
  264.        
  265.                 if(key4num==3)
  266.         {
  267.          Delay_1ms();
  268.                 if(key2==0)
  269.         {
  270.                  Delay_1ms();
  271.                TMP=BCD_hex(TIME[3]);
  272.                  TMP++;       
  273.                  hex_BCD(TIME[3]);
  274.         }  
  275.                 if(key3==0)
  276.         {
  277.                  Delay_1ms();
  278.                TMP=BCD_hex(TIME[3]);
  279.                  TMP--;       
  280.                  hex_BCD(TIME[3]);
  281.         }  
  282.         }
  283.        
  284.        
  285.        
  286.                 if(key4num==4)
  287.         {
  288.          Delay_1ms();
  289.                 if(key2==0)
  290.         {
  291.                  Delay_1ms();
  292.                TMP=BCD_hex(TIME[4]);
  293.                  TMP++;       
  294.                  hex_BCD(TIME[4]);
  295.         }  
  296.                 if(key3==0)
  297.         {
  298.                  Delay_1ms();
  299.               TMP=BCD_hex(TIME[4]);
  300.                  TMP--;       
  301.                  hex_BCD(TIME[4]);
  302.         }  
  303.         }

  304.        
  305.                 if(key4num==5)
  306.         {
  307.          Delay_1ms();
  308.                 if(key2==0)
  309.         {
  310.                  Delay_1ms();
  311.                TMP=BCD_hex(TIME[6]);
  312.                  TMP++;       
  313.                  hex_BCD(TIME[6]);
  314.         }  
  315.                 if(key3==0)
  316.         {
  317.                  Delay_1ms();
  318.                TMP=BCD_hex(TIME[6]);
  319.                  TMP--;       
  320.                  hex_BCD(TIME[6]);
  321.         }  
  322.         }
  323.             }


  324.                 if(key1==0)                        //++1s
  325.                 {
  326.                   Delay_1ms();
  327.                            if(key1==0)
  328.                         {
  329.                                 flag=!flag;
  330.                                 Ds1302InitTime();
  331.                         }
  332.                 }
  333.     /*888888888888888888888888888888888888888888*/

  334.                 if(key4==0)                        //++1s
  335.                 {
  336.                   Delay_1ms();
  337.                            if(key4==0)
  338.                         {
  339.                                 flag1=!flag1;
  340.                         }
  341.                 }

  342.          }

  343.        
  344.            /*888888888888888888888888888888888888888888*/
  345.          
復制代碼

所有資料51hei提供下載:
電子時鐘.zip (151.06 KB, 下載次數: 8)
回復

使用道具 舉報

ID:96682 發表于 2019-4-23 23:48 | 顯示全部樓層
按鍵與 GND  沒有節點
回復

使用道具 舉報

ID:434390 發表于 2019-4-24 08:55 | 顯示全部樓層
你得先測量IO電壓,送開按鍵是否高(是否需要上拉),按下按鍵是否低(接地是否可靠),在檢查寄存器與IO口是否對應
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费看91 | 欧美一区二区三区 | 在线观看精品视频网站 | 中文字幕免费观看 | 亚洲一一在线 | 国产精品不卡一区 | 永久网站| 夜夜操av | 91精品一区二区三区久久久久久 | 国产区高清 | 欧美亚洲国产成人 | 亚洲欧美日韩电影 | 国产成人精品区一区二区不卡 | 国产精品视频网站 | 精品亚洲永久免费精品 | 国产日韩欧美精品一区二区 | 国产精品自产拍在线观看蜜 | 亚洲一区二区高清 | 欧美国产日韩在线观看 | 一区二区三区在线 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕一页二页 | 毛片.com | 日本久久一区二区三区 | 日日干干 | 久久久久久国产精品三区 | 麻豆一区一区三区四区 | 三级高清 | 中文字幕亚洲视频 | 久久99精品国产 | 永久免费av | 日韩第一区 | av在线免费看网址 | 日日夜夜草 | 亚洲国产一区在线 | 日本精品久久 | 久在线 | 国产精品一区二区三区在线 | 亚州中文 | 日本三级全黄三级三级三级口周 | 黄色大片免费观看 |