




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学本科设计报告题目:基于ZLG7290B PCF8563的时钟系统设计课程名称:单片机原理及应用实验学院(系):电子信息与电气工程学部专 业:班 级:学 号:学生姓名:成 绩:2015 年 5月 4日计算机技术实验室安全操作规范1. 实验前认真阅读安全操作规程,不得擅自触及总电源开关。2. 实验期间学生不准使用与实验无关的电气设备。3. 实验过程中若遇计算机故障时, 交由指导老师负责, 不允许学生私自开箱维修。4. 在实验过程中,连接实验设备的 220v 电源时,要保持手部干燥,并注意操作安全,不允许使用金属物件触碰220v 电源线及电源插座的带点部位。5. 学生实验期间, 在连接导
2、线时不允许实验台带电操作, 连接完成后经检查无误时再将实验台上电。 完成实验时先将实验台断电后再进行导线的拆除。6. 实验期间要关闭手机等通讯工具, 实验室一律禁止携带饮料、 食品、禁止吸烟、喧哗、嬉闹、确保实验室卫生、整洁。7. 学生完成实验后,必须关闭所有实验设备的电源。8. 如果实验过程中发生“突发事件”时,不要慌张、应沉着冷静,采取相关的措施。必要时拨打校内晋级电话(84708110)或拨打110 、120 报警。电工电子实验教学中心计算机技术实验室个人签字:题目:基于ZLG7290B PCF8563的时钟系统 设计1 设计要求(1)由PCF856锹供时间参数并由ZLG7290!行显示
3、;( 2) 能够利用键盘实现时间参数的修改,修改过程可加入 “回显” 、“闪烁” 、 “容错”等功能;( 3)利用蜂鸣器实现时钟系统的“整点报时”功能;( 4)要求程序中有中断环节;2 设计分析及系统方案设计(1)由PCF8563汝时时钟芯片提供时间数据,由ZLG7290BS示电品&控制8 位数码管显示当前时间,二者通过I2C总线结构与AT89C5H1片机相连,SDAffi SC吩另J接 P1.0 和 P1.1。(2)该系统采用双中断结构,时钟输出 CLKOU按INT0,为低优先级,每一 秒触发一次中断;键盘中断输出信号INT接INT1,为高优先级,每当有按键时 触发中断。( 3) 算
4、法说明:10H-1DH向PCF8563T俞入的相关参数的数据块;20H-26H从PCF8563T中读出的时间参数(秒、分、小时、日、星期、月、年) 。通过CHAIFENf程序将20H-26H中获取时间参数拆分查表后送入下列缓冲区:28H-2FH年(4单元)、月(2单元)、日(2单元);38H-3FH小时、分钟、秒(各占单元)。键盘修改时间子程序中先将键值读入 A,经判断转换后送入缓冲区20H-22K 主程序功能:? 将10H-1DH中特定时间和才5制命令送入 PCF8563T寸应寄存器中,等待中断。? 由于PCF8563T勺CLKOUT定输出频率为1H乙将其与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单元或工作寄存器定义、功能等。变量名称RAMI元/寄存器功能PCF8563T寸间和控制命令参数10H-1DH设定PCF8563
7、T寸间和命令参数的缓冲区时间参数20H-26H从PCF8563计读出的时间参数(秒、分、 小时、日、星期、月、年)缓冲区年月日28H-2FH拆分查表所得年月日缓冲区以待显示时分秒38H-3FH拆分查表所得时分秒缓冲区以待显示键值1FH读入的键值存储单元6系统软件中各个子程序的功能描述子程序的名称、功能,以及入口、出口参数。子程序名称入口参数出口参数功能描述INT_RCT无无时钟中断服务子程序PANDUAN20-21H无判断并进行整点报时CHAIFEN20-26H28-2FH、38-3FH将时间参数拆分查表CFAR4 R3将A中数据拆违两独立的十六进 制数并查表得到对应字型码ADJUST20-2
8、5H20-25H屏蔽各时间参数无关位INT_7290无无键盘修改时间中断服务子程序RDKEY无A读键值子程序WR8563R7 RR R2、R3无向日历芯片写时间参数WRNBYTR7 RR R2、R3无带有内部单元地址的多字节写操 作子程序RDADDR7、RO R2、R3R4无带有内部单元地址的多字节读操 作子程序7主程序程序流程图8程序清单.* ;由PCF8563提供时间参数并由ZLG7290进行显示;能够利用键盘实现时间参数的修改,修改过程可加入回显、闪烁、容错等功能;利用蜂鸣器实现时钟系统整点报时功能;要求程序中有中断环节;转换显示:P1.2与KEY1连接,按下KEY1显示年月日,平时显示
9、时分秒;设定时钟芯片 CLKOUT输出秒脉冲且与 P3.2连接;采用中断的方式来显示时间(每秒钟刷新一次显示);ZLG7290B 芯片的 RST_L 复位端与 P1.7 口连接,以便复位操作* ;SDA BIT P1.0;定义I2C 信号引脚SCL BIT P1.1WSLA_8563EQU0A2H;PCF8563T 口地址RSLA_8563EQU0A3HWSLA_7290EQU70H;ZLG7290B 口地址RSLA_7290EQU71HORG 8000HLJMP 8100HORG 8003HLJMP INT_RCTORG 8013HLJMP INT_7290ORG 8100HSTART: M
10、OV SP,#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,#83
11、H;设定CLKOUT 的频率(1S)*MOVR7,#0EH;写入参数个数(时间和控制字)MOVR0,#10H;参数和控制命令缓冲区首地址MOVR2,#00H;从器件内部从地址MOVR3,#WSLA_8563 ;准备向 PCF8563T 写入数据串LCALLWRNBYT; 写入时间、控制命令到 PCF8563TMOVIP,02HSETBEASETBEX0SETBEX1SETBIT0SETBIT1SJMP$;等待中*; 时钟中服务子程序;INT_RCT:MOV R7,#07H;读出数个数MOVR0,#20H;目标数据块首地址MOVR2,#02H;从器件内部首地址MOV R3,#WSLA_8563M
12、OV R4,#RSLA_8563 ;准备读PCF8563T 的时间参数20H26H 中LCALL RDADD;调读数据子程序,将读出的数据存放于单片机LCALL ADJUST;调时间调整子程序LCALL PANDUAN;调判键值子程序中的参数分别存LCALL CHAIFEN;调拆分子程序(包含查表),将 20H26H于 28H2FH 、 38H3FH 单元中MOV R7,#08HMOV R2,#10HMOV R3,#WSLA_7290JNB P1.2,YEARS ;使用P1.2控制显示内容MOV R0,#38H;显示小时、分钟和秒SJMP DISPYEARS: MOV R0,#28H;显示年月
13、日DISP:LCALL WRNBYT;调 ZLG7290B 显示JNB P3.2,$RETI; 整点报时子程序;PANDUAN:MOV A,21HCJNE A,#59H,PDFENMOV A,20HCJNE A,#56H,PD57LCALL BAOSHI1AJMP EXITPD57: CJNE A,#57H,PD58LCALL BAOSHI1AJMP EXITPD58: CJNE A,#58H,PD59LCALL BAOSHI1AJMP EXITPD59: CJNE A,#59H,EXITLCALL BAOSHI1AJMP EXITPDFEN: CJNE A,#00H,EXITMOV A,20
14、HCJNE A,#00H,EXITLCALL BAOSHI2EXIT:RET; 低音 1S 报时BAOSHI1:PUSH PSWPUSH 00HMOV R0,#0FFHMOV TMOD,#10HMOV TL1,#00HMOV TH1,#0FEHSETB TR1WORK1: JNB TF1,$CLR TF1MOV TL1,#00HMOV TH1,#0FEHCPL P1.4DJNZ R0,WORK1POP 00HPOP PSWRET; 高音 1S 报时BAOSHI2:PUSH PSWPUSH 00HPUSH 01HMOV R0,#04HWORK2: MOV R1,#00HMOV TMOD,#10H
15、MOV TL1,#00HMOV TH1,#0FFHSETB TR1WORK3: JNB TF1,$CLR TF1MOV TL1,#00HMOV TH1,#0FFHCPL P1.4DJNZ R1,WORK3DJNZ R0,WORK2POP 01HPOP 00HPOP PSWRET; 各子程序*ORG8300HCHAIFEN:PUSH PSW; 对 20H26H 单元的参数拆分并在查表后送28H2FH (年月日)和 38H3FH (时分秒)PUSHACCPUSH03HPUSH04HMOVA,20H;取秒参数LCALLCF;拆分、查表在 R4 、 R3 中MOV38H,R3;送秒的个位MOV39H,
16、R4;送秒的十位MOV3AH,#02H;送分隔符MOVA,21H;取分参数LCALLCFMOV3BH,R3;送分的个位MOV3CH,R4;送分的十位MOV3DH,#02H;送分隔符MOVA,22H;取小时参数LCALLCFMOV3EH,R3;送小时的个位MOV3FH,R4;送小时的十位MOVA,23H;取日期参数LCALLCFMOVA,R3MOVR3,AMOV28H,R3MOV29H,R4MOVA,25H;取月参数LCALLCFMOVA,R3ORLA,#01HMOVR3,AMOV 2AH,R3MOV 2BH,R4MOV A,26H;取年参数LCALL CFMOV A,R3ORL A,#01HM
17、OV R3,AMOV 2CH,R3MOV 2DH,R4MOV 2EH,#0FCH ;年的高两位处理MOV 2FH,#0DAHPOP 04HPOP 03HPOP ACCPOP PSWRET; 将 A 中的数据拆分成两个独立的 BCD 码并查表,结果分别存放于 R4 、 R3 中CF: PUSH02HPUSHDPHPUSHDPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,APOP DPLPOP DPHRET*;LEDSEG:DB 0FCH,60H,0DAH,0F2H
18、,66H,0B6H,0BEH,0E4HDB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH; 将 20H26H 中从 PCF8563T 中读出的 7 个字节参数的无关位屏蔽掉;ADJUST: PUSH ACCMOV A,20HANL A,#7FHMOV 20H,AMOV A,21HANL A,#7FHMOV 21H,AMOV A,22HANL A,#3FHMOV 22H,AMOV A,23HANL A,#3FHMOV 23H,AMOV A,24HANL A,#07HMOV 24H,AMOV A,25HANL A,#1FHMOV 25H,APOP ACCRET; 延时子程序
19、;DELAY: PUSH 00HPUSH 01HMOVR0,#15HDELAY1:MOVR1,#00HDJNZ R1,$DJNZ R0,DELAY1POP 01HPOP 00HRET*; 键盘修改时间中断服务子程序;INT_7290:PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWLCALL RDKEY;读取第一个按键值(功能键); 修改小时;AKEY: CJNE A,#0AH,BKEY;判断是A 键吗?不是跳转判断是JB P3.3,$;以查询的方式等待下一次按键操作LCALLRDKEY;读取第二个按键值(小时的十位数?)SWAP
20、AANL14H,#0FHORL14H,A;14H 单元中的“十位数”生成JB P3.3,$;以查询的方式等待下一次按键操作LCALLRDKEY;读取第三个按键值(小时的个位数)ANL14H,#0F0H;将键值数据处理成小时的个位ORL14H,AMOVR7,#01HMOVR0,#14HMOVR3,#04HMOV R3,#WSLA_8563PCF8563TLCALL WRNBYT;将修改后的时间参数送LJMP DOWN; 修改分BKEY: CJNE A,#0BH,CKEYJB P3.3,$LCALL RDKEYSWAP AANL13H,#0FHORL13H,AJB P3.3,$LCALL RDKE
21、YANL13H,#0F0HORL13H,AMOV R7,#01HMOV R0,#13HMOV R2,#03HMOV R3,#WSLA_8563LCALL WRNBYTLJMP DOWN; 修改秒CKEY: CJNE A,#0CH,DOWNJB P3.3,$LCALL RDKEYSWAP AANL12H,#0FHORL12H,AJB P3.3,$LCALL RDKEYANL12H,#0F0HORL12H,AMOV R7,#01HMOV R0,#12HMOV R2,#02HMOV R3,#WSLA_8563LCALL WRNBYTLJMP DOWN; 中断返回退出DOWN: CLR IE0POP
22、PSWPOP ACCPOP 07HPOP 04HPOP 03HPOP 02HPOP 00HRETI; 读键值子程序(出口参数累加器A ,获取到的键值)RDKEY: MOV R0,#1FH;键值缓冲单元MOVR7,#01H;取键值数据MOVR2,#01H;指向内部数据键值寄存器地址MOVR3,#WSLA_7290 ;取器件写地址MOVR4,#RSLA_7290 ;取器件读地址LCALLRDADD;读出 7290 的 01H 单元中的键值MOVA,1FH;取键值送缓冲单元DECARET; 向日历芯片中写入时间参数子程序WR8536: MOV R7,#07H;写入参数个数(时间和控制字)MOVR0,
23、#12H;参数和控制命令缓冲区首地址MOVR2,#02H;从器件内部从地址MOV R3,#WSLA_8563 ;准备向PCF8563T 写入数据串LCALL WRNBYT;写入时间、控制命令到PCF8563TRET*;相关I2C子程序* ;;带有内部单元地址的多字节写操作子程序WRNBYT;通用的I2C通讯子程序(多字节写操作);入口参数R7字节数,R0:源数据块首地址;R0原数据块首地址;R2从器件内部子地址;R3:外围器件地址(写);相关子程序WRBYT、STOP、CACK、STAWRNBYT:PUSHPSWPUSHACCWRADD:MOVA,R3;取外围器件地地址(包含 r/w=0)LC
24、ALL STA ;发送起始信号SLCALLWRBYT;发送外围地址LCALL CACK;检测外围器件的应答信号JB F0,WRADD;如果应MOV A,R2LCALL WRBYT ;发送内部寄存器首地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD;如果应答不正确返回重来WRDA: MOV A,R0LCALL WRBYT ;发送外围地址LCALL CACK ;检测外围器件的应答信号JB F0,WRADD;如果应答不正确返回重来INC R0DJNZ R7,WRDALCALL STOPPOP ACCPOP PSWRET.* ;带有内部单元地址的多字节读操作子程序RDADD;入
25、口参数R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址(写);R4器件地址(读);相关子程序WRBYT、STOP、CACK、STA、MACK、MNACKRDADD: PUSH PSW;从PCF8563的02H单元读入 7个参数PUSHACC;存放于20H-26H 单元RDADD1:LCALLSTAMOVA,R3;取器件地址(写)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JB F0,RDADD1;如果应答不正确返回重来MOVA,R2;取内部地址LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JB F0,RDAD
26、D1;LCALL STA如果应答不正确返回重来MOVA,R4;取器件地址(读)LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号JB F0,RDADD1;如果应答不正确返回重来RDN:LCALL RDBYTMOV R0,ADJNZ R7,ACKLCALL MNACKLCALL STOPPOP ACCPOP PSWRETACK:LCALL MACKINC R0SJMP RDN; 启动信号子程序SSTA:SETB SDA ;启动信号SSETB SCLNOP;产生 4.7US 延时NOPNOPNOPCLR SDANOP;产生 4.7US 延时NOPNOPNOPNOPCLR
27、SCLRET; 停止信号子程序 PSTOP: CLR SDA ;停止信号 PSETB SCLNOP;产生 4.7US 延时NOPNOPNOPNOPSETB SDANOP;产生 4.7US 延时NOPNOPNOPNOPCLR SCLCLR SDARET*; 应答信号子程序 MACKACKMACK: CLR SDA ;发送应答信号SETB SCLNOP;产生 4.7US 延时NOPNOPNOPCLR SCLSETB SDARET; 非应答法信号子程序MNACKNACKMNACK:SETB SDA ;发送非应答信号SETB SCLNOP;产生 4.7US 延时NOPNOPNOPNOPCLR SCLC
28、LR SDARET; 应答检测子程序CACKCACK: SETB SDA ;应答位检测子程序SETB SCLCLR F0MOVC,SDA ;采样 SDAJNC CEND;应答正确时转CENDSETBF0 ;应答错误时F0 置一CEND: CLR SCLRET; 发送一个字节子程序WRBYTWRBYT: PUSH 06HMOV R6,#08H ; 发送一个字节子程序WLP:RLC A ;(入口参数A)MOV SDA,CSETB SCLNOP;产生 4.7US 延时NOPNOPNOPNOPCLR SCLDJNZ R6,WLPPOP 06HRET; 接收一个字节子程序 RDBYTRDBYT:PUSH 06HMOVR6,#08H ; 接收一个字节子程序RLP:SETB SDASETB SCLNOP;产生大于15微秒的延时!NOP;注意这是专门为ZLG7290NOP;添加的20 微秒延时部分NOPNOPNOPN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车间安全知识培训课件收获
- 有害生物防制员高级操作技能考核测试题(附答案)
- 车间安全知识培训课件意义和目的
- 2025年美容整形师微整形知识考核试题及答案解析
- 参加焦裕禄干部学院党性教育培训班学习体会
- Unit 3 Same or Different?完形填空专题复习练习题(含答案解析)人教版八年级英语上册
- 名著《朝花夕拾》高频考点 专题练 2026年中考语文复习备考(含答案)
- 车辆运用基础知识培训课件
- 教学课件怎么制作围栏
- 1.6 有理数的加法-数学华师大版(2024)七年级上册随堂小练(含答案)
- 微生物发酵中药研究进展
- 《矿业权评估指南》
- 广东省地质灾害危险性评估报告
- 锚杆工程隐蔽验收记录
- 整套教学课件《现代心理与教育统计学》研究生
- 手机拍照技巧大全课件
- RBA(原EICC)ERT应急准备与响应培训课件
- 工业建筑钢筋工程监理实施细则
- 河西走廊课件
- 2023版北京协和医院重症医学科诊疗常规
- 人工膝关节置换术护理查房
评论
0/150
提交评论