电子设计创新训练(提高)常用典型外设使用方法与编程技术2精要.ppt

电子设计创新训练(提高)常用典型外设使用方法与编程技术2精要.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 五、时钟芯片 MCU系统中,经常需要系统时钟。多数系统时钟可以由MCU的定时器来产生。但是在精确定时和掉电时钟连续计时的要求情况下,就需要使用独立的时钟芯片。 独立的时钟芯片需要采用独立的晶体振荡器,一般情况下使用32.768KHz的表振。时钟芯片的突出特点有:极低的功耗(几个微安);支持电池掉电保护;一般提供额外的RAM供系统使用。 典型的时钟芯片有:DS12887A;DS1302。 (一)并行接口时钟芯片DS12887A 直接替代IBM AT计算机时钟/日历;RTC计算秒、分、时、星期、日、月、年信息,具有润年补偿,有效期至2099年。用二进制或BCD表示时间,具有AM、PM标示的12小时模式或24小时模式,夏时制选择。可选择Intel或Motorola总线时序 ,接口配合软件可寻址128 RAM 。 14字节时钟与控制寄存器,114字节通用、电池备份RAM (DS12C887和DS12C887A为113字节,10年) 。中断可分别通过软件屏蔽与检测 ,闹钟可设置为每秒一次至每星期一次,周期可设置在122μs至500ms 。时钟终止刷新周期标志,可编程的方波输出信号。自动电源失效检测和切换电路 ,集成了晶体和电池的DIP模块(EDIP)封装(DS12887、DS12887A、DS12C887、DS12C887A),可选的工业级温度范围 。 图4-18 DS12887A芯片管脚图 (二)DS1302 DS1302的主要组成部分包括:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。DS1302慢速充电时钟芯片包括实时时钟/日历和31字节(31×8)的静态RAM。它经过一个简单的串行接口与微处理器通讯。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月,月末的日期自动进行调整,还包括了闰年校正的功能。时钟的运行可以采用24小时或带AM(上午)/PM(下午)的12小时格式。使用同步串行通讯,简化了DS1302与微处理器的通信。与时钟/RAM通信仅需三根线:(复位)、I/O(数据线)、SCLK(串行时钟)。数据可以以每次一个字节或多达31个字节的多字节形式传送至时钟/RAM或从其中送出。DS1302设计成2.5~5.5V满度工作范围,能在非常低的功耗下工作,消耗小于1微瓦的功率便能保存数据和时钟信息(100nA/2V)。可选的涓流慢速充电至VCC1的能力和备份电源引脚。 图4-19 DS1302芯片管脚图 电源引脚(主电源) VCC2 8 地 GND 4 串行时钟 SCLK 7 32.768kHz晶振引脚 X2 3 数据输入/输出 I/O 6 32.768kHz晶振引脚 X1 2 复位 (片选) 5 电源引脚(备份电源) VCC1 1 功能描述 名称 引脚 功能描述 名称 引脚 表4-7 DS1302引脚功能图 图4-20 DS1302内部结构图 图4-21 DS1302内部时钟寄存器分配图 图4-22 DS1302内部RAM寄存器分配图 图4-23 DS1302内部寄存器读写时序图 图4-24 DS1302与单片机接口的硬件电路连接图 //DS1302读写C51源程序 //------------------------------------------------ //打开DS1302 void TimeSpiOpen(void) { TIMECLK = 0; TIMERST = 0;//禁止DS1302 TIMEIO = 1;//释放数据总线 TIMERST = 1;//使能DS1302 } //关闭DS1302 void TimeSpiClose(void) { TIMERST = 0;//禁止DS1302 TIMEIO = 1;//释放数据总线 TIMECLK = 1; } //读写DS1302 unsigned char TimeSpiReadWrite(unsigned char val) { unsigned char data i,j,k; j= val; //取8位数据 for (i = 8;i 0; i--) { TIMECLK = 0; //时钟下降沿输入数据(DS1302读) k=k1; if(TIMEIO) //接收串行数据到CY { k=k|0x80; } TIMEIO = j0x01; //发送串行数据 j=j1; TIMECLK = 1; //时钟上升沿打入数据(DS1302写) TIMEIO = 1;

文档评论(0)

文档资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档