基于DS1302的日历时钟

基于DS1302的日历时钟

ID:43768023

大小:346.88 KB

页数:10页

时间:2019-10-14

基于DS1302的日历时钟_第1页
基于DS1302的日历时钟_第2页
基于DS1302的日历时钟_第3页
基于DS1302的日历时钟_第4页
基于DS1302的日历时钟_第5页
资源描述:

《基于DS1302的日历时钟》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、〃基于DS1302的日历时钟#include〃包含单片机寄存器的头文件#include〃包含_nop_()函数定义的头文件以下是DS1302芯片的操作程序unsignedcharcodedigit]10]={"0123456789"};〃定义7符数组显示数7sbitDATA=P1A1;//位定义1302芯片的接口,数据输出端定义在P1」引脚sbitRST=P1A2;//位定义1302芯片的接口,复位端口定义在P1.1引脚sbitSCLK=P1AO;〃位定义13

2、02芯片的接口,时钟输出端口定义在PL1弓

3、脚t/rj%rj*r

4、^rprj^rj*r

5、^rj%rj*r

6、^rj%rj*r

7、^rprj*rpr

8、^rjwrj%rprj**prjwrj*r

9、^rj%r

10、^函数功能:延时若干微秒入口参数:nunsignedchari;for(i=0;i

11、好准备〃连续写8个二进制位数据DATA=dat&0x01;delaynus(2);SCLK=1;dclaynus(2);〃収岀dat的笫0位数据写入1302〃稍微等待,使硬件做好准备〃上升沿写入数据〃稍微等待,使驶件做好准备SCLK=0;dat»=1;〃重新拉低SCLK,形成脉冲〃将dat的各数据位右移1位,准备写入下一个数据位函数功能:根据命令字,向1302写一个字节数据入口参数:Cmd,储存命令字;dat,储存待写的数据rj%*p^prj%*prj%rj%rj%rj^r^rj%*p^prj%*p

12、rj^rj%rp*prjpr

13、^*p^pr

14、^r^rj%rprj^r]prp干voidWriteSet1302(unsignedcharCmd,unsignedchardat)RST=();SCLK=0;RST=1;delaynus(2);〃禁止数据传递〃确保写数居前SCLK被拉低〃启动数据传输〃稍微等待,使硬件做好准备Write1302(Cmd);〃写入命令字Write13()2(dat);//写数据SCLK=1;〃将时钟电平置于已知状态RST=0;〃禁止数据传递函数功能:从1302读一个字节数据

15、入口参数:xunsignedcharRead1302(void){unsignedchari,dat;dclaynus(2);〃稍微等待,使硬件做好准备for(i=0;i<8;i++)〃连续读8个二进制位数据dat»=l;//^dat的各数据位右移1位,因为先读出的是字节的最低位if(DATA==l)datl=0x80;SCLK=1;delaynus(2);SCLK=0;〃如果读出的数据是1〃将1取出,写在dat的最高位〃将SCLK置于高电平,为下降沿读出〃稍微等待〃拉低SCLK,形成脉冲F降沿de

16、laynus(2);}〃稍微等待returndat;〃将读il!的数据返回函数功能:根据命令字,从1302读取一个字节数据入口参数:CmdunsignedcharReadSet1302(unsignedcharCmd)unsignedchardat;RST=0;SCLK=0;RST=1;Write1302(Cmd);〃拉低RST〃确保写数居前SCLK被拉低〃启动数据传输〃写入命令字〃读出数据〃将时钟电平置于已知状态〃禁止数据传递〃将读出的数据返凹dat=Read1302();SCLK=1;RST=0

17、;returndat;}//»Tw»Tw•!>»Tw0T%»T^9T^•!>rTw»Y>9T^»TwrTw»TwrTw»TwrTw»Y>9T^*1^»Tw9T^»Y>»Tw•!>函数功能:1302进行初始化设置vlxw£^k!zvlxw£^vl>^lx^L#^lx^2^kL^vl>%L^kIx/rj%rj%rprj*rprj**7*"卜rj**7*rj・*7*rj%rprj*rprj*rj・"卜rj*rjwrprprj*rj・#7*rprj%rjwrjwrprpfWritcSctl302(0x8E,

18、0x00);//根据写状态寄存器命令字,写入不保护指voidInit_DS1302(void)WriteSetl302(0x80,((0/10)«4l(0%10)));〃根据写秒寄存器命令字,写入秒的初始值WriteSet1302(0x82,((0/10)«41(0%10)));〃根据写分寄存器命令字,写入分的初始值WriteSet1302(0x84,((12/10)«41(12%10)));//根据写小时寄存器命令字,写入小时的初始WriteSet1302(0x86

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。