
这是对之前电子钟功能的扩展,主要是增加了闹钟模块。即在预定时间响铃一分钟,一分钟后自动停止,或者按set键实现手动停止。
那它是用来研究数码管的。下一步是液晶显示的研究。
单片机程序设计如下:
#包括《reg51.h》
#定义uchar无符号字符
无符号字符码表[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };//数码管数字编码
uchar i,j,k,second,tcount,minute,hour,tminute,thour,ring
sbit beep=p2^6;sbit s2=p3^4;
//-
延迟(uchar n)
{
for(j=n;j》0;j -)
for(k=125;k》0;k-);
}
//-
使用0使定时器0()中断1无效
{
TH0=(65536-50000)/256;//中断设置初始化
TL0=(65536-50000)% 6;
tcount
If(tcount==20) //满1秒
{ t count=0;第二;哔声=0;//秒加1
If(second==60) //满1分
{秒=0;分钟;//分数加1,秒归零
If(minute==60) //满1小时
{
分钟=0;小时;//小时数加1,分数归零。
if(小时==24)
{ hour=0;}
}
}
}
}
使用1使定时器1()中断3无效
{
TH1=0x3c//中断设置初始化
TL1=0xb0
if(minute==t minute hour==thour ring==1){ beep=0;}//在预设时间自动响铃,一分钟后关机。
如果(S2==0)
{
响铃=0;//铃声中断。
}
}
//-
void main()
{ tminute=1;thour=0;//预设振铃时间
秒=55;分钟=0;小时=0;//给电子钟赋一个初始值,即启动时显示的时间。
ring=1;//启动响铃功能。
TH0=(65536-50000)/256;//中断设置初始化
TL0=(65536-50000)% 6;
EA=1;ET0=1;TMOD=0x 21;TR0=1;//打开中断总开关,计数器0允许中断。设置中断模式并启动计数器0。
ET1=1;TR1=1;
While(1) //无限循环,进入显示,主要是动态显示的原理。
{
p0=table[(second)];
P2=0x df;
延迟(5);
P0=表[(秒/10)];
P2=0x ef;
延迟(5);
p0=table[(minute)];
P2=0xf 7;
延迟(5);
P0=表[(分钟/10)];
P2=0x FB;
延迟(5);
p0=table[(hour)];
P2=0x FD;
延迟(5);
P0=表[(小时/10)];
P2=0x Fe;
延迟(5);
}
}









