




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于STC89C52单片机时钟1.1602显示。第一行显示年月日,第二行显示时分秒。2.开机显示个性的画面,约5S后进入时间显示界面。3.汉字显示“年”“月”“日”。4.时间可调。时间调节由三按键控制。键一控制调节位,按下键一后,时钟停止走时,出现光标,每按一次光标移向下一个调节位,按五次后,退出调节模式。键二为加键,键三为减键。只有在模式调节下才起作用。5.该时钟程序仅仅只是时钟功能的实现,走时并不精确。或者说是参考模型,可以在此基础上进行优化和更改。按键部分可进行大优化,为了在实验板上做实验,而实验板为矩阵键盘。所以按键定义了四个端口。#include #include #define u
2、char unsigned char#define uint unsigned intsbit LCD_RS=P10;/ 定义寄存器选择sbit LCD_RW=P11;/ 定义读写信号线sbit LCD_EN=P12;/ 定义定义使能端sbit key1=P00;sbit key2=P04;sbit key3=P05;sbit key4=P06;void delay_ms(uint xms); /延时函数声明bit lcd_busy();/忙检查函数声明void lcd_wcmd(uchar cmd);/写指令寄存器IR函数声明void lcd_wdat(uchar dat);/写数据寄存器D
3、R函数声明void lcd_clr(); / 清屏函数声明void lcd_init(); / LCD初始化函数声明void key_mode();void year_moon_day();uchar dis_buf19;uchar dis=0,1,2,3,4,5,6,7,8,9;uchar code name1=help yourself!;uchar code name2=hold on!;ucharyear_month_day38=0 x04,0 x0f,0 x12,0 x0f,0 x0a,0 x1f,0 x02,0,/年0 x0f,0 x09,0 x0f,0 x09,0 x0f,0 x
4、09,0 x13,0 x00,/月0 x0e,0 x0a,0 x0a,0 x0e,0 x0a,0 x0a,0 x0e,0 x02 /日;uchar dingshi=0;/50ms计数uchar flag=0;/按键控制变量char miao=55,fen=59,shi=23;char moon=12,day=31;int year=2012;uchar leap;uchar shan;/控制时分的闪烁位uchar key_value;/*LCD显示部分*/读忙bit lcd_busy()bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;_nop_();_nop_();
5、_nop_();_nop_();result=(bit)(P2&0 x80);LCD_EN=0;return result;/清屏void lcd_clr()lcd_wcmd(0 x01);delay_ms(5);/写指令void lcd_wcmd(uchar cmd)while(lcd_busy();/delay_ms(2);LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P2=cmd;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;/写数
6、据void lcd_wdat(uchar dat)while(lcd_busy();/delay_ms(2);LCD_RS=1;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P2=dat;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;/显示初始化void lcd_init()/delay_ms(15);lcd_wcmd(0 x38); /显示模式为16*2 5*7点阵 8位数据delay_ms(5);lcd_wcmd(0 x38);delay_ms(5);
7、lcd_wcmd(0 x01); /清屏delay_ms(5);lcd_wcmd(0 x06); /移动光标delay_ms(5);lcd_wcmd(0 x0c); /开光标delay_ms(5);void delay_ms(uint xms)uchar i,j;for(i=xms;i0;i-)for(j=110;j0;j-);void lcd_conv(uchar shi,fen,miao)dis_buf0=disshi/10;dis_buf1=disshi%10;dis_buf2=0 x3a;dis_buf3=disfen/10;dis_buf4=disfen%10;dis_buf5=0
8、x3a;dis_buf6=dismiao/10;dis_buf7=dismiao%10;void lcd_conv_year(uint year,uchar moon,day)dis_buf8=disyear/1000;dis_buf9=dis(year%1000)/100;dis_buf10=dis(year%100)/10;dis_buf11=disyear%10;dis_buf12=1;dis_buf13=dismoon/10;dis_buf14=dismoon%10;dis_buf15=2;dis_buf16=disday/10;dis_buf17=disday%10;dis_buf1
9、8=3;void lcd_dis()uchar i;lcd_conv(shi,fen,miao);lcd_conv_year(year,moon,day);lcd_wcmd(0 x00|0 x80);for(i=8;i19;i+)lcd_wdat(dis_bufi);lcd_wcmd(0 x40|0 x80);for(i=0;i8;i+)lcd_wdat(dis_bufi);/自定义字符图形void lcd_wCGROM()/将汉字写入CGROM uchar i,j;for(i=1;i4;i+)for(j=0;j5)flag=0;lcd_wcmd(0 x0c); /关光标delay_ms(1)
10、;TR0=1; if(key3=0)key_value=2; if(key4=0)key_value=3;while(key2=0|key3=0|key4=0); void keyprocess()switch(flag)case 1:if(key_value=2)shi+;if(shi23)shi=0;lcd_dis();lcd_wcmd(0 xc0+1);delay_ms(1);if(key_value=3)shi-;if(shi59)fen=0;lcd_dis();lcd_wcmd(0 xc0+4);delay_ms(1);if(key_value=3)fen-;if(fen9999)y
11、ear=2000;lcd_dis();lcd_wcmd(0 x80+3);delay_ms(1);if(key_value=3)year-;if(year12)moon=1;lcd_dis();lcd_wcmd(0 x80+6);delay_ms(1);if(key_value=3)moon-;if(moon29)day=1;if(moon=2&(year-2000)%4!=0)&day28)day=1;if(moon=1|moon=3|moon=5|moon=7|moon=8|moon=10|moon=12)&day31)day=1;if(moon=4|moon=6|moon=9|moon=
12、11)&day30)day=1;lcd_dis();lcd_wcmd(0 x80+9);delay_ms(1);if(key_value=3)day-;if(moon=2&(year-2000)%4=0)&day1)day=29;if(moon=2&(year-2000)%4!=0)&day1)day=28;if(moon=1|moon=3|moon=5|moon=7|moon=8|moon=10|moon=12)&day1)day=31;if(moon=4|moon=6|moon=9|moon=11)&day20)miao+; dingshi=0;if(miao59)miao=0;fen+;
13、if(fen59)fen=0;shi+;if(shi23)shi=0;year_moon_day();/年月日void year_moon_day()day+;if(year-2000)%4=0)leap=1;elseleap=0;if(day28) switch(moon) case 1:if(day31)day=1;break; case 2:if(leap=1) if(day29)day=1;moon+; else day=1;moon+; break; case 3:if(day31)day=1;moon+;break; case 4:if(day30)day=1;moon+;brea
14、k; case 5:if(day31)day=1;moon+;break; case 6:if(day30)day=1;moon+;break; case 7:if(day31)day=1;moon+;break; case 8:if(day31)day=1;moon+;break; case 9:if(day30)day=1;moon+;break; case 10:if(day31)day=1;moon+;break; case 11:if(day30)day=1;moon+;break; case 12:if(day31)day=1;moon+;break; if(moon12) moon=1; year+; if(year9999) year=2000; void display()/开机个性化显示uchar i;lcd_wcmd(0 x00|0 x80);i=0;while(i14)lcd_wdat(name1i);i+;lcd_wcmd(0 x40|0 x80);i=0;while(i8)lcd_wdat(name2i);i+;void main()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度诊所执业医师医疗质量控制聘用合同
- 2025年度高端美容院股权合作框架协议
- 二零二五年度停车场租赁与停车场设施维护协议
- 2025年度酒店与慈善机构住宿协议价合同
- 2025年度游泳馆老年会员安全免责协议范本
- 二零二五年度汽车行业竞业禁止协议
- 二零二五年度新能源汽车推广保证金质押担保合同
- 2025年度跨境电商支付结算合作协议模板
- 二零二五年度眼镜店店长入股合同
- 二零二五年度农村土地承包经营权流转与农业废弃物资源化利用合作协议
- GB/T 36548-2024电化学储能电站接入电网测试规程
- 西服裙缝制工艺课件(PPT 14页)
- 城市道路绿化养护工作
- 高等数学第一节 原函数与不定积分ppt课件
- 国内木材炭化技术专利现状
- 施耐德公司品牌战略
- 校企合作人才培养模式实践研究开题报告定稿
- 城市供水计划统计指标解释
- 塑胶原料检验规范
- 建筑公司内部管理流程-课件PPT
- 中国古典舞PPT课件
评论
0/150
提交评论