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

QQ登錄

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

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

我的51單片機(jī)時(shí)鐘設(shè)計(jì)代碼和proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:414974 發(fā)表于 2018-10-26 20:48 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是一個(gè)51單片機(jī)的時(shí)鐘設(shè)計(jì),可以調(diào)節(jié)
秒,分,時(shí)的數(shù)。一共有四個(gè)鍵一個(gè)復(fù)位,
其他分別是調(diào)節(jié)秒分時(shí)的鍵。
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. /*七段共陰管顯示定義*/
  6. uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
  7. 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF,0xDF};
  8. /*定義并初始化變量*/
  9. uchar seconde=0;
  10. uchar minite=0;
  11. uchar hour=0;
  12. uchar mstcnt=0;
  13. sbit P1_0=P1^0;                // second 調(diào)整定義
  14. sbit P1_1=P1^1;                //minite調(diào)整定義
  15. sbit P1_2=P1^2;                            //hour調(diào)整定義
  16. sbit P1_3=P1^3;                //暫停定義
  17. /*函數(shù)聲明*/
  18. void delay(uchar k );      //延時(shí)子程序
  19. void time_pro( );    //時(shí)間處理子程序
  20. void display( );      //顯示子程序
  21. void keyscan( );                //鍵盤(pán)掃描子程序
  22. /*延時(shí)子程序*/
  23. void delay (uchar k)
  24. {
  25. uchar j;
  26. while((k--)!=0)
  27. {
  28. for(j=0;j<125;j++)
  29. {;}
  30. }
  31. }
  32. /*時(shí)間處理子程序*/
  33. void time_pro( void)
  34. {
  35. if(seconde==60)                    //秒鐘設(shè)為60進(jìn)制
  36. { seconde=0;
  37. minite++;
  38. if( minite==60)              //分鐘設(shè)為60進(jìn)制
  39. { minite=0;
  40. hour++;
  41. if(hour==24)              //時(shí)鐘設(shè)為24進(jìn)制
  42. {hour=0; }
  43. }
  44. }
  45. }
  46. /* 顯示子程序*/
  47. void display(void)
  48. {
  49. P2=0x01;
  50. P0=dispcode[hour/10];                //顯示小時(shí)的十位
  51. delay(10);
  52. P2=0x02;
  53. P0=dispcode[hour%10];        //顯示小時(shí)的個(gè)位
  54. delay(10);
  55. P2=0x04;
  56. P0=dispcode[minite/10];              //顯示分的十位
  57. delay(10);
  58. P2=0x08;
  59. P0=(dispcode[minite%10]);        //顯示分的個(gè)位
  60. delay(10);
  61. P2=0x10;
  62. P0=dispcode[seconde/10];            //顯示秒的十位
  63. delay(10);
  64. P2=0x20;
  65. P0=dispcode[seconde%10];            //顯示秒的個(gè)位
  66. delay(10);
  67. }
  68. /*鍵盤(pán)掃描子程序*/
  69. void keyscan (void)
  70. {
  71. if(P1_0==0)                    //按鍵1秒的調(diào)整
  72. {
  73. delay(30);
  74. if(P1_0==0)
  75. {
  76. seconde++;
  77. if(seconde==60)
  78. {seconde=0; }
  79. }
  80. }
  81. if(P1_1==0)                    //按鍵2分的調(diào)整
  82. {
  83. delay(30);
  84. if(P1_1==0)
  85. {
  86. minite++;
  87. if(minite==60)
  88. {minite=0;}
  89. }
  90. }
  91. if(P1_2==0)                  //按鍵3小時(shí)的調(diào)整
  92. {
  93. delay(30);
  94. if(P1_2==0)
  95. {
  96. hour++;
  97. if(hour==24)
  98. {hour=0; }
  99. }
  100. }
  101.         if(P1_3==0)
  102.         {
  103.           delay(30);
  104.          if(P1_3==0)
  105.          {
  106.                  while(!P1_3);
  107.                 {TR0=~TR0;}                   //啟動(dòng)或停止定時(shí)器0
  108.                 }                                 
  109. }
  110. }
  111. void timer0(void) interrupt 1
  112. {
  113. TH0=0x3c;
  114. TL0=0xb0;
  115. mstcnt++;
  116. if(mstcnt==20)
  117. {
  118. seconde++;
  119. mstcnt=0;    //清零
  120. }              //
  121. }
  122. /*主函數(shù)*/
  123. void main(void)
  124. {      P1=0xff;                //初始化p1口,全設(shè)為1
  125. TMOD = 0x11; //time0為定時(shí)器,方式1
  126. TH0=0x3c;            //預(yù)置計(jì)數(shù)初值
  127. TL0=0xb0;
  128. EA=1;
  129. ET0=1;
  130. TR0=1;
  131. while (1)
  132. {
  133. keyscan( );    //按鍵掃描
  134. time_pro( ); //時(shí)間處理
  135. display( ); //顯示時(shí)間
  136. }
  137. }
復(fù)制代碼


時(shí)鐘.jpg.png (562.03 KB, 下載次數(shù): 70)

時(shí)鐘.jpg.png

時(shí)鐘20407.rar

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

新時(shí)鐘20407.rar

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

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

使用道具 舉報(bào)

沙發(fā)
ID:460136 發(fā)表于 2019-1-6 15:45 | 只看該作者
受益匪淺 謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表