找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3284|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机时,分,秒程序

[复制链接]
跳转到指定楼层
楼主
ID:272841 发表于 2018-1-9 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机,时分秒程序设计

单片机源程序如下:
  1. #include <reg51.h>//<stc15.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. void BCSegNum();
  5. void XSSegNum();
  6. void DelayMs(uint n);

  7. uchar Second=59, Hour=8, Minute=13;
  8. static uchar Counter;
  9. uchar flag0=0;


  10. sbit dp=P2^7;
  11. SegNum[]={1,2,3,4};//四个数码管
  12. SegCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  13. BitCode[]={0x01,0x02,0x04,0x08};

  14. void main()
  15. {
  16. TMOD = 0x01;//16位不自动重装,方式1
  17. TH0 = 0x4c;//50ms
  18. TL0 = 0x00;
  19. ET0 = 1;
  20. EA = 1;
  21. TR0 = 1;
  22. EX0 = 1;
  23. EX1 =1;
  24. IT0 = 1;
  25. IT1 = 1;
  26. P1 = 0;
  27. while(1)
  28. {
  29. BCSegNum();
  30. XSSegNum();

  31. }
  32. }

  33. void BCSegNum()
  34. {
  35. SegNum[3] = Hour/10;//时十位
  36. SegNum[2] = Hour%10;
  37. SegNum[1] = Minute/10;
  38. SegNum[0] = Minute%10;
  39. }

  40. void XSSegNum()
  41. {
  42. uchar i;
  43. for(i=0;i<4;i++)
  44. {
  45. P2=SegCode[SegNum[i]];
  46. P1=BitCode[i];
  47. DelayMs(3);
  48. P1=0x00;
  49. }
  50. }

  51. void T0_Isr(void)interrupt 1
  52. {

  53. TH0 = 0x4c;
  54. TL0 =0x00;
  55. Counter++;
  56. if(Counter<=10)dp = 0;
  57. else dp = 1;
  58. if(Counter==20)
  59. {
  60. Second++;
  61. Counter = 0;
  62. if(Second==60)
  63. {
  64. Second=0;
  65. Minute++;
  66. if(Minute==60)
  67. {
  68. Minute=0;
  69. Hour++;
  70. if(Hour==24)
  71. {
  72. Hour=0;
  73. }
  74. }
  75. }
  76. }

  77. }

  78. void DelayMs(uint n)
  79. {
  80. uchar j;
  81. while(n--)
  82. {
  83. for(j=0;j<113;j++);
  84. }
  85. }

  86. void Ex0Isr() interrupt 0 //选择键
  87. {
  88. TR0 = 0;
  89. flag0++;//flag0=0无键按下
  90. if(flag0==3)
  91. {
  92. flag0=0;
  93. TR0 = 1;
  94. }
  95. }

  96. void Ex1tsr() interrupt 2 //加键
  97. {
  98. if(flag0==1)//分加1
  99. {
  100. Minute++;

  101. if(Minute==60)
  102. Minute=0;
  103. }
  104. if(flag0==2)//时加1
  105. {
  106. Hour++;
  107. if(Hour==24)
  108. Hour=0;
  109. }

  110. }
复制代码

所有资料51hei提供下载:
51单片机时,分,秒程序.rar (11.97 KB, 下载次数: 5)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表