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

標題: 單片機四位數碼管可調時鐘 [打印本頁]

作者: chaoxing889    時間: 2018-6-14 16:56
標題: 單片機四位數碼管可調時鐘
四位數碼管可調時鐘(1)

/**** 本程序中,晶振為12MHz,           ****/
/**** 時間控制采用定時中斷控制方式。  ****/
/**** 模式和時間調整采用查詢方式。    ****/

  1. #include<reg52.h>

  2. sbit P20=P2^0;              //分個位控制端
  3. sbit P21=P2^1;              //分十位控制端
  4. sbit P22=P2^2;              //時個位控制端
  5. sbit P23=P2^3;              //時十位控制端
  6. sbit led=P2^7;              //second display led

  7. sbit key0=P3^0;              //模式設置
  8. sbit key1=P3^1;              //加
  9. sbit key2=P3^2;              //減

  10. unsigned char hour,min,sec,T50ms;
  11. unsigned char modstate;              //模式狀態

  12. unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段碼

  13. void init();                                                        //初始化子程序聲明
  14. void delay500us(unsigned char X);              //延時子程序聲明
  15. void display();                                                        //顯示子程序聲明
  16. void display001();                                          //顯示子程序聲明
  17. void display002();                                          //顯示子程序聲明
  18. void keyscan();                                                        //按鍵識別子程序聲明

  19. void main()
  20. {              
  21.               init();
  22.               while(1)
  23.               {
  24.                             keyscan();            
  25.               }
  26. }

  27. void init()              //初始化子程序
  28. {            
  29.               TMOD=0x01;
  30.               TH0=(65536-49990)/256;
  31.               TL0=(65536-49990)%256;
  32.               ET0=1;
  33.               EA=1;
  34.               TR0=1;            
  35. }

  36. void delay500us(unsigned char X)
  37. {
  38.               unsigned char i,j;
  39.               for(i=X;i>0;i--)
  40.               for(j=248;j>0;j--);
  41. }

  42. void timer0() interrupt 1              //timer0中斷服務子程序,定時時間為50ms,本程序加了10us的時間修正量
  43. {
  44.               TMOD=0x01;
  45.               TH0=(65536-49990)/256;            
  46.               TL0=(65536-49990)%256;

  47.               T50ms++;
  48.               if(T50ms>=20)
  49.               {
  50.                             T50ms=0;
  51.                             sec++;
  52.                             if(sec>=60)
  53.                             {
  54.                                           sec=0;
  55.                                           min++;
  56.                                           if(min>=60)
  57.                                           {
  58.                                                         min=0;
  59.                                                         hour++;
  60.                                                         if(hour>=24)hour=0;
  61.                                           }
  62.                             }
  63.               }
  64. }

  65. void display()
  66. {
  67.               P20=1;
  68.               P21=1;
  69.               P22=1;
  70.               P23=1;
  71.               P0=table[hour/10];
  72.               P23=0;
  73.               delay500us(5);

  74.               P20=1;
  75.               P21=1;
  76.               P22=1;
  77.               P23=1;
  78.               P0=table[hour%10];
  79.               P22=0;
  80.               delay500us(5);

  81.               P20=1;
  82.               P21=1;
  83.               P22=1;
  84.               P23=1;
  85.               P0=table[min/10];
  86.               P21=0;
  87.               delay500us(5);

  88.               P20=1;
  89.               P21=1;
  90.               P22=1;
  91.               P23=1;
  92.               P0=table[min%10];
  93.               P20=0;
  94.               delay500us(5);

  95.               if(T50ms<=10)led=0;
  96.               if(T50ms>10)led=1;
  97. }

  98. void display001()
  99. {
  100.               P20=1;
  101.               P21=1;
  102.               P22=1;
  103.               P23=1;
  104.               P0=table[hour/10];
  105.               P23=0;
  106.               delay500us(10);

  107.               P20=1;
  108.               P21=1;
  109.               P22=1;
  110.               P23=1;
  111.               P0=table[hour%10];
  112.               P22=0;
  113.               delay500us(10);
  114. }

  115. void display002()
  116. {
  117.               P20=1;
  118.               P21=1;
  119.               P22=1;
  120.               P23=1;
  121.               P0=table[min/10];
  122.               P21=0;
  123.               delay500us(10);

  124.               P20=1;
  125.               P21=1;
  126.               P22=1;
  127.               P23=1;
  128.               P0=table[min%10];
  129.               P20=0;
  130.               delay500us(10);
  131. }


  132. void keyscan()                            //按鍵識別鐘程序
  133. {
  134.               while(modstate==0)
  135.               {
  136.                             display();
  137.                             if(key0==0)
  138.                             {
  139.                                           display();
  140.                                           if(key0==0)modstate++;                            //這兩句加在一起為延時10ms軟件防抖設計。
  141.                                           while(key0==0)display001();              //等待按鍵釋放。
  142.                             }
  143.               }
  144. //****************************************************************************//
  145.               while(modstate==1)
  146.               {
  147.                             display001();
  148.                             if(key0==0)
  149.                             {
  150.                                           display001();
  151.                                           if(key0==0)modstate++;                            //這兩句加在一起為延時10ms軟件防抖設計。
  152.                                           while(key0==0)display002();              //等待按鍵釋放。
  153.                             }

  154.                             if(key1==0)
  155.                             {
  156.                                           display001();
  157.                                           if(key1==0)
  158.                                           {
  159.                                                         hour++;
  160.                                                         if(hour>=24)hour=0;
  161.                                                         while(key1==0)display001();
  162.                                           }            
  163.                             }
  164.                             if(key2==0)
  165.                             {
  166.                                           display001();
  167.                                           if(key2==0)
  168.                                           {
  169.                                                         hour--;
  170.                                                         if(hour>=24)hour=0;
  171.                                                         while(key2==0)display001();
  172.                                           }
  173.                             }
  174.               }
  175. //****************************************************************************//
  176.               while(modstate==2)
  177.               {
  178.                             display002();
  179.                             if(key0==0)
  180.                             {
  181.                                           display002();
  182.                                           if(key0==0)modstate=0;                            //這兩句加在一起為延時10ms軟件防抖設計。
  183.                                           while(key0==0)display();              //等待按鍵釋放。
  184.                             }

  185.                             if(key1==0)
  186.                             {
  187.                                           display002();
  188.                                           if(key1==0)
  189.                                           {
  190.                                                         min++;
  191.                                                         if(min>=60)min=0;
  192.                                                         while(key1==0)display002();
  193.                                           }            
  194.                             }
  195.                             if(key2==0)
  196.                             {
  197.                                           display002();
  198.                                           if(key2==0)
  199.                                           {
  200.                                                         min--;
  201.                                                         if(min>=60)min=0;
  202.                                                         while(key2==0)display002();
  203.                                           }
  204.                             }
  205.               }
  206. }
復制代碼


四位數碼管秒閃爍可調時鐘 (1).doc

801 KB, 下載次數: 58, 下載積分: 黑幣 -5


作者: 漫威    時間: 2018-10-8 00:00
想問問數碼管是共陰的還是共陽的
作者: 小學扎    時間: 2018-12-18 17:03
想知道接數碼管1.2.3.4的那四個三角是什么?
作者: X黑貓    時間: 2020-1-8 18:48
你好 如果再加上鬧鐘設置  應該怎么弄呢  大哥求解
作者: 好來屋    時間: 2020-12-18 21:56
漫威 發表于 2018-10-8 00:00
想問問數碼管是共陰的還是共陽的

是共陽極的啊




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久精品国产99国产精品亚洲 | 国产91精品久久久久久久网曝门 | 97人人超碰 | 国产精品免费一区二区三区四区 | 日韩精品一区二区三区中文字幕 | 国产精品成av人在线视午夜片 | 黄色激情毛片 | 欧美色人 | 99热这里只有精品8 激情毛片 | 一区二区不卡 | 久久久久黄 | www..com18午夜观看 | 精品国产乱码久久久久久蜜臀 | h在线| 超碰地址 | 精品91久久 | 综合久久av | 日韩在线免费视频 | 亚洲日日 | 亚洲欧美日韩精品久久亚洲区 | 欧美在线观看一区 | 亚洲欧美在线视频 | 久久不卡 | www国产亚洲精品 | a级免费观看视频 | 午夜激情影院 | 91就要激情| 天天躁日日躁狠狠的躁天龙影院 | 在线观看成人精品 | 国产区视频在线观看 | 日韩中文在线视频 | 亚洲视频二区 | 欧美成年黄网站色视频 | 欧美精品片| 精品日韩一区 | 亚洲二区视频 | 在线观看av网站永久 | 亚洲在线一区二区三区 | 男女羞羞免费网站 | 国产一级片久久久 | 天天干天天草 |