




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于PCF8563的时钟系统设计大连理工大学本科设计报告题目:基于PCF8563的时钟系统设计课程名称:学院(系):专业:班级:学号:学生姓名:成绩:2014年7月10日题目:基于PCF8563的时钟系统设计设计要求实验要求:显示两位小时、两位分钟和两位秒参数,相互之间有分隔符号;(2)按住KEY1可显示四位年、两位月、两位日;具备整点报时功能(模拟广播电台的整点报时从59分55秒开始,每一秒驱动蜂鸣器一次,其中前5次为低频,00秒时为高频驱动);具备键盘修改时间功能。可修改小时、分钟和秒参数;修改时间时具备“回显”功能,以方便观察;输入时间参数时应具有“自动纠错”功能,以免错误数据的输入;(7)在修改时间参数时具备“参数闪烁”功能,是操作更人性化;2设计分析及系统方案设计(1)主程序算法描述主程序中定义端口名称、围器件读写地址增强程序的可读性。设置中断服务程序入口地址,将硬件电路连接与之对应。INT_RCTDUI对应INT_0中断服务程序,INT_7290对应INT1的中断服务程序。开始时先对硬件电路进行复位操作。然后设定PCF8563T的时间和命令参数存放在单片机内部的10H~1DH单元,将其写入到8563的00H~0DH单元。使总的中断使能端有效,开INT0和INT1中断,使触发极性为下降沿。等待中断的到来。(2)INT_RCT中断子程序算法描述调读数据子程序,将读出的8563中02H〜08H单元的内容存放于单片机内部20H~26H单元。判断时、分的数值,当时间在**-59-55至**-59-59时调用低频蜂鸣器BUZZL,当时间为**-00-00时调用高频蜂鸣器BUZZH。实现整点报时。调整时间,将20H-26H单元中内容拆分查表后送到28H~2FH(年,月,日)和38H~3FH(时,分,秒)。使P1.2控制显示内容,当P1.2=1时,显示时,分,秒;当P1.2=0时,显示年,月,日。(3)蜂鸣器发声子程序(BUZZL和BUZZH)设置初始值使BUZZL发声频率为500HZ,BUZZH发声频率为1500HZ。(4)键盘修改子程序读入进入中断前的数据,将8563的20H单元内容送入单片机内部12H单元(秒);21H单元内容送入单片机内部13H单元(分);22H单元内容送入单片机内部14H单元(时)便于修改后显示。读入输入的键值为0AH时,为A键修改小时参数。设置小时的十位闪烁命令等待按键操作,读入键值判断是否超过三,超过则报警且要求重新输入。输入正确时回显,设置小时的个位闪烁命令等待按键操作,读入键值判断个位不超过9,然后判断小时整个数是否小于24。分和秒的设置与小时类似,不同的是十位不能超过5个位不能超过9。(5)闪烁子程序设置入口闪烁参数单元值3系统电路图-1-VCC上拉电阻5KX22AT89C51ZLG7290BIC总线8位数码管P1.0SDAP1.1SCLP1.7/RST/INT0(P3.2)/INT32.768KPCF8563TSDAOSCISCLOSCO/INT1(P3.3)CLKOUTP3.4P1.2VCCB5区+5V855010K保护电阻47欧SW1103BUZZ外围接口模块硬件电路功能描述ZLG7290B驱动8个数码管显示时钟时间,管理按键并读取键值,和/INT1相连,引发中断。PCF8563T设置时钟时间,控制时间的运行,和/INTO相连,每一秒产生一次中断。蜂鸣器整点报时,错误提示KEY1控制显示时间或日期主程序中主要变量定义变量名称RAM单元/寄存器功能WSLA_85630A2HPCF8563T写地址RSLA_85630A3HPCF8563T读地址WSLA_729070HZLG7290B写地址-2-RSLA_729071HZLG7290B读地址SS50H为闪烁程序传递参数10H-1DH无准备向时钟芯片写入的值07H无写入参数个数00H无参数和控制命令缓冲区首地址02H无从器件内部地址03H无从器件写地址30H无写入闪烁控制字使闪烁速度最快系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能描述INT_RCT无无读取时间参数送数码管显示,并在整点时刻报警BUZZL无无蜂鸣器以500Hz频率发声BUZZH无无蜂鸣器以1500HZ频率发声将20H-26H中从PCF8563ADJUST20H-26H单元20H-26H单元中读出的7个参数无关位屏蔽掉CHAIFEN20H-26H单元28H-2FH单元将20H-26H单元的参数38H-3FH单元拆分并在查表后送28H-2FH,38H-3FH累加器AR4(H)R3将A中的数据拆分为两个独CF立的BCD码并查表结果存于R4R3INT_7290无无修改时间、回显、纠错、闪烁FLASHSS无控制闪烁位置RDKEY无累加器A读键值子程序WR856310H-1DH单元无向日历芯片写入时间参数WRNBYT无无多字节写操作RDADD无无多字节读操作3-MOV1BH,#00H;设定日报警MOV1CH,#00H;设定星期报警8程序清单SDABITP1.0MOV1DH,#83H;设定CLKOUT的频率,SCLBITP1.11秒周期方波WSLA_8563EQU0A2H;PCF8563T口地址MOVR7,#0EH;写入参数个数RSLA_8563EQU0A3HMOVR0,#10H;参数与控制命令缓冲区WSLA_7290EQU70H;ZLG7290B口地址首地址RSLA_7290EQU71HMOVR2,#00H;从器件内部子地址MOVR3,#WSLA_8563;准备向PCF8563TORG8000H写入数据串LJMP8040HLCALLWRNBYT;写入时间,控制命令到ORG8003HPCF8563TLJMPINT_RCTSETBEA;启动总中断ORG8013HSETBEX0;启动INT_RCT(INT_0)LJMPINT_7290SETBIT0;定时器0下降沿有效SETBEX1;启动INT_7290(INT_7290)ORG8040HSETBIT1;定时器1下降沿有效START:MOVSP,#60HSJMP$;等待中断;****************************************clrpi.7;ZLG7290复位LCALLDELAY;中断服务子程序INT_RCTSETBP1.7;****************************************;****************************************INT_RCT:MOVR7,#07H;数据块字节数;设定pdf8563tde时间和命令参数(参数和控制MOVR0,#20H;内部数据块首地址命令缓冲区10H-1DH)MOVR2,#02H;内部寄存器首地址产***************************************movR3,#WSLA_8563;向8563写地址MOV10H,#00H;启动控制字MOVR4,#RSLA_8563;从8563读地址MOV11H,#1FH;设置报警及定时器中断LCALLRDADD;调读数据子程序,MOV12H,#50H;秒单元将读出的数据存放于单片机20H-26H中MOV13H,#59H;分单元MOVA,21H;判断是否为59分CJNEA,#59H,NEXT1MOV14H,#08H;小时单元MOV15H,#01H;日期单元MOVA,20H;判断是否为55秒CJNEA,#55H,NEXT2MOV16H,#01H;星期单元LCALLBUZZLMOV17H,#01H;月单元SJMPNEXTMOV18H,#10H;年单元NEXT2:CJNEA,#56H,NEXT3MOV19H,#00H;设定分报警LCALLBUZZLMOV1AH,#00H;设定小时报警SJMPNEXTSETBTR0NEXT3:CJNEA,#57H,NEXT4LOOPL:JNBTF0,$LCALLBUZZLCLRTF0MOVTL0,#66HSJMPNEXTNEXT4:CJNEA,#58H,NEXT5MOVTH0,#0FCHLCALLBUZZLCPLP3.4;驱动蜂鸣器SJMPNEXTDJNZR7,LOOPLSETBP3.4NEXT5:CJNEA,#59H,NEXTLCALLBUZZLPOP07HSJMPNEXTRETNEXT1:CJNEA,#00H,NEXTBUZZH:PUSH07HMOVA,20HMOVTMOD,#01HCJNEA,#00H,NEXTMOVTL0,#0CDH;高频1500HzLCALLBUZZHMOVTH0,#0FEHMOVR7,#100NEXT:LCALLADJUST;调时间调整子程序SETBTR0LCALLCHAIFEN;调拆分子程序,将LOOPH:JNBTF0,$20H-26H中的参数分别存28H-2FH,38H-3FH中MOVR7,#08HCLRTF0MOVR2,#10HMOVTL0,#0CDHMOVR3,#WSLA_7290MOVTH0,#0FEHCPLP3.4;驱动蜂鸣器JNBP1.2,YEARS;使用P1.2控制显示DJNzR7,LOOPH内容SETBP3.4MOVR0,#38H;显示时分秒SJMPDISPPOP07HRETYEARS:MOVR0,#28H;显示年月日;****************************************DISP:LCALLWRNBYT;调7290显示子程序JNBP3.2,$;键盘修改中断服务程序INT_7290RETI;****************************************;****************************************INT_7290:PUSH00H;BUZZPUSH02H;****************************************PUSH03HBUZZL:PUSH07HPUSH04HPUSH07HMOVTMOD,#01H;方式1PUSHACCMOVTL0,#66H;低频500HzMOVTH0,#0FCHPUSHPSWMOVR7,#50MOVR7,#07H;写入参数个数1-LCALLFLASHMOVR0,#20H;参数和控制命令缓冲区JBP3.3,$首地址LCALLRDKEYMOVR2,#02H;从器件内部从地址MOVR3,#WSLA_8563;准备向8563写入数CJNEA,#0AH,STEP1;判断键值是否满足小据串时个位的要求(小于10)STEP1:JNCERROR2MOVR4,#RSLA_8563;准备从8563读取数ANL14H,#0F0H据串ORL14H,ALCALLRDADDMOVA,14H入秒单元MOV12H,20H;写MOV13H,21H;写入分单元CJNEA,#24H,JJJ;判断小时的值是否满足要MOV14H,22H;写入时单元求(小于24)JJJ:JNCERROR2RE:JBP3.3,$;以查询方式等待下一次按键LCALLWR8563LCALLRDKEY;读取键值CJNEA,#0AH,BKEY;判断是否为A键LCALLCF;拆分,查表,R4(H),R3(L)AKEY:MOV51H,#80HMOV3EH,R3;回显LCALLFLASHMOVR7,#01HJBP3.3,$MOVR0,#3EHLCALLRDKEYMOVR2,#16HMOVR3,#WSLA_7290CJNEA,#03H,HOUR1;判断键入的数是否LCALLWRNBYT满足小时十位的要求HOUR1:JNCERROR1;若键值大于2,则报错MOV51H,#00H;停止闪烁LCALLFLASHSWAPA;将键值处理成小时数据的十位ANL14H,#0FHLJMPDOWNERROR2:LCALLBUZZHORL14H,A;小时数据的十位生成LJMPHOUR2LCALLWR8563;写入8563BKEY:CJNEA,#0BH,CKEYLCALLCF;拆分,查表,R4(H),R3(L)MOV51H,#10HMOV3FH,R4;回显MOVR7,#01HLCALLFLASHMOVR0,#3FHJBP3.3,$MOVR2,#17HLCALLRDKEYMOVR3,#WSLA_7290CJNEA,#06H,MIN1LCALLWRNBYTMIN1:JNCERROR3LJMPHOUR2SWAPAANL13H,#0FHERROR1:LCALLBUZZH;报错,返回重新键入LJMPAKEYORL13H,AHOUR2:MOV51H,#40HLCALLWR85632-CJNEA,#06H,SEC1LCALLCF;拆分,查表,R4(H),R3(L)SEC1:JNCERROR5MOV3CH,R4;回显MOVR7,#01HSWAPAMOVR0,#3CHANL12H,#0FHMOVR2,#14HORL12H,AMOVR3,#WSLA_7290LCALLWR8563LCALLWRNBYTLCALLCF;拆分,查表,R4(H),R3(L)LJMPMIN2MOV39H,R4;回显ERROR3:LCALLBUZZHMOVR7,#01HLJMPBKEYMOVR0,#39HMIN2:MOV51H,#08HMOVR2,#11HLCALLFLASHMOVR3,#WSLA_7290JBP3.3,$LCALLWRNBYTLCALLRDKEYLJMPSEC2CJNEA,#0AH,STEP2ERROR5:LCALLBUZZHLJMPCKEYSTEP2:JNCERROR4ANL13H,#0F0HSEC2:MOV51H,#01HORL13H,ALCALLFLASHLCALLWR8563JBP3.3,$LCALLRDKEYLCALLCF;拆分,查表,R4(H),R3(L)CJNEA,#0AH,STEP3MOV3BH,R3;回显MOVR7,#01HSTEP3:JNCERROR6ANL12H,#0F0HMOVR0,#3BHMOVR2,#13HORL12H,AMOVR3,#WSLA_7290LCALLWR8563LCALLWRNBYTLCALLCF;拆分,查表,R4(H),R3(L)MOV51H,#00HMOV38H,R3;回显LCALLFLASHMOVR7,#01HLJMPDOWNMOVR0,#38HERROR4:LCALLBUZZHMOVR2,#10HLJMPMIN2MOVR3,#WSLA_7290CKEY:CJNEA,#0CH,ERRORLCALLWRNBYTMOV51H,#02HMOV51H,#00HLCALLFLASHLCALLFLASHJBP3.3,$LJMPDOWNLCALLRDKEYERROR6:LCALLBUZZH-3-LJMPSEC2MOVR3,#WSLA_8563LCALLWRNBYTERROR:LCALLBUZZH;若键入数不为A、RETB、C中的一个,则报错;****************************************LCALLDELAYLCALLBUZZL;闪烁子程序DOWN:CLRIE1;****************************************CLRIE0FLASH:PUSH00HPUSH02HPOPPSWPOPACCPUSH03HPOP07HPUSH07HPOP04HMOV50H,#70HPOP03HMOVR7,#02HPOP02HMOVR0,#50HPOP00HMOVR2,#07HRETIMOVR3,#WSLA_7290LCALLWRNBYT;****************************************POP07H;读键值子程序(出口参数累加器A——获取到POP03H的键值)POP04HMOV21H,APOP04HMOV21H,AMOV3FH,R4MOVR3,AMOV3FH,R4MOVR3,A;****************************************POP02HRDKEY:MOVR0,#1FHPOP00HMOVR7,#01HRETMOVR2,#01H;****************************************MOVR3,#WSLA_7290;各子程序MOVR4,#RSLA_7290;****************************************LCALLRDADDCHAIFEN:PUSHPSWMOVA,1FHPUSHACCDECAPUSH03HRETPUSH04H;****************************************MOVA,20HLCALLCF;向日历芯片写入时间参数子程序MOV38H,R3;将RAM的10H-1DH中的时间参数(含控制字)MOV39H,R4写入芯片的00H-0DH单元;****************************************MOV3AH,#02HWR8563:MOVR7,#0EHMOVA,21HMOVR0,#10HLCALLCFMOVR2,#00HMOV3BH,R3-4-MOV3CH,R4PUSHDPLMOV3DH,#02HMOVDPTR,#LEDSEGMOVA,22HMOVR2,ALCALLCFANLA,#0FHMOV3EH,R3MOVCA,@A+DPTRMOVA,23HMOVA,R2LCALLCFSWAPAMOVA,R3ANLA,#0FHORLA,#01HMOVCA,@A+DPTRMOVR3,AMOVR4,AMOV28H,R3POPDPLMOV29H,R4POPDPHMOVA,25HPOP02HLCALLCFRETMOVA,R3LEDSEG:DBORLA,#01H0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4HMOVR3,ADBMOV2AH,R30FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHMOV2BH,R4;****************************************MOVA,26H;将20H-26H中从PCF8563T中读出的7个字节LCALLCF参数的无关位屏蔽掉MOVA,R3;****************************************ORLA,#01HADJUST:PUSHACCMOVR3,AMOVA,20HMOV2CH,R3ANLA,#7FHMOV2DH,R4MOV20H,AMOV2EH,#0FCHMOVA,21HMOV2FH,#0DAHANLA,#7FHPOP01HPOP01HPOP03HMOVA,22HPOPACCANLA,#3FHPOPPSWMOV22H,ARETMOVA,23HCF:PUSH02HANLA,#3FHPUSHDPHMOV23H,A-5-MOVA,24HANLA,#07HMOV24H,AMOVA,25HANLA,#1FHMOV25H,APOPACCRET;****************************************;;延时子程序;****************************************;DELAY:PUSH00HPUSH01HMOVR0,#00HDELAY1:MOVR1,#01HDJNZR1,$DJNZR0,DELAY1POP00HRET;****************************************;;12c子程序;****************************************;END-6-9系统调试运行结果说明、分析所出现得问题,设计体会与建议硬件环境:DP-51PROC单片机综合仿真实验台,TKSMonitor51仿真器。软件环境:PC及Keil软件。结果说明:可通过8563日历显示芯片将时间显示在数码管上,按KEY1键可显示日期,按人、B、C键可分别改变时、分、秒,按错键时会有警告音提醒并要求重新输入。可进行整点报时。调试中出现的问题及解决方法:(1)显示两位小时、两位分钟和两位秒参数,相互之间有分隔符号功能:在该环节中,利用书上的参考程序,实现每1s进入一次中断实现读取时间参数,并进行拆分显示等操作。最后能够在数码管上显示出初始设置的时间,当按下key1键时可以显示初始设置的日期。(2)整点报时功能:设置两个驱动蜂鸣器发声的子程序,一个发声频率为500HZ,另外一个为1500HZ。成功实现了当时间为59分55秒~59分59秒时以500Hz的频率发声,时间为整点时以1500HZ的频率发声(3)键盘修改时间功能:这部分程序是整个程序的难点,修改的过程为从8563读取数据存入单片机,在单片机内修改后存回8563,并写入729
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DeepSeek大模型赋能数字医疗规划方案
- 人的能力与个性分析
- 宪法考研试题及答案
- 物理振动试题及答案
- 湖北省云学联盟2024-2025学年高一下学期5月月考英语试题(含答案)
- 密封胶施工饱满度与连续性技术专题
- 2025短期用工劳动合同模板
- 提高工程设计企业的成本控制与预算管理
- 2025标准版担保借款合同样式
- P-gp-inhibitor-28-生命科学试剂-MCE
- 早期预警评分量表(MEWS评分表)
- 2024年上海市七年级语文下学期期末考试复习(基础知识+课内古诗文+课外文言文)
- 交通出行车费报销单模板
- 中国民族钢琴艺术鉴赏智慧树知到期末考试答案章节答案2024年西安交通大学
- 安徽省合肥市包河区2024届八年级数学第二学期期末学业质量监测试题含解析
- 健身房安全知识培训
- 《诫子书》同步训练 课堂达标 考点过关(四套)
- 策划视频大赛策划方案
- 深度学习技术在医学图像识别中的应用
- 《卡诺循环演示》课件
- 《如何阅读文献》课件
评论
0/150
提交评论