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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2906|回復: 1
打印 上一主題 下一主題
收起左側

基于51單片機的按鍵數碼管時鐘仿真+代碼,顯示18-11-18

[復制鏈接]
跳轉到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>

  2. typedef unsigned int u16;          //對數據類型進行聲明定義
  3. typedef unsigned char u8;

  4. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  5.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

  6. sbit Key1 = P3^7;   //計時停止
  7. sbit Key2 = P3^6;        //調位
  8. sbit Key3 = P3^0;        //加一       
  9. sbit Key4 = P3^2;   //切換
  10. sbit LED1 = P1^7;
  11. sbit LSA  = P2^5;
  12. sbit LSB  = P2^6;
  13. sbit LSC  = P2^7;

  14. u8 second=00,minute=00,hour=00,count;

  15. void Delayms(u16 t)
  16. {
  17. u16 i,j;
  18. for(i=0;i<t;i++)
  19. for(j=0;j<120;j++);
  20. }



  21. void DigDisplay()
  22. {
  23.         u8 i;
  24.         for(i=0;i<8;i++)
  25.         {
  26.                 switch(i)         //位選,選擇點亮的數碼管,
  27.                 {
  28.                         case(0):
  29.                                 LSA=0;LSB=0;LSC=0;                 P0=smgduan[second%10];break;//顯示第0位
  30.                         case(1):
  31.                                    LSA=0;LSB=0;LSC=1;      P0=smgduan[second/10];break;//顯示第1位
  32.                         case(2):
  33.                                 LSA=0;LSB=1;LSC=0;                 P0=0x40;break;//顯示第2位
  34.                         case(3):
  35.                                 LSA=0;LSB=1;LSC=1;                 P0=smgduan[minute%10];break;//顯示第3位
  36.                         case(4):
  37.                                 LSA=1;LSB=0;LSC=0;                 P0=smgduan[minute/10];break;//顯示第4位
  38.                         case(5):
  39.                                 LSA=1;LSB=0;LSC=1;                 P0=0x40;break;//顯示第5位
  40.                         case(6):
  41.                            LSA=1;LSB=1;LSC=0;
  42.                                         P0=smgduan[hour%10];break;//顯示第6位
  43.                         case(7):
  44.                                 LSA=1;LSB=1;LSC=1;                 P0=smgduan[hour/10];break;//顯示第7位       
  45.                 }

  46.                 Delayms(1); //間隔一段時間掃描       
  47.                 P0=0x00;//消隱
  48.         }
  49. }




  50. void Keyscan1()
  51. {
  52. static        u8 i=0,j=0;       
  53. if(Key1==0)       
  54. {
  55. Delayms(10); //消抖       
  56. if(Key1==0)       
  57. while(!Key1); //等待按鍵彈起
  58. i++;
  59. }
  60. if(i%2==1)       
  61. {
  62. LED1=0;
  63. TR0=0;
  64. }
  65. if(i%2==0)
  66. {
  67. LED1=1;
  68. TR0=1;       
  69. }
  70. if(Key2==0)       
  71. {
  72. Delayms(10);       
  73. if(Key2==0)
  74. while(!Key2);
  75. j++;       
  76. }
  77. if(j%4==1)
  78. {
  79. if(Key3==0)
  80. {
  81. Delayms(10);       
  82. if(Key3==0)
  83. while(!Key3);
  84. second++;
  85. if(second==60)
  86. second=0;
  87. }
  88. }
  89. if(j%4==2)
  90. {
  91. if(Key3==0)
  92. {
  93. Delayms(10);       
  94. if(Key3==0)
  95. while(!Key3);
  96. minute++;
  97. if(minute==60)
  98. minute=0;       
  99. }
  100. }
  101. if(j%4==3)
  102. {
  103. if(Key3==0)
  104. {       
  105. Delayms(10);       
  106. if(Key3==0)
  107. while(!Key3);
  108. hour++;
  109. if(hour==24)
  110. hour=0;       
  111. }
  112. }
  113. }


  114. void main()
  115. {

  116. TMOD=0x01;
  117. TH0=(65536-10000)/256;
  118. TL0=(65536-10000)%256;
  119. EA=1;
  120. ET0=1;
  121. TR0=1;
  122. while(1)
  123. {
  124. static        u8 h=0;       
  125. if(Key4==0)       
  126. {
  127. Delayms(10);       
  128. if(Key4==0)
  129. while(!Key4);
  130. h++;
  131. }

  132. if(h%2==0)
  133. {
  134. DigDisplay();
  135. Keyscan1();       
  136. }

  137. }
  138. }

  139. void time0_int(void) interrupt 1
  140. {
  141. TH0=(65536-10000)/256;
  142. TL0=(65536-10000)%256;
  143. count++;
  144. if(count==100)
  145. {
  146. count=0;
  147. second++;
  148. if(second==60)
  149. {
  150. second=0;
  151. minute++;
  152. if(minute==60)
  153. {
  154. minute=0;
  155. hour++;
  156. if(hour==24)
  157. {
  158. hour=0;
  159. }
  160. }
  161. }
  162. }
  163. }
復制代碼

所有資料51hei提供下載:
18-11-18按鍵數碼管時鐘.rar (64.49 KB, 下載次數: 39)


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

使用道具 舉報

沙發
ID:734001 發表于 2020-4-22 11:13 | 只看該作者
為什么秒到10就進一分鐘了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩一区二区三区视频 | 女同久久另类99精品国产 | 国产午夜精品视频 | 亚洲精品久 | 波多野结衣中文字幕一区二区三区 | 高清一区二区 | 欧美簧片| 在线成人免费观看 | 插插宗合网 | 青青久久 | 精品久久中文字幕 | 欧美精品一区二区三区四区 在线 | 久久久久久久久久久成人 | 成人激情视频免费在线观看 | 国产精品视频偷伦精品视频 | 中文字幕在线一区 | 欧美综合一区二区 | 人人爱干 | 日韩欧美在线一区 | 久久国产精品-国产精品 | 成人午夜电影网 | 亚洲 欧美 另类 综合 偷拍 | 久久久久久久香蕉 | 国产精品久久久久久一级毛片 | 国产在线一区二区三区 | 国产成人网 | 在线午夜| 欧美性久久 | 日韩成人免费av | 国产精品欧美一区喷水 | 日韩精品一区二区在线 | 在线一级片 | 日韩精品久久久久 | 精品久久久久久久久久久 | 亚洲欧洲激情 | 久久精品国产亚洲 | 精品综合| 成人免费淫片aa视频免费 | 国产伦精品一区二区三区照片91 | 99久久精品国产毛片 | 黄色一级视频 |