内容正文:
定时器实现24h计时的仿真
更多模板请关注:https://haosc.taobao.com
CONTENTS
目录
01
02
24h计时电路分析
24h计时程序设计
道艺兼修
敬业乐群
24h计时电路分析
01
(1)8位共阴极数码管
(2)动态显示
(3)24h精确计时
(4)P2.0,P2.1,P2.2
经138译码器控制位;
P0控制数码管的段
3
24h计时程序设计
02
1个定时器同时实现动态扫描,计时。
4
24h计时程序设计
02
02
(1)程序设计流程图
主程序
开始
初始化
Y
秒==60?
定时器中断50次?
Y
N
Y
次数回0,秒++
分==60?
N
秒回0,分++
时==24?
Y
分回0,时++
N
时回0
N
5
24h计时程序设计
02
02
(1)程序设计流程图
TH、TL初始值
8位动态显示一次
中断入口
记录中断次数
返回
中断程序
6
24h计时程序设计
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,fen,shi; //记录“秒,分,时”
unsigned char T_count0=0;//定时器中断次数记录
unsigned char dis[8]={0,0,10,0,0,10,0,9};//显示缓冲区
7
24h计时程序设计
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;fen++;
if(fen==60){fen=0;shi++;
if(shi==24){shi=0;}}}
}
}
}
8
24h计时程序设计
02
void T0_IR( ) interrupt 1
{unsigned char I;
TH0=0xb1; //重新设置定时器初始值
TL0=0xe0;
T_count0++; //记录定时器中断次数
for(j=0;j<8;j++)
{
P2=j;
P0=duan[dis[j]];
delay_nms(1);
}
}
3)定时器中断程序
9
24h计时程序设计
02
10
谢谢观看!
Simple Gifts
Jewel
Lullaby
167584.05
胡祝兵
$$