找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14343|回复: 14
收起左侧

滴滴滴爆炸了=开源制作999秒倒计时器

  [复制链接]
ID:123732 发表于 2016-10-21 18:10 | 显示全部楼层 |阅读模式
开源制作999秒倒计时器-创新设计精简制作(只需4个元件)
滴滴滴--听到这种声音就会让人联想到电影里炸弹在倒计时后发出的声音,今天开源制作一款999秒倒计时器,当倒计时完毕蜂鸣器会发出滴滴的声音,提示倒计时完毕。
1.所需元件:STC单片机+按键+有源蜂鸣器+共阴数码管
2.说明:开机后数码管显示999,按一下开关K开始倒计时,在计时状态按一下开关则暂停计时,在暂停计时状态按一下开关又开始倒计时,再次按一下则重新设置倒计时999秒。
3.蜂鸣器选择有源蜂鸣器正极接vcc负极接P5.4
4.开关一端接P5.5另一端接地
5.单片机选有推挽输出的单片
大家的支持就是我发帖的动力==
下图为开机界面
倒计时4.png

下图为正在倒计时
倒计时3.png

下图为原理图截图
倒计时器原理图.png

点评一下谢谢
  1. /***************************************************************                                                                                                        
  2. 编写:刘海龙
  3. 程序名:  3位共阴数码管999秒倒计时器     
  4. 编写时间: 2016年10月21日
  5. 硬件支持: STC15W408AS或者stc12c系列无说明时晶振一般选12M
  6. 接口说明:         蜂鸣器负极接P5^4,按键接P5^4                                                        
  7. /***************************************************************/
  8. #include <STC15W.H>//STC15W408AS单片机头文件
  9. #include <4LED_YIN.H>//共阴数码管驱动
  10. #include <intrins.h>
  11. /***************************************************************/
  12. sbit key1=P5^5;
  13. sbit beep=P5^4;
  14. unsigned int s;//设置秒存放区
  15. data unsigned char cou  = 0; // 软计数器,对10ms时基信号累加到1s
  16. unsigned char MENU=0;//状态标志位
  17. /*******************************************/
  18. void delay1ms (unsigned int a){ // 1ms延时程序
  19.         unsigned int i;
  20.         while( --a != 0){
  21.                 for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600  
  22.         }                                                       //AT89C51单片机在外部晶振为12MHz时i值上限为125
  23. }
  24. /*********************************************************************************************/
  25. void di(){//蜂鸣器驱动程序
  26.         beep=0;
  27.         delay1ms(500);
  28.         beep=1;
  29.         delay1ms(500);
  30.         beep=0;
  31.         delay1ms(500);
  32.         beep=1;
  33.         }
  34. /**********定时器初始化*********************************/
  35. void init_T0 (void){
  36.                 TMOD = 0x11;         // 定时/计数器0,1工作于方式1   
  37.             TH0 = 0x3c;          // 预置产生50ms时基信号   
  38.             TL0 = 0xb0;   
  39.             EA = 1;              // 开总中断   
  40.                     ET0 = 1;             // 定时/计数器0允许中断   
  41.             TR0 = 0;             // 开闭定时/计数器0
  42. }
  43. /*******************************************/               
  44. void tiem0(void) interrupt 1 //50毫秒@12.000MHz
  45. {  
  46.         cou++;
  47.         
  48.         if (cou>19)//20个50ms到(1秒到)
  49.         {
  50.                 cou=0;
  51.                 s--;//秒减一
  52.                
  53.                 if(s<1)
  54.                 {         di();          //倒计时完蜂鸣器响
  55.                         TR0=0;//关闭定时器
  56.                 }        
  57.         }
  58.                 TL0 = 0xB0;                //设置定时初值
  59.                 TH0 = 0x3C;                //设置定时初值
  60. }
  61. /******************************************/
  62. void main(){ //主函数
  63.                
  64.                  init();//设置相关IO口为推挽方式
  65.                  init_T0();//定时器初始化
  66.                  s=999;

  67.         while (1){
  68.                          diplay_data (1,disdata[s/100]);
  69.                         diplay_data (2,disdata[s%100/10]);
  70.                            diplay_data (3,disdata[s%10]);
  71.                         if(key1==0&&MENU==0){        //K1按下计时器开始计时
  72.                        delay(10);
  73.                            if(key1==0&&MENU==0){
  74.                                   s=999;
  75.                                   TR0 = 1;
  76.                                   while(!key1);
  77.                                   MENU=1;//开始计时的标志
  78.                                                    }
  79.                                           }
  80.                     if(key1==0&&MENU==1){//K1按下同时在走时状态走时暂停
  81.                                 delay(10);
  82.                                 if(key1==0&&MENU==1){
  83.                                         TR0 = 0;
  84.                                         while(!key1);
  85.                                         MENU=2;//暂停键按下的标志  
  86.                                                                      }
  87.                                                           }
  88.                         if(key1==0&&MENU==2){//K1按下同时在暂停状态继续走时
  89.                                 delay(10);
  90.                                 if(key1==0&&MENU==2){
  91.                                         TR0 = 1;
  92.                                         while(!key1);
  93.                                         MENU=3;
  94.                                     }
  95.                           }        
  96.                     if(key1==0&&MENU==3){//K1按下同时在走时状态清零
  97.                                 delay(10);
  98.                                 if(key1==0&&MENU==3){
  99.                                         TR0 = 0;
  100.                                         s=999;                                       
  101.                                         while(!key1);
  102.                                         MENU=0;
  103.                                     }
  104.                           }
  105.         }
  106. }
  107. /********************END*********************/
复制代码







999秒倒计时器原理图 源程序.rar

66.97 KB, 下载次数: 193, 下载积分: 黑币 -5

评分

参与人数 2黑币 +106 收起 理由
张小帅1126 + 6 赞一个!
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:495990 发表于 2023-4-9 22:53 | 显示全部楼层
请问楼主,#include <4LED_YIN.H>//共阴数码管驱动是怎么写的呢?可以上传来学习一下吗
回复

使用道具 举报

ID:1038987 发表于 2023-4-8 15:35 | 显示全部楼层
看到这个我觉得我做的这个就更加OK了。不过开源到立创没有通过!我做了一个超大声闹铃
回复

使用道具 举报

ID:308903 发表于 2022-12-8 15:08 | 显示全部楼层
wyl138 发表于 2022-12-7 04:26
感觉实际用处不大,最大只能十几分钟,但是对初学单片机还是有借鉴作用,谢谢分享。

你把三位数码管换成4位,5位,6位,程序改动下,不就一年了
回复

使用道具 举报

ID:63317 发表于 2022-12-7 06:42 | 显示全部楼层

简单、实用 谢谢分享资料
回复

使用道具 举报

ID:1049825 发表于 2022-12-7 04:26 | 显示全部楼层
感觉实际用处不大,最大只能十几分钟,但是对初学单片机还是有借鉴作用,谢谢分享。
回复

使用道具 举报

ID:85508 发表于 2022-12-6 21:13 | 显示全部楼层
简单、实用
回复

使用道具 举报

ID:428577 发表于 2018-11-18 11:10 来自手机 | 显示全部楼层
不错想学习学习
回复

使用道具 举报

ID:89835 发表于 2018-11-6 22:17 | 显示全部楼层
这个玩意对新手来说很有意思
回复

使用道具 举报

ID:123732 发表于 2016-12-15 20:05 | 显示全部楼层
djf333 发表于 2016-12-14 00:19
请问什么画图软件,新手请指教,

画图软件PADS
回复

使用道具 举报

ID:110769 发表于 2016-12-14 00:19 来自手机 | 显示全部楼层
请问什么画图软件,新手请指教,
回复

使用道具 举报

ID:151199 发表于 2016-11-30 22:24 | 显示全部楼层
这东西找了好久了谢谢楼主
回复

使用道具 举报

ID:99130 发表于 2016-10-26 12:51 | 显示全部楼层
taoran 发表于 2016-10-22 10:10
这几天关注了一下楼主的作品,diy但速度真是快啊!很是佩服.对于这个程序我有一个小小的建议,就是可以设置为 ...

我也觉得这个提议很好。就是不会改
回复

使用道具 举报

ID:123732 发表于 2016-10-22 10:35 | 显示全部楼层
taoran 发表于 2016-10-22 10:10
这几天关注了一下楼主的作品,diy但速度真是快啊!很是佩服.对于这个程序我有一个小小的建议,就是可以设置为 ...

1. 谢谢点评和建议!建议很好,为了不被非法利用,没有真正做成倒计时boom的程序
2.其实这个制作本来是一个数码管按键和单片机组成的一个倒计时器,但为了增加制作的吸引力我特意增加了个时间到数码管响两声的程序,并在帖子标题里加了“爆炸了”等词语引人注意。
3.我要做的就是抛砖引玉,基本功能开源出来,更多坛友可以加入自己的创意和想法进去,改造成更有特色的作品。
回复

使用道具 举报

ID:98618 发表于 2016-10-22 10:10 来自手机 | 显示全部楼层
这几天关注了一下楼主的作品,diy但速度真是快啊!很是佩服.对于这个程序我有一个小小的建议,就是可以设置为,当时间快要到这时候,滴滴声开始响起,然后这个声音的频率就会慢慢加快,等这个频率达到非常快的时候就boom,这样做出来的效果可能更逼真一点.希望大家站在楼主这个巨人的肩膀上一起研究改进
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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