单片机综合设计实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学本科设计报告题目:基于PCF8563的时钟系统设计
课程名称:
学院(系):
专业:
班级:
学号:
学生姓名:
成绩:
2014 年7 月10 日
题目:基于PCF8563的时钟系统设计
1 设计要求
实验要求:
(1)显示两位小时、两位分钟和两位秒参数,相互之间有分隔符号;
(2)按住KEY1可显示四位年、两位月、两位日;
(3)具备整点报时功能(模拟广播电台的整点报时从59分55秒开始,每一秒驱动蜂鸣器一次,其中前5次为低频,00秒时为高频驱动);
(4)具备键盘修改时间功能。可修改小时、分钟和秒参数;
(5)修改时间时具备“回显”功能,以方便观察;
(6)输入时间参数时应具有“自动纠错”功能,以免错误数据的输入;
(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 系统电路图
4 外围接口模块硬件电路功能描述
5 主程序中主要变量定义
6 系统软件中各个子程序的功能描述
8 程序清单
SDA BIT P1.0
SCL BIT P1.1
WSLA_8563 EQU 0A2H ;PCF8563T口地址RSLA_8563 EQU 0A3H
WSLA_7290 EQU 70H ;ZLG7290B口地址RSLA_7290 EQU 71H
ORG 8000H
LJMP 8040H
ORG 8003H
LJMP INT_RCT
ORG 8013H
LJMP INT_7290
ORG 8040H
START: MOV SP,#60H
CLR P1.7 ;ZLG7290复位
LCALL DELAY
SETB P1.7
;**************************************** ;设定pdf8563tde时间和命令参数(参数和控制命令缓冲区10H-1DH)
;**************************************** MOV 10H,#00H ;启动控制字
MOV 11H,#1FH ;设置报警及定时器中断MOV 12H,#50H ;秒单元
MOV 13H,#59H ;分单元
MOV 14H,#08H ;小时单元
MOV 15H,#01H ;日期单元
MOV 16H,#01H ;星期单元
MOV 17H,#01H ;月单元
MOV 18H,#10H ;年单元
MOV 19H,#00H ;设定分报警
MOV 1AH,#00H ;设定小时报警
MOV 1BH,#00H ;设定日报警
MOV 1CH,#00H ;设定星期报警
MOV 1DH,#83H ;设定CLKOUT的频率,1秒周期方波
MOV R7,#0EH ;写入参数个数
MOV R0,#10H ;参数与控制命令缓冲区首地址
MOV R2,#00H ;从器件内部子地址
MOV R3,#WSLA_8563;准备向PCF8563T 写入数据串
LCALL WRNBYT ;写入时间,控制命令到PCF8563T
SETB EA ;启动总中断
SETB EX0 ;启动INT_RCT(INT_0)
SETB IT0 ;定时器0下降沿有效
SETB EX1 ;启动INT_7290(INT_7290)
SETB IT1 ;定时器1下降沿有效
SJMP $ ;等待中断
;**************************************** ;中断服务子程序INT_RCT
;**************************************** INT_RCT:MOV R7,#07H ;数据块字节数
MOV R0,#20H ;内部数据块首地址
MOV R2,#02H ;内部寄存器首地址
MOV R3,#WSLA_8563;向8563写地址
MOV R4,#RSLA_8563;从8563读地址
LCALL RDADD ;调读数据子程序,将读出的数据存放于单片机20H-26H中
MOV A,21H ;判断是否为59分
CJNE A,#59H,NEXT1
MOV A,20H ;判断是否为55秒
CJNE A,#55H,NEXT2
LCALL BUZZL
SJMP NEXT
NEXT2: CJNE A,#56H,NEXT3
LCALL BUZZL