標題: 電子時鐘仿真與單片機編程 [打印本頁]

作者: zjzjzjz    時間: 2018-3-25 20:10
標題: 電子時鐘仿真與單片機編程
電子時鐘仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)




單片機源程序如下:
  1. //LED6CC_CLOCK
  2. #include <AT89X52.H>
  3. unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  4.                                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
  5. unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  6. unsigned char dispbuf[6]={0,0,0,0,2,1};
  7. unsigned char dispbitcnt;
  8. unsigned char second;
  9. unsigned char minite;
  10. unsigned char hour;
  11. unsigned int tcnt;
  12. unsigned char mstcnt;
  13. unsigned char i,j;
  14. void delay()
  15. {
  16. unsigned char i,j;
  17. for(i=5;i>0;i--)
  18. for(j=248;j>0;j--);
  19. }

  20. void main(void)
  21. {
  22. TMOD=0x02;
  23. TH0=0x06;
  24. TL0=0x06;
  25. TR0=1;
  26. ET0=1;
  27. EA=1;
  28. hour=12;
  29. while(1)
  30. {
  31. if(P0_0==0)
  32. {
  33. delay();
  34. if(P0_0==0)
  35. {
  36. second++;
  37. if(second==60)
  38. {
  39. second=0;
  40. }
  41. dispbuf[0]=second%10;
  42. dispbuf[1]=second/10;
  43. while(P0_0==0);
  44. }
  45. }
  46. if(P0_1==0)
  47. {
  48. delay();
  49. if(P0_1==0)
  50. {
  51. minite++;
  52. if(minite==60)
  53. {
  54. minite=0;
  55. }
  56. dispbuf[2]=minite%10;
  57. dispbuf[3]=minite/10;
  58. while(P0_1==0);
  59. }
  60. }
  61. if(P0_2==0)
  62. {
  63. delay();
  64. if(P0_2==0)
  65. {
  66. hour++;
  67. if(hour==24)
  68. {
  69. hour=0;
  70. }
  71. dispbuf[4]=hour%10;
  72. dispbuf[5]=hour/10;
  73. while(P0_2==0);
  74. }
  75. }
  76. }
  77. }
  78. void t0(void) interrupt 1
  79. {

  80. mstcnt++;
  81. if(mstcnt==6)
  82. {
  83. mstcnt=0;

  84. P3=0xff; //關閉所有顯示
  85. P3=dispbitcode[dispbitcnt];//
  86. P1=dispcode[dispbuf[dispbitcnt]];//
  87. dispbitcnt++;
  88. if(dispbitcnt==6)
  89. {
  90. dispbitcnt=0;
  91. }
  92. }
  93. tcnt++;
  94. if(tcnt==4000)
  95. {
  96. tcnt=0;
  97. second++;
  98. if(second==60)
  99. {
  100. second=0;
  101. minite++;
  102. if(minite==60)
  103. {
  104. minite=0;
  105. ……………………

  106. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電子鐘.rar (40.12 KB, 下載次數(shù): 10)









歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1