基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc

上传人:啊飒飒 文档编号:10531844 上传时间:2021-05-22 格式:DOC 页数:90 大小:333KB
返回 下载 相关 举报
基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc_第1页
第1页 / 共90页
基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc_第2页
第2页 / 共90页
基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc_第3页
第3页 / 共90页
基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc_第4页
第4页 / 共90页
基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc》由会员分享,可在线阅读,更多相关《基于C语言和55单片机在实现LCD1602多功能时间显示完全程序(不完全是显示时间这么简单).doc(90页珍藏版)》请在三一文库上搜索。

1、#include#include#define uint unsigned int#define uchar unsigned char#define lcd_bus P0sbit rs=P20;sbit rw=P21;sbit e=P22;sbit beep=P36;/蜂鸣器sbit DQ=P24;/DS18B20sbit SCL=P25;/AT24C16A sbit SDA=P26;/*键盘*sbit sw0=P30;sbit sw1=P31;sbit sw2=P32;sbit sw3=P33;sbit sw4=P34;sbit sw5=P35;sbit fan=P10;/风扇sbit r

2、est=P11;sbit sclk=P12;/DS1302口定义sbit sdata=P13;uchar year=6,month=7,date=0x15,week=5,hour=0x10,minute=0x13,second=0; uchar hour,haomi,mi,sh,fe,swa,sec,min,hou; uchar code hanzi=0x00,0x0e,0x15,0x15,0x17,0x11,0x0e,0x00, 0x00,0x06,0x09,0x1d,0x09,0x01,0x06,0x00, 0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00,

3、0x01,0x03,0x1d,0x15,0x15,0x1d,0x03,0x01, 0x0e,0x11,0x0e,0x04,0x07,0x04,0x07,0x04; uchar code str_ok=OK;uchar code str_welcome1=Welcome to CAEP Inst;uchar code str_welcome2=itute of Technology!;uchar code str_timeup= TIME UP!;uchar code str_test=NNU ;uchar code str_su=Successful;uchar code str_menu1=

4、1.State;uchar code str_menu2=2.Setting;uchar code str_menu3=3.About;/uchar code str_time1= 2005/07/14 MON;/初始化DS1302uchar code str_time2= 19:30:59 ; uchar code str_time=Time ;uchar code str_date=Date ;uchar code str_swa=stopwatch;/秒表uchar code str_exit=-;uchar code str_alarm=Alarm ;uchar code str_al

5、arm2=Set Alarm;uchar code str_alarm3=Remove Alarm;uchar code str_beep1=Buzzer ;uchar code str_beep2=Close Buzzer;uchar code str_beep3=Open Buzzer;uchar code str_tem= Temperature;uchar code str_week=SUNMONTUSWENTHEFRISAT;uchar code str_v1=A :+12.4V 1.00A;uchar code str_v2=B :-12.4V 1.50A;uchar code s

6、tr_v3=C :+ 5.0V 1.00A;uchar code str_v4=D :- 5.0V 1.00A;uchar code str_am=AM Alarm;uchar code str_pm=PM Alarm; uchar state=0;bit alarm_f=0; /闹钟标志位bit beep_f=1;/beep_f=0表示按键是蜂鸣器会响,beep_f=1表示按键是蜂鸣器不会响 uchar alarm_hour2,alarm_minute2,f=1,key_lock=0;bit ap=0;/ap=0设置上午闹钟, ap=1设置下午闹钟,/set_t为风扇开启的上限温度,当测得的

7、温度大于set_t时,风扇启动 unsigned char set_t; bit f_p=1;/*子函数的声明*delay(uchar d);bit lcd_busy(void);/lcd忙标志void lcd_wrcmd(uchar cmd);/写LCD命令void lcd_wrdata(uchar lcddata);/写lcd数据void lcd_ini(void);/初始化LCDvoid display(uchar cmd,uchar code *str);/lcd显示位置确定uchar key();welcome();menu();time();lcd_h();clock();sett

8、ing_date();setting_time();voltage1();voltage2();uchar adconvert();alarm();set_alarm();about();rollscreen_l(uchar *str,uchar l);rollscreen_r(uchar *str,uchar l);time_up();close_beep();temp();stopwatch();/秒表void sent_char(uchar sentchar);uchar get_char();void set_wp_off();void set_wp_on();void set_tim

9、e();void read_time();am_pm();/*END*#include#include/*DS1302程序包*void sent_char(unsigned char sentchar) unsigned char ii; for(ii=0;ii1; unsigned char get_char()unsigned char getchar,ii,temp;getchar=0;temp=1;for(ii=0;ii8;ii+) sclk=0; sdata=1; if(sdata=1) getchar=getchar |temp; sclk=1; temp=temp23) hour

10、_temp=0;hour_h=hour_temp/10; hour_l=hour_temp%10; lcd_wrcmd(0x84); lcd_wrdata(0x30+hour_h); lcd_wrdata(0x30+hour_l);lcd_wrcmd(0x85);else if(ss=2)/ss=2为校min状态 minute_temp+;if(minute_temp59) minute_temp=0;minute_h=minute_temp/10; minute_l=minute_temp%10; lcd_wrcmd(0x87); lcd_wrdata(0x30+minute_h); lcd

11、_wrdata(0x30+minute_l);lcd_wrcmd(0x88); else if(ii=2)/sw5=减1操作 if(ss=1)/ss=1为校hour状态 hour_temp-;if(hour_temp=0xff) hour_temp=23;hour_h=hour_temp/10; hour_l=hour_temp%10; lcd_wrcmd(0x84); lcd_wrdata(0x30+hour_h); lcd_wrdata(0x30+hour_l);lcd_wrcmd(0x85);else if(ss=2)/ss=2为校min状态 minute_temp-;if(minute

12、_temp=0xff) minute_temp=59;minute_h=minute_temp/10; minute_l=minute_temp%10; lcd_wrcmd(0x87); lcd_wrdata(0x30+minute_h); lcd_wrdata(0x30+minute_l);lcd_wrcmd(0x88);else if(ii=5)/sw2=ready+menu+pause hour=hour_h*16+hour_l;minute=minute_h*16+minute_l;lcd_wrcmd(0x0c);set_time();lcd_wrcmd(1);display(0xc3

13、,str_su);/Successfulfor(n=0;n1500;n+)delay(250);lcd_wrcmd(1);state=2;break; else if(ii=6)/sw1=menu+ready+CLR lcd_wrcmd(1); lcd_wrcmd(0x0c); state=2;/clock(); break; /=setting_date=setting_date()/设置日期 uchar ii,ss=1;uint n;uchar year_h,year_l,month_h,month_l,date_h,date_l;uchar year_temp,month_temp,da

14、te_temp; lcd_wrcmd(1);year_h=year/16;year_l=year%16;date_h=date/16;date_l=date%16;month_h=month/16;month_l=month%16;year_temp=year_h*10+year_l;month_temp=month_h*10+month_l;date_temp=date_h*10+date_l;date_h=date/16;date_l=date%16;lcd_wrcmd(0x83);lcd_wrdata(2); lcd_wrdata(0);lcd_wrdata(0x30+year_h);l

15、cd_wrdata(0x30+year_l);lcd_wrdata(-);lcd_wrdata(month_h+0x30);lcd_wrdata(month_l+0x30);lcd_wrdata(-);lcd_wrdata(0x30+date_h);lcd_wrdata(0x30+date_l); lcd_wrcmd(0x8e);lcd_wrdata(str_week3*week-3);lcd_wrdata(str_week3*week-2);lcd_wrdata(str_week3*week-1);display(0xc0,str_ok);/OK display(0xce,str_exit)

16、;/99)year_temp=0; year_h=year_temp/10; year_l=year_temp%10; lcd_wrcmd(0x85); lcd_wrdata(0x30+year_h); lcd_wrdata(0x30+year_l); lcd_wrcmd(0x86); else if(ss=2) /Month add 1 month_temp+; if(month_temp12)month_temp=1; month_h=month_temp/10; month_l=month_temp%10; lcd_wrcmd(0x88); lcd_wrdata(0x30+month_h

17、); lcd_wrdata(0x30+month_l); lcd_wrcmd(0x89); else if(ss=3)/day add 1 date_temp+; if(date_temp31)date_temp=1; date_h=date_temp/10; date_l=date_temp%10; lcd_wrcmd(0x8b); lcd_wrdata(0x30+date_h); lcd_wrdata(0x30+date_l); lcd_wrcmd(0x8c); else if(ss=4)/week add 1 week+;if(week7)week=1;lcd_wrcmd(0x8e);l

18、cd_wrdata(str_week3*week-3);lcd_wrdata(str_week3*week-2);lcd_wrdata(str_week3*week-1);lcd_wrcmd(0x91); else if(ii=2) /sw5=Down-1 if(ss=1)/year Down-1 year_temp-; if(year_temp=0)year_temp=99; year_h=year_temp/10; year_l=year_temp%10; lcd_wrcmd(0x85); lcd_wrdata(0x30+year_h); lcd_wrdata(0x30+year_l);

19、lcd_wrcmd(0x86); else if(ss=2) /Month Down-1 month_temp-; if(month_temp=0)month_temp=12; month_h=month_temp/10; month_l=month_temp%10; lcd_wrcmd(0x88); lcd_wrdata(0x30+month_h); lcd_wrdata(0x30+month_l); lcd_wrcmd(0x89); else if(ss=3)/day Down-1 date_temp-; if(date_temp=0)date_temp=31; date_h=date_t

20、emp/10; date_l=date_temp%10; lcd_wrcmd(0x8b); lcd_wrdata(0x30+date_h); lcd_wrdata(0x30+date_l); lcd_wrcmd(0x8c);else if(ss=4)/week Down-1 week-;if(week1)week=7;lcd_wrcmd(0x8E);lcd_wrdata(str_week3*week-3);lcd_wrdata(str_week3*week-2);lcd_wrdata(str_week3*week-1);lcd_wrcmd(0x91); else if(ii=5) /sw2=O

21、K year=year_h*16+year_l; month=month_h*16+month_l;date=date_h*16+date_l;lcd_wrcmd(0x0c);set_time();lcd_wrcmd(1);display(0xc3,str_su);/Successfulfor(n=0;n); else if(ss=2) TR0=1; lcd_wrcmd(0x80);lcd_wrdata( ); lcd_wrdata( );lcd_wrcmd(0xc0); lcd_wrdata(-); lcd_wrdata(); else if(ii=1) /sw6=up ss+; if(ss=3)ss=1;/ss=3=1 if(ss=1) lcd_wrcmd(0xc0); lcd_wrdata( ); lcd_wrdata( ); lcd_wrcmd(0x80); lcd_wrdata(-); lcd_wrdata(); else if(ss=2) lcd_wrcmd(0x80); lcd_wrdata( ); lcd_wrdata( ); lcd_wrcmd(0xc0); lcd_wrdata(-); lcd_wrdata();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1