历史上的今天
今天是:2024年11月26日(星期二)
2020年11月26日 | 单片机定时倒计时提醒制作
2020-11-26 来源:51hei
学了一段时间单片机,这两天做了个实用电路,最长99分钟定时倒计时提醒器。缺陷是电路开始工作后,一分钟减一个数再无其它动作。给启动按钮加了声音,否则电路是否已经启动都看不出来。时间到有响声提醒。

上面两个按钮调节十分与分,每次加十分钟和加一分钟。
晶振下面是复位按钮,右下角是启动按钮。
下面压缩包中有Proteus仿真文件与C代码。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
#include #define uchar unsigned char #define uint unsigned int sbit gewei0=P2^6; //允许个位显示。 sbit shiwei0=P2^7; //允许十位显示。 sbit key1=P2^5; //键1,每按加10分钟。 sbit key2=P2^4; //键2,每按加1分钟。 sbit key3=P2^3; //键3,开倒计时或暂停。 sbit beep=P2^2; uchar k; unsigned int s; void delayms(uchar); void delay(uint z); void keyscan(); void display(uchar); void init(); void xiang1(); void xiang2(); uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main() { init(); //调“初始化”。 while(1) { keyscan(); //调“监测按键”。 display(k); //调“显示”。 }} void keyscan() //监测按键。 { if(key2==0) { delayms(26); if(key2==0) { k++; if(k>=99) //k==99与中断那里一致。 k=0; while(!key2); //抬起按键key2时,显示出k+2的结果。 } } if(key1==0) { delayms(26); if(key1==0) { k=k+10; if(k>=99) //k==99与中断那里一致。 k=0; while(!key1); } } if(key3==0) { delayms(26); if(key3==0) { xiang1(); //启动“倒计时”提示。 delayms(246); TR0=~TR0; while(!key3); }}} void delayms(uchar z) //延时。 { uchar i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } void delay(uint z) { while(z--); } void display(uchar k) //显示。 { uchar shi,ge; shi=k/10; ge =k%10; gewei0=0; P0=table[ge]; delayms(21); gewei0=1; shiwei0=0; P0=table[shi]; delayms(21); shiwei0=1; } void init() //初始化。设置中断与定时器的值。 { TMOD=0x01; TH0=(65536-50000)/256; //晶振12MHz,定时50ms。 TL0=(65536-50000)%256; EA=1; ET0=1; } void xiang1() //计时开始提示音。 { uchar q; for(q=0;q<100;q++) { beep=0; delayms(6); beep=1; delayms(4); } delayms(64); } void xiang2() //计时结束提示音--嘟嘟。 { unsigned int m; uchar n; for(n=0;n<2;n++) { for(n=0;n<111;n++) { beep=0; delay(107); beep=1; delay(107); } for(m=0;m<3456;m++); for(n=0;n<111;n++) { beep=0; delay(107); beep=1; delay(107); } for(m=0;m<33333;m++); } ……………………
史海拾趣
|
在柏林推出的DVB T(地面数字广播)数字电视也已经影响到汽车娱乐系统中的电视接收。现在,汽车电视接收机不仅能够接收模拟电视信号(它仍将在城市以外的地区继续存在数年),而且也能够接收和处理DVB T信号。Hirschmann Electronic ...… 查看全部问答> |
|
BOOT0/1得来回倒腾。BOOT0=0调试一次之后如果停止调试,再启用调试就出现“Programming Failed!”错误 试出来唯一的解决方法就是始终保持BOOT1=1。 如果出现BOOT0=0无法调试的情况,就断电改成BOOT0=1再上电,从RAM启动,运行J-link ARM软件,连 ...… 查看全部问答> |
|
课程描述 参加嵌入式linux系统与应用开发就业班可以使学员快速掌握嵌入式系统开发的流程,系统移植的方法,编写Bootloader等。学习本课程的学员能够从事嵌入式系统相关的项目开发。 1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期 ...… 查看全部问答> |
|
请教各位前辈一个问题: 我要将linux系统裁剪(系统功能简单,只需要保留网络功能),并制作成ISO光盘安装,如何做? 1.使用定制安装linux系统,如使用LFS, Gentoo安装。 问题:安装后的系统如何制作成ISO,实现光盘安装?&n ...… 查看全部问答> |
|
帮忙推荐一款适合于初学者arm开发板,最好有详细的实验手册,我想买周立功牌子的 我想买一套周立功的arm开发板,我原先看重的是一款easyarm1138 的板子,他网站上介绍的价格是198元,然后打电话过去问了一下,他说这款板子过期了,并且配套的试验教材和文档也没有,他推荐我买easyarm 2131,480元,且配有各种资料文档。 大家, ...… 查看全部问答> |
|
菜鸟问题:请问arm9中集成usb模块部分中的固件程序可以重新改写吗? 我在用以arm9为核心的智能手机开发板6410,要修改其中usb模块部分的固件程序,其实就是修改描述符的值。请问有搞过 这方面的高手吗?到底可以修改吗? 请高手指点迷津,小弟不胜感激!!!!!… 查看全部问答> |
|
链接是我在网络版块提的问题!在这里也问问大家!各位大虾帮我!150分,不够还可以加! http://topic.eeworld.net/u/20080124/10/3e66c379-f123-4581-9a21-06514d1350d6.html… 查看全部问答> |




