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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7991|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)四位數(shù)碼管可調(diào)時(shí)鐘

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:350812 發(fā)表于 2018-6-14 16:56 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
四位數(shù)碼管可調(diào)時(shí)鐘(1)

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

  1. #include<reg52.h>

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

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

  10. unsigned char hour,min,sec,T50ms;
  11. unsigned char modstate;              //模式狀態(tài)

  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);              //延時(shí)子程序聲明
  15. void display();                                                        //顯示子程序聲明
  16. void display001();                                          //顯示子程序聲明
  17. void display002();                                          //顯示子程序聲明
  18. void keyscan();                                                        //按鍵識(shí)別子程序聲明

  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中斷服務(wù)子程序,定時(shí)時(shí)間為50ms,本程序加了10us的時(shí)間修正量
  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()                            //按鍵識(shí)別鐘程序
  133. {
  134.               while(modstate==0)
  135.               {
  136.                             display();
  137.                             if(key0==0)
  138.                             {
  139.                                           display();
  140.                                           if(key0==0)modstate++;                            //這兩句加在一起為延時(shí)10ms軟件防抖設(shè)計(jì)。
  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++;                            //這兩句加在一起為延時(shí)10ms軟件防抖設(shè)計(jì)。
  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;                            //這兩句加在一起為延時(shí)10ms軟件防抖設(shè)計(jì)。
  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. }
復(fù)制代碼


四位數(shù)碼管秒閃爍可調(diào)時(shí)鐘 (1).doc

801 KB, 下載次數(shù): 58, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

沙發(fā)
ID:240780 發(fā)表于 2018-10-8 00:00 | 只看該作者
想問(wèn)問(wèn)數(shù)碼管是共陰的還是共陽(yáng)的
回復(fù)

使用道具 舉報(bào)

板凳
ID:433466 發(fā)表于 2018-12-18 17:03 | 只看該作者
想知道接數(shù)碼管1.2.3.4的那四個(gè)三角是什么?
回復(fù)

使用道具 舉報(bào)

地板
ID:682093 發(fā)表于 2020-1-8 18:48 | 只看該作者
你好 如果再加上鬧鐘設(shè)置  應(yīng)該怎么弄呢  大哥求解
回復(fù)

使用道具 舉報(bào)

5#
ID:863092 發(fā)表于 2020-12-18 21:56 來(lái)自手機(jī) | 只看該作者
漫威 發(fā)表于 2018-10-8 00:00
想問(wèn)問(wèn)數(shù)碼管是共陰的還是共陽(yáng)的

是共陽(yáng)極的啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩久 | 欧美精品区 | 久久久久91 | 久久免费精品 | 中文日韩在线 | 99精品久久久 | 午夜小视频在线播放 | 国产成人福利在线观看 | 紧缚调教一区二区三区视频 | 欧美一卡二卡在线观看 | 国产在线观看av | ww 255hh 在线观看 | 国产日产精品一区二区三区四区 | 欧美日韩一区二区三区四区 | 成人av免费看 | 成年人在线观看视频 | 国产一区二区在线免费播放 | 中文字幕精品一区二区三区精品 | 国产色婷婷精品综合在线播放 | 久久久久久久久久久国产 | 免费视频一区二区三区在线观看 | 国产乱码精品1区2区3区 | 国产91一区二区三区 | 亚洲成人三级 | 超碰婷婷 | 欧美日韩成人在线 | 亚洲一区视频 | www.yw193.com| 国户精品久久久久久久久久久不卡 | 五月婷婷色 | 一本岛道一二三不卡区 | 国产日韩欧美在线播放 | 久久精品小视频 | 久久人人网| 亚洲成人一级 | 日韩视频中文字幕 | 91精品国产高清一区二区三区 | 国产一区二区欧美 | 欧美精品中文字幕久久二区 | 91久久国产精品 | 日韩一区二区三区在线播放 |