单片机万年历实训.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机万年历实训.doc》由会员分享,可在线阅读,更多相关《单片机万年历实训.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机万年历实训仿真图:原理图:程序:/* 使用LCD1602与单片机实现的时钟与日期 显示年、月、日、时、分、秒(24小时制) 时间可调, 年份20009999 2012年10月9日*/#include/*全局变量的定义与设置*/sbit key_mean=P10;/按键的定义sbit key_ok =P11;sbit key_set =P12;sbit RS =P15; /LCD控制端口 sbit RW =P16; sbit E =P17; sfr PORT =0xa0;char flag_sec=0; /值为20代表1schar flag_en_ok=0;char flag_en_key
2、=0; /值为1表示键盘有效,否则无效char flag_ok=0; /key_up与key_down的功能选择char flag_mean=0;char flag_set=0; /key_up与key_down的功能标识char flag_year_leap=0;/短语 /code char string_time= Setting time ? 0; code char string_year= Setting year ? 0; code char string_month= Setting month ? 0; code char string_mday= Setting day ?
3、0; code char string_week= Setting week ? 0; code char string_hour= Setting hour ? 0; code char string_minute=Setting minute? 0; code char string_second=Setting second? 0;/年月日时分秒的定义struct DATA_TIMEshort year;/待选char month;char mday ;char week ;char hour ;char minute;char second;time;struct time_char
4、/time的字符型 char ch_year4; char ch_month2; char ch_mday2; char ch_week1; char ch_hour2; char ch_minute2; char ch_second2;time_ch;/*子函数*/LCD的延时程序void LCD_delay(void) char i,j; for(i=100;i=0;i-)for(j=0;j20;j+);/向LCD写指令函数void wcmd(char cmd ) RS=0; RW=0; E=1; LCD_delay(); PORT=cmd; LCD_delay(); E=0;/向LCD写
5、数据函数void wdata(char DATA) RS=1; RW=0; E=1; LCD_delay(); PORT=DATA; LCD_delay(); E=0;/写字符串void wstring(char *pt,char i)/ i为字符的个数,不带0 char j; for(j=0;ji;j+) wdata(ptj); /时间数据的格式转换void tran_2_ch(char *pt,char DATA) pt0=DATA/10+0x30; pt1=DATA-pt0*10+0x10;void tran_4_ch(char *pt,int DATA) pt0=DATA/1000;
6、pt1=DATA/100-pt0*10; pt2=DATA/10-pt0*100-pt1*10; pt3=DATA-pt0*1000-pt1*100-pt2*10; pt0+=0x30; pt1+=0x30; pt2+=0x30; pt3+=0x30;/格式转换的实现void tran_ch(void) tran_4_ch(time_ch.ch_year ,time.year ); tran_2_ch(time_ch.ch_month,time.month); tran_2_ch(time_ch.ch_mday ,time.mday ); /tran_2_ch(time_ch.ch_week
7、,time.week*10+1); time_ch.ch_week0=time.week+0x30; tran_2_ch(time_ch.ch_hour ,time.hour ); tran_2_ch(time_ch.ch_minute,time.minute); tran_2_ch(time_ch.ch_second,time.second);/是否是闰年char leep_year(int year)/如果是闰年则flag_year_leep=1,否则=0 if(year%400=0)|year%4=0&year%100!=0)return 1; else return 0;/星期的判断v
8、oid de_week(void) int i,j,day=0; char mweek; for(i=2000;itime.year;i+) if(leep_year(i)day+=366; else day+=365; for(j=1;j=30) if(time.month=1|time.month=3|time.month=5|time.month=7 |time.month=8|time.month=10|time.month=12) /天数为31天的月,1、3、5、7、8、10、12 if(time.mday=32) time.mday=1;time.month+; if(time.m
9、onth=4|time.month=6|time.month=9|time.month=11) if(time.month=31) time.mday=1;time.month+; tran_ch(); if(time.month=2&time.mday=28) if(flag_year_leap&(time.mday=30) time.mday=1;time.month+; if(!flag_year_leap)&(time.mday=29) time.mday=1;time.month+; tran_ch(); if(time.month=13) time.month=1;time.yea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 万年历
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内