电路组成及工作原理_第1页
电路组成及工作原理_第2页
电路组成及工作原理_第3页
电路组成及工作原理_第4页
电路组成及工作原理_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、X1226具有时钟和日历的功能,时钟依赖时、分、秒寄存器来跟踪,日历依赖日期、星期、月和年寄存器 来跟踪,日历可正确显示至 2099年,并具有自动闰年修正功能。拥有强大的双报警功能,能够被设置到任 何时钟/日历值上,精确度可到 1秒。可用软件设置1Hz、4096Hz或32768Hz中任意一个频率输出。X1226提供一个备份电源输入脚 VBACK,允许器件用电池或大容量电容进行备份供电。采用电容供电时, 用一个硅或肖特基二极管连接到Vcc和充电电容的两端,充电电容连接到Vback管脚,注意不能使用二极管对电池充电(特别是锂离子电池)。切换到电池供电的条件是 Vcc=Vback-0.1V,正常操作

2、期间,供电电压 Vcc必须高于电池电压,否则电池电量将逐步耗尽。振荡器采用外接32.768kH的晶体,产生的振荡误差可通过软件对数字微调寄存器、模拟微调寄存器的数值进行调节加以修正,避免了外接电阻和电容的离散性 对精度的影响。4Kb的EEPROM可用于存储户数据。电路组成及工作原理X1226可与各种类型的的微控制器或微处理器接口,接口方式为串行的I2C接口。其中数据总线SDA是一个双向引脚,用于输入或输出数据。其漏极开路输出在使用过程中需要添加4.710kQ的上拉电阻。本文介绍89C51单片机与X1226的接口方法,由于89C51单片机没有标准的I2C接口,只能用软件进行模拟。为了更直观地看到

3、时间的变化,采用8位LED数码管显示年、月、日或时、分、秒,用PS7219A驱动LED数码管,数码管选择0.5英寸共阴极红色或绿色 LED数码管。由于PS7219A器件内含IMP810单片机监控器件,复位输出高电平有效,因此在使用51系统时,无须添加监控器件,使用PS7219A的复位输出给51单片机复位即可,监控电压为4.63V。硬件设计原理图如图 1所示。在硬件通电调试过程中,不能用手去触摸X1226的晶体振荡器,否则可能会导致振荡器停振,恢复振荡器起振的方法是关闭电源(包括备份电源)后重新上电。另外需要说明的是,测量振荡器时,不要用示波器的探头去测量X2的振荡输岀,应该用探头测量PHZ/I

4、RQ的振荡输岀,以确定是否起振和振荡频率是否准确, 测量时建议在该脚加一个 5.1k Q的上拉电阻。软件设计X1226内含实时时钟寄存器(RTC)、状态寄存器(SR)、控制寄存器(CONTROL)、报警寄存器(AlarmO、Alarm1)和客户存储数据的存储器。由于实时时钟寄存器和状态寄存器需要进行频繁的写操作,因此其存储结构为易失性SRAM结构。其他寄存器均为 EEPROM结构,写操作次数通常在 10万次以上。X1226初始化程序 框图如图2所示,子程序 YS4的作用是延时4s启动条件子程序;SBTB SDALGLL YS4SETB SCLLCALL YS4CLR SDALCALL YS4C

5、LR SCLLCALL YS4RET停止条件子程序;CLR SDALCALL YS4SETB SCLLCALL YS4SETB SDA.RET写操作X1226初始化之后,单片机对 X1226进行开始条件的设置,在写CCR或EEPROM之前,主机必须先向状态寄存器写02H,确认应答信号,确认后写入06H,再确认应答信号。确认后启动了写操作,首先发送高位地址,然后发送低位地址。X1226每收到一个地址字节后,均会产生一个应答信号。在两个地址字节都收到之后,X1226等待8位数据。在收到8位数据之后,X1226再产生一个应答,然后单片机产生一个停止条 件来终止传送。X1226具有连续写入的功能,每收

6、到1字节后,响应一个应答,其内部将地址加一。当计数器达到该页的末尾时,就自动返回到该页的首地址。这意味着单片机可从某一页的任何位置开始向存储器阵列连续写入64字节,或向CCR连续写入8字节的数据。写入 X1226数据子程序:MOV R5,#gSEND1:A, DATASERLC AMOV DATA込 AMOV SDA.CSETS SCLLCALL YS1CLR SCLLCALL YS4DJNZ R SEND1RET读操作在上电时,16位地址的默认值为 OOOOH。X1226初始化操作之后,单片机对 X1226进行开始条件的设置,X1226每收到一个地址字节后,在写CCR或EEPROM之前,主机

7、必须先向状态寄存器写02H,确认应答信号,确认后写入06H,再确认应答信号。确认后启动了写操作,首先发送高位地址,然后发送低位地址均会产生一个应答信号。单片机发送另一个开始条件,将R/W位设置为1,接着接受8位数据。单片机终14 / 15止读操作时,无需等待 X1226的应答信号,单片机即可设置停止条件。读出X1226数据子程序:MOVR5, #3I07DATARE, #0SETBSDACLR CREAD1: SETB SCLLCALL YS410? G SDACLR SCLM07 扎 DATARERLC AMO? DATARE, ALCALL YS4叮MZ R5, READ!RET振荡器频率

8、在线补偿调节这种微调通常针对两种情况。X1226集成了振荡器补偿电路,用户可通过软件在线对振荡器频率进行微调,一种情况是在25 C常温下,对振荡器因器件初始精度带来的频率偏差进行补偿;第二种情况是对因温度引起的频率漂移进行补偿。X1226内部设有数字微调寄存器(DTR)和模拟微调寄存器(ATR),两个寄存器均为非易失性寄存器。数字微调寄存器具有3位数字微调位,调节范围为-30+30X10-6。模拟微调寄存器具有 6个模拟微调位,调节范围为 -37+116 X10-6。对于因外界环境温度变化引起的温漂补偿,要依据晶体的温度系数,在存储器中建立补偿参数表,不同厂 家晶体的温度系数是不一样的,应根据

9、产品数据手册进行选择。为了能够对温漂进行补偿,要求系统中设置一个温度传感器,并尽量让它靠近X1226,这样可以真实地反映振荡器的温度,原理图如图3所示。单片机首先通过系统温度传感器获取环境温度,并在补偿参数表中获取对应的补偿值,然后将补偿数据填写到相应的微调寄存器中,就能实现温漂补偿的目的。由于X1226具有精密的振荡器补偿功能,因此非常适合于环境温度变化较大的应用场合,同时也降低了对晶体性能参数的要求下面还为广大读者介绍一个程序:J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J;

10、AT89C2051 时钟程序;;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁用,;P3.7为调整按钮,P1 口为字符输出口,采用共阳显示管。中断入口程序ORG 0000H ;程序执行开始地址LJMP START ; 跳到标号 START 执行ORG 0003H ;外中断 0 中断程序入口RETI ; 外中断 0 中断返回ORG 000BH ; 定时器 T0 中断程序入口LJMP INTT0 ; 跳至 INTTO 执行ORG 0013H ;外中断 1 中断程序入口RETI ;外中断 1 中断返回ORG 001BH ; 定时器 T1 中断程序入口LJMP INTT1 ; 跳

11、至 INTT1 执行ORG 0023H ; 串行中断程序入口地址RETI ;串行中断程序返回主程序START: MOV R0,#70H ; 清 70H-7AH 共 11 个内存单元MOV R7,#0BH ;CLEARDISP: MOV R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清 20H (标志用)MOV 7AH,#0AH ; 放入熄灭符数据MOV TMOD,#11H ;设 T0、T1 为 16 位定时器MOV TL0,#0B0H ;50MS 定时初值(T0计时用)MOV TH0,#3CH ;50MS 定时初值MOV TL1,#0B0H

12、 ;50MS 定时初值( T1 闪烁定时用)MOV TH1,#3CH ;50MS 定时初值SETB EA ; 总中断开放SETB ET0 ; 允许 T0 中断SETB TRO ;开启TO定时器MOV R4,#14H ;1 秒定时用初值(50MSX 20)START1: LCALL DISPLAY ; 调用显示子程序JNB P3.7,SETMM1 ;P3.7 口为 0 时转时间调整程序SJMP START1 ;P3.7 口为 1 时跳回 START1SETMM1: LJMP SETMM ; 转到时间调整程序 SETMM; 1 秒计时程序;T0 中断服务程序INTT0: PUSH ACC ; 累加

13、器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ; 关 T0 中断允许CLR TR0 ; 关闭定时器 T0MOV A,#0B7H ; 中断响应时间同步修正ADD A,TL0 ; 低 8位初值修正MOV TL0,A ; 重装初值(低 8 位修正值)MOV A,#3CH ; 高8位初值修正ADDC A,TH0 ;MOV TH0,A ; 重装初值(高 8 位修正值)SETB TR0 ; 开启定时器 T0DJNZ R4, OUTT0 ;20 次中断未到中断退出ADDSS: MOV R4,#14H ;20 次中断到( 1 秒)重赋初值MOV R0,#71H ; 指向秒计时单元( 71H-72

14、H)ACALL ADD1 ; 调用加 1 程序(加 1 秒操作)MOV A,R3 ;秒数据放入 A ( R3为2位十进制数组合)CLR C ; 清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ; 小于 60 秒时中断退出ACALL CLR0 ; 大于或等于 60 秒时对秒计时单元清 0MOV R0,#77H ; 指向分计时单元( 76H-77H )ACALL ADD1 ; 分计时单元加 1 分钟MOV A,R3 ; 分数据放入 ACLR C ; 清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ; 小于 60 分时中断退出ACALL

15、 CLR0 ; 大于或等于 60 分时分计时单元清 0MOV R0,#79H ; 指向小时计时单元( 78H-79H )ACALL ADD1 ; 小时计时单元加 1 小时MOV A,R3 ; 时数据放入 ACLR C ; 清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ; 小于 24 小时中断退出ACALL CLR0 ; 大于或等于 24 小时小时计时单元清 0OUTT0: MOV 72H,76H ; 中断退出时将分、时计时单元数据移MOV 73H,77H ; 入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)PO

16、P ACC ;恢复累加器SETB ET0 ; 开放 T0 中断RETI ; 中断返回闪动调时 程 序;T1 中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ; 中断现场保护PUSH PSW ;MOV TL1, #0B0H ; 装定时器 T1 定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3 秒未到退出中断( 50MS 中断 6 次)MOV R2,#06H ; 重装 0.3 秒定时用初值CPL 02H ;0.3 秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H 位为 1 时显示单元 熄灭 MOV 72H,76H ;02H 位为

17、 0 时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT:POP PSW ;恢复现场POP ACC ;RETI ; 中断退出FLASH1: JB 01H,FLASH2 ;01H 位为 1 时,转小时熄灭控制MOV 72H,7AH ;01H 位为 0 时, 熄灭符 数据放入分MOV 73H,7AH ; 显示单元( 72H-73H ),将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ; 转中断退出FLASH2: MOV 72H,76H ;01H 位为 1时, 熄灭符 数据放入小时MOV 73H,77

18、H ; 显示单元( 74H-75H ),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ; 转中断退出ADD1: MOV A,R0 ; 取当前计时单元数据到 ADEC R0 ; 指向前一地址SWAP A ;A 中数据高四位与低四位交换ORL A,R0 ; 前一地址中数据放入 A 中低四位ADD A,#01H ;A 加 1 操作DA A ; 十进制调整MOV R3,A ; 移入 R3 寄存器ANL A,#0FH ; 高四位变 0MOV R0,A ; 放回前一地址单元MOV A,R3 ; 取回 R3 中暂存数据INC R0 ; 指向当前地址单元SWA

19、P A ;A 中数据高四位与低四位交换ANL A,#0FH ; 高四位变 0MOV R0,A ; 数据放入当削地址单元中RET ; 子程序返回清零程序;对计时单元复零用CLR0: CLR A ; 清累加器MOV R0,A ; 清当前地址单元DEC R0 ; 指向前一地址MOV R0,A ; 前一地址单元清 0RET ; 子程序返回时钟调整程序;当调时按键按下时进入此程序SETMM: cLR ET0 ; 关定时器 T0 中断 CLR TR0 ; 关闭定时器 T0 LCALL DL1S ; 调用 1 秒延时程序JB P3.7,CLOSEDIS ; 键按下时间小于 1 秒,关闭显示(省电) MOV

20、R2,#06H ; 进入调时状态,赋闪烁定时初值SETB ET1 ; 允许 T1 中断SETB TR1 ; 开启定时器 T1SET2: JNB P3.7,SET1 ;P3.7 口为 0 (键未释放),等待SETB 00H ;键释放,分调整闪烁标志置 1SET4: JB P3.7,SET3 ;等待键按下LCALL DL05S ; 有键按下,延时 0.5 秒JNB P3.7,SETHH ;按下时间大于 0.5秒转调小时状态MOV R0,#77H ;按下时间小于 0.5秒加1分钟操作LCALL ADD1 ; 调用加 1 子程序MOV A,R3 ; 取调整单元数据CLR C ; 清进位标志CJNE A

21、,#60H,HHH ; 调整单元数据与 60比较HHH: JC SET4 ;调整单元数据小于 60转SET4循环LCALL CLR0 ; 调整单元数据大于或等于 60时清 0CLR C ;清进位标志AJMP SET4 ; 跳转到 SET4 循环CLOSEDIS:SETB ET0 ;省电(LED不显示)状态。开 T0中断SETB TR0 ; 开启 T0 定时器(开时钟)CLOSE: JB P3.7,CLOSE ; 无按键按下,等待。LCALL DISPLAY ; 有键按下,调显示子程序延时削抖JB P3.7,CLOSE ;是干扰返回 CLOSE 等待WAITH: JNB P3.7,WAITH ;

22、 等待键释放LJMP START1 ; 返回主程序( LED 数据显示亮)SETHH: CLR 00H ; 分闪烁标志清除(进入调小时状态)SETHH1: JNB P3.7,SET5 ; 等待键释放SETB 01H ;小时调整标志置 1SET6: JB P3.7,SET7 ; 等待按键按下LCALL DL05S ; 有键按下延时 0.5 秒JNB P3.7,SETOUT ; 按下时间大于 0.5秒退出时间调整MOV R0,#79H ; 按下时间小于 0.5 秒加 1 小时操作LCALL ADD1 ; 调加 1 子程序MOV A,R3 ;CLR C ;CJNE A,#24H,HOUU ; 计时单

23、元数据与 24 比较HOUU: JC SET6 ; 小于 24 转 SET6 循环LCALL CLR0 ; 大于或等于 24 时清 0 操作AJMP SET6 ; 跳转到 SET6 循环SETOUT: JNB P3.7,SETOUT1 ; 调时退出程序。等待键释放LCALL DISPLAY ; 延时削抖JNB P3.7,SETOUT ; 是抖动,返回 SETOUT 再等待CLR 01H ; 清调小时标志CLR 00H ; 清调分标志CLR 02H ; 清闪烁标志CLR TR1 ; 关闭定时器 T1CLR ET1 ;关定时器 T1 中断SETB TR0 ; 开启定时器 T0SETB ET0 ;

24、开定时器 T0 中断(计时开始)LJMP START1 ; 跳回主程序SET1: LCALL DISPLAY ; 键释放等待时调用显示程序(调分)AJMP SET2 ; 防止键按下时无时钟显示SET3: LCALL DISPLAY ; 等待调分按键时时钟显示用AJMP SET4SET5: LCALL DISPLAY ; 键释放等待时调用显示程序(调小时)AJMP SETHH1 ; 防止键按下时无时钟显示SET7: LCALL DISPLAY ; 等待调小时按键时时钟显示用AJMP SET6SETOUT1: LCALL DISPLAY ; 退出时钟调整时键释放等待AJMP SETOUT ; 防止键按下时无时钟显示显示程序P3 口作; 显示数据在 70H-75H 单元内,用六位 LED 共阳数码管显示, P1 口输出段码数据, ; 扫

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论