电子时钟基于AT89c51单片机设计电路图及程序.docx
- 文档编号:8845947
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:13
- 大小:972.68KB
电子时钟基于AT89c51单片机设计电路图及程序.docx
《电子时钟基于AT89c51单片机设计电路图及程序.docx》由会员分享,可在线阅读,更多相关《电子时钟基于AT89c51单片机设计电路图及程序.docx(13页珍藏版)》请在冰豆网上搜索。
电子时钟基于AT89c51单片机设计电路图及程序
电子时钟基于AT89c51单片机的设计
电子时钟原理图
开机显示仿真图:
当按下仿真键时电子时钟开机页面显示第一行显示JD12102Class--16,第二行显示动态TINE:
12:
00:
04。
电子时钟调时间仿真图:
当按下K1为1次时,光标直接跳到电子时钟的秒,可以按下K2进行调节。
当按下K1为2次时,光标直接跳到电子时钟的分,可以按下K2进行调节。
当按下K1为3次时,光标直接跳到电子时钟的时,可以按下K2进行调节。
当按下K1为4次时,光标直接跳完,电子时钟可以进行正常计时。
电子时钟闹钟调节仿真:
当按下K3为1次时,直接跳到闹钟显示界面00:
00:
00,按下K2可以对闹钟的秒进行调节。
当按下K3为2次时,可以调到分,按下K2可以对闹钟的分进行调节。
当按下K3为3次时,可以调到时,按下K2可以对闹钟的时进行调节。
当按下K3为4次时,直接跳到计时界面,对闹钟进行到计时,时间到可以发出滴滴声。
#include
#defineucharunsignedchar//预定义一下
#defineuintunsignedint
uchartable[]="JD12102Class--21";//显示容
sbitlcden=P3^4;//寄存器EN片选引脚
sbitlcdrs=P3^5;//寄存器RS选择引脚
sbitbeep=P3^6;//接蜂鸣器
externvoidkey1();
externvoidkey2();
externvoidkey3();
ucharnum,hour=12,minite,second,ahour,aminite,asecond,a,F_k1,F_k2,F_k3;//定义变量
voiddelay(uintz)//延时
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_(uchar)
{
lcdrs=0;
P0=;//送出指令,写指令时序
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_data(uchardate)
{
lcdrs=1;
P0=date;//送出数据,写指令程序
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_add(ucharadd,uchardate)
{
ucharaa,bb;
aa=date/10;
bb=date%10;
write_(0x80+add);
write_data(0x30+aa);
write_data(0x30+bb);
}
voidinit()//初始化
{lcden=0;
write_(0x38);//设置16*2显示,5*7点阵
write_(0x0c);//开显示,不显示光标
write_(0x06);//地址加1,写入数据是光标右移1位
write_(0x01);//清屏
write_(0x80);//起点为第一行第一个字符开始
}
voiddisplay(ucharh,ucharm,uchars)//显示设计程序
{{
write_(0x80+0x16);}
{write_(0xC0+0x00);
write_data('T');
write_data('I');
write_data('M');
write_data('E');
write_data(':
');
write_data(0x30+(h/10));
write_data(0x30+(h%10));
write_data(':
');
write_data(0x30+(m/10));
write_data(0x30+(m%10));
write_data(':
');
write_data(0x30+(s/10));
write_data(0x30+(s%10));
write_data('');
write_data('');
write_data('');
}}
voidmain()
{init();
TMOD=0X01;//设置T0定时方式1
TH0=(65535-50000)/256;//设置初值
TL0=(65535-50000)%256;
EA=1;//开总中断
TR0=1;//启动T0
ET0=1;
for(num=0;num<16;num++)//依次读出数据
{
write_data(table[num]);
}
while
(1)
{
key1();
key2();
key3();
if(ahour==hour&&aminite==minite&&second<10)//时间到闹钟响
{
beep=~beep;
}
if(F_k1==0&F_k3==0)//K1和K3按下次数为零就直接显示时分秒
display(hour,minite,second);
}
}
voidtimer0()interrupt1//T0中断函数
{
TH0=(65535-50000)/256;//装载计数器初值
TL0=(65535-50000)%256;
a++;
if(a==20)
{//进位设置60秒进1分,60分进1时,24时进0时
a=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
}
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P1^0;//定义3个变量
sbitk2=P1^1;
sbitk3=P1^2;
externucharF_k1,F_k3,second,minite,hour,ahour,aminite,asecond;//预定义变量
externvoidwrite_(uchar);
externvoidwrite_add(ucharadd,uchardate);
externvoiddisplay(ucharh,ucharm,uchars);
voiddelay_key(inti)
{while(i--);}
voidkey1()
{
if(k1==0)//按下K1零次时,直接计时与开机显示
{
delay_key(100);
if(k1==0)
{
TR0=0;
while(!
k1);
F_k1++;
if(F_k1==4)
{
F_k1=0;
write_(0x0c);
TR0=1;
}
}
}
if(F_k1==1|F_k3==1)
{
write_(0xC0+0x0c);
write_(0x0f);
}
if(F_k1==2|F_k3==2)
write_(0xC0+0x09);
if(F_k1==3|F_k3==3)
write_(0xC0+0x06);
}
voidkey2()
{
if(k2==0)
{
delay_key(100);
{
while(!
k2);
if(F_k1==1)//按下K1一次时设置闹钟的秒
{
second++;
if(second==60)
second=0;
write_add(0x4b,second);
}
if(F_k1==2)//按下K3两次时设置闹钟的分
{
minite++;
if(minite==60)
minite=0;
write_add(0x48,minite);
}
if(F_k1==3)//按下K1三次时设置闹钟的时
{
hour++;
if(hour==24)
hour=0;
write_add(0x45,hour);
}
if(F_k3==1)//按下K3一次时设置闹钟的秒
{
asecond++;
if(asecond==60)
asecond=0;
write_add(0x4b,asecond);
}
if(F_k3==2)//按下K3两次时设置闹钟的分
{
aminite++;
if(aminite==60)
aminite=0;
write_add(0x48,aminite);
}
if(F_k3==3)//按下K3三次时设置闹钟的时
{
ahour++;
if(ahour==24)
ahour=0;
write_add(0x45,ahour);
}
}
}
}
voidkey3()
{
if(k3==0)
{
delay_key(100);
if(k3==0)
{
while(!
k3);
F_k3++;
if(F_k3==4)//K3等于四次时直接跳入闹钟显示
{
F_k3=0;
write_(0x0c);
}
if(F_k3==1)
display(ahour,aminite,asecond);
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 时钟 基于 AT89c51 单片机 设计 电路图 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)