ds1302数码管显示应用_第1页
ds1302数码管显示应用_第2页
ds1302数码管显示应用_第3页
ds1302数码管显示应用_第4页
ds1302数码管显示应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论