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

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

QQ登錄

只需一步,快速開始

搜索
查看: 10560|回復(fù): 2
收起左側(cè)

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

[復(fù)制鏈接]
ID:170147 發(fā)表于 2017-3-31 20:54 | 顯示全部樓層 |閱讀模式
這次發(fā)帖也是因?yàn)閯偨柚?1黑電子論壇里的資料完成一件洞洞板制作的作品。所以也想來賺點(diǎn)黑幣,我不是大神,只是個(gè)小白。附帶吧內(nèi)大神資料,
0.png 0.png 0.png 0.png
   程序名稱:六位數(shù)碼管時(shí)鐘表
編譯器:Keil uVision 4
程序功能:上電后,程序按初始時(shí)間開始時(shí)鐘演示,時(shí)間顯示按24小時(shí)制。
    時(shí)間調(diào)整:按A鍵,顯示加1,按B鍵,顯示減1,按C鍵,清零
MCU:AT89C51
晶振:11.0592M
外圍部件:
鍵盤: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)過編譯并通過Proteus仿真,未通過實(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;     //開總中斷
  97. TF1 = 0;
  98. ET1 = 1;    //開定時(shí)器中斷
  99. TR1 = 1;    //開始計(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);  //等待松開
  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)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

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ù) 返回頂部 返回列表
主站蜘蛛池模板: 国产羞羞视频在线观看 | 国产高清美女一级a毛片久久w | 午夜影视| 国内av在线 | 亚洲美女在线视频 | 伊人无码高清 | 1级黄色大片| aa级毛片毛片免费观看久 | 成人99| 九九色综合 | 精品一二 | 免费的色网站 | 精品久久久久久久 | 中国一级特黄真人毛片 | 久久精品国内 | 亚洲三区视频 | 欧美性大战xxxxx久久久 | 激情伊人网 | 日本不卡免费新一二三区 | 精品久久av | 欧美性久久 | 久久久成人网 | 在线精品亚洲欧美日韩国产 | 18gay男同69亚洲网站 | 丁香五月网久久综合 | 一二三四在线视频观看社区 | 91 久久 | 日本亚洲一区 | 干狠狠 | av黄在线观看 | 在线观看国产精品一区二区 | 岛国av免费观看 | 网站一区二区三区 | 天天操,夜夜爽 | 欧美一区二区网站 | 亚洲精品一区二区在线观看 | 国产精品日韩欧美一区二区三区 | 国产精品久久久久久久久久久久冷 | 亚洲视频二区 | 欧美精品久久久 | 日韩欧美国产一区二区三区 |