大连理工大学单片机综合设计——基于ZLG7290B、PCF8563的时钟系统设计概要_第1页
大连理工大学单片机综合设计——基于ZLG7290B、PCF8563的时钟系统设计概要_第2页
大连理工大学单片机综合设计——基于ZLG7290B、PCF8563的时钟系统设计概要_第3页
大连理工大学单片机综合设计——基于ZLG7290B、PCF8563的时钟系统设计概要_第4页
大连理工大学单片机综合设计——基于ZLG7290B、PCF8563的时钟系统设计概要_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、大连理工大学本科设计报告题目:基于ZLG7290B PCF8563的时钟系统设计课程名称:单片机原理及应用实验学院(系):电子信息与电气工程学部专 业:班 级:学 号:学生姓名:成 绩:2015 年 5月 4日计算机技术实验室安全操作规范1. 实验前认真阅读安全操作规程,不得擅自触及总电源开关。2. 实验期间学生不准使用与实验无关的电气设备。3. 实验过程中若遇计算机故障时, 交由指导老师负责, 不允许学生私 自开箱维修。4. 在实验过程中,连接实验设备的220v电源时,要保持手部干燥, 并注意操作安全,不允许使用金属物件触碰 220v电源线及电源插座 的带点部位。5. 学生实验期间, 在连接

2、导线时不允许实验台带电操作, 连接完成后 经检查无误时再将实验台上电。 完成实验时先将实验台断电后再进行 导线的拆除。6. 实验期间要关闭手机等通讯工具, 实验室一律禁止携带饮料、 食品、 禁止吸烟、喧哗、嬉闹、确保实验室卫生、整洁。7. 学生完成实验后,必须关闭所有实验设备的电源。8. 如果实验过程中发生“突发事件”时,不要慌张、应沉着冷静,采 取相关的措施。必要时拨打校内晋级电话( 84708110)或拨打 110、 120 报警。电工电子实验教学中心 计算机技术实验室个人签字:题目:基于ZLG7290B PCF8563的时钟系统设计1 设计要求(1)由PCF8563提供时间参数并由ZLG

3、7290进行显示;( 2)能够利用键盘实现时间参数的修改, 修改过程可加入 “回显”“闪烁”、“容 错”等功能;( 3)利用蜂鸣器实现时钟系统的“整点报时”功能;( 4)要求程序中有中断环节;2 设计分析及系统方案设计(1)由PCF8563T实时时钟芯片提供时间数据,由ZLG7290B显示电路控制8 位数码管显示当前时间,二者通过I2C总线结构与AT89C51单片机相连,SDA和 SCK分别接 P1.0 和 P1.1 o(2)该系统采用双中断结构,时钟输出 CLKOU接INTO,为低优先级,每一 秒触发一次中断;键盘中断输出信号INT接INT1,为高优先级,每当有按键时 触发中断。( 3)算法

4、说明:10H-1DH向PCF8563T输入的相关参数的数据块;20H-26H从PCF8563T中读出的时间参数(秒、分、小时、日、星期、月、 年)通过CHAIFENf程序将20H-26H中获取时间参数拆分查表后送入下列缓冲区: 28H-2FH年(4单元)、月(2单元)、日(2单元);38H-3FH小时、分钟、秒(各占单元)。键盘修改时间子程序中先将键值读入 A,经判断转换后送入缓冲区20H-22H, 主程序功能:? 将10H-1DH中特定时间和控制命令送入 PCF8563T对应寄存器中,等待中断。? 由于PCF8563T勺CLKOU设定输出频率为1HZ将其与INT0相连,每秒引发 一次中断。在

5、时钟中断服务程序中读取时间参数,调整各参数后进入整点报 时子程序,判断是否报时。然后将时间参数经拆分查表等操作,将年、月、日送28H-2FH缓冲区,将小时、分、秒送 38H-3FH缓冲区,最后根据 P1.2 电平决定哪个缓冲区内容送 ZLG7290BS行显示。ZLG7290B勺键盘中断输出信号INT与INT1相连,每当有按键是触发中断, 先读入键值至A中,判断是A B或C,分别对应修改时、分、秒,进入对应子程序然后在等待两次输入,经转换设置成十位和个位,存入入12H-14H对应单元,再送入PCF8563T寸应寄存器。3系统电路Vcc4外围接口模块硬件电路功能描述(1) ZLG7290B :数码

6、管动态显示驱动、键盘扫描管理芯片,可驱动 8位共 阴极结构LED数码管,同时可管理64个按键扫描识别,接口采用I2C结构。(2) PCF8563T:由Philips公司设计的低功耗 CMOS实时时钟日历芯片, 具有1.0-5.5V的电压工作范围、一个可编程时钟输出和掉电检测电路,接口 采用I2C结构,每次读写操作内部地址寄存器自动产生增量。(3) 交流驱动蜂鸣器:一种发声元件,体积小,使用PNP驱动,需要一交 变信号驱动才能发出相应频率的声音。5主程序中主要变量定义RAM单元或工作寄存器定义、功能等。变量名称RAM单元/寄存器功能PCF8563T寸间和控制命令参数10H-1DH设定PCF856

7、3T寸间和命令参数的缓冲区时间参数20H-26H从PCF8563T中读出的时间参数(秒、分、 小时、日、星期、月、年)缓冲区年月日28H-2FH拆分查表所得年月日缓冲区以待显示时分秒38H-3FH拆分查表所得时分秒缓冲区以待显示键值1FH读入的键值存储单元6系统软件中各个子程序的功能描述 子程序的名称、功能,以及入口、出口参数。子程序名称入口参数出口参数功能描述INT_RCT无无时钟中断服务子程序PANDUAN20-21H无判断并进行整点报时CHAIFEN20-26H28-2FH、38-3FH将时间参数拆分查表CFAR4 R3将A中数据拆违两独立的十六进 制数并查表得到对应字型码ADJUST2

8、0-25H20-25H屏蔽各时间参数无关位INT_7290无无键盘修改时间中断服务子程序RDKEY无A读键值子程序WR8563R7 R0 R2、R3无向日历芯片写时间参数WRNBYTR7 R0 R2、R3无带有内部单元地址的多字节写操 作子程序RDADDR7、R0 R2、R3R4无带有内部单元地址的多字节读操 作子程序7主程序程序流程图8程序清单*5;由PCF8563提供时间参数并由 ZLG7290进行显示;能够利用键盘实现时间参数的修改,修改过程可加入回显、闪烁、容错等功能;利用蜂鸣器实现时钟系统整点报时功能;要求程序中有中断环节;转换显示:P1.2与KEY1连接,按下KEY1显示年月日平时

9、显示时分秒;设定时钟芯片 CLKOUT输出秒脉冲且与 P3.2连接;采用中断的方式来显示时间(每秒钟刷新一次显示);ZLG7290B 芯片的 RST_L 复位端与 P1.7 口连接,以便复位操作*SDABIT P1.0 ;SCL BIT P1.1WSLA_8563EQU0A2HRSLA_8563EQU0A3HWSLA_7290EQU70HRSLA_7290EQU71HORG8000HLJMP8100HORG8003HLJMPINT_RCTORG8013HLJMPINT_7290ORG8100H;ZLG7290B 口地址定义 I2C 信号引脚;PCF8563T 口地址START: MOV SP,

10、#60HCLR P1.7;ZLG7290B 复位LCALL DELAYSETB P1.7*;设定 PCF8563T 的时间和命令参数*MOV10H,#00H;启动控制字MOV11H,#1FH;设置报警及定时器中断MOV12H,#50H;秒单元MOV13H,#59H;分单元MOV14H,#10H;时单元MOV15H,#29H;日期单元MOV16H,#03H;星期单元MOV17H,#04H;月单元MOV18H,#15H;年单元MOV19H,#00H;设定分报警MOV1AH,#00H;设定小时报警MOV1BH,#00H;设定日报警MOV1CH,#00H;设定星期报警MOV 1DH,#83H;设定 C

11、LKOUT 的频率( 1S)*MOVR7,#0EH;写入参数个数(时间和控制字)MOVR0,#10H;参数和控制命令缓冲区首地址MOVR2,#00H;从器件内部从地址MOVR3,#WSLA_8563 ;准备向 PCF8563T 写入数据串LCALLWRNBYT;写入时间、控制命令到 PCF8563TMOVIP,02HSETBEASETBEX0SETBEX1SETBIT0SETBIT1SJMP$;等待中断*;时钟中断服务子程序*INT_RCT:MOVR7,#07H; 读出数个数MOVR0,#20H;目标数据块首地址MOVR2,#02H;从器件内部首地址MOVR3,#WSLA_8563MOVR4,

12、#RSLA_8563 ;准备读 PCF8563T 的时间参数LCALLRDADD;调读数据子程序,将读出的数据存放于单片机20H26H 中LCALLADJUST;调时间调整子程序LCALLPANDUAN;调判断键值子程序LCALLCHAIFEN;调拆分子程序(包含查表) ,将 20H26H中的参数分别存于 28H2FH 、38H3FH 单元中MOVR7,#08HMOVR2,#10HMOVR3,#WSLA_7290JNB P1.2,YEARS ;使用 P1.2 控制显示内容MOVR0,#38H;显示小时、分钟和秒SJMP DISPYEARS: MOV R0,#28H;显示年月日JNB P3.2,

13、$RETI*J;整点报时子程序*JPANDUAN:MOVA,21HCJNEA,#59H,PDFENMOVA,20HCJNEA,#56H,PD57LCALLBAOSHI1AJMPEXITPD57: CJNE A,#57H,PD58LCALLBAOSHI1AJMPEXITPD58: CJNE A,#58H,PD59LCALLBAOSHI1AJMPEXITPD59: CJNE A,#59H,EXITLCALLBAOSHI1AJMPEXITPDFEN: CJNE A,#00H,EXITMOVA,20HCJNEA,#00H,EXITLCALLBAOSHI2EXIT: RET*J;低音 1S 报时BAOS

14、HI1:PUSH PSWPUSH00HMOVR0,#0FFHMOVTMOD,#10HMOVTL1,#00HMOVTH1,#0FEHSETBTR1WORK1: JNB TF1,$CLR TF1MOVTL1,#00HMOVTH1,#0FEHCPL P1.4DJNZ R0,WORK1POP 00HPOP PSWRET*;高音 1S 报时BAOSHI2:PUSH PSWPUSH00HPUSH01HMOVR0,#04HWORK2: MOVR1,#00HMOVTMOD,#10HMOVTL1,#00HMOVTH1,#0FFHSETBTR1WORK3: JNB TF1,$CLR TF1MOVTL1,#00HM

15、OVTH1,#0FFHCPL P1.4DJNZR1,WORK3DJNZR0,WORK2POP 01HPOP 00HPOP PSWRET*;各子程序*ORG8300HCHAIFEN:PUSH PSW;对 20H26H 单元的参数拆分并在查表后送28H2FH (年月日)和 38H3FH (时分秒)PUSHPUSHPUSHACC03H04HMOVA,20H;取秒参数LCALLCF ;拆分、查表在 R4、R3 中MOV38H,R3;送秒的个位MOV39H,R4;送秒的十位MOV3AH,#02H;送分隔符MOVA,21H;取分参数LCALLCFMOV3BH,R3;送分的个位MOV3CH,R4;送分的十位

16、MOV3DH,#02H; 送分隔符MOVA,22H;取小时参数LCALLCFMOV3EH,R3;送小时的个位MOV3FH,R4;送小时的十位MOVA,23H;取日期参数LCALLCFMOVA,R3MOVR3,AMOV28H,R3MOV29H,R4MOVA,25H;取月参数LCALLCFMOVA,R3ORLA,#01HMOVR3,AMOV2AH,R3MOV2BH,R4MOVA,26H;取年参数LCALLCFMOVA,R3ORLA,#01HMOVR3,AMOV2CH,R3MOV2DH,R4MOV2EH,#0FCH;年的高两位处理MOV2FH,#0DAHPOP 04HPOP 03HPOP ACCPO

17、P PSWRET*J;将 A 中的数据拆分成两个独立的 BCD 码并查表,结果分别存放于R4、 R3 中CF: PUSH02HPUSHDPHPUSHDPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,APOP DPLPOP DPHPOP 02HRET*LEDSEG:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HDB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH*J;将 20H26H 中从 PCF8563T

18、中读出的 7 个字节参数的无关位屏蔽掉*JADJUST: PUSH ACCMOVA,20HANLA,#7FHMOV20H,AMOVA,21HANLA,#7FHMOV21H,AMOVA,22HANLA,#3FHMOV22H,AMOVA,23HANLA,#3FHMOV23H,AMOVA,24HANLA,#07HMOV24H,AMOVA,25HANLA,#1FHMOV25H,APOP ACCRET*J;延时子程序*JDELAY: PUSH 00HPUSH01HMOVR0,#00HDELAY1: MOV R1,#00HDJNZ R1,$DJNZ R0,DELAY1POP 01HPOP 00HRET*;

19、键盘修改时间中断服务子程序*INT_7290:PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL RDKEY;读取第一个按键值(功能键)*J;修改小时*AKEY: CJNE A,#0AH,BKEY;判断是 A 键吗?不是跳转判断是 BJB P3.3,$;以查询的方式等待下一次按键操作LCALL RDKEY;读取第二个按键值(小时的十位数?)SWAPAANL14H,#0FHORL14H,A;14H 单元中的“十位数”生成JB P3.3,$;以查询的方式等待下一次按键操作LCALLRDKEY;读取第三个按键值(小时的个位数)A

20、NL14H,#0F0H;将键值数据处理成小时的个位ORL14H,AMOVR7,#01HMOVR0,#14HMOVR2,#04HMOVR3,#WSLA_8563LCALLWRNBYT;将修改后的时间参数送 PCF8563TLJMPDOWN*J;修改分BKEY: CJNE A,#0BH,CKEYJB P3.3,$LCALLRDKEYSWAPAANL13H,#0FHORL13H,AJB P3.3,$LCALLRDKEYANL13H,#0F0HORL13H,AMOVR7,#01HMOVR0,#13HMOVR2,#03HMOVR3,#WSLA_8563LCALLWRNBYTLJMPDOWN*J;修改秒C

21、KEY: CJNE A,#0CH,DOWNJB P3.3,$LCALLRDKEYSWAPAANL12H,#0FHORL12H,AJB P3.3,$LCALLRDKEYANL12H,#0F0HORL12H,AMOVR7,#01HMOVR0,#12HMOVR2,#02HMOVR3,#WSLA_8563LCALL WRNBYTLJMP DOWN*J;中断返回退出DOWN: CLR IE0POP PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETI*;读键值子程序(出口参数累加器 A ,获取到的键值)RDKEY: MOVR0,#1FH; 键值缓冲单元MOV

22、R7,#01H;取键值数据MOVR2,#01H;指向内部数据键值寄存器地址MOVR3,#WSLA_7290 ;取器件写地址MOVR4,#RSLA_7290 ;取器件读地址LCALLRDADD;读出 7290 的 01H 单元中的键值MOVA,1FH;取键值送缓冲单元DECARET*J;向日历芯片中写入时间参数子程序WR8536: MOV R7,#07H ;写入参数个数(时间和控制字)MOVR0,#12H;参数和控制命令缓冲区首地址MOVR2,#02H;从器件内部从地址MOV R3,#WSLA_8563 ;准备向 PCF8563T 写入数据串LCALL WRNBYT ;写入时间、控制命令到 PC

23、F8563T RET*;相关I2C子程序*J;带有内部单元地址的多字节写操作子程序WRNBYT;通用的I2C通讯子程序(多字节写操作);入口参数R7字节数,R0 :源数据块首地址;R0原数据块首地址;R2从器件内部子地址;R3:外围器件地址(写);相关子程序WRBYT、STOP、CACK、STAWRNBYT:PUSH PSWPUSH ACCWRADD:MOVA,R3;取外围器件地地址(包含 r/w=0)LCALLSTA ;发送起始信号SLCALLWRBYT ;发送外围地址LCALLCACK 检测外围器件的应答信号JB F0,WRADD;如果应MOVA,R2LCALLWRBYT ;发送内部寄存器

24、首地址LCALLCACK 检测外围器件的应答信号JB F0,WRADD;如果应答不止确返回重来WRDA: MOVA,R0LCALLWRBYT ;发送外围地址LCALLCACK 检测外围器件的应答信号JB F0,WRADD;如果应答不止确返回重来INC RODJNZR7,WRDALCALLSTOPPOP ACCPOP PSWRET*J;带有内部单元地址的多字节读操作子程序RDADD;入口参数R7字节数;;R0目标数据块首地址; R2从器件内部子地址;;R3器件地址(写);R4器件地址(读);相关子程序 WRBYT、STOP、CACK、STA、MACK、MNACKRDADD: PUSH PSW;从

25、PCF8563的02H单元读入 7个参数PUSHACC;存放于 20H-26H 单元RDADD1:LCALLSTAMOVA,R3;取器件地址(写)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JB F0,RDADD1;如果应答不正确返回重来MOVA,R2;取内部地址LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JB F0,RDADD1;如果应答不正确返回重来LCALLSTAMOVA,R4;取器件地址(读)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JB F0,RDADD1;如果应答不正确返回重来RDN:

26、 LCALL RDBYTMOVR0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOP ACCPOP PSWRETACK: LCALL MACKINC R0SJMP RDN*J;启动信号子程序 SSTA: SETB SDA;启动信号 SSETB SCLNOP;产生 4.7US 延时NOPNOPCLR SDANOP;产生 4.7US 延时NOPNOPNOPNOPCLR SCLRET*;停止信号子程序 PSTOP: CLR SDA;停止信号 PSETB SCLNOP;产生 4.7US 延时NOPNOPNOPNOPSETB SDANOP;产生 4.7US 延时NOPNOPNOPNOP

27、CLR SCLCLR SDARET*;应答信号子程序MACKACKMACK: CLR SDA;发送应答信号SETB SCLNOP;产生 4.7US 延时NOPNOPNOPCLR SCLSETB SDARET*J;非应答法信号子程序 MNACKNACKMNACK: SETB SDA;发送非应答信号SETB SCLNOP;产生 4.7US 延时NOPNOPNOPNOPCLR SCLCLR SDARET*J;应答检测子程序 CACKCACK: SETB SDA;应答位检测子程序SETB SCLCLR F0MOV C,SDA;采样 SDAJNC CEND;应答正确时转 CENDSETB F0 ;应答错

28、误时 F0 置一CEND: CLR SCLRET*J;发送一个字节子程序 WRBYT WRBYT: PUSH 06HMOV R6,#08H ; 发送一个字节子程序 WLP: RLC A;(入口参数 A)MOVSDA,CSETBSCLNOP;产生 4.7US 延时NOPNOPNOPNOPCLR SCLDJNZ R6,WLPPOP 06HRET*J;接收一个字节子程序 RDBYTRDBYT:PUSH 06HMOVR6,#08H ; 接收一个字节子程序RLP: SETB SDASETB SCLNOP;产生大于 15 微秒的延时!NOP;注意这是专门为 ZLG7290NOP;添加的 20 微秒延时部分NOPNOPNOPNOPNOPNOPNOPNO

温馨提示

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

评论

0/150

提交评论