电子时钟课程设计
一:设计背景
电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。
二:数字钟电路设计思路
1.选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。时、分、秒的数值通过对8255的编程可送到七段数码管上显示。 2.此程序主要由四部分组成:
第一部分为最主要的部分定义显示界面;
第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;
第三部分将存在系统内存区的时间数用七段数码管显示出来; 第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。
该程序实现了准确显示秒和分,读数准确,走时精准。此电子钟能准确的从0时0分0秒走时到23时59分59秒,然后能自动回复到0时0分0秒循环走时。
3.基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。
电子时钟的显示格式HH:MM:SS由左到右分别为时、分、秒,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。最大记时23:59:59超过这个时间时分秒位都清零从00:00:00重新开始。 8253芯片介绍
8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz) 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制 字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数 器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
8255芯片介绍 8255特性:
①一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.②具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口 (高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I /O3种模式;B组只能设置为基本I/O或闪控式I/O两种模
8255芯片
8253芯片
式,而这些操作模式完全由控制寄存器的控制字决定.8255引脚功能:
RESET:复位输入线 , CS:芯片选择信号线 , RD:读信号线 , WR:写入信号 , D0~D7:三态双向数据总线 ,PA0~PA7:端口A输入输出线 ,PB0~PB7:端口B输入输出线, PC0~PC7:端口C输入输出线, A0,A1:地址选择线 三:程序流程图
三、电
子
表
原
理
图
:
四:程序代码
D8279 equ 200H C8279 equ 202H C8253 equ 20bH D82530 equ 208H D82531 equ 209H C82590 equ 210H
C82591 equ 211H data segment HOUR
db 00 MINUTE
db 00 SECOND
db 008 STAT
db 00 LED
db 31H,06H,5bH,4fH,66H,6dH,7dH,27H,7fH,6fH,00H,00H DISBUF db 8 dup(0) data ends stack segment stack
dw 100 dup(?) stack ends code segment
aume cs:code,ds:data START:
MOV AX,DATA
MOV DS,AX
CLI
MOV AL,13H
MOV DX,C82590
OUT DX,AL
MOV AL,8
MOV DX,C82591
OUT DX,AL
MOV AL,1
OUT DX,AL
MOV AX,0
MOV ES,AX
LEA AX,INT0
MOV AX,CS
MOV ES:[4*8+2],AX
MOV DX,C8253
MOV AL,36H
OUT DX,AL
MOV DX,D82530
MOV AX,10000
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,C8253
MOV AL,36H
OUT DX,AL
MOV DX,D82531
MOV AX,100
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,C8279
MOV AL,00H
OUT DX,AL
MOV AL,34H
OUT DX,AL
MOV AL,0D2H
OUT DX,AL
MOV STAT,0
MOV DX,C82591
MOV AL,0FEH
OUT DX,AL
WAIT1:
MOV DX,C8279
IN AL,DX
MOV AH,AL
AND AL,80H
JNE WAIT1
MOV AL,AH
AND AL,0FH
CMP AL,00H
JE WAIT1
MOV AL,40H
OUT DX,AL CHK: MOV DX,D8279
IN AL,DX
CMP AL,33H
JNE BBB
MOV DX,C82591
MOV AL,0FFH
OUT DX,AL
MOV AL,STAT
INC AL
MOV STAT,AL
CMP AL,1
JNZ AA1
MOV SI,OFFSET DISPBUF
MOV CX,4
MOV AL,00 BB0: MOV [SI],AL
INC SI
LOOP BB0
CALL DISP
JMP CHK AA1: CMP AL,2
JNZ AA2
MOV SI,OFFSET DISPBUF
MOV AL,00
MOV [SI],AL
INC SI
MOV [SI],AL
ADD SI,2
MOV [SI],AL
INC SI
MOV [SI],AL
CALL DISP
JMP CHK AA2: CMP AL,3
JNZ AA3
MOV SI,OFFSET DISPBUF+2
MOV CX,4
MOV AL,00 BB1: MOV [SI],AL
INC SI
LOOP BB1
CALL DISP
JMP CHK AA3: MOV STAT,00
MOV AL,0FEH
MOV DX,C82591
OUT DX,AL
CALL FULLSFM
CALL DISP
JMP CHK BBB: CMP AL,3BH
JE BBB0
JMP CCC BB0: MOV AL,STAT
CMP AL,1
JNZ BBB1
MOV AL,HOUR
ADD AL,1
DAA
MOV HOUR,AL
CALL FULLSH1
CALL DISP
JMP BBB BBB1: MOV AL,STAT
CMP AL,2
JNZ BBB3
MOV AL,MINUTE
ADD AL,1
DAA
MOV MINUTE,AL
CALL FULLFEN
CALL DISP
JMP BBB BBB3:
MOV AL,STAT
CMP AL,3
JZ
BBB4
JMP
DDD BBB4:
MOV AL,SECOND
ADD AL,1
DAA
MOV SECOND,AL
CALL FULLMIAO
CALL DISP
JMP BBB
CCC:
CMP AL,3AH
JE CC0
JMP DDD CC0:
MOV AL,STAT
CMP AL,1
JNZ CCC1
MOV AL,HOUR
SUB AL,1
DAS
MOV AL,HOUR
SUB AL,1
ADD AL,1
DAA
MOV SECOND,AL
CMP AL,60H
JNZ FANHUI
MOV SECOND,0
MOV AL,MINUTE
ADD AL,1
DAA
MOV MINUTE,AL
CMP AL,60H
JNZ FANHUI
MOV MINUTE,0
MOV AL,HOUR
ADD AL,1
DAA
MOV HOUR,AL
CMP AL,24H
JNZ FANHUI
MOV HOUR,0
CALL FULLSFM
CALL DISP
POP SI
POP DI
POP BX
POP AX
IRET FULL
SFM PROC NEAR
LEA DI,DISBUF
LEA BX,LED
LEA SI,SECOND
MOV CX,3 AA4:
MOV AL,[SI]
AND AL,0FH
XLAT
MOV [DI],AL
INC DI
MOV AL,[SI]
PUSH CX
MOV CL,4
SHR AL,CL
AND AL,0FH
XLAT
MOV [DI],AL
INC DI
POP CX
INC SI
LOOP AA4
RET FULL
SFM ENDP FULL
SHI PROC NEAR
LEA SI,DISBUF
MOV AL,0
MOV CX,4 CCC0:
MOV [SI],AL
INC SI
LOOP CCC0
LEA BX,LED
MOV AL,HOUR
AND AL,0FH
XLAT
MOV [SI],AL
XLAT
MOV [SI],AL
MOV AL,HOUR
MOV CL,4
SHR
AL,CL
AND AL,0FH
XLAT
INC
SI
MOV
[SI],AL
RET FULL
SHI ENDP FULL
FEN PROC NEAR
LEA SI,DISBUF
MOV AL,0
MOV [SI],AL
INC SI
MOV [SI],AL
INC SI
LEA BX,LED
MOV
AL,MINUTE
AND AL,0FH
XLAT
MOV
[SI],AL
MOV AL,MINUTE
MOV
CL,4
SHR AL,CL
AND AL,0FH
XLAT
INC SI
MOV
[SI],AL
RET FULL
FEN ENDP FULL
MIAO PROC NEAR
LEA SI,DISBUF
LEA BX,LED
MOV AL,SECOND
AND AL,0FH
XLAT
MOV [SI],AL
MOV AL,SECOND
MOV CL,4
SHR AL,CL
AND AL,0FH
XLAT
INC SI
MOV [SI],AL
MOV AL,0
INC SI
MOV [SI],AL
INC SI
MOV [SI],AL
INC SI
MOV [SI],AL
INC SI
MOV [SI],AL
RET FULL MIAO ENDP DISP
PROC NEAR
MOV CX,8
MOV DX,D8279
LEA SI,DISBUF DISI
MOV AL,[SI]
OUT DX,AL
INC SI
LOOP DISI
RET CODE ENDS
END START