51单片机c语言电子万年历完整程序

上传人:公**** 文档编号:470495224 上传时间:2023-07-07 格式:DOCX 页数:40 大小:21.54KB
返回 下载 相关 举报
51单片机c语言电子万年历完整程序_第1页
第1页 / 共40页
51单片机c语言电子万年历完整程序_第2页
第2页 / 共40页
51单片机c语言电子万年历完整程序_第3页
第3页 / 共40页
51单片机c语言电子万年历完整程序_第4页
第4页 / 共40页
51单片机c语言电子万年历完整程序_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《51单片机c语言电子万年历完整程序》由会员分享,可在线阅读,更多相关《51单片机c语言电子万年历完整程序(40页珍藏版)》请在金锄头文库上搜索。

1、该程序为51单片机c语言电子万年历#incluereg52./clde#defin uchar unigned cardfie uin nigneintst lcden=P3;sbtlrs=P35;bit DAA=P; bit RT=P5; sit SCLK=P0;sbit enuP30; /菜单it add=31; /加一sbit d=37; /减一sbt le0=P10;sbited1=P11;sbited=P12;st ld3P1;bit ds=P3;/stbe=P33;ut t;loat femp;uintrn_l1=2;uiwarl20;uint wan1=30;ui arn_h=3

2、2;in gt_temp();voidelayms(int x);oidwrite_com(ucha o);vid wrte_ata(ucharte);vi ini();oid disep(u t);void ite10(ucharda);id Writee1302(hrCmd,char dat);hr Ra132(vd);uchr eadS130(uchar Cm);vod It_DS1302(i);voidDipaySecod(ucha);v Dplayiut(char x);v Displaor(ucar x);voidplya(ucha x);id DislayMont(uhar x)

3、;vod DisplayYear(char x);void slayek(uar x);void dismp(uint );vod rea_dae(voi);vid turn_va(chr nw,uhar fla, ucha ewdd,uchr s1nu);voidkey_sa(id);chacde ble= ;uchar oetabl=TUWSTHUFIASMON;uchar sod,mnute,hou,da,mnh,y,week,cont=0; uhrValue,num,tie; voiddelayms(uix) uint i,; for(=;i0;i-) f(j=10;j;j-);/vo

4、d writeco(ucar com) lcds; P2com; dlaym(5); lcde=1; delayms(5); len=0;voidwrtedat(uhr ate) cdrs1; P2=at; delayms(5); lcde=; delaym(5); lcden=0;voiinit() lcden=0; wieom(038); wite_om(00c); rt_cm(0x06);wit_cm(1);/id rite1302(uar da) ucar i; SCK; /拉低CLK,为脉冲上升沿写入数据做好准备 delayms(); /稍微等待,使硬件做好准备fo(i=0;8;i+

5、) /持续写8个二进制位数据 DAdat&001; /取出dt的第0位数据写入102 delam(2); /稍微等待,使硬件做好准备 L=; /上升沿写入数据 dlas(2); /稍微等待,使硬件做好准备 CK=0; /重新拉低SC,形成脉冲 dat; /将dat的各数据位右移1位,准备写入下一种数据位 voi Witeet1302(char Cd,uhada) RT=0; /严禁数据传递 SCLK=0; /保证写数居前CL被拉低 RST=; /启动数据传播 eayms(2); /稍微等待,使硬件做好准备 Write1302(Cm); /写入命令字 We130(at); /写数据 SC=1;

6、将时钟电平置于已知状态 RT=0; /严禁数据传递 uchare1302(vid) uchar i,dat; lym(2); /稍微等待,使硬件做好准备 for(=0;8;+) /持续读8个二进制位数据 da=; 将at的各数据位右移1位,由于先读出的是字节的最低位 (DATA=1) /如果读出的数据是 dt|=x80; /将1取出,写在a的最高位 SCLK=1; /将CLK置于高电平,为下降沿读出 dlaym(2); /稍微等待 CK=0; /拉低CLK,形成脉冲下降沿 elaym(2); /稍微等待 trn dt; /将读出的数据返回 uha Radet102(uchar Cmd) uca

7、rdat; RS0; /拉低RST CLK; /保证写数居前SL被拉低 ST=1; /启动数据传播 e1302(Cm); /写入命令字 dat=a1302(); /读出数据 SCK=; /将时钟电平置于已知状态 RS=0; /严禁数据传递 retr dat; /将读出的数据返回void niD1302(void) WiteSe32(xE,x0); /根据写状态寄存器命令字,写入不保护指令 WeSet302(0x80,(010)4|(0%1); /根据写秒寄存器命令字,写入秒的初始值 WritSe1302(0x,((59/10)|(59%10); /根据写分寄存器命令字,写入分的初始值 WitS

8、1302(0x8,(23/)4(23%10))); /根据写小时寄存器命令字,写入小时的初始值 WriteSe1302(0x86,(28/0)4|(28%10))); 根据写日寄存器命令字,写入日的初始值Writt1302(x88,(2/0)4|(2%10)); /根据写月寄存器命令字,写入月的初始值 WritSt302(0xc,(141)4|(%1))); /nan /WriteSt1302(0x8a,(/0)4)*0 + (RedValue&x0); ix10; j%1; wrte_o(0x80+046); rite_data(i+030);wrte_co(80+0x47); writaa

9、(j+0x3); voislaMute(uchrx) char i,j; =x/10; j=x%0; write_co(x80+x3); rieda(+x30);wrie_com(x0+x4); wite_a(j+0x30);witecm(08045); wrie_dat(:); od Displayour(uhr x) uari,j; i=x0; j=x1;wite_com(0x80+040); wite_dat(i+0x3);rte_com(0x80+041); wri_dat(+0x3);write_co(80x2); wie_data(:); voidispayDa(uchar x) uchar i,j; i=x/10; =x%10; writecom(08); wi_ata(ix0);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号