ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:15.97KB ,
资源ID:7674705      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7674705.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(新1602下的闹钟程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

新1602下的闹钟程序.docx

1、新1602下的闹钟程序1602下的闹钟程序#includereg52.h#define uchar unsigned char#define uint unsigned int#define n1 15#define n2 14#define y 0x01#define e 5sbit wela=P27;sbit dula=P26;sbit rs=P35;sbit lcden=P34;sbit rd=P37;sbit s0=P30; /the mode setnum:one-the time two-the alarmsbit s1=P31; /the mode when the setnum

2、=one sbit s2=P32; /up sbit s3=P33; /downsbit beep=P23; /the beepuchar i;uchar code table=0000-00-00 MON;uchar code table1=00:00:00 11C o;uchar code nmon=0,31,28,31,30,31,30,31,31,30,31,30,31; /the common yearuchar code lmon=0,31,29,31,30,31,30,31,31,30,31,30,31; /the leap yearuchar tt,sec,min,hour,d

3、ay,week,mon;uchar t0,sec1,min1,hour1;uchar num,setnum,bnum; /for the modeint year;void delay(uchar z) uchar i,j; for(i=125;i0;i-) for(j=z;j0;j-); void write_cmd(uchar cmd)/write commond rs=0; P0=cmd; delay(5); lcden=1; delay(5); lcden=0;void write_data(uchar dat)/write data rs=1; P0=dat; delay(5); l

4、cden=1; delay(5); lcden=0;void lcd_init() /the init wela=0; dula=0; lcden=0; write_cmd(0x38); write_cmd(0x0f); write_cmd(0x06); write_cmd(0x01); write_cmd(0x80); for(i=0;in1;i+) write_data(tablei); / one 0x write_data(0x38) one 0x the same delay(2); write_cmd(0x80+0x40); for(i=0;in2;i+) write_data(t

5、able1i); delay(2); void timer_init() TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%6; TH1=(65536-50000)/256; TL1=(65536-50000)%6; EA=1; ET0=1; ET1=1; TR0=1;void lcd_yeardisplay() /display the year int a1,a2,a3,a4; write_cmd(0x80); a1=year/1000; a2=year/100; a3=year/10; a4=year; write_data(0x30

6、+a1); write_data(0x30+a2); write_data(0x30+a3); write_data(0x30+a4);void lcd_mddisplay(uchar add,uchar date) /display the month and day uchar d1,d2; write_cmd(0x80+add); d1=date/10; d2=date; write_data(0x30+d1); write_data(0x30+d2); void lcd_hmsdisplay(uchar add,uchar date) uchar t1,t2; write_cmd(0x

7、80+0x40+add); t1=date/10; t2=date; write_data(0x30+t1); write_data(0x30+t2);void time_display() if(setnum=0|setnum=1) lcd_yeardisplay(); lcd_mddisplay(0x05,mon); lcd_mddisplay(0x08,day); lcd_hmsdisplay(0x00,hour); lcd_hmsdisplay(0x03,min); lcd_hmsdisplay(0x06,sec); void alarm_display() if(setnum=2)

8、lcd_hmsdisplay(0x00,hour1); lcd_hmsdisplay(0x03,min1); lcd_hmsdisplay(0x06,sec1); void set_1display() if(num=6) /the year write_cmd(0x80); write_cmd(0x0f); if(num=5) /the month write_cmd(0x80+0x05); write_cmd(0x0f); if(num=4) /the day write_cmd(0x80+0x08); if(num=3) /the hour write_cmd(0x80+0x40); i

9、f(num=2) /the minute write_cmd(0x80+0x40); if(num=1) /the second write_cmd(0x80+0x40+0x03); if(num=1) write_cmd(0x80+0x40+0x06); write_cmd(0x0f); write_cmd(0x0f);void timekeeper() if(tt=20) tt=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; if(hour=24) hour=0; day+; week+; if(week=8) week=

10、0; if(year%4=0&year0!=0)|year0=0) /the leap year if(day=lmonmon+1) day=1; mon+; if(mon=13) mon=1; year+; else if(day=nmonmon+1) day=1; mon+; if(mon=13) mon=1; year+; void time_keyscan() if(setnum=1) if(s1=0) delay(5); if(s1=0) while(!s1); / year=1111; /for the debug / mon=11; / day=11; num+; TR0=0;

11、if(num=7) num=0; TR0=1; write_cmd(0x0c); set_1display(); if(num!=0) if(s2=0) delay(5); if(s2=0) if(num=1) /the second sec+; if(sec=60) sec=0; if(num=2) /the minute min+; if(min=60) min=0; if(num=3) /the hour hour+; if(hour=24) hour=0; if(num=4) /the day day+; if(year%4=0&year0!=0)|year0=0) if(day=lm

12、onmon+1) day=1; else if(day=nmonmon+1) day=1; if(num=5) /the month mon+; if(mon=13) mon=1; if(num=6) /the year year+; if(year=10000) year=0; write_cmd(0x0f); if(s3=0) delay(5); if(s3=0) if(num=1) /the second sec-; if(sec=-1) sec=59; if(num=2) /the minute min-; if(min=-1) min=59; if(num=3) /the hour

13、hour-; if(hour=-1) hour=23; if(num=4) /the day day-; if(year%4=0&year0!=0)|year0=0) if(day=0) day=lmonmon; else if(day=0) day=nmonmon; if(num=5) /the month mon-; if(mon=0) mon=12; if(num=6) /the year year-; if(year=-1) year=9999; void alarm_keyscan() if(setnum=2) if(s1=0) delay(5); if(s1=0) while(!s

14、1); year=0; /for the debug, if setnum=2 and s1=0 this word will work or will not mon=0; day=0; num+; TR0=0; if(num=4) num=0; TR0=1; write_cmd(0x0c); set_1display(); if(num!=0) if(s2=0) delay(5); if(s2=0) if(num=1) /the second sec1+; if(sec1=60) sec1=0; if(num=2) /the minute min1+; if(min1=60) min1=0

15、; if(num=3) /the hour hour1+; if(hour1=24) hour1=0; if(s3=0) delay(5); if(s3=0) if(num=1) /the second sec1-; if(sec1=-1) sec1=60; if(num=2) /the minute min1-; if(min1=-1) min1=59; if(num=3) /the hour hour1-; if(hour1=-1) hour1=23; void set() if(s0=0) delay(5); if(s0=0) setnum+; if(setnum=3) setnum=0

16、; void main() timer_init(); lcd_init(); year=0000; mon=2; day=28; hour=23; min=59; sec=58; hour1=0; min1=0; sec1=3; while(1) set(); time_keyscan(); alarm_keyscan(); / time_alarm(); time_display(); alarm_display(); void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%6; tt+; timekeeper();void timer1() interrupt 3 TH0=(65536-50000)/256; TL0=(65536-50000)%6; t0+; if(t0=40) beep=1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1