对于复位操作,我们采用手动复位,通过按钮开关使单片机进入复位状态,这是单片机能否正常工作的关键。
(2)硬件电路设计
使用proteus软件设计的硬件电路包含了三个功能控制键和一个单片机复位按钮及蜂鸣器控制开关。具体如图2.3所示。
图2.3 硬件电路连接图
时钟电路与复位电路已在前边介绍,在此主要介绍端口电路,对于外显电路的设计我们采用四位数码管,事实上根据要求只用到三位,我们利用p1.4、p1.5、p1.6对数码管进行位选。对于按钮开关电路,我们利用p3.0、p3.1、p3.2分别作为开始、停止及清零功能的电路接口。对于声音提示我们采用蜂鸣器装置,信号由p1.0口接入经过非门和驱动电源构成。
3软件设计
3.1程序设计
4
根据课题内容,可做出主程序流程图如图3.1所示。
开 始 初始化 N Y 有进位吗? 有暂停指令吗? Y 十秒位加一 N Y Y 有清零指令吗? N 有进位吗? N 0.1秒位加一 声音提示 秒位加一 Y 有进位吗? N
图3.1 主程序流程图
流程图体现着设计程序的思路程序,开始后首先进行数据初始化然后是条件判断
满足条件或不满足则进行对应的处理,如首先依次判断是否暂停是否清零,然后十分之一妙位计数,再判断是否进位,若是秒位就加一,秒位加一后进行声音提示,接着再判断是否有进位,若有则十秒位加一,若十秒位产生进位则重新计时。
3.2源程序:
HAOMIAO EQU 34H MIAO EQU 35H
5
SHIMIAO EQU 36H ORG 0000H AJMP START ORG 0030H
START: CLR C SETB P1.6 SETB P1.5 SHIWEI : SETB P1.4
MOV HAOMIAO,#0 MOV MIAO,#0 MOV SHIMIAO,#0 MOV DPTR,#TABLE MOV A,#00H MOVC A,@A+DPTR CLR P1.6 MOV P2,A MOV A,#00H MOVC A,@A+DPTR CLR P1.4 MOV P2,A
MOV DPTR,#TABLE1 MOV A,#00H MOVC A,@A+DPTR CLR P1.5 MOV P2,A LCALL KAISHI LCALL MAIN SETB P1.5
MOV DPTR,#TABLE ;十秒位显示
MOV MIAO,#0 ;使秒位从零位重新循环INC SHIMIAO
6
MOV A,SHIMIAO
CLR C SUBB A,#6 JZ START
AJMP MAIN RET
TINGZHI: MOV A,#00H ;判断是否有清零指 MOV A,P3 ANL A,#04H JZ START
MOV A,#00H MOV A,P3 CLR C ANL A,#02H LCALL YANSHI JZ MAIN LJMP TINGZHI START1 : LJMP START SHIWEI1: LJMP SHIWEI MAIN : SETB P1.5 SETB P1.4 SETB P1.6
MOV A,#00H MOV A,P3 ANL A,#04H JZ START1
MOV A,#00H MOV A,P3 CLR C ANL A,#02H JZ TINGZHI
;判断是否有停止指令 ; 判断是否有清零指令 ; 判断是否有停止指令 7
MOV DPTR,#TABLE ; 0.1位秒显示
I NC HAOMIAO ;加一,可查下一位数据 MOV A, HAOMIAO ; 判断是否进位 CLR C SUBB A,#10 JZ MIAOZHEN
LCALL YANSHI ;延时0.1秒 AJMP MAIN
RET MIAOZHEN:
SETB P1.4
MOV DPTR,#TABLE1 MOV HAOMIAO,#0 INC MIAO MOV A,MIAO CLR C SUBB A,#10 JZ SHIWEI1 LCALL SND
AJMP MAIN YANSHI: MOV R6,#30
DL2: MOV A,#00H MOV A,P3 ANL A,#04H JZ START1
MOV DPTR,#TABLE MOV A,SHIMIAO MOVC A,@A+DPTR CLR P1.6 MOV P2,A ACALL YIHAOMIAO
;继续计时 ;秒位显示
;使0.1秒从零重新循环 ;加一,可查下一位数据 ;判断是否进位 ;返回0.1秒计 ;判断是否有清零指令 8

