单片机c语言电子万年历完整程序.pdf
![资源得分’ 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)
《单片机c语言电子万年历完整程序.pdf》由会员分享,可在线阅读,更多相关《单片机c语言电子万年历完整程序.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单单片片机机 c c 语语言言电电子子万万年年历历完完整整程程序序公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-该程序为51单片机c语言电子万年历#includereg52.h/#include#define uchar unsigned char#define uint unsigned intsbit lcden=P34;sbit lcdrs=P35;sbit DATA=P07;sbit RST=P05;sbit SCLK=P06;sbit menu=P30;/菜单sbit add=P31;/加一sbit dec=P37;/减一sbit led0=P10;s
2、bit led1=P11;sbit led2=P12;sbit led3=P13;sbit ds=P32;/sbit beep=P33;uint temp;float f_temp;uint warn_l1=270;uint warn_l2=250;uint warn_h1=300;uint warn_h2=320;uint get_temp();void delayms(uint x);void write_com(uchar com);void write_data(uchar date);void init();void dis_temp(uint t);void Write1302(u
3、char dat);void WriteSet1302(uchar Cmd,uchar dat);uchar Read1302(void);uchar ReadSet1302(uchar Cmd);void Init_DS1302(void);void DisplaySecond(uchar x);void DisplayMinute(uchar x);void DisplayHour(uchar x);void DisplayDay(uchar x);void DisplayMonth(uchar x);void DisplayYear(uchar x);void DisplayWeek(u
4、char x);void dis_temp(uint t);void read_date(void);void turn_val(char newval,uchar flag,uchar newaddr,uchar s1num);void key_scan(void);uchar code table2=TUEWESTHUFRISATSUNMON;uchar second,minute,hour,day,month,year,week,count=0;uchar ReadValue,num,time;void delayms(uint x)uint i,j;for(i=x;i0;i-)for(
5、j=110;j0;j-);/void write_com(uchar com)lcdrs=0;P2=com;delayms(5);lcden=1;delayms(5);lcden=0;void write_data(uchar date)lcdrs=1;P2=date;delayms(5);lcden=1;delayms(5);lcden=0;void init()lcden=0;write_com(0 x38);write_com(0 x0c);write_com(0 x06);write_com(0 x01);/void Write1302(uchar dat)uchar i;SCLK=0
6、;/拉低 SCLK,为脉冲上升沿写入数据做好准备 delayms(2);/稍微等待,使硬件做好准备 for(i=0;i=1;/将 dat 的各数据位右移 1 位,准备写入下一个数据位 void WriteSet1302(uchar Cmd,uchar dat)RST=0;/禁止数据传递 SCLK=0;/确保写数居前 SCLK 被拉低 RST=1;/启动数据传输 delayms(2);/稍微等待,使硬件做好准备 Write1302(Cmd);/写入命令字 Write1302(dat);/写数据 SCLK=1;/将时钟电平置于已知状态 RST=0;/禁止数据传递 uchar Read1302(vo
7、id)uchar i,dat;delayms(2);/稍微等待,使硬件做好准备 for(i=0;i=1;/将 dat 的各数据位右移 1 位,因为先读出的是字节的最低位 if(DATA=1)/如果读出的数据是 1 dat|=0 x80;/将 1 取出,写在 dat 的最高位 SCLK=1;/将 SCLK 置于高电平,为下降沿读出 delayms(2);/稍微等待 SCLK=0;/拉低 SCLK,形成脉冲下降沿 delayms(2);/稍微等待 return dat;/将读出的数据返回 uchar ReadSet1302(uchar Cmd)uchar dat;RST=0;/拉低 RST SCL
8、K=0;/确保写数居前 SCLK 被拉低 RST=1;/启动数据传输 Write1302(Cmd);/写入命令字 dat=Read1302();/读出数据 SCLK=1;/将时钟电平置于已知状态 RST=0;/禁止数据传递 return dat;/将读出的数据返回void Init_DS1302(void)WriteSet1302(0 x8E,0 x00);/根据写状态寄存器命令字,写入不保护指令 WriteSet1302(0 x80,(0/10)4|(0%10);/根据写秒寄存器命令字,写入秒的初始值 WriteSet1302(0 x82,(59/10)4|(59%10);/根据写分寄存器命
9、令字,写入分的初始值 WriteSet1302(0 x84,(23/10)4|(23%10);/根据写小时寄存器命令字,写入小时的初始值 WriteSet1302(0 x86,(28/10)4|(28%10);/根据写日寄存器命令字,写入日的初始值 WriteSet1302(0 x88,(2/10)4|(2%10);/根据写月寄存器命令字,写入月的初始值 WriteSet1302(0 x8c,(14/10)4|(14%10);/nian/WriteSet1302(0 x8a,(4/10)4)*10+(ReadValue&0 x0F);i=x/10;j=x%10;write_com(0 x80+
10、0 x46);write_data(i+0 x30);write_com(0 x80+0 x47);write_data(j+0 x30);void DisplayMinute(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 x80+0 x43);write_data(i+0 x30);write_com(0 x80+0 x44);write_data(j+0 x30);write_com(0 x80+0 x45);write_data(:);void DisplayHour(uchar x)uchar i,j;i=x/10;j=x%10;write_c
11、om(0 x80+0 x40);write_data(i+0 x30);write_com(0 x80+0 x41);write_data(j+0 x30);write_com(0 x80+0 x42);write_data(:);void DisplayDay(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 x89);write_data(i+0 x30);write_com(0 x8a);write_data(j+0 x30);void DisplayMonth(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0
12、x86);write_data(i+0 x30);write_com(0 x87);write_data(j+0 x30);write_com(0 x88);write_data(/);void DisplayYear(uchar x)uchar i,j;i=x/10;j=x%10;write_com(0 x81);write_data(2+0 x30);write_com(0 x82);write_data(0+0 x30);write_com(0 x83);write_data(i+0 x30);write_com(0 x84);write_data(j+0 x30);write_com(
13、0 x85);write_data(/);void DisplayWeek(uchar x)uchar i;x=x*3;/write_com(0 x8c);write_data(table2x);/write_com(0 x8d);write_data(table2x+1);/write_com(0 x8e);write_data(table2x+2);write_com(0 x8c);for(i=0;i4)*10+(ReadValue&0 x0F);ReadValue=ReadSet1302(0 x83);minute=(ReadValue&0 x70)4)*10+(ReadValue&0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 电子 万年历 完整 程序
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内