用STC11F02E单片机制作的倒计时
- STC11FO2E介绍
- proteus电路图
- 实际电路
- 定时器工作过程
- 单片机程序
- 总结
STC11FO2E介绍
STC11F02E单片机是STC单时钟/机器周期(1)T)高性能单片机。采用增强型内核,STC11F02E保留普通8051的所有功能,并提供6个中断源、2个中断优先级、片内和晶体振荡器、1个看门狗。
增强型8051CPU,1T,单时钟/机器周期比普通8051快6-7倍。 工作电压:4.1V -5.5 V 工作频率:0 - 35MHz,相当于普通8051的0 - 420MHz 2K字节片内Flash程序存储器 片内256字节的SRAM 超强抗干扰,超低功耗 共有216位定时器/计数器,普通8051Timer0/Timer1完全一致 能唤醒掉电模式/停机模式的资源有:INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0 可编程时钟输出功能。T0从P3.4输出时钟,T1从P3.5输出时钟,BRT从P1.0输出时钟。
封装:SOP-20,DIP-20
proteus电路图
由于数码管显示采用扫描显示方法,截图不能全亮三盏灯。(Proteus单片机不需要建立最小系统,所以省略了)
实际电路
用洞板搭建的电路,后面焊接不好就不发照片。由于条件有限,没有四位数字管只能用三位数代替,继电器也没有五位数v所以先不加也没关系。左边的第一个数字管是小时,剩下的两个数字管是分钟,下面有三个按钮,晶体振动是12M,记得输出单片机数码管I/O口加排阻,否则I/O电流不足以驱动数码管。
定时器工作过程
首先,上电后,调整固定时间。每次按下按钮,定期添加10分钟。减键也是如此。设置分钟后,按下设置键,等到数字管闪烁,松开按钮进入小时设置。每次按下按钮,定期增加一小时。设置分钟和小时后,按下设置键,启动定时。此时,控制三极管I/O口为1,定时完成后,数字管显示000,闪动5次,之后会收到三极管。I/O关闭口置零三极管输出继电器断开。
单片机程序
#include"reg52.h" //头文件 #define LED P1 ///数字管阴极 #define LED1 P3 ///数字管阳极 sbit jia = P3^3; sbit jian= P3^4; sbit she = P3^5; //设置 sbit kai = P3^7; //控制引脚 unsigned int cont = 0; unsigned int c,dod; unsigned int shi,fen,miao; void Timer0_uint(); ///定时器0初始化 void RTC(); ///计时函数 void displayRTC(); ///把个位和十位分开 void display(); //显示函数 void delay_ms(int n); //延时 void stop); //设置定时时间 void display_Z(); //到达时间之后关断输出 unsigned char code dm[]={ 0xf6,0x12,0xea,0x7a,0x1e,0x7c,0xfc,0x32,0xfe,0x3e}; //段码 unsigned char code wm[]={ 0xf6,0xfd,0xfb}; //位码 unsigned char LED_z[3]; //数码管轮流显示数组 void main() { EA = 1; //打开总中断 shi = 0; fen = 0; miao =0; jia =1; jian=1; she=1; stop(); RTC(); displayRTC(); Timer0_uint(); //调用Timer0初始化函数 while(1) { displayRTC(); display(); } } void Timer0_uint() { TMOD = 0x01; //定时器工作模式 1 ET0 = 1; //定时器0中断
开关 TH0 = 0x3C; //初始值 TL0 = 0xB0; TR0 = 1; //开始定时 TF0 = 0; } void timer0interrupt() interrupt 1 //当定时器溢出时(TF0=1)就会进行中断服务函数 { TH0 = 0x3C; //再次赋初值 TL0 = 0xB0; TF0 = 0; //TF0赋值为0 cont++; if(cont>=10) //一秒一次 { display_Z(); RTC(); displayRTC(); display(); cont = 0; } }
代码比较长,这里只给出一部分,想要完整代码可以评论区留言,
代码比较简单,而且已经写好注释就不用过多的解释了,如果有不明白的地方可以问我,但是本人能力有限问了也不一定能回答上来。
总结
如果有写的不对的地方欢迎指正。