欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    DS1302的驱动程序(9页).doc

    • 资源ID:34792634       资源大小:57KB        全文页数:9页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    DS1302的驱动程序(9页).doc

    -DS1302的驱动一、芯片介绍DALLAS公司推出的专用时钟芯片DS1302内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒分时日星期月年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信,DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW,采用普通32.768kHz晶振。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:RES 复位;I/O 数据线;SCLK串行时钟,其引脚图如图2-8所示。图2-8 DS1302引脚图其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入输出端,SCLK始终是输入端。1) DS1302的控制字节 DS1302 的控制字如图2-9所示。1RAMA4A3A2A1A0W/CK/R图2-9 DS1302 的控制字节控制字节的最高有效位必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。2) DS1302的数据输入输出 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。3) DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字如表2-12所示。表2-12 日历、时间寄存器及其控制字寄存器名称命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H059CH秒十位秒个位分寄存器82H83H0590分十位分个位时寄存器84H85H023或012T010时时个位AP日寄存器86H87H028,29,30,3100日十位日个位月寄存器88H89H112000月月个位周寄存器8AH8BH1700000星期年寄存器8CH8DH099年十位年个位其中CH为时钟停止位,CH=0振荡器工作允许;CH=1振荡器工作停止。T为12小时制与24小时制选择位,T=0为24小时制;T=1为12小时制。AP为12小时制的上下午指示位,AP=0为上午;AP=1为下午。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。二、驱动程序分析接口定义:sbit IO=P34;/定义P3.4为DS1302的数据输出输入口;sbit RST=P31;/定义P3.1为DS1302的复位信号输入口;sbit CLK=P35; /定义P3.5为DS1302的串行时钟信号输入口。1) DS1302寄存器写操作SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。在对寄存器写操作是应先指明寄存器的地址。各寄存器的地址详见表2-12。DS1302写操作驱动函数代码如下:void WriteByte_1302(uchar d)uchar i;RST=1;/启动写操作for(i=0;i<8;i+)if(d&0x01) /送出写数据IO=1;else IO=0;CLK=0;delay_us(10);CLK=1;/上升沿,写入数据delay_us(10);d>>=1;寄存器写操作驱动函数代码如下:void D_W1302(uchar add,uchar Data)RST=0;CLK=0;delay_us(10);RST=1;WriteByte_1302(add);/指明寄存器地址WriteByte_1302(Data);/写寄存器CLK=1;RST=0;2) DS1302寄存器读操作 SCLK时钟的下降沿时,数据被读出DS1302,数据输入从低位即位0开始。在对寄存器读操作时应先指明寄存器的地址。各寄存器的地址详见表2-12。DS1302读操作驱动函数:uchar ReadByte_1302()uchar i;uchar rdata=0x00;IO=1;RST=1;for(i=0;i<8;i+)CLK=1;delay_us(10);CLK=0;delay_us(10);rdata>>=1;if(IO) rdata|=0x80;return(rdata);寄存器读操作驱动函数代码如下:uchar D_R1302(uchar add)uchar Data;RST=0;CLK=0;delay_us(1);RST=1;WriteByte_1302(add);Data=ReadByte_1302();CLK=1;RST=0;return(Data);2) DS1302读取时间和设置时间功能模块从DS1302读取时间是通过void gettime_1302(uchar times12)实现的。入口参数uchar times12用来存储从DS1302读取的时间和日期,从数据第0位开始分别存储秒、分、时、日、月、星期、年的个位和十位。其程序代码如下:void gettime_1302(uchar times14)uchar i,j=0;uchar time6;uchar add=0x81;for(i=0;i<7;i+,add+=2)timei=D_R1302(add);times2*i=(timei&0x0f);timei>>=4;times2*i+1=(timei&0x0f);对DS1302设置时间由void set_1302(uchar *p)来实现,入口参数uchar *p设置时间数组首地址指针。数组p7共7个元素分别对应秒、分、时、日、月、星期、年。程序代码如下:void set_1302(uchar *p)uchar i;uchar add=0x80;D_W1302(0x8e,0x00);/写控制寄存器位0x00,WP=0写允许for(i=0;i<7;i+,p+,add+=2)D_W1302(add,*p);D_W1302(0x8e,0x80);/写保护DS1302驱动程序各函数包含于头文件1302.h中,在主函数中加入宏定义#include"1302.h"。第 9 页-

    注意事项

    本文(DS1302的驱动程序(9页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开