版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51单片机实现万年历 利用AT89S52单片机的P0口来和另外几个口来控制1602液晶的显示和P1口还有其它口来控制ds12887时钟芯片。设置四个按键,1个定义为时间设置功能键,一个定义为闹钟设置功能键,另外两个用来调节时间的增减。 原理图: pcb图: 源程序: #include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit beep=P20;/蜂鸣器控制口 sbit timeadd=P21;/调节时间加 sbit timesub=P22;/调节时间减 sbit timeclk=P23;/闹钟设
2、定键 sbit timefun=P24;/时间设定键 sbit lcdrs=P25;/液晶的命令和数据控制口 sbit ledrw=P26;/液晶的写数据口 sbit lcden=P27;/液晶显示模块的使能端 sbit timeds=P33;/时钟芯片地址闸 sbit timerw=P34;/时钟芯片读写 sbit timeas=P35;/时钟芯片地址闸 sbit timeen=P36;/时钟芯片片选 uchar code table="20 - - week "uchar code table1=&qu
3、ot; : : "/要显示的字符串 char num,shi,fen,miao,nian=2000,yue,ri,week,numfun,anumfun,flag,flag1;uchar leap;void delay(uint x) uchar i,j; for(i=x;i>0;i-) for(j=110;j>0;j-);void didi()
4、160; beep=0; delay(1000); beep=1; delay(1000);void write_com(uchar com) lcdrs=0; P0=com; delay(5); lcden=1; delay(20); lcden=0; void write_date(uchar date) lcdrs=1; P
5、0=date; delay(5); lcden=1; delay(20); lcden=0;void write_sfm(uchar add,uchar date) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_dat
6、e(0x30+ge);void write_nyr(uchar add,uchar date) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);void write_zhou(uchar add,uchar date) write_com(0x80+add); &
7、#160; write_date(0x30+date);void write_ds(uchar add,uchar date) timeen=0; timeas=1; timeds=1; timerw=1; P1=add; timeas=0; timerw=0; P1=date; timerw=1; timeas=1; timeen
8、=1; uchar read_ds(uchar add) uchar ds_date; timeas=1; timeds=1; timerw=1; timeen=0; P1=add; timeas=0; timeds=0; P1=0xff;
9、 ds_date=P1; timeds=1; timeas=1; timeen=1; return ds_date; void keyscan() if(flag1=1)/用来关闭闹钟铃声 if(timeadd=0)
10、0; delay(5); if(timeadd=0)
11、 while(!timeadd=0);
12、; flag1=0; if(timesub=0)
13、 delay(5); if(timesub=0)
14、160; while(!timesub=0); &
15、#160; flag1=0; if(
16、timefun=0) delay(5); if(timefun=0)
17、160; while(!timefun); flag=1; numfun+; &
18、#160; if(numfun=1)
19、 write_com(0x80+0x40+0x0a); write_com(0x0f);
20、; if(numfun=2)
21、0; write_com(0x80+0x40+0x07); write_com(0x0f);
22、0; if(numfun=3)
23、160; write_com(0x80+0x40+0x04); write_com(0x0f);
24、160; if(numfun=4)
25、 write_com(0x80+0x0f); write_com(0x0f);
26、; if(numfun=5)
27、60; write_com(0x80+0x09); write_com(0x0f);
28、160; if(numfun=6) &
29、#160; write_com(0x80+0x06);
30、60; write_com(0x0f); if(numfun=7)
31、0; write_com(0x80+0x03);
32、 write_com(0x0f); if(numfun=8) &
33、#160; numfun=0;
34、60; flag=0; if(numfun!=0
35、) if(timeadd=0) delay(5);
36、 while(!timeadd); if(numfun=1)
37、160; miao+; if(miao=60)
38、160; miao=0; write_sfm(9,miao);
39、 write_com(0x80+0x40+9); write_ds(0,miao);
40、160; if(numfun=2) &
41、#160; fen+; if(fen=60)
42、60; fen=0; write_sfm(6,fen);
43、60; write_com(0x80+0x40+6); write_ds(2,fen);
44、 if(numfun=3)
45、; shi+; if(sh
46、i=24) shi=0; write_sfm(3,
47、shi); write_com(0x80+0x40+3); write_ds
48、(4,shi); if(numfun=4)
49、60; week+;
50、160;if(week=8) week=1; wr
51、ite_zhou(0x0f,week); write_com(0x80+0x0f); &
52、#160;write_ds(6,week); if(numfun=5) &
53、#160; if(nian=0)
54、160; switch(yue) &
55、#160; case 1:ri+;if(ri=32) ri=1;break; case 2:ri+;if(ri=30) ri=1;break;
56、60; case 3:ri+;if(ri=32) ri=1;break; &
57、#160; case 4:ri+;if(ri=31) ri=1;break; case 5:ri+;if(ri=32) ri=1;break;
58、60; case 6:ri+;if(ri=31) ri=1;break; &
59、#160; case 7:ri+;if(ri=32) ri=1;break; case 8:ri+;if(ri=32) ri=1;break;
60、60; case 9:ri+;if(ri=31) ri=1;break; &
61、#160; case 10:ri+;if(ri=32) ri=1;break; case 11:ri+;if(ri=31) ri=1;break; &
62、#160; case 12:ri+;if(ri=32) ri=1;break;
63、0;
64、160; else if(leap&&yue=2)
65、60; ri+; if(ri=30)
66、160; ri=1;
67、160; else if(yue=2&&leap=0) &
68、#160; ri+;
69、160; if(ri=29) ri=1;
70、; else
71、; switch(yue) case 1:ri+;if(ri=32) ri=1;break;
72、60; case 3:ri+;if(ri=32) ri=1;break; case 4:ri+;if(ri=31) ri=1;bre
73、ak; case 5:ri+;if(ri=32) ri=1;break;
74、 case 6:ri+;if(ri=31) ri=1;break; case 7:ri+;if(ri=32) ri=1;break;
75、 case 8:ri+;if(ri=32) ri=1;break; case 9:ri+;if(ri=31) ri=1;break;
76、 case 10:ri+;if(ri=32) ri=1;break;
77、160; case 11:ri+;if(ri=31) ri=1;break; case 12:ri+;if(ri=32) ri=1;break;
78、 write_nyr(8,ri); &
79、#160; write_com(0x80+0x08); write_ds(7,ri); &
80、#160; if(numfun=6)
81、; yue+; if(yue=13)
82、160; yue=0; write_nyr(5,yue);
83、160; write_com(0x80+0x05); write_ds(8,yue); &
84、#160; if(numfun=7)
85、; nian+; if(nian=100)
86、; nian=0; leap=nian%4=0&&nian%100!=0;
87、0; write_nyr(2,nian); write_com(0x80+2);
88、0; write_ds(9,nian);
89、0; if(timesub=0) delay(5);
90、; while(!timesub); if(numfun=1)
91、 miao-; if(miao=-1) &
92、#160; miao=59; write_sfm(9,miao);
93、0; write_com(0x80+0x40+9); write_ds(0,miao);
94、 if(numfun=2)
95、0; fen-; if(fen=-1) &
96、#160; fen=59; write_sfm(6,fen);
97、 write_com(0x80+0x40+6); write_ds(2,fen);
98、160; if(numfun=3)
99、 shi-; if(shi=-1)
100、60; shi=23; write_sfm(3,shi);
101、160; write_com(0x80+0x40+3); write_ds(4,shi);
102、; if(numfun=4)
103、0; week-; if(week=0)
104、; week=7; write_zhou(0x0f,week);
105、; write_com(0x80+0x0f); write_ds(6,week);
106、60; if(numfun=5)
107、160; if(nian=0)
108、60; switch(yue)
109、160; case 1:ri-;if(ri=0) ri=31;break; case 2:ri-;if(ri=0) ri=29;break;
110、0; case 3:ri-;if(ri=0) ri=31;break;
111、160; case 4:ri-;if(ri=0) ri=30;break; case 5:ri-;if(ri=0) ri=31;break;
112、0; case 6:ri-;if(ri=0) ri=30;break;
113、160; case 7:ri-;if(ri=0) ri=31;break; case 8:ri-;if(ri=0) ri=31;break;
114、0; case 9:ri-;if(ri=0) ri=30;break;
115、160; case 10:ri-;if(ri=0) ri=31;break; case 11:ri-;if(ri=0) ri=30;break;
116、160; case 12:ri-;if(ri=0) ri=31;break;
117、;
118、60; else if(leap&&yue=2)
119、; ri-; if(ri=0)
120、; ri=29;
121、60; else if(yue=2&&leap=0)
122、160; ri-;
123、0; if(ri=0) ri=28; &
124、#160; else &
125、#160; switch(yue) case 1:ri-;if(ri=0) ri=31;break;
126、; case 3:ri-;if(ri=0) ri=31;break; case 4:ri-;if(ri=0) ri=30;break;
127、; case 5:ri-;if(ri=0) ri=31;break; case 6:
128、ri-;if(ri=0) ri=30;break; case 7:ri-;if(ri=0) ri=31;break;
129、160; case 8:ri-;if(ri=0) ri=31;break; case 9:ri-;if(ri=0) ri=30;break;
130、160; case 10:ri-;if(ri=0) ri=31;break; case 11:ri-;if(ri=0)
131、ri=30;break; case 12:ri-;if(ri=0) ri=31;break;
132、160; write_nyr(8,ri);
133、60; write_com(0x80+0x08); write_ds(7,ri);
134、60; if(numfun=6) &
135、#160; yue-; if(yue=-1)
136、0; yue=12; write_nyr(5,yue);
137、60; write_com(0x80+0x05); write_ds(8,yue);
138、160; if(numfun=7)
139、 nian-; if(nian=-1) &
140、#160; nian=99; leap=nian%4=0&&nian%100!=0;
141、; write_nyr(2,nian); write_com(0x80+2);
142、; write_ds(9,nian);
143、; void set_alarm() uchar ashi,afen,amiao;if(timeclk=0)/判断是否按下闹钟设定键 delay(5);/延时消抖 if(timeclk=0)
144、 while(!timeclk); anumfun+;/按键次数加1 if(anumfun=1)
145、160; flag=1; write_com(0x80+0x40+0x0a);
146、60; write_com(0x0f); if(anumfun=2)
147、60; flag=1; write_com(0x80+0x4
148、0+0x07); write_com(0x0f);
149、;if(anumfun=3) flag=1;
150、160; write_com(0x80+0x40+0x04); write_com(0x0f);
151、 if(anumfun=4) flag=0;
152、60; anumfun=0; if(anumfun!=0)
153、; if(timeadd=0)/如果加功能键按下 delay(5); while(!timeadd);
154、0; if(anumfun=1) /设定秒 amiao+; &
155、#160; if(amiao=60) amiao=0;
156、0; write_sfm(9,amiao); write_com(0x80+0x40+9); write_d
157、s(1,amiao); if(anumfun=2)
158、 afen+; if(afen=60)
159、; afen=0; write_sfm(6,afen); wr
160、ite_com(0x80+0x40+6); write_ds(3,afen);
161、60; if(anumfun=3) ashi+; &
162、#160; if(ashi=24) ashi=0;
163、 write_sfm(3,ashi); write_com(0x80+0x40+3); write_ds(5,ashi);
164、; if(anumfun!=0) if(timesub=0)
165、0; delay(5); while(!timesub); if(anumfun=1) amiao-;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年数据备份数据备份数据数据应急预案
- 控油皮肤的日常护理注意事项
- 神经科患者的营养需求与评估
- 2026年脑机接口柔性电极新材料标准化研究
- 环境与职业健康安全管理方案参考指南
- 2025年前台服务考核
- 2025年前台服务规范测试
- 2026年发射箱体功能层铺放与电磁屏蔽结构一体化设计
- 2026年数字孪生几何建模技术:从点云采集到模型轻量化
- 支气管镜检查的拔火罐护理
- 51testing:2024年软件测试行业现状调查报告
- 灌排渠道设计规范
- 三年级数学下册口算练习题(每日一练共12份)
- 心脑血管病防治知识讲座
- 2025至2030中国有机芝麻行业产业运行态势及投资规划深度研究报告
- 低空经济试题及答案
- (高清版)DB11∕T 1455-2025 电动汽车充电基础设施规划设计标准
- 养老院安全生产教育培训内容
- 设备设施停用管理制度
- 学会宽容第3课时-和而不同 公开课一等奖创新教案
- 山东高考英语语法单选题100道及答案
评论
0/150
提交评论