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

標題: 基于51單片機的數字時鐘 [打印本頁]

作者: 哎呀3264    時間: 2018-9-20 09:27
標題: 基于51單片機的數字時鐘
以前做的一個基于51單片機的數字時鐘,有四個按鍵,可以設置時間、設置鬧鐘,增加時間,減少時間。


單片機源程序:
  1. main.c
  2. #include "bsp.h"

  3. void main()
  4. {
  5.         bsp_init();
  6.         while(1)
  7.         {
  8.          key_scan();         //三個按鍵各自的實現
  9.          set_showvalue();         //按下一個按鍵,將時間變成可以在數碼管上顯示的數
  10.                  bsp_scan();         //將時間送到數碼管上顯示
  11.                  delay(1);
  12.   }
  13. }


  14. bsp_key.c
  15. #include"bsp.h"
  16. sbit P1_0=P1^0;    //時鐘暫停鍵
  17. sbit P1_1=P1^1;
  18. sbit P1_2=P1^2;    //增加一秒
  19. sbit P1_3=P1^3;    //減少一秒



  20. void key_scan(void)
  21. {
  22.   
  23.   if(P1_0==0)        //此鍵實現暫停  
  24.   {
  25.     delay(5);
  26.         if(P1_0==0)
  27.         {
  28.           TR0=0;//定時器啟動位關閉
  29.         }
  30.   }
  31.   
  32.   
  33.   if(P1_1==0)       //此鍵設置鬧鐘
  34.   {
  35.     delay(5);
  36.         if(P1_1==0)
  37.         {
  38.           TR0=1; //定時器啟動位開啟
  39.         }
  40.   }
  41.   
  42.   
  43.   if(P1_2==0)     //此鍵實現時間的一秒的增加
  44.   {
  45.     delay(5);
  46.         if(P1_2==0)
  47.         {  
  48.           delay(5);
  49.           while(!P1_2);    //消除按鍵抖動
  50.           delay(5);
  51.           while(!P1_2);
  52.           sec++;
  53.           if(sec==60)
  54.       {
  55.             sec=0;
  56.                 min++;
  57.                 if(min==60)
  58.                 {
  59.                   min=0;
  60.                   hour++;
  61.                   if(hour==24)
  62.                   {
  63.                     hour=0;
  64.                   }
  65.                 }
  66.       }
  67.         }
  68. }
  69.   
  70.   
  71.   
  72.   
  73.   if(P1_3==0)      //此鍵實現時間一秒的減少
  74.   {
  75.     delay(5);
  76.         if(P1_3==0)
  77.         {
  78.           delay(5);                       
  79.           while(!P1_3);
  80.           delay(5);
  81.           while(!P1_3);
  82.           sec--;
  83.           if(sec==0)
  84.           {
  85.            sec=59;
  86.                 if(min==0)
  87.                 {
  88.                   min=59;
  89.                   if(hour==0)
  90.                   {
  91.                     hour=23;
  92.                         min=59;
  93.                         sec=59;
  94.                   }
  95.                   else
  96.                   {
  97.                     hour--;
  98.                   }
  99.                 }
  100.                    else
  101.                 {
  102.                         min--;
  103.                 }
  104.           }
  105.         }
  106.   }
  107. }

  108. bsp_seg.c
  109. #include "bsp.h"
  110. code char WEI[6]={0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};       //位選碼
  111. code char DUAN[11]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0XFF};
  112. unsigned char show[6]={0x00};


  113. void bsp_scan(void)
  114. {
  115.         static unsigned char index =0;
  116.         P2=WEI[index];     //1101 1111
  117.         P0=show[index];   //P0 = DUAN[[index];   顯示固定的0-5
  118.         index++;
  119.         if(index==6)
  120.         index=0;
  121.        
  122. /*        P2 = WEI[0];         //顯示自己的生日
  123.         P0 = DUAN[9];
  124.         delay(1);
  125.         P2 = WEI[1];
  126.         P0 = DUAN[6];
  127.         delay(1);
  128.         P2 = WEI[2];
  129.         P0 = DUAN[1];
  130.         delay(1);
  131.         P2 = WEI[3];
  132.         P0 = DUAN[0];
  133.         delay(1);
  134.         P2 = WEI[4];
  135.         P0 = DUAN[3];
  136.         delay(1);
  137.         P2 = WEI[5];
  138.         P0 = DUAN[0];
  139.         delay(1); */
  140.        
  141. }



  142. void set_showvalue(void)
  143. {
  144.         show[0]=DUAN[hour/10];//小時的十位
  145.         show[1]=DUAN[hour%10];//小時的個位
  146.        
  147.         show[2]=DUAN[min/10];
  148.         show[3]=DUAN[min%10];
  149.        
  150.         show[4]=DUAN[sec/10];
  151.         show[5]=DUAN[sec%10];
  152. }

  153. bsp_timer.c
  154. #include "bsp.h"


  155. unsigned char tick0=0;
  156. unsigned char  sec=0,min=0,hour=0;


  157. void Time0_Init(void)   //定時器0初始化
  158. {
  159.         TMOD |= 0X01;            //方式一,軟件清零
  160.         TH0=(65536-50000)/256;      //50ms
  161.         TL0=(65536-50000)%256;
  162.            EA=1;
  163.     ET0=1;
  164.     TR0=1;
  165. }



  166. void INT_TIME0() interrupt 1
  167. {
  168.         TH0=(65536-50000)/256;
  169.         TL0=(65536-50000)%256;
  170.         tick0++;
  171.         if(tick0==20)
  172.         {
  173.                 tick0=0;
  174.             sec++;
  175.             if(sec==60)
  176.                 {
  177.            sec=0;
  178.                    min++;
  179.                 if(min==60)
  180.                         {
  181.                         min=0;
  182.                         hour++;
  183.                     {
  184.                  if(hour=24)
  185.                                  hour=0;
  186.             }
  187.                                         }
  188.                         }
  189.     }
  190. }

  191. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼



仿真和源碼下載:
數字時鐘源程序.zip (56.6 KB, 下載次數: 135)
數字時鐘protues仿真.zip (81.03 KB, 下載次數: 108)





作者: 蠟筆不懂小辛    時間: 2018-11-4 13:27
謝謝,學到了
作者: 劉天一    時間: 2018-12-27 11:16
學到了
作者: 1582441671    時間: 2018-12-29 08:59
寫的太好了,感謝樓主分享

作者: aasdasdvv    時間: 2021-6-1 14:19
受益頗多,多謝樓主的分享




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一级黄色大片 | 青青草视频免费在线观看 | 日韩av免费在线 | 亚洲高清视频在线 | 日韩专区中文字幕 | 免费视频a | 日韩伦理一区 | 在线伊人网 | 亚洲国产成人在线 | 99精品久久久久久中文字幕 | av不卡在线| 国产精品suv一区二区 | www.精品 | 999久久久 | 深夜福利在线播放 | 亚洲综合视频在线观看 | 伊人久久精品视频 | 午夜精品在线 | 欧美69视频 | 午夜你懂的 | 欧美日本在线观看 | 日韩一区在线播放 | 中文字幕在线观看网址 | 亚洲国产激情 | 免费观看一区二区三区毛片 | 香蕉看片| 久久国产精品免费 | 在线播放毛片 | 日批视频免费在线观看 | 国产精品久久一区二区三区 | 可以看毛片的网站 | 日韩一区不卡 | 精品日韩av | 日韩欧美中文 | 国产女人18毛片水18精品 | 黄色在线免费看 | 国产成人a亚洲精品 | 国产福利精品视频 | 国产精品1234 | 色综合天天综合网国产成人网 | 久操精品 |