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

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

QQ登錄

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

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

洞洞板制作51單片機(jī)六位數(shù)碼管時(shí)鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這次發(fā)帖也是因?yàn)閯偨柚?1黑電子論壇里的資料完成一件洞洞板制作的作品。所以也想來(lái)賺點(diǎn)黑幣,我不是大神,只是個(gè)小白。附帶吧內(nèi)大神資料,

   程序名稱(chēng):六位數(shù)碼管時(shí)鐘表
編譯器:Keil uVision 4
程序功能:上電后,程序按初始時(shí)間開(kāi)始時(shí)鐘演示,時(shí)間顯示按24小時(shí)制。
    時(shí)間調(diào)整:按A鍵,顯示加1,按B鍵,顯示減1,按C鍵,清零
MCU:AT89C51
晶振:11.0592M
外圍部件:
鍵盤(pán):4按鍵A、B、C、D分別接在P1.0、P1.1、P1.2和P1.3上,低電平有效
     A、B、C鍵分別控制時(shí)、分、秒的選擇,D鍵銨下進(jìn)行時(shí)間調(diào)整。
顯示:4位共陰極LED,P0口送顯示數(shù)據(jù),P1口低四位位選
內(nèi)部資源:
使用定時(shí)計(jì)數(shù)器1中斷,用于定時(shí)及顯示
警告:
1. 按鍵未加防抖動(dòng)程序
2. 此程序經(jīng)過(guò)編譯并通過(guò)Proteus仿真,未通過(guò)實(shí)物檢驗(yàn)。
作者:花落水流紅,空寂蕭然山——蕭然
完成日期:/6/11
============================================================================*/
  1. #include <reg51.h>   //包含必要頭文件
  2. //定義按鍵
  3. sbit HourAdjust = P1^0;   //時(shí)調(diào)整選擇鍵
  4. sbit MinuteAdjust = P1^1;  //分調(diào)整選擇鍵
  5. sbit SecondAdjust = P1^2;  //秒選擇選擇鍵
  6. sbit Adjust = P1^3;    //調(diào)整鍵  
  7. //定義標(biāo)志位
  8. bit SecondFlag = 0;    //秒標(biāo)志   
  9. bit FlashFlag = 0;    //秒閃標(biāo)志
  10. bit Second10Flag = 0;   //10秒標(biāo)志
  11. bit HourAdjustFlag = 0;   //時(shí)調(diào)整標(biāo)志,A鍵按下置1,10秒后清0
  12. bit MinuteAdjustFlag = 0;   //分調(diào)整標(biāo)志,A鍵按下置1,10秒后清0  
  13. bit SecondAdjustFlag = 0;   //秒調(diào)整標(biāo)志,A鍵按下置1,10秒后清0  

  14. unsigned char Led1,Led2,Led3,Led4,Led5,Led6;  //定義緩存
  15. int TimeCount,Second10Count;   //定義計(jì)數(shù)器
  16. unsigned char code LedTab[]=  //定義共陰極數(shù)碼管表,0x00用于清除顯示
  17.    {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
  18. void Delay100us(int Times);    //定義延時(shí)函數(shù)

  19. //*****************************定時(shí)器中斷服務(wù)程序******************************r
  20. //程序功能:動(dòng)態(tài)驅(qū)動(dòng)數(shù)碼管,同時(shí)完成定時(shí)功能。
  21. void timer() interrupt 3 using 2
  22. {
  23. TR1 = 0;
  24. TL1 = 0x13; TH1 = 0x2C; //重新賦值
  25. P0 = 0x00;    //顯示小時(shí)
  26. P2 = 0xfe;
  27. P0 = LedTab[Led1];
  28. Delay100us(1);
  29. P0 = 0x00;
  30. P2 = 0xfd;
  31. if(FlashFlag)   //秒顯(1秒顯,1秒隱)分前小數(shù)點(diǎn)
  32.   P0 = LedTab[Led2] | 0x80;
  33. else
  34.   P0 = LedTab[Led2] & 0x7f;
  35. Delay100us(1);   
  36. P0 = 0x00;    //顯示分
  37. P2 = 0xfb;
  38. P0 = LedTab[Led3];
  39. Delay100us(1);
  40. P0 = 0x00;
  41. P2 = 0xf7;
  42. if(FlashFlag)   //秒顯秒前小數(shù)點(diǎn)
  43.   P0 = LedTab[Led4] | 0x80;
  44. else
  45.   P0 = LedTab[Led4] & 0x7f;
  46. Delay100us(1);
  47. P0 = 0x00;    //顯示秒
  48. P2 = 0xef;
  49. P0 = LedTab[Led5];
  50. Delay100us(1);
  51. P0 = 0x00;
  52. P2 = 0xdf;
  53. P0 = LedTab[Led6];
  54. Delay100us(1);
  55. TR1 = 1;

  56. if(TimeCount < 100)  //秒計(jì)數(shù)器
  57.   TimeCount++;
  58. else
  59. {
  60.   TimeCount = 0x00;
  61.   SecondFlag = 1;  //置位秒標(biāo)志
  62.   if(Second10Flag) //10秒計(jì)數(shù)器
  63.    if(Second10Count < 20)
  64.     Second10Count++;
  65.    else
  66.    {
  67.     Second10Count = 0x00;  //10秒計(jì)數(shù)器清0
  68.     Second10Flag = 0;   //清除10s標(biāo)志
  69.     HourAdjustFlag = 0;   //清除調(diào)整標(biāo)志位
  70.     MinuteAdjustFlag = 0;
  71.     SecondAdjustFlag = 0;
  72.    }
  73. }
  74. }
  75. //============================================================================
  76. main(void)
  77. {
  78. //初始化
  79. int Second = 30;  //初始化時(shí)間
  80. int Minute = 12;
  81. int Hour = 20;
  82. Led1 = 0x00;   //清除顯存
  83. Led2 = 0x00;
  84. Led3 = 0x00;
  85. Led4 = 0x00;
  86. Led5 = 0x00;
  87. Led6 = 0x00;
  88. SecondFlag = 0;
  89. TimeCount = 0x00;
  90. //設(shè)置定時(shí)器中斷
  91. TMOD = 0x10f;   //GATE=0             01010001
  92.        //C/T=0--定時(shí)/計(jì)數(shù)器1工作于定時(shí)方式
  93.        //M1=1;M0=0--選擇工作模式1,構(gòu)成最大定時(shí)器
  94.        //T0:在此程序不使用
  95. TL1 = 0x13; TH1 = 0x2C; //指定定時(shí)時(shí)間為50ms  65536-50/(11.0592/12)=11283=2C13h
  96. EA = 1;     //開(kāi)總中斷
  97. TF1 = 0;
  98. ET1 = 1;    //開(kāi)定時(shí)器中斷
  99. TR1 = 1;    //開(kāi)始計(jì)時(shí)
  100. while(1)
  101. {
  102. //*****************************************************************************
  103. //對(duì)時(shí)間進(jìn)行調(diào)整程序
  104.   if(SecondFlag)
  105.   {
  106.    if(Second%2 == 0)
  107.     FlashFlag = 1;
  108.    else
  109.     FlashFlag = 0;
  110.    if(Second < 59)
  111.     Second++;
  112.    else
  113.    {
  114.     if(Minute < 59)
  115.      Minute++;
  116.     else
  117.     {
  118.      if(Hour < 23)
  119.       Hour++;
  120.      else
  121.       Hour = 0;
  122.      Minute = 0;
  123.     }
  124.    Second = 0;
  125.    }  
  126.   SecondFlag = 0;  
  127.   }
  128. //-----------------------------------------------------------------------------
  129. //*****************************************************************************
  130. //時(shí)間調(diào)整程序
  131.   if(HourAdjustFlag)   //調(diào)整時(shí)程序
  132.    if(Second10Flag)
  133.     if(FlashFlag)  //時(shí)秒顯
  134.     {
  135.      Led1 = 0x0a; //時(shí)隱
  136.      Led2 = 0x0a;
  137.     }
  138.     else
  139.     {
  140.      Led1 = Hour/10; //時(shí)顯
  141.      Led2 = Hour%10;
  142.     }
  143.    else
  144.    {
  145.     Led1 = Hour/10;
  146.     Led2 = Hour%10;
  147.    }
  148.   else
  149.   {
  150.    Led1 = Hour/10;
  151.    Led2 = Hour%10;
  152.   }
  153.   if(MinuteAdjustFlag)  //調(diào)整分程序
  154.    if(Second10Flag)
  155.     if(FlashFlag)  //分秒顯
  156.     {
  157.      Led3 = 0x0a;
  158.      Led4 = 0x0a;
  159.     }
  160.     else
  161.     {
  162.      Led3 = Minute/10;
  163.      Led4 = Minute%10;
  164.     }
  165.    else
  166.    {
  167.     Led3 = Minute/10;
  168.     Led4 = Minute%10;
  169.    }
  170.   else
  171.   {
  172.    Led3 = Minute/10;
  173.    Led4 = Minute%10;
  174.   }
  175.   if(SecondAdjustFlag)  //調(diào)整秒程序,控制秒顯
  176.    if(Second10Flag)
  177.     if(FlashFlag)
  178.     {
  179.      Led5 = 0x0a;
  180.      Led6 = 0x0a;
  181.     }
  182.     else
  183.     {
  184.      Led5 = Second/10;
  185.      Led6 = Second%10;
  186.     }
  187.    else
  188.    {
  189.     Led5 = Second/10;
  190.     Led6 = Second%10;
  191.    }
  192.   else
  193.   {
  194.    Led5 = Second/10;
  195.    Led6 = Second%10;
  196.   }
  197.   
  198.   
  199.   if(!HourAdjust)    //時(shí)調(diào)整按鍵按下
  200.   {
  201.    while(!HourAdjust);  //等待松開(kāi)
  202.    HourAdjustFlag = 1;  //置位時(shí)標(biāo)志位
  203.    MinuteAdjustFlag = 0; //清除分標(biāo)志位
  204.    SecondAdjustFlag = 0; //清除秒標(biāo)志位
  205.    Second10Flag = 1;  //置位10秒標(biāo)志位
  206.   }
  207.   if(!MinuteAdjust)   //分調(diào)整鍵按下
  208.   {
  209.    while(!MinuteAdjust);
  210.    MinuteAdjustFlag = 1;
  211.    HourAdjustFlag = 0;
  212.    SecondAdjustFlag = 0;
  213.    Second10Flag = 1;
  214.   }
  215.   if(!SecondAdjust)   //秒調(diào)整鍵按下
  216.   {
  217.    while(!SecondAdjust);
  218.    SecondAdjustFlag = 1;
  219.    HourAdjustFlag = 0;
  220.    MinuteAdjustFlag = 0;
  221.    Second10Flag = 1;
  222.   }
  223.   if(!Adjust)     //調(diào)整鍵按下
  224.   {
  225.    while(!Adjust);
  226.    if(HourAdjustFlag)  //調(diào)整時(shí),加1
  227.     if(Hour < 23)
  228.     {
  229.      Hour++;
  230.      Second10Count = 0;
  231.     }
  232.     else
  233.      Hour = 0;
  234.    if(MinuteAdjustFlag) //調(diào)整分,加1
  235.     if(Minute < 59)
  236.     {
  237.      Minute++;
  238.      Second10Count = 0;
  239.     }
  240.     else    //調(diào)整秒,清零
  241.      Minute = 0;
  242.    if(SecondAdjustFlag)
  243.     Second = 0;
  244.   }
  245. }
  246. }
  247. //********************************延時(shí)程序************************************
  248. void Delay100us(int Times)
  249. {
  250. Times = Times * 100;
  251. while(Times--);
  252. }
復(fù)制代碼

評(píng)分

參與人數(shù) 2黑幣 +105 收起 理由
靠海 + 5 贊一個(gè)!
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:64913 發(fā)表于 2018-4-27 00:14 | 只看該作者
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

板凳
ID:242298 發(fā)表于 2019-1-25 02:29 | 只看該作者
好是好。就是 我的管子是時(shí)鐘格式的,怎么弄呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产色婷婷精品综合在线手机播放 | 成人乱人乱一区二区三区软件 | 中文字幕国产 | 99国产精品99久久久久久粉嫩 | av黄色片在线观看 | 秋霞国产| 99久久久无码国产精品 | 欧美精品影院 | 人人看人人草 | 国产精品久久久久久妇女6080 | 在线免费观看亚洲 | 久久精品色欧美aⅴ一区二区 | 精品福利在线 | 国产精品无码永久免费888 | 在线视频亚洲 | av中文字幕在线 | 国产观看| 一二三四在线视频观看社区 | 一区二区视频 | 国产日韩欧美在线观看 | 日韩欧美三区 | 黑人精品| 久久91精品国产 | 国产视频久 | 欧美日韩国产传媒 | 国产精品视频一二三区 | 一区二区三区 在线 | 男女一区二区三区 | 久久久久久www | 免费国产黄网站在线观看视频 | 午夜精品三区 | 亚州精品天堂中文字幕 | 成人小视频在线 | 国产精品99久久久久久久久久久久 | 1级黄色大片 | 蜜臀久久99精品久久久久野外 | 欧美日韩福利 | 亚洲成人久久久 | 久久久久久综合 | 九九精品在线 | 亚洲一区二区电影网 |