收藏 分销(赏)

电子时钟基于AT89c51单片机设计电路图及程序.doc

上传人:二*** 文档编号:4570747 上传时间:2024-09-30 格式:DOC 页数:12 大小:1.24MB 下载积分:5 金币
下载 相关 举报
电子时钟基于AT89c51单片机设计电路图及程序.doc_第1页
第1页 / 共12页
本文档共12页,全文阅读请下载到手机保存,查看更方便
资源描述
- - 电子时钟基于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<reg51.h> #define uchar unsigned char //预定义一下 #define uint unsigned int uchar table[]="JD12102Class--21"; //显示内容 sbit lcden=P3^4; //存放器EN片选引脚 sbit lcdrs=P3^5; //存放器RS选择引脚 sbit beep=P3^6; //接蜂鸣器 extern void key1(); extern void key2(); extern void key3(); uchar num,hour=12,minite,second,ahour,aminite,asecond,a,F_k1,F_k2,F_k3; //定义变量 void delay(uint z) //延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_(uchar ) { lcdrs=0; P0=; //送出指令,写指令时序 delay(5); lcden=1; delay(5); lcden=0; } void write_data(uchar date) { lcdrs=1; P0=date; //送出数据,写指令程序 delay(5); lcden=1; delay(5); lcden=0; } void write_add(uchar add,uchar date) { uchar aa,bb; aa=date/10; bb=date%10; write_(0x80+add); write_data(0x30+aa); write_data(0x30+bb); } void init() //初始化 {lcden=0; write_(0x38); //设置16*2显示,5*7点阵 write_(0x0c); //开显示,不显示光标 write_(0x06); //地址加1,写入数据是光标右移1位 write_(0x01); //清屏 write_(0x80); //起点为第一行第一个字符开场 } void display(uchar h,uchar m,uchar s) //显示设计程序 {{ 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(' '); } } void main() {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); } } void timer0() interrupt 1 //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 <reg51.h> //调时间程序 #define uchar unsigned char #define uint unsigned int sbit k1=P1^0; //定义3个变量 sbit k2=P1^1; sbit k3=P1^2; extern uchar F_k1,F_k3,second,minite,hour,ahour,aminite,asecond; //预定义变量 extern void write_(uchar ); extern void write_add(uchar add,uchar date); extern void display(uchar h,uchar m,uchar s); void delay_key(int i) {while(i--);} void key1() { 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); } void key2() { 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); } } } } void key3() { 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); } } } - word.zl-
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服