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

下载本文档

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

文档简介

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提供时间参数并由ZLG7290进行显示;(2)能够利用键盘实

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

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

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

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

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

8、7290无无键盘修改时间中断服务子程序RDKEY无A读键值子程序WR8563R7、R0、R2、R3无向日历芯片写时间参数WRNBYTR7、R0、R2、R3无带有内部单元地址的多字节写操作子程序RDADDR7、R0、R2、R3、R4无带有内部单元地址的多字节读操作子程序时钟中断服务子程序利用RDADD从PCF8563T中读出时间参数送20H-27H利用ADJUST屏蔽掉参数中无用的位调用PANDUAN子程序判断并进行整点报时调CHAIFEN子程序将时间分别送28H-2FH、38H-3FH缓冲区P1.2=1?显示时分秒显示年月日RETI主程序入口开辟一数据区10H-1DH存储时间、命令参数将10H

9、=1D H存储时间命令参数送PCF8563T中等待中断7主程序程序流程图 N Y 键盘修改时间中断服务子程序读取键值A键? NB键? Y N查询按键? N WAIT1C键? N Y分钟处理(同小时处理)读取键值,将此值送小时的十位 Y秒处理(同小时处理)查询按键? WAIT2 N Y读取键值,将此值送小时的个位向日历芯片写入10H-1DH中的时间参数RETI8程序清单;*;由PCF8563提供时间参数并由ZLG7290进行显示;能够利用键盘实现时间参数的修改,修改过程可加入回显、闪烁、容错等功能;利用蜂鸣器实现时钟系统整点报时功能;要求程序中有中断环节;转换显示:P1.2与KEY1连接,按下K

10、EY1显示年月日,平时显示时分秒;设定时钟芯片CLKOUT输出秒脉冲且与P3.2连接;采用中断的方式来显示时间(每秒钟刷新一次显示);ZLG7290B芯片的RST_L复位端与P1.7口连接,以便复位操作;*SDABIT P1.0;定义I2C信号引脚SCLBIT P1.1WSLA_8563EQU0A2H;PCF8563T口地址RSLA_8563EQU0A3HWSLA_7290EQU70H;ZLG7290B口地址RSLA_7290EQU71HORG8000HLJMP8100HORG8003HLJMPINT_RCTORG8013HLJMPINT_7290ORG8100HSTART:MOVSP,#60

11、HCLRP1.7;ZLG7290B复位LCALLDELAYSETBP1.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;设定星期报警MOV1DH,#83H;设定CLKOUT的频率(

12、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,#RSLA_8563;准备

13、读PCF8563T的时间参数LCALLRDADD;调读数据子程序,将读出的数据存放于单片机20H26H中LCALLADJUST;调时间调整子程序LCALLPANDUAN;调判断键值子程序LCALLCHAIFEN;调拆分子程序(包含查表),将20H26H中的参数分别存于28H2FH、38H3FH单元中MOVR7,#08HMOVR2,#10HMOVR3,#WSLA_7290JNBP1.2,YEARS;使用P1.2控制显示内容MOVR0,#38H;显示小时、分钟和秒SJMPDISPYEARS:MOVR0,#28H;显示年月日DISP:LCALLWRNBYT;调ZLG7290B显示JNBP3.2,$R

14、ETI;*;整点报时子程序;*PANDUAN:MOVA,21HCJNEA,#59H,PDFENMOVA,20HCJNEA,#56H,PD57LCALLBAOSHI1AJMPEXITPD57:CJNEA,#57H,PD58LCALLBAOSHI1AJMPEXITPD58:CJNEA,#58H,PD59LCALLBAOSHI1AJMPEXITPD59:CJNEA,#59H,EXITLCALLBAOSHI1AJMPEXITPDFEN:CJNEA,#00H,EXITMOVA,20HCJNEA,#00H,EXITLCALLBAOSHI2EXIT:RET;*;低音1S报时BAOSHI1:PUSHPSWPU

15、SH00HMOVR0,#0FFHMOVTMOD,#10HMOVTL1,#00HMOVTH1,#0FEHSETBTR1WORK1:JNBTF1,$CLRTF1MOVTL1,#00HMOVTH1,#0FEHCPLP1.4DJNZR0,WORK1POP00HPOPPSWRET;*;高音1S报时BAOSHI2:PUSHPSWPUSH00HPUSH01HMOVR0,#04HWORK2:MOVR1,#00HMOVTMOD,#10HMOVTL1,#00HMOVTH1,#0FFHSETBTR1WORK3:JNBTF1,$CLRTF1MOVTL1,#00HMOVTH1,#0FFHCPLP1.4DJNZR1,WO

16、RK3DJNZR0,WORK2POP01HPOP00HPOPPSWRET;*;各子程序;*ORG8300HCHAIFEN:PUSHPSW;对20H26H单元的参数拆分并在查表后送28H2FH(年月日)和38H3FH(时分秒)PUSHACCPUSH03HPUSH04HMOVA,20H;取秒参数LCALLCF;拆分、查表在R4、R3中MOV38H,R3;送秒的个位MOV39H,R4;送秒的十位MOV3AH,#02H;送分隔符MOVA,21H;取分参数LCALLCFMOV3BH,R3;送分的个位MOV3CH,R4;送分的十位MOV3DH,#02H;送分隔符MOVA,22H;取小时参数LCALLCFM

17、OV3EH,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,#0DAHPOP04HPOP03HPOPACCPOPPSWRET;*;将A中的数据拆分成两个独立的BCD码并查表,结果分别存放于R4、

18、R3中CF:PUSH02HPUSHDPHPUSHDPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,APOPDPLPOPDPHPOP02HRET;*LEDSEG:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HDB0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH;*;将20H26H中从PCF8563T中读出的7个字节参数的无关位屏蔽掉;*ADJUST:PUSHACCMOVA,20HANLA,#7FHMOV20H,A

19、MOVA,21HANLA,#7FHMOV21H,AMOVA,22HANLA,#3FHMOV22H,AMOVA,23HANLA,#3FHMOV23H,AMOVA,24HANLA,#07HMOV24H,AMOVA,25HANLA,#1FHMOV25H,APOPACCRET;*;延时子程序;*DELAY:PUSH00HPUSH01HMOVR0,#00HDELAY1:MOVR1,#00HDJNZR1,$DJNZR0,DELAY1POP01HPOP00HRET;*;键盘修改时间中断服务子程序;*INT_7290:PUSH00HPUSH02HPUSH03HPUSH04HPUSH07HPUSHACCPUSH

20、PSWLCALLRDKEY;读取第一个按键值(功能键);*;修改小时;*AKEY:CJNEA,#0AH,BKEY;判断是A键吗?不是跳转判断是BJBP3.3,$;以查询的方式等待下一次按键操作LCALLRDKEY;读取第二个按键值(小时的十位数?)SWAPAANL14H,#0FHORL14H,A;14H单元中的“十位数”生成JBP3.3,$;以查询的方式等待下一次按键操作LCALLRDKEY;读取第三个按键值(小时的个位数)ANL14H,#0F0H;将键值数据处理成小时的个位ORL14H,AMOVR7,#01HMOVR0,#14HMOVR2,#04HMOVR3,#WSLA_8563LCALLW

21、RNBYT;将修改后的时间参数送PCF8563TLJMPDOWN;*;修改分BKEY:CJNEA,#0BH,CKEYJBP3.3,$LCALLRDKEYSWAPAANL13H,#0FHORL13H,AJBP3.3,$LCALLRDKEYANL13H,#0F0HORL13H,AMOVR7,#01HMOVR0,#13HMOVR2,#03HMOVR3,#WSLA_8563LCALLWRNBYTLJMPDOWN;*;修改秒CKEY:CJNEA,#0CH,DOWNJBP3.3,$LCALLRDKEYSWAPAANL12H,#0FHORL12H,AJBP3.3,$LCALLRDKEYANL12H,#0F0

22、HORL12H,AMOVR7,#01HMOVR0,#12HMOVR2,#02HMOVR3,#WSLA_8563LCALLWRNBYTLJMPDOWN;*;中断返回退出DOWN:CLRIE0POPPSWPOPACCPOP07HPOP04HPOP03HPOP02HPOP00HRETI;*;读键值子程序(出口参数累加器A,获取到的键值)RDKEY:MOVR0,#1FH;键值缓冲单元MOVR7,#01H;取键值数据MOVR2,#01H;指向内部数据键值寄存器地址MOVR3,#WSLA_7290;取器件写地址MOVR4,#RSLA_7290;取器件读地址LCALLRDADD;读出7290的01H单元中的

23、键值MOVA,1FH;取键值送缓冲单元DECARET;*;向日历芯片中写入时间参数子程序WR8536:MOVR7,#07H;写入参数个数(时间和控制字)MOVR0,#12H;参数和控制命令缓冲区首地址MOVR2,#02H;从器件内部从地址MOVR3,#WSLA_8563;准备向PCF8563T写入数据串LCALLWRNBYT;写入时间、控制命令到PCF8563TRET;*;相关I2C子程序;*;带有内部单元地址的多字节写操作子程序 WRNBYT;通用的I2C通讯子程序(多字节写操作);入口参数R7字节数,R0:源数据块首地址;R0原数据块首地址;R2从器件内部子地址;R3:外围器件地址(写);

24、相关子程序WRBYT、STOP、CACK、STAWRNBYT:PUSHPSWPUSHACCWRADD:MOVA,R3;取外围器件地地址(包含r/w=0)LCALLSTA;发送起始信号S LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应MOVA,R2LCALLWRBYT;发送内部寄存器首地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应答不正确返回重来 WRDA:MOVA,R0LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,WRADD;如果应答不正确返回重来INCR0DJNZ R

25、7,WRDALCALLSTOP POPACCPOPPSWRET ;*;带有内部单元地址的多字节读操作子程序 RDADD ;入口参数R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址(写);R4器件地址(读);相关子程序WRBYT、STOP、CACK、STA、MACK、MNACK RDADD: PUSHPSW;从PCF8563的02H单元读入7个参数PUSHACC;存放于20H-26H单元RDADD1:LCALLSTA MOVA,R3;取器件地址(写)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来M

26、OVA,R2;取内部地址LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来LCALLSTAMOVA,R4;取器件地址(读)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JBF0,RDADD1;如果应答不正确返回重来RDN:LCALLRDBYT MOVR0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOPACCPOPPSWRETACK:LCALLMACKINCR0SJMPRDN;*;启动信号子程序S STA:SETBSDA;启动信号SSETBSCLNOP;产生4.7US延时NO

27、PNOPNOPNOPCLRSDANOP;产生4.7US延时NOPNOPNOPNOP CLRSCLRET ;*;停止信号子程序P STOP:CLRSDA ;停止信号PSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPSETBSDANOP;产生4.7US延时NOPNOPNOPNOPCLRSCLCLRSDARET ;*;应答信号子程序 MACKMACK:CLRSDA;发送应答信号ACKSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLSETBSDARET;*;非应答法信号子程序MNACKMNACK:SETBSDA;发送非应答信号NACKSETBSCLNOP;产

28、生4.7US延时NOPNOPNOPNOPCLRSCLCLRSDARET;*;应答检测子程序CACKCACK:SETBSDA;应答位检测子程序SETBSCL CLRF0MOVC,SDA;采样SDAJNCCEND;应答正确时转CENDSETBF0;应答错误时F0置一CEND:CLRSCLRET;*;发送一个字节子程序WRBYTWRBYT:PUSH06HMOVR6,#08H;发送一个字节子程序 WLP:RLCA ;(入口参数A)MOVSDA,CSETBSCLNOP;产生4.7US延时NOPNOPNOPNOPCLRSCLDJNZR6,WLPPOP06HRET;*;接收一个字节子程序RDBYT RDBYT: PUSH06HMOVR6,#08H;接收一个字节子程序RLP:SETBSDASETBSCLNOP;产生大于15微秒的延时!NOP ;注意这是专门为ZLG7290NO

温馨提示

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

评论

0/150

提交评论