ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:18.91KB ,
资源ID:22873127      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22873127.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ds1302时间读取Word格式文档下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ds1302时间读取Word格式文档下载.docx

1、 writetime_ds1302(0x8e,0x00); /write enable for(i=0;i7;i+) /set time-second,munite,hour,day,month,week,year writetime_ds1302(0x80+i*2,timei); writetime_ds1302(0x8e,0x80); /write protect/从DS1302中一次读出所有的数据并存在数组time7当中void gettime_ds1302()i+) /get time-second,munite,hour,day,month,week,year timei=readt

2、ime_ds1302(0x81+i*2);/往DS1302的地址ds1302_add处写入ds1302_cmd数据或命令void writetime_ds1302(uchar ds1302_add,uchar ds1302_cmd)/ ds1302_rst=0;/ ds1302_clk=0; ds1302_rst=1; writebyte_ds1302(ds1302_add); writebyte_ds1302(ds1302_cmd);/ ds1302_clk=1; ds1302_rst=0;/从DS1302的地址DS1302_ADD处读出时间值uchar readtime_ds1302(uc

3、har ds1302_add) uchar temp_data; temp_data=readbyte_ds1302(); return temp_data;/从DS1302中读出一字节并返回uchar readbyte_ds1302() i1)|0x80; else temp_data=1;*/ /*以上被注释部分的代码也可以用,实际测试过* if(ds1302_io) temp_data|=(1i); /如果读到高电平,则置位相应位 temp_data&=(10;i-) ds1302_io=temp_data&0x01;/将读到的时间显示在六个数码管上,该子程序只显示分秒时。void ti

4、me_display()=2; numdis(timei&0x0f ,i*2 ,20); numdis(timei&0xf0)4),i*2+1,20);/数码管显示子程序,将一个数num显示到某一位weixuan数码管void numdis(uchar num,uchar weixuan,uchar brightness ) while(brightness-)LED=num*0x10+weixuan*0x01; LED=LED_OFF;MS1602的读写时序*void Write(uchar tempdata) DB0_DB7=tempdata;RS=0;RW=0;E=0;nop;E=1;C

5、heckBusy();void WriteDDR(uchar tempdata)RS=1;void CheckBusy()DB0_DB7=0xff;RW=1;do nop; TEMP=DB0_DB7;while(TEMP&0x80)=0x80);二、#include sbit SCK=P36;sbit SDA=P34;sbit RST=P35;/ DS1302复位sbit set=P30;/定义按键端口sbit s1=P31;sbit s2=P32;sbit s3=P33;/*液晶口定义*/sbit RS=P24;/RS为数据/指令选择1/0sbit RW=P25;/读写sbit E=P26;

6、/E为使能信号bit flag;/是否读取时间的标志位uchar setn=0;/复位键、增加键、减少键按下次数uchar code time0=DATE: - - ;uchar code time1=TIME: : uchar l_tmpdate7=0,55,16,22,8,6,9;/秒分时日月周年/ 可随时更改uchar code write_add7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /秒分时日月周年 写的寄存器地址uchar code read_add7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; /秒分时日月周年 读的

7、寄存器地址uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /共阴数码管 0-9加-熄灭表void delay(uint z) while(-z);void write_com(uchar com)/液晶写命令函数 RS=0;/写命令使能 RW=0;/写 delay(5000);/*在高脉冲下命令输入*/ E=0; P0=com; delay(500); E=1;void write_data(uchar dat)/液晶写数据函数 RS=1;/写数据使能/*在高脉冲下数据输入*/ P0=dat;vo

8、id init()/液晶初始化 uchar num; write_com(0x38);/显示模式设置 write_com(0x08);/显示关闭 write_com(0x01);/显示清屏 write_com(0x06);/光标移动设置整屏不移动 write_com(0x0c);/屏幕开、光标不闪(0)不显示(0) write_com(0x80); for(num=0;num /右移一位 SCK=1; /*/void Write_Ds1302(uchar add,uchar dat )/向寄存器写数据 RST=0; _nop_(); RST=1;/启动 Write_Ds1302_Byte(ad

9、d); /发送地址 Write_Ds1302_Byte(dat); /发送数据 /恢复uchar Read_Ds1302_Byte()/读一个字节 uchar i,temp=0x00;i+) /循环8次 读取数据 if(SDA) temp|=0x80; /每次传输低字节 return(temp);uchar Read_Ds1302(uchar address )/从寄存器读数据 uchar date; Write_Ds1302_Byte(address); date=Read_Ds1302_Byte(); /以下为DS1302复位的稳定时间 SDA=0; SDA=1; return (date

10、);/*/void Read_RTC(void) /读取日历 uchar i,*p; p=read_add; /读的地址传递i+) /分7次读取 秒分时日月周年 l_tmpdatei=Read_Ds1302(*p); p+;/*/void Set_RTC(void) /设定日历 uchar i,*p,tmp; /BCD处理,将十六进制转换成十进制 tmp=l_tmpdatei/10; l_tmpdatei=l_tmpdatei%10; l_tmpdatei=l_tmpdatei+tmp*16; Write_Ds1302(0x8E,0X00);/关闭写保护 p=write_add;/传要写的寄存

11、器地址 i+) /7次写入秒分时日月周年 Write_Ds1302(*p,l_tmpdatei); Write_Ds1302(0x8E,0x80);/打开写保护void write_lcd() static uchar i,temp2; switch(i) case 0: write_com(0x80+0x40+0x0b);break;/秒 case 1: write_com(0x80+0x40+8);/分 case 2: write_com(0x80+0x40+5);/时 case 3: write_com(0x80+0x0b);/日 case 4: write_com(0x80+8);/月

12、 case 5: write_com(0x80+0x0e);/星期 case 6: write_com(0x80+5);/年 temp0=l_tmpdatei/16;/数据的转换 temp1=l_tmpdatei&0x0f; write_data(0x30+temp0); write_data(0x30+temp1); i+; if(i=7) i=0;uchar change(uchar x)/十进制转换成十六进制 uchar tep,y; y=x; tep=y/16; y=y%16; y=y+tep*10; return y;void keyscan() uchar tem2,tp,Flag

13、;/存储要更改的时间数据 if(set=0) flag=1;/时间停止/去键盘按下抖动 while(!set);/去键盘抬起时抖动 setn+; if(setn=1) write_com(0x80+0x40+12);/将光标移动到秒个位 write_com(0x0f);/显示光标并且闪烁 if(setn=2) write_com(0x80+0x40+9);/将光标移动到分个位 if(setn=3) write_com(0x80+0x40+6);/将光标移动到时个位 if(setn=4) write_com(0x80+15); if(setn=5) write_com(0x80+12); if(

14、setn=6) write_com(0x80+9); if(setn=7) write_com(0x80+6); if(setn=8) setn=0; Write_Ds1302(write_add0,l_tmpdate0); flag=0;/时钟正常运行/光标停止闪烁 if(setn!=0)/更改时间 if(s1=0)/增加时间 if(s1=0)s1); l_tmpdate0=change(l_tmpdate0); l_tmpdate0+; if(l_tmpdate0=60) l_tmpdate0=0; tp=l_tmpdate0/10; l_tmpdate0=l_tmpdate0%10; l

15、_tmpdate0=l_tmpdate0+tp*16; write_com(0x80+0x40+11); tem0=l_tmpdate0/16; tem1=l_tmpdate0& write_data(0x30+tem0); write_data(0x30+tem1); Flag=1; l_tmpdate1=change(l_tmpdate1); l_tmpdate1+; if(l_tmpdate1=60) l_tmpdate1=0; tp=l_tmpdate1/10; l_tmpdate1=l_tmpdate1%10; l_tmpdate1=l_tmpdate1+tp*16; Write_Ds1302(write_add1,l_tmpdate1); tem0=l_tmpdate1/16; tem1=l_tmpdate1& write_data(0x30+tem

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1