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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機LED時鐘無法進行第二次功能設置

[復制鏈接]
跳轉到指定樓層
樓主
ID:555243 發表于 2019-6-30 16:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
第四次開始按下kgnxz后,調整秒分時沒有反應,是不是要加清零,我在鍵盤掃描的最后加過,沒反應

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<absacc.h>
  4. sbit kgnxz=P3^0; //功能選擇鍵,按一次設定時間,按兩次設定鬧鐘時間,按三次又顯示時間表  
  5. sbit ksec=P3^1;//調整秒
  6. sbit kmin=P3^2;//調整分
  7. sbit khour=P3^3;//調整時
  8. sbit kzh=P3^4;//24與12小時制轉換
  9. sbit bear=P1^0;//蜂鳴器控制口
  10. unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0,flag=0,//flag是按鍵的計數
  11.                secshi1=0,secge1=0,minshi1=0,minge1=0,hourshi1=0,hourge1=0;//定義存儲時間和鬧鐘時分秒的個位和十位
  12. unsigned int num=0,sec=0,min=0,hour=0,sec1=30,min1=0,hour1=1, num1=0;//定義時間和鬧鐘的時分秒
  13. unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數碼管段控口
  14. void keyscan();//鍵盤掃描函數
  15. void display();//時鐘顯示函數
  16. void display1();//鬧鐘顯示函數
  17. void clock();//鬧鐘函數即蜂鳴器函數
  18. /***延時函數****/
  19. void delay(unsigned char z)
  20. {unsigned char x,y;
  21.   for(x=z;x>0;x--)
  22.    for(y=255;y>0;y--);
  23. }
  24. /***中斷函數****/
  25. void time0() interrupt 1
  26. {num++;
  27. TH0=(65536-50000)/256;
  28. TL0=(65536-50000)%256;
  29. if(num==20)
  30.    {num=0;
  31.     sec++;
  32.     if(sec==60)
  33.      {sec=0;
  34.       min++;
  35.       if(min==60)
  36.         {min=0;
  37.          hour++;
  38.          if(hour==24)
  39.            {hour=0;
  40.             }
  41.          }
  42.       }
  43.   display(); }
  44. }
  45. /******時鐘顯示函數******/
  46. void display()
  47. {
  48. secge=sec%10;
  49. secshi=sec/10;
  50. minge=min%10;
  51. minshi=min/10;
  52. hourge=hour%10;
  53. hourshi=hour/10;
  54. P2=0xfe;
  55. P0=table[secge];
  56. delay(5);
  57. P2=0xfd;
  58. P0=table[secshi];
  59. delay(5);
  60. P2=0xfb;
  61. P0=0x40;
  62. delay(5);
  63. P2=0xf7;
  64. P0=table[minge];
  65. delay(5);
  66. P2=0xef;
  67. P0=table[minshi];
  68. delay(5);
  69. P2=0xdf;
  70. P0=0x40;
  71. delay(5);
  72. P2=0xbf;
  73. P0=table[hourge];
  74. delay(5);
  75. P2=0x7f;
  76. P0=table[hourshi];
  77. delay(5);
  78. }
  79. /*****鬧鐘顯示函數****/
  80. void display1()
  81. {
  82. secge1=sec1%10;
  83. secshi1=sec1/10;
  84. minge1=min1%10;
  85. minshi1=min1/10;
  86. hourge1=hour1%10;
  87. hourshi1=hour1/10;
  88. P2=0xfe;
  89. P0=table[secge1];
  90. delay(10);
  91. P2=0xfd;
  92. P0=table[secshi1];
  93. delay(15);
  94. P2=0xfb;
  95. P0=0x40;
  96. delay(15);
  97. P2=0xf7;
  98. P0=table[minge1];
  99. delay(15);
  100. P2=0xef;
  101. P0=table[minshi1];
  102. delay(15);
  103. P2=0xdf;
  104. P0=0x40;
  105. delay(15);
  106. P2=0xbf;
  107. P0=table[hourge1];
  108. delay(15);
  109. P2=0x7f;
  110. P0=table[hourshi1];
  111. delay(15);
  112. }
  113. /*****鍵盤掃描********/
  114. void keyscan()
  115. {if(kgnxz==0)     //功能選擇鍵是否按下
  116.     {  delay(10);//延時消抖         
  117.     if(kgnxz==0)//再次判斷鍵是否按下         
  118.       {flag++;}    //計數,功能選擇鍵按鍵次數加一      
  119.       while(!kgnxz);} //釋放鍵  
  120.    if(flag==1)//功能選擇鍵
  121.    {if(ksec==0)//秒調整鍵
  122.    {delay(10);//延時消抖   
  123.     if(ksec==0)//再次判斷鍵是否按下
  124.       {sec++;//秒加加
  125.        if(sec>=60)//如果秒大于60
  126.        sec=0;//秒清零
  127.        }
  128.   while(ksec==0)//釋放鍵
  129.   display();}
  130.   if(kmin==0)
  131.     {delay(100);
  132.      if(kmin==0)
  133.        {min++;
  134.         if(min>=60)
  135.         min=0;
  136.         }
  137.   while(kmin==0)
  138.   display();
  139.      }
  140.   if(khour==0)
  141.     {delay(100);
  142.      if(khour==0)
  143.        {hour++;
  144.         if(hour==24)
  145.         hour=0;
  146.         }
  147.   while(khour==0)
  148.   display();
  149.   }
  150. }
  151. if(flag==2)//鬧鐘調整
  152.      {if(ksec==0)
  153.         {delay(50);
  154.          if(ksec==0)
  155.           {sec1++;
  156.           if(sec1==60)
  157.            sec1=0;}
  158.            while(!ksec)
  159.            {display1();delay(50);}         
  160.          }
  161.       if(kmin==0)
  162.          {delay(50);
  163.            if(kmin==0)
  164.              {min1++;
  165.              if(min1==60)
  166.                min1=0;}
  167.            while(!kmin)
  168.            {display1();}
  169.          }
  170.        if(khour==0)
  171.          {delay(50);
  172.             if(khour==0)
  173.              {hour1++;
  174.              if(hour1==24)
  175.               hour1=0;}
  176.              while(!khour)
  177.              {display1();} } }}
  178. /*****蜂鳴器*********/
  179. void clock()
  180.    {    unsigned int i;
  181.        for(i=1000;i>0;i--)
  182.         {bear=1;
  183.         P1=0xfe;
  184.         delay(10);
  185.         bear=0;
  186.         P1=0xff;
  187.         delay(10);}}
  188. /*****24轉12小時制*********/  
  189. void to12()
  190. {if(hour>=12)
  191.     {hour=hour-12;}
  192.   if(hour1>=12)
  193.     {hour1=hour1-12;}}
  194. /*****主函數********/
  195. main()
  196. {TMOD=0x01;
  197. TH0=(65536-50000)/256;
  198. TL0=(65536-50000)%256;
  199. EA=1;ET0=1;TR0=1;
  200. while(1)
  201. {      
  202. keyscan();display();
  203. if(flag==1) {keyscan(); display();}
  204. if(flag==2) {keyscan(); display1();}
  205. if(flag==3)  {display();}
  206. if((hour==hour1)&&(min==min1)&&(sec==sec1))
  207.    {clock();}//鬧鐘設定時間與時鐘時間相等,調用蜂鳴器函數
  208. if(kzh==0){to12();}
  209. }
  210. }
復制代碼




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

使用道具 舉報

沙發
ID:213173 發表于 2019-7-1 06:44 | 只看該作者
希望對你有所幫助
數碼管時鐘長短按調整點閃爍+鬧鐘仿真.zip (118.54 KB, 下載次數: 11)

回復

使用道具 舉報

板凳
ID:573345 發表于 2019-7-1 14:39 | 只看該作者
我感覺應該在kgnxz這個按鍵掃描里對flag進行范圍確認,即清零。可以試一下是否可行
回復

使用道具 舉報

地板
ID:555243 發表于 2019-7-2 12:01 | 只看該作者
wulin 發表于 2019-7-1 06:44
希望對你有所幫助

好的,謝謝哈
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美综合精品久久成人 | 亚洲毛片| 亚洲精品日韩一区二区电影 | 91免费在线视频 | 国产美女黄色 | 欧美激情一区 | 国产日韩一区二区三区 | 中文字幕在线精品 | 欧美白人做受xxxx视频 | 99精品一区二区三区 | 欧美精品久久久久久久久老牛影院 | 免费一区 | 五月婷婷色 | 亚洲成人福利在线观看 | 九九久久久 | 欧美精品一区二区三区在线 | 日韩视频一区二区在线 | 国产内谢 | 国产一区二区在线播放视频 | 欧美一级黑人aaaaaaa做受 | 成年人在线观看视频 | 性高湖久久久久久久久3小时 | 最新午夜综合福利视频 | 韩日精品一区 | 做a视频在线观看 | 中文字幕精品一区二区三区在线 | 综合在线视频 | 国产精品久久福利 | 秋霞在线一区 | 在线观看你懂的网站 | 午夜视频网 | 91社区视频 | www.天天操 | 久久鲁视频 | 中文字幕一区在线观看视频 | 国产一级一片免费播放 | 韩日在线 | 日韩精品免费视频 | 亚洲精品在线视频 | 国产精品欧美一区二区 | 国产日韩欧美激情 |