找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机定时闹钟仿真程序

  [复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


定时闹铃的基本功能
1.定时闹铃的基本功能:
         使用3位七段显示器来显示定时时间和所剩的时间(以秒为单位)
         具有3个按键来设置定时的时间:
         操作键K1:开始定时(默认为60秒)
         操作键K2:增加定时时间(以一秒为单位递增)
         操作键K3:减少定时时间(以一秒为单位递减)
         定时时间到时蜂鸣器发出蜂鸣声一分钟后停止
2.定时闹铃的可选功能:
         3位七段显示器采用动态显示。
         当操作键K2被长时间按下(超过3秒)则以十秒为单位增加定时时间
         当操作键K3被长时间按下(超过3秒)则以十秒为单位减少定时时间

buzzer蜂鸣器需要把它设置里的operatingvoltage 里的电压改为2v可以响,默认的12V不可以响
程序:
  1. #include<reg51.h>
  2. #include<stdio.h>
  3. unsigned char codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  4. void show(int n);
  5. void staticshow(int a);
  6. void delay();
  7. void displaydelay();
  8. bit t=0;
  9. bit m=0;
  10. sbit up=P1^1;
  11. sbit down=P1^2;
  12. sbit start=P1^0;
  13. sbit buzzer=P1^3;
  14. void main()
  15. {
  16. TMOD=0x01;
  17. TH0=0x3c; //高位
  18. TL0=0xaf; //低位,高低16位换的十进制数是65535减去放大的倍数的数,就是65535-放大倍数=0xTH0TL0,所以放大倍数基本在50000倍是极限了
  19. ET0=1;
  20. EA=1;
  21. TR0=1;
  22. while(1);
  23. }
  24. void show(int n)
  25. {
  26. P0=table[n/100];
  27. P2=~0x01;
  28. displaydelay();
  29. P2=0xff;
  30. P0=table[(n%100)%10];
  31. P2=~0x04;
  32. displaydelay();
  33. P2=0xff;
  34. P0=table[(n%100)/10];
  35. P2=~0x02;
  36. displaydelay();
  37. P2=0xff;
  38. }
  39. void staticshow(int a)
  40. {
  41. P0=table[a/100];
  42. P2=~0x08;
  43. displaydelay();
  44. P2=0xff;
  45. P0=table[(a%100)%10];
  46. P2=~0x20;
  47. displaydelay();
  48. P2=0xff;
  49. P0=table[(a%100)/10];
  50. P2=~0x10;
  51. displaydelay();
  52. P2=0xff;
  53. }
  54. void delay()
  55. {
  56. int i=30000;
  57. while(i--);
  58. }
  59. void displaydelay()
  60. {
  61. int i=2000;
  62. while(i--);
  63. }
  64. Timer0_int() interrupt 1
  65. {
  66.          staticchar i=20;//这里的“static”必须有,不然无法完成定时效果
  67.          staticint n=7;
  68.          staticint a=7;
  69.          staticint x=0;
  70.          staticint y=0;
  71.          staticint g=1;
  72.          buzzer=0;
  73.          show(n);
  74.          staticshow(a);
  75.          if(up==0)
  76. {
  77. n=n+g;
  78. a=a+g;
  79. if(y>0)
  80. {
  81. g=1;
  82. x=0;
  83. }
  84. delay();
  85. x++;
  86. if(x>=3)
  87. {
  88. g=10;
  89. }

  90. if(i==1000)
  91. {
  92. n=0;
  93. a=0;
  94. }
  95. }
  96. if(down==0)
  97. {
  98. n=n-g;
  99. a=a-g;
  100. if(x>0)
  101. {
  102. g=1;
  103. y=0;
  104. }
  105. delay();
  106. y++;
  107. if(y>=3)
  108. {
  109. g=10;
  110. }
  111. if(n==-1)
  112. {
  113. n=999;
  114. a=999;
  115. }
  116. }
  117.          if(start==0||t==1)
  118.          {
  119.          t=1;
  120.          if(i)
  121.          {
  122.          i--;
  123.          }
  124.          else
  125.          {
  126.          n--;
  127.          if(n==0)
  128.          {
  129.          buzzer=1;
  130.          t=0;
  131.          delay();
  132.          }
  133.          i=9;
  134.          }
  135.          }
  136.          TH0=0x3c;
  137.          TL0=0xaf;
  138. }
复制代码


全部资料51hei下载地址:
3位led定时闹钟.rar (28.38 KB, 下载次数: 171)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:576350 发表于 2019-7-2 13:49 | 只看该作者
解压不了啊
回复

使用道具 举报

板凳
ID:576350 发表于 2019-7-2 14:14 | 只看该作者
解压不了
回复

使用道具 举报

地板
ID:607762 发表于 2019-11-14 22:31 | 只看该作者
运行不对啊
回复

使用道具 举报

5#
ID:635436 发表于 2019-11-18 16:14 | 只看该作者
第26行table未定义标识符
回复

使用道具 举报

6#
ID:629890 发表于 2019-12-18 19:03 | 只看该作者

没消抖吗,闪的也太厉害了。。。
回复

使用道具 举报

7#
ID:709567 发表于 2020-3-16 20:38 | 只看该作者
有大神可以简单讲解一下程序吗?我是汇编小白呀
回复

使用道具 举报

8#
ID:713556 发表于 2020-3-22 18:36 | 只看该作者
看不是太懂  难搞
回复

使用道具 举报

9#
ID:741893 发表于 2020-5-18 23:38 | 只看该作者
为什么不用7seg-mpx6-cc
回复

使用道具 举报

10#
ID:767212 发表于 2020-6-2 09:45 | 只看该作者
这个好用吗
回复

使用道具 举报

11#
ID:764107 发表于 2020-6-2 10:18 | 只看该作者
没有时和分的显示吗?我觉得可以添加个小时和分钟的显示,这样看起来才实用一点
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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