DS1302驱动程序.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:4 大小:38KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

DS1302驱动程序.doc

DS1302驱动程序.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

DS1302是课程设计和毕业设计经常用到的时钟芯片,还在愁怎么对DS1302操作吗?那么看完DS1302驱动程序,一切变得那么简单。DS1302驱动程序://===========DS1302.H================#ifndef_DS1302_H__#define_DS1302_H__//DS1302管脚定义sbitT_IO=P2^6;//位定义1302芯片的接口,数据输出端定义在P2.5引脚sbitT_RST=P2^7;//位定义1302芯片的接口,复位端口定义在P2.6引脚sbitT_CLK=P2^5;//位定义1302芯片的接口,时钟输出端口定义在P2.4引脚//变量定义声明unsignedcharTableDs1302[7]={55,59,23,4,3,5,11};//初始化时时间日期设置//秒分时日月星期年//函数定义声明voidWrite1302(unsignedchar);//向1302写一个字节数据voidWriteSet1302(unsignedchar,unsignedchar);//根据命令字,向1302写一个字节数据unsignedcharRead1302(void);//从1302读一个字节数据unsignedcharReadSet1302(unsignedcharCmd);//根据命令字从1302读取一个字节数据voidInitDS1302(void);//初始化1302voidGetTime(void);//获取1302的时间/*****************************************************函数功能:向1302写一个字节数据入口参数:x***************************************************/voidWrite1302(unsignedchardat){unsignedchari;T_CLK=0;//拉低T_CLK,为脉冲上升沿写入数据做好准备Delay1Us(2);//稍微等待,使硬件做好准备for(i=0;i<8;i++)//连续写8个二进制位数据{T_IO=dat&0x01;//取出dat的第0位数据写入1302Delay1Us(2);//稍微等待,使硬件做好准备T_CLK=1;//上升沿写入数据Delay1Us(2);//稍微等待,使硬件做好准备T_CLK=0;//重新拉低T_CLK,形成脉冲dat>>=1;//将dat的各数据位右移1位,准备写入下一个数据位}}/*****************************************************函数功能:根据命令字,向1302写一个字节数据入口参数:Cmd,储存命令字;dat,储存待写的数据,为十进制数***************************************************/voidWriteSet1302(unsignedcharCmd,unsignedchardat){T_RST=0;//禁止数据传递T_CLK=0;//确保写数居前T_CLK被拉低T_RST=1;//启动数据传输Delay1Us(2);//稍微等待,使硬件做好准备Write1302(Cmd);//写入命令字Write1302((dat/10<<4)|(dat%10));//写数据T_CLK=1;//将时钟电平置于已知状态T_RST=0;//禁止数据传递}/*****************************************************函数功能:从1302读一个字节数据入口参数:x***************************************************/unsignedcharRead1302(void){unsignedchari,dat;Delay1Us(2);//稍微等待,使硬件做好准备for(i=0;i<8;i++)//连续读8个二进制位数据{dat>>=1;//将dat的各数据位右移1位,因为先读出的是字节的最低位if(T_IO==1)//如果读出的数据是1dat|=0x80;//将1取出,写在dat的最高位T_CLK=1;//将T_CLK置于高电平,为下降沿读出Delay1Us(2);//稍微等待T_CLK=0;//拉低T_CLK,形成脉冲下降沿Delay1Us(2);//稍微等待}returndat;//将读