版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DS1302应用刚学单片机,好多好奇,所以想做个简单的时钟。下面是PROTEUS仿真电路和电路图,简单易懂。文笔不好,说了多余。下面是程序。#include#include#include#defineuintunsignedint#defineucharunsignedchar#defineBCDTUAN(str)(str/10*16+str%10)/定义宏,将要写入DS1302的时间转化为BCD码#defineWrite_Sec0 x80#defineWrite_Min0 x82#defineWrite_Hou0 x84#defineWrite_Dat0 x86#defineWrite_M
2、on0 x88#defineWrite_day0 x8a#defineWrite_Yea0 x8c#defineWrite_WP0 x8e/写保护位#defineWrite_TCR0 x90#defineRead_Sec0 x81#defineRead_Min0 x83#defineRead_Hou0 x85#defineRead_Dat0 x87#defineRead_Mon0 x89#defineRead_Day0 x8b#defineRead_Yea0 x8d#defineCLK_BurstW0 xbf/时钟突发模式写#defineCLK_BurstR0 xbf/时钟突发模式读#defi
3、neWrite_RAM_Begin0 xc0/RAM第一个字节写指令#defineRead_RAM_Begin0 xc1/RAM第一个字节读指令#defineRAM_BurstW0 xfe/突发模式写RAM#defineRAM_BurstR0 xff/突发模式读RAMsbit_74hc154_A=P10;sbit_74hc154_B=P11;sbit_74hc154_C=P12;sbit_74hc154_D=P13;sbitCE=P16;sbitSCLK=P15;sbitIO=P14;ucharcodescan4=0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,
4、0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1;ucharscanbuff=0,0,0,0,0,0,0,0,0,0,0,0;ucharcodedispdate=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;voidWriteDS1302(void);/向DS1302写入时间。voidReadDS1302(void);/读取DS1302中的年,月,日,星期几,小时,分钟和秒.voidSendCmd
5、(unsignedcharcmd);/传送地址voiddelayus(unsignedchartt);voiddelay(ucharz)ucharx,y;for(x=z;x0;x-)for(y=120;y0;y-);void_74hc154(uchark)/位扫描设定_74hc154_A=scank0;_74hc154_B=scank1;_74hc154_C=scank2;_74hc154_D=scank3;voidmain()uchari;while(1)WriteDS1302();ReadDS1302();for(i=0;i12;i+)_74hc154(i);/位扫描P0=dispdate
6、scanbuffi;/数据送P0口delay(10);voidWriteDS1302(void)WriteByte(Write_Yea,BCDTUAN(13);/写13年/读取DS1302中的年,月,日,星期几,小时,分钟和秒.voidReadDS1302(void)unsignedcharbuff;/将读取的数据送入缓存数组,住输出数据为16进制buff=ReadByte(Read_Yea);/年scanbuff10=buff/16;/十位scanbuff11=buff%16;/个位buff=ReadByte(Read_Mon);/月scanbuff6=buff/16;/十位scanbuff
7、7=buff%16;/个位buff=ReadByte(Read_Dat);/日scanbuff8=buff/16;/十位scanbuff9=buff%16;/个位buff=ReadByte(Read_Hou);/时scanbuff0=buff/16;/十位scanbuff1=buff%16;/个位buff=ReadByte(Read_Min);/分scanbuff2=buff/16;/十位scanbuff3=buff%16;/个位buff=ReadByte(Read_Sec);/秒scanbuff4=buff/16;/十位scanbuff5=buff%16;/个位/读取地址RCmd的时间/数据
8、unsignedcharReadByte(unsignedcharRCmd)unsignedcharvalu=0 x00,temp;CE=0;/初使化SCLK=0;/初使化,并为riseedge做准备CE=1;/初使化,传输开始。TheSCLKmustbelowwhenCEisdriventohighlevel.SendCmd(RCmd);/传送地址for(temp=0;temp=1;SCLK=0;if(IO=1)valu|=0 x80;delayus(1);SCLK=1;delayus(1);CE=0;/结束传输returnvalu;/向WCmd地址写入时间/数据若写入时间,则时间用#def
9、ineBCD(time)(time/10*16+time%10)处理.voidWriteByte(unsignedcharWCmd,unsignedcharvalu)unsignedchartemp;CE=0;SCLK=0;/初使化,并为riseedge做准备CE=1;/初使化,传输开始。SendCmd(WCmd);for(temp=0;temp=1;CE=0;/结束传输/突发模式读RAMnum个字节voidBurstRead_CLK(unsignedchar*ptr)unsignedchartemp,temp2,valu;CE=0;SCLK=0;CE=1;SendCmd(RAM_BurstR
10、);/突发模式读取CLK开始for(temp2=0;temp28;temp2+)for(temp=0;temp=1;SCLK=0;if(IO=1)valu|=0 x80;delayus(2);SCLK=1;delayus(2);*ptr=valu;ptr+;CE=0;/结束突发模式读voidBurstRead_RAM(unsignedchar*ptr,unsignedcharnum)unsignedchartemp1,temp2,valu;CE=0;SCLK=0;CE=1;SendCmd(CLK_BurstR);/突发模式读取CLK开始for(temp2=0;temp2num;temp2+)f
11、or(temp1=0;temp1=1;SCLK=0;if(IO=1)valu|=0 x80;delayus(2);SCLK=1;delayus(2);*ptr=valu;ptr+;CE=0;/结束突发模式读/突发模式写RAMvoidBurstWrite_RAM(unsignedcharData)unsignedcharsize=sizeof(Data),temp1,temp2,valu;if(size31)size=31;CE=0;SCLK=0;CE=1;SendCmd(RAM_BurstW);for(temp2=0;temp2size;temp2+)valu=Datatemp2;for(te
12、mp1=0;temp1=1;CE=0;voidBurstWrite_CLK(unsignedcharTime)unsignedcharsize=sizeof(Time),temp1,temp2,valu;if(size8)size=8;CE=0;SCLK=0;CE=1;SendCmd(CLK_BurstW);for(temp2=0;temp2size;temp2+)valu=Timetemp2;for(temp1=0;temp1=1;CE=0;/传送指令voidSendCmd(unsignedcharcmd)unsignedchartemp;for(temp=0;temp=1;voiddelayus(unsignedchartt)/tt=2,延时为2ustt-;这个是ds1302.h头文件内容,建个txt文档将下面内容复制进去,改后缀为.h即可添加了#ifndefDS1302_H#defineDS1302_HexternunsignedcharReadByte(unsignedcharRCmd);externvoidWriteByte(unsignedcharWCmd,unsignedch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省海门市高三物理下册期末考试模拟检测卷带答案
- 2026年云南省蒙自市高一化学上册期末考试模拟考试卷附参考答案【B卷】
- 反套路背景下027年高考数学问题解决的研究与探索
- 基于机器学习的中文文本分类算法深度剖析
- 基于本体的图像检索系统:技术、应用与优化研究
- 基于有限元网格的多工序件修边线确定方法:理论、实践与创新应用
- 基于有限元分析的新型多孔金属材料动力学行为研究
- 基于最大最小距离聚类算法优化多重心法的选址策略创新研究
- 基于智能监测的钢管混凝土拱桥全生命周期管理决策系统构建与应用
- 基于智能化技术的通风矿图绘制系统深度剖析与创新实践
- 小学六年级信息科技《避免故障保安全》项目式教学设计及核心素养落实策略
- 博物馆场馆安全风险评估报告
- 交通工程(公路项目)监理实施细则编制提示词
- 2026年浙江保安员考试题库及答案
- 中国电信历年考试笔试题库及答案
- 青少年积极心理品质培养手册 (标准版)
- 2026年成考专升本政治时政统考专用试题及答案
- 2026年秋季小学英语开学第一课 高效学习法指导
- 农业生产符合性评价指标要求、水资源保障条件、排水能力分级参考表、江苏耕地质量等级评价地形部位归并表、鉴定意见
- 永辉超市数字化转型实践
- 第九版组织学与胚胎学
评论
0/150
提交评论