3.2.2 时钟和复位模块
图3.2.2 时钟和复位模块
3.2.3显示模块及芯片说明
根据设计要求系统需要4个共阳LED,数码管显示电路使用80C51的动态显示功能。4个LED八段(a、b、c、d、e、f、g、dp),数码管分别显示: “时”、“分”,用二极管的“点”作为时、分的间隔。该系统采用共阳极数码管,对于共阳极数码管,其公共端必须接高电平。当打铃的时候四个数码管中前三个不显示数据,最后一个显示课程节数。
图3.2.3 显示模块
5
3.2.4 响铃模块
打铃电路(接P3.7):当前时间与程序设定时间相同时,P3.7端输出高电平的方波,即打铃。每次响铃时间是60S。
图3.2.4 响铃模块
4.软件设计
中断服务程序通过定时器T0(工作方式为1),实现一日的24小时,首先得初始化,正常工作,主函数调用数码管显示程序显示当前时间,然后调用打铃对比函数,若当前时间与系统设定打铃时间相同是,响应打铃程序。当需要对时间校正时,可以通过按键扫描处理程序进行校时。
//////////程序初始化////////// ALB EQU 20H BUF EQU 30H
//打铃设置标志
//30-33h连续四个字节存放显示器数据
HOUR EQU 34H //存放小时变量 MIN EQU 35H // 存放分钟变量 SEC EQU 36H //存放秒钟变量 DEDA EQU 37H // 存放5ms计数值 HH EQU 38H
// 打铃设置小时变量
MM EQU 39H //打铃设置分钟变量 ;按键输入引脚
6
K1 EQU P1.1 K2 EQU P1.2 K3 EQU P1.3 K4 EQU P1.4
;蜂鸣器和指示灯引脚定义 SPK EQU P1.5
WLED EQU P1.0 //工作指示灯引脚定义 ORG 00H lJMP MAIN ORG 0BH lJMP T0_SRV
/////////////主程序入口/////////// MAIN:
CLR ALB //清除闹铃标志
MOV A,#80H //加载显示器初始值数据 MOV P0,A ACALL BZ ;ACALL BZ ACALL LED_BL
ACALL DELAY1 ;定时器T0的初始化
ACALL INIT LOOP: ACALL CONV ACALL DISP LOOP2: ACALL CONV
7
`
ACALL LD1 //查询打铃时间
MOV A,MIN
CJNE A,#10,AGN JMP LOOP2 AGN:
CJNE A,#55,LOOP3 JMP LOOP2 LOOP3: JB K1,M1
JNB K1,$
ACALL SETTIME
M1: JMP LOOP jmp loop
ACALL DISP LD1:
MOV A,HOUR CLR C SUBB A,#8 MOV DPTR,#TALE
8
MOVC A,@A+DPTR CJNE A,HOUR,LL MOV A,MIN CJNE A,#10,L ACALL BZ MOV A,HOUR CLR C SUBB A,#8
MOV DPTR,#TABLE2 MOVC A,@A+DPTR MOV P0,A ACALL DELAY L:
CJNE A,#55,LL ACALL BZ
MOV A,HOUR
CLR C SUBB A,#8
MOV DPTR,#TABLE2 MOVC A,@A+DPTR MOV P0,A ACALL DELAY LL: RET TALE:
DB 08H,09H,0AH,0BH TABLE2:
DB 0F9H,0A4H,0B0H,99H
9