当前位置:   article > 正文

数字时钟(8位数码管显示+时分校准)_51单片机编时钟

51单片机编时钟

目录

概要

一.设计框架流程

         二.具体操作

    1.仿真图绘制

    2.keil5软件编程

    3.导出HEX文件

    4.将HEX文件导入单片机中

    5.运行


概要

使用51单片机设计一个数字时钟,显示格式的如图所示:实验要求显示学号一段时间后然后再开始显示时钟,同时具备时分校准功能”

一.设计框架流程

1.先在proteus仿真软件把电路搭建好.

2.然后在KIEL5编程软件中编写时钟代码.

3.最后生成HEX文件将其导入proteus软件中的单片机中进行测试.

二.具体操作

    1.仿真图绘制

(器件名称参考:)

74HC573芯片在此作用是提高I/O口的的驱动能力,输入和输出都是一样的。

74LS138芯片是一款三八译码器,简单理解就是三个输入端控制8个输出端,在此电路中起到的作用是节省I/O口:

74LS138真值表:

    2.keil5软件编程

代码参考:

  1. #include <reg52.h>//头文件
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code seg[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40,0x7c};//段选数据(0-9,熄灭,—,b)
  5. uchar code dis[]={0,1,2,3,4,5,6,7};//位选(8位数码管)
  6. char hour=0,min=0,second=0,con=0;//时,分,秒,中断计数
  7. sbit key1=P3^0;//定义管脚
  8. sbit key2=P3^1;
  9. sbit key3=P3^2;
  10. sbit key4=P3^3;//定义管脚
  11. void delayms(uint ms)//ms延时函数
  12. {
  13. uchar i;
  14. while(ms--)
  15. for(i=0;i<123;i++);
  16. }
  17. void ID_stu()//显示学号410B000函数
  18. {
  19. uchar i=200;
  20. while(i--)
  21. {
  22. P0=seg[4];//数码管第一位显示“4”
  23. P2=dis[0];
  24. delayms(2);
  25. P0=seg[10];//消影
  26. P0=seg[1];//数码管第二位显示“1”
  27. P2=dis[1];
  28. delayms(2);
  29. P0=seg[10];
  30. P0=seg[0];//数码管第三位显示“0”
  31. P2=dis[2];
  32. delayms(2);
  33. P0=seg[10];
  34. P0=seg[12];//数码管第四位显示“b”
  35. P2=dis[3];
  36. delayms(2);
  37. P0=seg[10];
  38. P0=seg[0];//数码管第五位显示“0”
  39. P2=dis[4];
  40. delayms(2);
  41. P0=seg[10];
  42. P0=seg[0];//数码管第六位显示“0”
  43. P2=dis[5];
  44. delayms(2);
  45. P0=seg[10];
  46. P0=seg[0];//数码管第七位显示“0”
  47. P2=dis[6];
  48. delayms(2);
  49. P0=seg[10];
  50. P0=seg[0];//数码管第八位显示“0”
  51. P2=dis[7];
  52. delayms(2);
  53. P0=seg[10];
  54. }
  55. }
  56. void KEY_can()//按键处理函数
  57. {
  58. if(key1==0||key2==0||key3==0||key4==0)
  59. {
  60. delayms(20);
  61. if(key1==0||key2==0||key3==0||key4==0)
  62. {
  63. if(key1==0)//时+1
  64. {
  65. hour++;
  66. if(hour>23)
  67. hour=0;
  68. while(key1==0);
  69. }
  70. else if(key2==0) //时-1
  71. {
  72. hour--;
  73. if(hour<0)
  74. hour=23;
  75. while(key2==0);
  76. }
  77. else if(key3==0) //分+1
  78. {
  79. min++;
  80. if(min>59)
  81. min=0;
  82. while(key3==0);
  83. }
  84. else if(key4==0) //分-1
  85. {
  86. min--;
  87. if(min<0)
  88. min=59;
  89. while(key4==0);
  90. }
  91. }
  92. }
  93. }
  94. void Clock()//时钟显示函数
  95. {
  96. P0=seg[hour/10];//数码管第一位显示“时高位”
  97. P2=dis[0];
  98. delayms(2);
  99. P0=seg[10];
  100. P0=seg[hour%10];//数码管第二位显示“时低位”
  101. P2=dis[1];
  102. delayms(2);
  103. P0=seg[10];
  104. P0=seg[11];//数码管第三位显示“-”
  105. P2=dis[2];
  106. delayms(2);
  107. P0=seg[10];
  108. P0=seg[min/10];//数码管第四位显示“分高位”
  109. P2=dis[3];
  110. delayms(2);
  111. P0=seg[10];
  112. P0=seg[min%10];//数码管第五位显示“分低位”
  113. P2=dis[4];
  114. delayms(2);
  115. P0=seg[10];
  116. P0=seg[11];//数码管第六位显示“-”
  117. P2=dis[5];
  118. delayms(2);
  119. P0=seg[10];
  120. P0=seg[second/10];//数码管第七位显示“秒高位”
  121. P2=dis[6];
  122. delayms(2);
  123. P0=seg[10];
  124. P0=seg[second%10];//数码管第八位显示“秒高位”
  125. P2=dis[7];
  126. delayms(2);
  127. P0=seg[10];
  128. }
  129. void T0_init()//T0定时器初始化”
  130. {
  131. TMOD=0x01;//设置定时器计数方式1
  132. TH0=(65536-50000)/256;//12Mhz晶振 机器周期=12*(1/foc)
  133. TL0=(65536-50000)%256;
  134. TR0=1;//开启定时器
  135. ET0=0;//中断允许位开启
  136. EA=1;//开启总中断允许位
  137. }
  138. void main ()
  139. {
  140. uchar i;
  141. T0_init();
  142. ID_stu();
  143. delayms(2000);
  144. ET0=1;
  145. while(1)
  146. {
  147. KEY_can();
  148. Clock();
  149. }
  150. }
  151. void T0_ET0()interrupt 1//T0定时器中断服务函数
  152. {
  153. TH0=(65536-50000)/256;//赋初值
  154. TL0=(65536-50000)%256;
  155. if(++con==20)//1s
  156. {
  157. con=0;
  158. if(++second==60)//1min
  159. {
  160. second=0;
  161. if(++min==60)//1hour
  162. { min=0;
  163. if(++hour==24)//1day
  164. hour=0;
  165. }
  166. }
  167. }
  168. }

      3.导出HEX文件

      4.将HEX文件导入单片机中

     5.运行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/709361
推荐阅读
相关标签
  

闽ICP备14008679号