




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上#include#define uchar unsigned char#define uint unsigned intuchar a,count,S1num,xqnum;char yue,ri,shi,fen,miao;int nian;sbit lcdrs=P25;sbit lcdrw=P24;sbit lcden=P23;sbit S1=P30;/定义键进入设置sbit S2=P31;/定义键增大sbit S3=P32;/定义键减小sbit S4=P33;/定义键退出设置uchar code table0=2014-08-13 WED;uchar code ta
2、ble1=00:00:00;uchar code xingqi3=MON,TUE,WED,THU,FRI,SAT,SUN;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*1602液晶显示器模块sbit lcdrs=P25;sbit lcdrw=P24;sbit lcden=P23;*/void write_com(uchar com)/液晶写指令lcdrw=0;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar dat)/液晶写数据l
3、cdrw=0;lcdrs=1;P0=dat;delay(5);lcden=1;delay(5);lcden=0; /*年月日写入1602函数*/void write_sfm(uchar add,uchar dat) /写时分秒函数uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);void write_yr(uchar add,uchar dat) /写月日函数uchar shi,ge;shi=dat/10;ge=dat%10;write_com(
4、0x80+add);write_data(0x30+shi);write_data(0x30+ge);void write_nian(uchar add,uint dat) /写年函数uint qian,bai,shi,ge;qian=dat/1000;bai=dat%1000/100;shi=dat%100/10;ge=dat%10;write_com(0x80+add);write_data(0x30+qian);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);/*初始化*/void init_lcd() /液晶初
5、始化lcden=0;nian=2014;yue=8;ri=13;shi=0; /初始shi、fen、miaofen=0;miao=0;write_com(0x38); /设置16x2显示,5x7点阵,8位数据口write_com(0x0c); /设置开显示,不显示光标write_com(0x06); /写一个字符后地址指针加1write_com(0x01); /显示清0,数据指针清0 void init()/初始化函数init_lcd(); /液晶初始化write_com(0x80); /设置显示初始坐标for(a=0;a14;a+) /显示年月日初始值write_data(table0a);
6、delay(5);write_com(0x80+0x40); /设置显示初始坐标for(a=0;a8;a+)/显示时分秒初始值write_data(table1a);delay(5);write_nian(0,nian);write_sfm(6,miao); /分别将shi、fen、miao送去液晶显示write_sfm(3,fen);write_sfm(0,shi);count=0;xqnum=0;S1num=0; /初始化全局变量countTMOD=0x01; /设置定时器0工作模式1TH0=(65535-50000)/256; /定时器装初始值TL0=(65535-50000)%256;
7、EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/启动定时器0 /*独立键盘sbit S1=P30;/定义键进入设置sbit S2=P31;/定义键增大sbit S3=P32;/定义键减小sbit S4=P33;/定义键退出设置独立键盘已接地*/void keyscan()if(S1=0)delay(5);/确认定义键被按下if(S1=0)S1num+;/定义键S1按下次数记录while(!S1);/释放按键确认if(S1num=1)/S1按下一次时TR0=0;/关闭定时器write_com(0xc0+7);/光标定位到秒位置write_com(0x0f);/光标闪烁if(S1nu
8、m=2) /S1按下两次时write_com(0xc0+4); /光标定位到分位置if(S1num=3) /S1按下三次时write_com(0xc0+1); /光标定位到时位置if(S1num=4) /S1按下四次时write_com(0x80+13); /光标定位到星期位置if(S1num=5) /S1按下五次时write_com(0x80+9); /光标定位到日位置if(S1num=6) /S1按下六次时write_com(0x80+6); /光标定位到月位置if(S1num=7) /S1按下七次时write_com(0x80+3); /光标定位到年位置if(S1num=8) /S1按下
9、八次时S1num=0; /S1记录按键次数清零TR0=1; /开启定时器write_com(0x0c); /取消光标闪烁if(S1num!=0) /只有定义键按下后S2、S3、S4才有效if(S2=0)delay(5);/防抖if(S2=0) /确认按键被按下while(!S2);/释放按键确认if(S1num=1)/S1按下一次时miao+;/调整秒加1if(miao=60)/满60清零miao=0;write_sfm(6,miao); /每调节一次送液晶显示一次write_com(0x80+0x40+6); /显示位置重新回到调节处if(S1num=2) /S1按下两次时fen+;/调整分
10、加1if(fen=60)fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);if(S1num=3) /S1按下三次时shi+; /调整时加1if(shi=24)shi=0;write_com(0x80+0x40);write_sfm(0,shi);if(S1num=4) /星期加调整xqnum+;if(xqnum=7)xqnum=0;write_com(0x80+0x0b);for(a=0;a3;a+)write_data(xingqixqnuma);delay(5);if(S1num=5)/日加调整ri+;if(yue=2)if(nian%400=0)
11、if(ri=30)ri=1;if(nian%400!=0)if(ri=29)ri=1;else if(yue=8)if(yue%2=0)if(ri=32)ri=1;else if(yue%2!=0)if(ri=31)ri=1;write_yr(8,ri);if(S1num=6)/月加调整yue+;if(yue=13)yue=1;write_yr(5,yue); if(S1num=7) /年加调整nian+;if(nian=2019)nian=2014;write_nian(0,nian);if(S3=0)delay(5);if(S3=0) /确认按键被按下while(!S3);if(S1num
12、=1) miao-; /调整秒减1if(miao=-1) /减到00后再减重新设置为59miao=59;write_sfm(6,miao);write_com(0x80+0x40+6);if(S1num=2)fen-; /调整分减1if(fen=-1)fen=59;write_sfm(3,fen);write_com(0x80+0x40+3);if(S1num=3)shi-;/调整时减1if(shi=-1)shi=23;write_sfm(0,shi);write_com(0x80+0x40);if(S1num=4)xqnum-;/调整星期减一if(xqnum=-1)xqnum=6;write
13、_com(0x80+0x0b);for(a=0;a3;a+)write_data(xingqixqnuma);delay(5);if(S1num=5) /调整日ri-;if(yue=2)if(nian%400=0)if(ri=0)ri=29;if(nian%400!=0)if(ri=0)ri=28;else if(yue=8)if(yue%2=0)if(ri=0)ri=31;else if(yue%2!=0)if(ri=0)ri=30;write_yr(8,ri); if(S1num=6) /调整月yue-;if(yue=0)yue=12;write_yr(5,yue);if(S1num=7)
14、 /调整年nian-;if(nian=2013)nian=2018;write_nian(0,nian);if(S4=0) /退出设置、开启中断delay(5);if(S4=0)S1num=0;TR0=1;write_com(0x0c);/*定时器0*/void timer0() interrupt 1 /定时器0中断服务程序TH0=(65535-50000)/256; /重装定时器初始值TL0=(65535-50000)%256;count+; /中断次数累加if(count=20) /20次50毫秒即一秒count=0;miao+;if(miao=60) /秒加到60时分进位miao=0;
15、fen+;if(fen=60) /分加到60时时进位fen=0;shi+;if(shi=24)/时加到24时清0shi=0;xqnum+;ri+;if(yue=2)/如果是二月if(nian%400=0) /闰年判断if(ri=30)ri=1;yue+;write_yr(5,yue);if(nian%400!=0) /平年判断if(ri=29)ri=1;yue+;write_yr(5,yue);else if(yue=8) /八月到12月if(yue%2=0)/偶数月(除二月)if(ri=32) ri=1;yue+;if(yue=13) /如果判断月份为12月,则加一后重新定义月份为1yue=1;nian+;write_nian(0,nian);write_yr(5,yue);else if(yue%2!=0) /奇数月if(ri=31)ri=1;yue+;write_yr(5,yue);wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业论文开题报告与答辩
- 船厂技师考试题库及答案
- 溧水社工考试题及答案
- 现代汉语选试题及答案
- 策划类面试题目及答案
- 本科线上考试题库及答案
- 艾灸器考试题库及答案
- 助理广告师考试市场现状分析试题及答案
- 法治大队面试题及答案
- 2024年纺织设计师职业技能试题及答案
- 2024年山东省事业单位历年面试题目及答案解析50套
- 2021年-中考广东专用生物题型一读图理解题-课件
- 《水电工程水生生态调查与评价技术规范》(NB-T 10079-2018)
- 2024年注册消防工程师题库(全国通用)
- 静脉留置针使用及维护培训课件
- 小学字母组合发音(课件)人教PEP版英语六年级下册
- 低钙血症的病情观察和护理
- 食堂食材配送服务方案及服务承诺
- 辅警培训工作方案
- 南京彭宇案完
- 哮喘患者的护理常规 课件
评论
0/150
提交评论