单片机综合设计实验_第1页
单片机综合设计实验_第2页
单片机综合设计实验_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、大连理工大学本科设计报告题目:基于PCF8563的时钟系统设计课程名称:学院(系):专业:班级:学号:学生姓名:成绩:2014 年 7 月 10日题目: 基于PCF8563的时钟系统设计1设计要求实验要求:(1)显示两位小时、两位分钟和两位秒参数,相互之间有分隔符号:(2)按住KEY1可显示四位年、两位月、两位日:(3)具备整点报时功能(模拟广播电台的整点报时从59分55秒开始,每一秒驱动蜂鸣器 一次,其中前5次为低频,00秒时为髙频驱动):(4)具备键盘修改时间功能。可修改小时、分钟和秒参数:(5)修改时间时具备“回显”功能,以方便观察:(6)输入时间参数时应具有“自动纠错”功能,以免错误数

2、据的输入:(7)在修改时间参数时具备“参数闪烁”功能,是操作更人性化:2设计分析及系统方案设计(1)主程序算法描述主程序中定义端口名称、弗I器件读写地址增强程序的可读性。设置中断服务程序入口地址,将 硬件电路连接与之对应。INT_RCTDUI对应INT_0中断服务程序,INT_7290对应INTI的中断服务 程序。开始时先对硬件电路进行复位操作。然后设定PCF8563T的时间和命令参数存放在单片机内 部的1OH-1DH单元,将其写入到8563的OOH-ODH单元。使总的中断使能端有效,开INTO和INT1 中断,使触发极性为下降沿。等待中断的到来。(2)INT_RCT中断子程序算法描述调读数据

3、子程序,将读出的8563中O2H-O8H单元的内容存放于单片机内部2OH26H单元。判 断时、分的数值,当时间在*-59-55至*-59-59时调用低频蜂鸣器BUZZL.当时间为*-00-00时调用 高频蜂鸣器BUZZH.实现整点报时。调整时间,将20H-26H单元中内容拆分查表后送到28H-2FH(年,月,日)和38H3FH (时,分,秒)。使P1.2控制显示内容,当P1.2=l时,显示时,分,秒; 当P 1.2=0时,显示年,月,日。(3)蜂鸣器发声子程序(BUZZL和BUZZH)设宜初始值使BUZZL发声频率为500H乙BUZZH发声频率为1500HZ。(4)键盘修改子程序读入进入中断前

4、的数据,将8563的20H单元内容送入单片机内部12H单元(秒):21H单元内 容送入单片机内部13H单元(分):22H单元内容送入单片机内部14H单元(时)便于修改后显示。 读入输入的键值为0AH时,为A键修改小时参数。设置小时的十位闪烁命令等待按键操作,读入键 值判断是否超过三,超过则报警且要求重新输入。输入正确时回显,设垃小时的个位闪烁命令等待 按键操作,读入键值判断个位不超过9,然后判断小时整个数是否小于24。分和秒的设垃与小时类 似,不同的是十位不能超过5个位不能超过9。(5)闪烁子程序设置入口闪烁参数单元值3系统电路图4外围接口模块硬件电路功能描述ZLG7290B驱动8个数码管显示

5、时钟时间,管理按键 并读取键值,和/INT1相连,引发中断。PCF8563T设置时钟时间,控制时间的运行,和/INTO 相连,每一秒产生一次中断。蜂鸣器整点报时,错误提示KEY1控制显示时间或日期5主程序中主要变量定义变量名称RAM单元/寄存器功能WSLA_85630A2HPCF8563T写地址RSLA.85630A3HPCF8563T读地址WSLA.729070HZLG729OB写地址RSLA.729071HZLG7290B读地址SS50H为闪烁程序传递参数无10H-1DH准备向时钟芯片写入的值无07H写入参数个数无00H参数和控制命令缓冲区首地址无02H从器件内部地址无03H从器件写地址无

6、30H写入闪烁控制字使闪烁速度最快6系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能描述INT.RCT无丿二读取时间参数送数码管显示,并在整点时刻报警BUZZL无无蜂鸣器以500HZ频率发声BUZZH无无蜂鸣器以1500HZ频率发声ADJUST20H-26H 单元20H-26H 单元将 20H-26H 中从 PCF8563 中读出的7个参数无关 位屏蔽掉CHAIFEN20H-26H 单元28H-2FH 单元38H-3FH 单元将20H-26H单元的参数 拆分并在查表后送 28H-2FH, 38H-3FHCF累加器AR4 (H) R3将A中的数据拆分为两个独 立的BCD码并査表结果存

7、 于 R4 R3INT_7290无丿二修改时间、回显、纠错、闪烁FLASHSS上控制闪烁位置RDKEY无累加器A读键值子程序WR856310H-1DH 单元无向日历芯片写入时间参数WRNBYT无无多字节写操作RDADD无无多字节读操作MOV 1BH#OOH ;设圧日报警8程序清单MOV 1CH.#OOH ;设龙星期报警SDABITP1.0MOV 1DH.#83H ;设立 CLKOUT 的频率,SCLBITP1.11秒周期方波WSLA_8563 EQU 0A2H:PCF8563T 口地址MOV R7.#0EH;写入参数个数RSLA_8563 EQU 0A3HMOV R0.#10H渗数与控制命令缓

8、冲区WSLA_7290 EQU 70H亿LG7290B 口地址首地址RSLA_7290 EQU71HMOV R2.#00H;从器件内部子地址MOV R3,#WSLA_8563;准备向 PCF8563TORG 8000H写入数据串UMP 8Q40HLCALLWRNBYT;写入时间,控制命令到ORG 8003HPCF8563TUMP INT.RCTSETB EA;启动总中断ORG 8013HSETB EX0 ;启动 INT_RCT(INT_O)UMP INT_7290SETB ITO 淀时器0下降沿有效SETB EX1;启动 INT_7290(INT_7290)ORG 8040HSETB IT1;

9、泄时器1下降沿有效START: MOV SP.#60HSJMPS;等待中断CLRP1.7:ZLG7290 复位*$*LCALL DELAY;中断服务子程序INT_RCTSETBP 1.7*#$*#* * * * * * *$* *INT_RCT:MOV R7.#07H;数据块字节数;设左pdf8563tdc时间和命令参数(参数和控制MOV R0.#20H;内部数拯块首地址命令缓冲区10HJDH)MOV R2.#02H;内部寄存器首地址* * * * * * *$* *MOV R3.#WSLA_8563:向 8563 写地址MOV 10H#00H;启动控制字MOV R4.#RSLA_8563;从

10、 8563 读地址MOV 11H,#1FH;设苣报警及左时器中断LCALL RDADD ;调读数据子程序,MOV 12H.#50H;秒单元将读出的数据存放于单片机20H-26H中MOV 13H.#59H汾单元MOVA.21H ;判断是否为59分MOV 14H.#08H;小时单元CJNEA.#59HNEXT1MOV 15H.#01H;日期单元MOV A.20H ;判断是否为55秒MOV 16H.#01H;星期单元CJNEA#55H.NEXT2MOV 17H.#01H;月单元LCALLBUZZLMOV 18H.#10H;年单元SJMP NEXTMOV 19H#00H;设定分报警NEXT2: CJN

11、EA.#56H.NEXT3MOV 1AH,#OOH;设左小时报警LCALLBUZZLSJMPNEXTSETB TRONEXT3: CJNE A#57H.NEXT4LOOPL: JNBTF05LCALLBUZZLCLR TFOSJMPNEXTMOV TL0.#66HNEXT4: CJNE A.#58H.NEXT5MOV TH0J0FCHLCALLBUZZLCPL P3.4;驱动蜂鸣器SJMPNEXTDJNZ R7.LOOPLNEXT5: CJNE A#59H.NEXTSETB P3.4LCALLBUZZLPOP 07HSJMPNEXTRETNEXT1: CJNE A.#OOH.NEXTBUZZH

12、: PUSH 07HMOV A.20HMOV TMOD.#01HCJNEA.#OOH.NEXTMOV TLO.frOCDH;高频 1500HZLCALLBUZZHMOV THOJOFEHNEXT: LCALL ADJUST ;调时间调整子程序MOV R7.#100LCALLCHAIFEN;调拆分子程序,将SETB TRO20H-26H中的参数分别存28H-2FH38H-3FH中LOOPH: JNB TF0.$MOV R7.#O8HCLR TFOMOV R2#10HMOV TLO.frOCDHMOV R3,#WSLA_7290MOV THOJOFEHJNBP1.2.YEARS ;使用戸12控制显

13、示CPL P3.4;驱动蜂鸣器内容DJNZ R7.LOOPHMOV R0.#38H;显示时分秒SETB P3.4SJMPDISPPOP 07HYEARS: MOV R0.#28H;显示年月日RETDISP:LCALL WRNBYT ;调 7290 显示子程序*JNB P32$;键盘修改中断服务程序INT_7290RETI*$* * * * *“* * *INT_7290:PUSH OOH:BUZZPUSH 02H* * * * * * *$* *PUSH 03HBUZZL: PUSH 07HPUSH 04HMOV TMOD,#01H ;方式 1PUSH 07HMOV TL0.#66H;低频 5

14、00HZPUSH ACCMOV TH0,#0FCHPUSH PSWMOV R7.#50MOV R7.#O7H;写入参数个数MOV R0.#20H;参数和控制命令缓冲区首地址MOV R2,#02H;从器件内部从地址MOV R3.#WSLA_8563;准备向 8563 写入数 据串MOV R4.#RSLA_8563;准备从 8563 读取数 据串LCALLRDADDMOV 12H.20H;写入秒单元MOV 13H.21H;写入分单元MOV 14H.22H;写入时单元RE: JBP3.3,$;以査询方式等待下一次按键LCALL RDKEY ;读取键值CJNE A#OAH.BKEY;判断是否为A键AK

15、EY: MOV51H.#80HLCALLFLASHJB P33$LCALLRDKEYCJNE A.#03H.HOUR1;判断键入的数是否 满足小时十位的要求HOUR1: JNCERROR1;若键值大于2,则报错SWAP A;将键值处理成小时数据的十位ANL 14H.#0FHORL 14H,A;小时数拯的十位生成LCALL WR8563 ;写入 8563LCALL CF ;拆分,査表,R4(H), R3(L)MOV 3FH.R4;回显MOV R7,#01HMOV R0,#3FHMOV R2,#17HMOV R3、#WSLA_7290LCALL WRNBYTLJMP HOUR2ERROR 1: L

16、CALL BUZZH;报错,返回重新键入LJMPAKEYHOUR2:MOV51H.#40HLCALLFLASHJB P33,$LCALLRDKEYCJNE A#OAH.STEP1;判断键值是否满足小 时个位的要求(小于10)STEP1:JNC ERR0R2ANL 14H.#0F0HORL 14H,AMOVAJ4HCJNE A,#24HJJJ;判断小时的值是否满足要 求(小于24)JJJ: JNC ERROR2LCALL WR8563LCALLCF 拆分,査表,R4(H), R3(L)MOV 3EH.R3;回显MOV R7.#01HMOV R0.#3EHMOV R2.#16HMOV R3.#WS

17、LA_7290LCALL WRNBYTMOV51H.#OOH ;停止闪烁LCALLFLASHUMP DOWNERR0R2: LCALL BUZZHUMP HOUR2BKEY: CJNE A#0BH.CKEYMOV51H.#10HLCALLFLASHJB P33,$LCALLRDKEYCJNEA,#O6H,MIN1MINI: JNC ERROR3SWAP AANL13H,#0FHORL13H.ALCALL WR8563LCALLCF ;拆分,査表,R4(H), R3(L)MOV 3CH.R4;回显MOV R7.#01HMOV R0,#3CHMOV R2.#14HMOV R3,#WSLA_7290

18、LCALL WRNBYTLJMP MIN2ERROR3: LCALL BUZZHLJMP BKEYMIN2: MOV51H.#08HLCALLFLASHJB P33,$LCALLRDKEYCJNE A#0AH,STEP2STEP2: JNC ERROR4ANL 13H.#0F0HORL 13H.ALCALL WR8563LCALLCF ;拆分,査表,R4(H), R3(L)MOV3BH.R3;回显MOV R7,#01HMOV R0.#3BHMOV R2,#13HMOV R3、#WSLA_7290LCALL WRNBYTMOV51H.#OOHLCALLFLASHLJMP DOWNERROR4:

19、LCALL BUZZHLJMP MIN2CKEY:CJNE A.#OCH.ERRORMOV51H.#02HLCALLFLASHJB P33,$LCALLRDKEYCJNEA,#O6H.SEC1SEC1: JNC ERROR5SWAP AANL 12H.#0FHORL 12H,ALCALL WR8563LCALLCF ;拆分,查表,R4(H), R3(L)MOV 39H.R4;回显MOV R7.#01HMOV R0.#39HMOV R2JH1HMOV R3,#WSLA_7290LCALL WRNBYTUMP SEC2ERROR5: LCALL BUZZHUMPCKEYSEC2:MOV51HJ01

20、HLCALLFLASHJB P33,$LCALLRDKEYCJNE A#0AH.STEP3STEP3: JNC ERROR6ANL 12H.#OFOHORL 12H,ALCALL WR8563LCALL CF ;拆分,査表,R4(H), R3(L)MOV 38H.R3 ;回显MOV R7,#01HMOV RO,#38HMOV R2.#10HMOV R3.#WSLA_7290LCALL WRNBYTMOV51H.#OOHLCALLFLASHUMP DOWNERROR6: LCALL BUZZHLJMP SEC2ERROR: LCALLBUZZH ;若键入数不为 A、B、C中的一个,则报错LCAL

21、L DELAYLCALL BUZZLDOWN: CLR IE1CLR IEOPOP PSWPOP ACCPOP 07HPOP04HPOP 03HPOP 02HPOP OOHRETI*$#*总总;读键值子程序(岀口参数累加器A获取到 的键值)*$#*总总RDKEY: MOV RO.#1FHMOV R7.#01HMOV R2.#01HMOV R3.#WSLA_7290MOV R4.#RSLA_7290LCALLRDADDMOVAJFHDECARET* * * * *“* * *;向日历芯片写入时间参数子程序;将RAM的10HJDH中的时间参数(含控制字)写入芯片的00H-0DH单元*奪*WR856

22、3: MOV R7,#0EHMOV R0.#10HMOV R2.#00HMOV R3、#WSLA_8563LCALL WRNBYTRET*枠*$;闪烁子程序*#*$*FLASH: PUSH OOHPUSH 02HPUSH 03HPUSH 07HMOV 50H.#70HMOV R7.#O2HMOV R0.#50HMOV R2.#O7HMOV R3,#WSLA_7290LCALL WRNBYTPOP07HPOP03HPOP02HPOPOOHRET*;各子程序*#$*#*CHAIFEN:PUSH PSWPUSH ACCPUSH 03HPUSH Q4HMOV A.20HLCALL CFMOV 38H.

23、R3MOV 39H.R4MOV 3AH.#O2HMOVA,21HLCALL CFMOV 3BH.R3MOV 3CH.R4PUSH DPLMOV 3DH,#O2HMOV DPTR、#LEDSEGMOV A.22HMOV R2.ALCALL CFANLA,#0FHMOV 3EH.R3MOVCA.A+DPTRMOV 3FH.R4MOV R3、AMOV A,23HMOV A,R2LCALL CFSWAP AMOV A.R3ANLA,#0FHORLA.#01HMOVCA,A+DPTRMOV R3,AMOV R4.AMOV 28H.R3POP DPLMOV 29H.R4POP DPHMOV A,25HPO

24、P02HLCALL CFRETMOV A.R3LEDSEG:DBORLA.#01H0FCH.60H.0DAH.0F2H66HQB6H.0BEH.0E4HMOV R3,ADBMOV 2AH,R30FEH,0F6H.0EEH,3EH,9CH.7AH.9EH,8EHMOV 2BH.R4*MOV A,26H;将20H-26H中从PCF8563T中读岀的7个字节LCALL CF参数的无关位屏蔽掉MOV A.R3*ORLA.#01HADJUST: PUSH ACCMOV R3,AMOV A,20HMOV 2CH.R3ANLA,#7FHMOV 2DH.R4MOV 20H.AMOV 2EH.#0FCHMOVA

25、,21HMOV 2FH.#0DAHANLA,#7FHPOPQ4HMOV21H.APOP 03HMOV A,22HPOP ACCANLA,#3FHPOP PSWMOV 22H.ARETMOV A,23HCF: PUSH 02HANLA,#3FHPUSH DPHMOV 23H.AMOV A,24HANLA.#07HMOV 24H.AMOV A,25HANLA,#1FHMOV 25H.APOP ACCRET*$*$ 9;延时子程序*$*DELAY: PUSH OOHPUSH 01HMOV R0.#00HDELAY1:MOVRL#01HDJNZR15DJNZ R0.DELAY1POPOIHPOP OO

26、HRET*$*$*$#*;I2C子程序*END9系统调试运行结果说明、分析所出现得问题,设计体会与建议硬件环境:DP-51PR0C单片机综合仿真实验台,TKSMonitor51仿真器。软件环境:PC及Keil软件。结果说明:可通过8563日历显示芯片将时间显示在数码管上,按KEY1键可显示日期,按A、B、C键可 分别改变时、分、秒,按错键时会有警告音提醒并要求重新输入。可进行整点报时。调试中出现的问题及解决方法:(1)显示两位小时、两位分钟和两位秒参数,相互之间有分隔符号功能:在该环节中,利用书上的 参考程序,实现每Is进入一次中断实现读取时间参数,并进行拆分显示等操作。最后能够在数码管 上显

27、示出初始设置的时间,当按下kcyl键时可以显示初始设置的日期。(2)整点报时功能:设巻两个驱动蜂鸣器发声的子程序,一个发声频率为500H乙另外一个为 1500H乙 成功实现了当时间为59分55秒59分59秒时以500HZ的频率发声,时间为整点时以 1500HZ的频率发声(3)键盘修改时间功能:这部分程序是整个程序的难点,修改的过程为从8563读取数据存入单片 机,在单片机内修改后存回8563,并写入7290回显。我参照书上的程序写了 A键基本的框架,发 现修改完成后需要写入8563才能成功在数码管上显示,还需考虑键入值是否符合要求,比如小时十 位不能大于2,小时不能大于24等等,能成功键入后,我又相继添加了新的功能,比如输入错误 时进行错误提醒,并要求重新输入,原本还想加入确认键,尝试了

温馨提示

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

评论

0/150

提交评论