




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序#include#include#define uchar unsigned char#define uint unsigned int#define jump_ROM 0xCC #define start 0x44 #define readdata 0xBEsbit dq=P17;sbit w1=P06;sbit w2=P05;sbit w3=P04;sbit w4=P07;sbit wela=P03;sbit A=P00;sbit b=P01;sbit C=P02;sbit SCLK=P10; /DS1302通讯线定义sbit DIO=P11;sbit RST=P12;sbit k1=P16;sbit k2=P15;sbit add=P14;sbit sub=P13;uchar code smgw=0,1,2,3,4,5,6,7;uchar code smgd=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/uchar code tab=0x077,0x12,0x0c7,0x0d3,0x0b2,0x0f1,0x0f4,0x13,0x0f7,0x0b3,0x00;uchar temperature10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code xingqi=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f; uchar tab19;uchar tab29;uchar nian,yue,ri,zhou,shi,fen,miao,a,shan,tt,shan;uchar knum; uchar q,j,tempp; void display(); void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=55;y0;y-);void delay1(int useconds)int s;for(s=0;suseconds;s+);uchar resetds(void) uchar presencesignal; dq=0; delay1(30); dq=1; delay1(3); presencesignal=dq; delay1(30); return presencesignal; void writebit(char val) dq=0; if(val=1) dq=1; else dq=0; delay1(5); dq=1; void writebyte(char val) uchar i; uchar temp; for(i=0;ii; temp&=0x01; writebit(temp); delay1(5);uchar readbit(void) uchar i; dq=0; dq=1; for(i=0;i3;i+) return dq; uchar readbyte(void) uchar i; uchar value=0; for(i=0;i8;i+) if(readbit() value|=0x01i; delay1(7); return (value);void temper() uchar get9; uchar k,lsb,msb,n; int m; float t; m=0; resetds(); writebyte(jump_ROM); writebyte(start); delay1(5); resetds(); writebyte(jump_ROM); writebyte(readdata); display(); for(k=0;k9;k+) getk=readbyte(); msb=get1; lsb=get0; if(msb&0x80)!=0) / /取补码/ m=1; msb=msb; lsb=( lsb)+1; if(lsb=0) msb+; display(); n=lsb; msb=msb4; tempp=msb|lsb; n=n&0x0f; t=(float )(n); t=t*0.0625; j=(int)(t*100); P2=temperaturej%10; w4=1; w1=0; delay(2); P2= temperaturej/10; w1=1; w2=0; delay(2); P2=temperaturetempp%10+0x80; w2=1; w3=0; delay(2); P2= temperaturetempp/10; w3=1; w4=0; delay(2); w4=1; void write(uchar date) /写入DS1302一个字节uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i=1;uchar read() /读出DS1302一个字节uchar a,temp;RST=1;for(a=8;a0;a-) temp=1;SCLK=1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCLK=0; if(DIO) temp=temp|0x80;else temp=temp|0x00;return (temp); void write_1302(uchar add,uchar dat) /写DS1302数据 RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;uchar read_1302(uchar add) /读DS1302数据uchar dat1,dat2;RST=0;SCLK=0;RST=1;write(add);dat1=read();SCLK=1;RST=0; dat2=dat1/16; /数据进制转换 dat1=dat1%16; dat1=dat1+dat2*10; /十六进制转十进制return(dat1);void ds1302_init() /1302初始化RST=0;SCLK=0;write_1302(0x8e,0x00); /允许写入write_1302(0x80,0x00);/设置初始值SECwrite_1302(0x82,0x59);/设置初始值MINwrite_1302(0x84,0x23);/设置初始值HRwrite_1302(0x86,0x20);/设置初始值DATEwrite_1302(0x88,0x4);/设置初始值MONTHwrite_1302(0x8A,0x03);/设置初始值DAY write_1302(0x8C,0x12);/设置初始值YEARwrite_1302(0x8e,0x80); void display()P2=temperaturej%10; w4=1; w1=0; delay(2); P2= temperaturej/10; w1=1; w2=0; delay(2); P2=temperaturetempp%10+0x80; w2=1; w3=0; delay(2); P2= temperaturetempp/10; w3=1; w4=0; delay(2); w4=1;miao=read_1302(0x81); /读秒 fen=read_1302(0x83); /读分 shi=read_1302(0x85);/&0x3f; /读时 ri=read_1302(0x87); /读日 yue=read_1302(0x89); /读月 nian=read_1302(0x8d); /读年 zhou=read_1302(0x8B); /读星期 if(knum=7)wela=0;/年A=0;b=1;C=1;P2=0x5b&shan;delay(2);A=1;b=1;C=1;P2=0x3f&shan;delay(2);wela=1;A=0;b=0;C=0;P2=smgdnian/10&shan;delay(2);A=1;b=0;C=0;P2=smgdnian%10&shan;delay(2); elsewela=0;/年A=0;b=1;C=1;P2=0x5b;delay(2);A=1;b=1;C=1;P2=0x3f;delay(2);wela=1; A=0;b=0;C=0;P2=smgdnian/10;delay(2);A=1;b=0;C=0;P2=smgdnian%10;delay(2); if(knum=6)wela=1;A=0;b=1;C=0;/月P2= smgd yue/10&shan;delay(2); A=1;b=1;C=0;P2= smgd yue%10&shan; delay(2);else wela=1;A=0;b=1;C=0;/月P2=smgd yue/10;delay(2); A=1;b=1;C=0;P2= smgd yue%10;delay(2);if(knum=4)wela=1;A=0;b=1;C=1;/星期P2=xingqizhou%10&shan;delay(2);elseA=0;b=1;C=1;/星期P2=xingqizhou%10;delay(2);if(knum=5) wela=1;A=0;b=0;C=1; / 日P2= smgd ri/10&shan;delay(2);A=1;b=0;C=1;P2= smgd ri%10&shan;delay(2);else wela=1;A=0;b=0;C=1; / 日P2= smgd ri/10;delay(2);A=1;b=0;C=1;P2= smgd ri%10;delay(2); if(knum=3)wela=0; A=0;b=0;C=0;/ 时P2= smgd shi/10&shan;delay(2);A=1;b=0;C=0;P2= smgd shi%10&shan;delay(2);else wela=0;A=0;b=0;C=0;/ 时P2= smgd shi/10;delay(2);A=1;b=0;C=0;P2= smgd shi%10;delay(2); if(knum=2)wela=0; A=0;b=1;C=0; / 分P2= smgd fen/10&shan;delay(2);A=1;b=1;C=0;P2= smgd fen%10&shan;delay(2);else wela=0;A=0;b=1;C=0; / 分P2= smgd fen/10;delay(2);A=1;b=1;C=0;P2= smgd fen%10;delay(2); if(knum=1) wela=0;A=0;b=0;C=1; / 秒P2= smgd miao/10&shan;delay(2);A=1;b=0;C=1;P2= smgd miao%10&shan;delay(2); wela=1;A=1;b=1;C=1;else wela=0;A=0;b=0;C=1; /秒P2= smgd miao/10;delay(2);A=1;b=0;C=1;P2= smgd miao%10;delay(2); wela=1;A=1;b=1;C=1; void key() uchar temp;display();if(k1=0) delay1(20);if(k1=0)while(!k1);knum+;if(knum=8)knum=1; if(k2=0) delay1(20);if(k2=0)while(!k2);knum-;if(knum=0)knum=7; if(knum!=0) if(add=0)delay1(20);if(add=0)while(!add);switch(knum)case 1:miao+;if(miao=60)miao=0;temp=(miao)/10*16+(miao)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x80,temp); write_1302(0x8e,0x80); /打开写保护break;case 2:fen+;if(fen=60)fen=0;temp=(fen)/10*16+(fen)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x82,temp); write_1302(0x8e,0x80); /打开写保护break;case 3:shi+;if(shi=24)shi=0; temp=(shi)/10*16+(shi)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x84,temp); write_1302(0x8e,0x80); /打开写保护break;case 5:ri+;switch(yue) case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(ri=32) ri=1; break; case 4:case 6:case 9:case 11: if(ri=31) ri=1; break; case 2: if(nian%4=0|nian%400=0)if(ri=30)ri=1;elseif(ri=29)ri=1; break; temp=(ri)/10*16+(ri)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x86,temp); write_1302(0x8e,0x80); /打开写保护break;case 4:zhou+;if(zhou=8)zhou=1; temp=(zhou)/10*16+(zhou)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x8a,temp); /向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); /打开写保护break;case 6:yue+;if(yue=13) yue=1; temp=(yue)/10*16+(yue)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x88,temp); write_1302(0x8e,0x80); /打开写保护break;case 7:nian=(nian4)&0x0f)*10+(nian&0x0f)+1;if(nian=99)nian=0; /temp=(nian)/10*16+(nian)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x8c,(nian/10)4)+(nian%10)&0x0f); /向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); /打开写保护break; if(sub=0)delay1(20);if(sub=0)while(!sub);switch(knum)case 1:miao-;if(miao=-1)miao=59;temp=(miao)/10*16+(miao)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x80,temp);/write_1302(0x80,(miao/10)4)+(miao%10)&0x0f); /向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); /打开写保护break;case 2:fen-;if(fen=-1)fen=59;temp=(fen)/10*16+(fen)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x82,temp);/write_1302(0x82,(fen/10)4)+(fen%10)&0x0f); /向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); /打开写保护break;case 3:shi-;if(shi=-1)shi=23; temp=(shi)/10*16+(shi)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_1302(0x84,temp);/write_1302(0x84,(shi/10)4)+(fen%10)&0x0f); /向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); /打开写保护break;case 5:ri-;switch(yue) case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(ri=0) ri=31; break; case 4:case 6:case 9:case 11: if(ri=0) ri=30; break; case 2: if(nian%4=0|nian%400=0)if(ri=0)ri=29;elseif(ri=0)ri=28; break; temp=(ri)/10*16+(ri)%10;/十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); /允许写,禁止写保护 write_130
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业互联网平台数据清洗算法在智能仓储物流中的实践报告
- 江苏省扬州市宝应县2025-2026学年高三上学期期初检测语文试题(含答案)
- 公司合同法律风险防范管理制度
- 2025年湖南省永州市第十六中学八年级中考二模生物试题(含答案)
- 2024-2025学年湖南省永州市冷水滩区九年级(上)期末数学试卷(含答案)
- 信息技术应用能力测评题库
- 卫生院绩效考核措施
- 中国传统节日中秋节主题班会课件
- 巡视巡查课件
- 巡察干部培训课件
- FZ∕T 54007-2019 锦纶6弹力丝行业标准
- 2024年江苏省高中学业水平合格性考试数学试卷试题(答案详解1)
- DZ∕T 0148-2014 水文水井地质钻探规程(正式版)
- 膝痹病的中医治疗方案
- 神经外科护理诊断和措施及神经外科疾病护理常规
- Know Before You Go:趣谈“一带一路”国家智慧树知到期末考试答案2024年
- 养老金融论文
- 无人机维修技术行业报告
- NPI工程师培训资料
- 2024年射频同轴电缆组件行业技术趋势分析
- 个人工资表表格
评论
0/150
提交评论