内容正文:
定时器实现60s计时的仿真
更多模板请关注:https://haosc.taobao.com
CONTENTS
目录
01
02
60秒计时电路分析
60秒计时程序设计
道艺兼修
敬业乐群
60秒计时电路分析
01
(1)两位共阳极数码管
(2)动态显示
(3)60秒精确正计时
(4)P0控制段码,P2.6,
P2.7控制位
3
60秒计时程序设计
02
动态扫描用到定时器,计时还要用到计时器,
用1个,还是两个?
问题?
4
60秒计时程序设计
02
02
(1)程序设计流程图
主程序
开始
初始化
秒==60?
定时器中断50次?
Y
N
Y
次数回0,秒++
Y
N
秒回0
5
60秒计时程序设计
02
02
(1)程序设计流程图
TH、TL初始值
两位动态显示一次
中断入口
记录中断次数
返回
中断程序
6
60秒计时程序设计
02
(2)程序设计
1)初始化
#include <reg51.h>
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//共阳极数码管 0---9,- 的字型码
unsigned char miao=0; //记录“秒”
unsigned char T_count0=0;//定时器中断次数记录
sbit wei1=p2^6; //数码管位1
sbit wei1=p2^7;//数码管位2
7
60秒计时程序设计
02
2)主程序
main()
{
TMOD=0x01; //定时器工作方式
TH0=(65536-20000)/256;//TH0=0xb1;
TL0=(65536-20000)%256;//TL0=0xE0;
ET0=1; //中断允许
EA=1; // 中断总开关
TR0=1; //启动定时器
while(1)
{
if(T_count0==50)// 50次到?
{
T_count0=0; //回0
miao++;
if(miao==60)miao=0;
}
}
}
8
定时器中断程序设计
02
void T0_IR( ) interrupt 1
{
TH0=0xb1; //重新设置定时器初始值
TL0=0xe0;
T_count0++; //记录定时器中断次数
wei1=1;//数码管动态扫描一次
P0=duan[miao/10];
delay_nms(1);
wei1=0;
wei2=1;
P0=duan[miao%10];
delay_nms(1);
wei2=0;
}
3)定时器中断程序
9
定时器中断程序设计
02
10
60秒计时程序设计
02
02
(1)程序设计流程图
TH、TL初始值
动态显示一次
中断入口
记录中断次数
返回
主程序
中断程序
开始
初始化
N
Y
秒==60?
定时器中断50次?
Y
N
Y
次数回0,秒++
分==60?
N
Y
秒回0,分++
时==24?
Y
分回0,时++
N
时++
N
N
11
谢谢观看!
Simple Gifts
Jewel
Lullaby
167584.05
胡祝兵
$$