当前位置:   article > 正文

利用AT89C52编写一个简易的时钟_电子时钟求用at89c52

电子时钟求用at89c52

这个是学校单片机上机考试的一个例题,自己简单编了一下。

上方是一个简单的原理图,利用的是共阳极的八位数码管

下方就直接附上程序。

  1. #include <reg51.h>
  2. #include <stdio.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code t[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  6. uchar code seg1[]={0xa4,0xc0,0xa4,0xb0,0xf9,0xa4,0xa4,0x80};//20231228
  7. uchar list[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9
  8. uchar seg2[8]={0xa4,0xb0,0xbf,0x92,0x90,0xbf,0x92,0xc0}; //重点,如果数组里的数需要改变的话,不能定义为uchar code ,23-59-50
  9. uchar a=23,b=59,c=50;//a存储小时,b存储分钟,c存储秒
  10. uchar a1,a2,b1,b2,c1,c2;//a1,a2存储小时拆分成十位和个位,其他同理
  11. uchar temp=0;//存储50ms的计数值,满20使秒数进1
  12. void delayXms(uint x)
  13. {
  14. uchar j;
  15. while(x--)for(j=0;j<125;j++){;}
  16. }
  17. void int0() interrupt 1 using 1
  18. {
  19. TH0=0x3c; //定时值50ms
  20. TL0=0xb0;
  21. temp++;
  22. if(temp==20)
  23. {
  24. temp=0;
  25. c++;
  26. c1=c/10;
  27. c2=c%10;
  28. seg2[6]=list[c1];
  29. seg2[7]=list[c2];
  30. if(c==60)
  31. {
  32. c=0;
  33. c1=c/10; //重新对于c清零后的数组赋值
  34. c2=c%10;
  35. seg2[6]=list[c1];
  36. seg2[7]=list[c2];
  37. b++;
  38. b1=b/10;
  39. b2=b%10;
  40. seg2[3]=list[b1];
  41. seg2[4]=list[b2];
  42. if(b==60)
  43. {
  44. b=0;
  45. b1=b/10; //重新对于b清零后的数组赋值
  46. b2=b%10;
  47. seg2[3]=list[b1];
  48. seg2[4]=list[b2];
  49. a++;
  50. a1=a/10;
  51. a2=a%10;
  52. seg2[0]=list[a1];
  53. seg2[1]=list[a2];
  54. if(a==24)
  55. {
  56. a=0;
  57. a1=a/10; //重新对于a清零后的数组赋值
  58. a2=a%10;
  59. seg2[0]=list[a1];
  60. seg2[1]=list[a2];
  61. }
  62. }
  63. }
  64. }
  65. }
  66. void main(void)
  67. {
  68. uchar i;
  69. TMOD=0x01;
  70. EA=1;
  71. ET0=1;
  72. TH0=0x3c; //定时值50ms
  73. TL0=0xb0;
  74. TR0=1;
  75. while (1)
  76. {
  77. if(c2>=0&&c2<5)
  78. {
  79. for(i=0;i<8;i++)
  80. {
  81. P2=t[i];
  82. P0=seg2[i];
  83. delayXms(3);
  84. }
  85. }
  86. if(c2>=5&&c2<=9)
  87. {
  88. for(i=0;i<8;i++)
  89. {
  90. P2=t[i];
  91. P0=seg1[i];
  92. delayXms(3);
  93. }
  94. }
  95. }
  96. }

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

闽ICP备14008679号