电子时钟制作
附件:
电子时钟
1:电子时钟简介
电子钟是一种利用数字电路来显示秒、分、时的计时装置,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。
2:电子时钟的基本特点
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
3:电子时钟的应用
LCD数字电子钟除了在城市的主要营业场所、车站、码头等公共场所使用,还可以改装在摩托车和汽车上,LCD显示,带蓝色背光,白天在太阳光下也能非常清楚的看到显示时间,关钥匙可以关闭蓝色背光,时间还能显示也不会清零,因LCD的显示耗电量很省的,所以一直工作也不必担心耗电问题。在骑摩托车时,为了看时间,先要停下车子,取出手机,才能看时间,是否有点麻烦,现在车上改装了一个蓝色背光的液晶电子钟后,不管白天黑夜色,随时可以看时间,非常方便。
4: 电子时钟的原理
一般电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。电子时钟由89C51,BUTTON,七段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。
5:数码管显示工作原理
LED数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极接高电平时,相应笔段可以发光。共阴极LED数码管则与之相反,它是将发光二极管的阴极(负极)短接后作为反映出半导体材料的特性。常见管芯材料有磷化镓(GaP)、砷化镓(GaAs)、磷砷化镓(GaAsP)、氮化镓(GaN)等,其中氮化镓可发蓝光。发光颜色不仅与管芯材料有关,还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码管。其他颜色LED数码管的光谱曲线形状与之相似,仅入,值不同。LED数码管的产品中,以发红光、绿光的居多、这两种颜色也比较醒目。
LED数码管等效于多只具有发光性能的PN结。当PN结导通时,依靠少数载流子的注人及随后的复合而辐射发光,其伏安特性与普通二极管相似。在正向导通之前,正向电流近似于零,笔段不发光。当电压超过开启电压时,电流就急剧上升,笔段发光。因此,LED数码管属于电流控制型器件,其发光亮度L(单位是cd/m2)与正向电流IF有关,用公式表示:L=KIF即亮度与正向电流成正比。LED的正向电压U,则与正向电流以及管芯材料有关。使用LED数码管时,工作电流一般选10mA左右/段,既保证亮度适中,又不会损坏器件。
8254简介
8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:
(1)有3个独立的16位计数器;
(2)每个计数器可按二进制或十进制(BCD)计数;
(3)每个计数器可编程工作于6种不同工作方式;
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz);
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;
8254的引脚功能
它是由与CPU的接口,内部控制电路,和三个计数器组成。
此次主要利用8254产生1ms的方波,其与总线相连接的引线主要是:
DO-D7双向数据线,用以传送数据和控制字,分别与XDO-XD7相连接。
CS输入信号,低电平有效,当它有效时才能选中该定时器芯片,实现对它的读或写,这里与系统IOY3相连接。
RD读控制信号,低电平有效,与系统总线IOR#相连接。
WR写控制信号, 低电平有效,与系统总线IOW#相连接
AO、A1为8254的内部计数器和一个控制寄存器的编码选择信号,其功能如下:
CLKO时计数器的时钟输入端,计数器对此时钟信号进行计数。
GATEO门控信号,即计数器的控制输入信号,用来控制计数器的工作,这里使其为高电平,直接接系统5V。
OUT计数器输出信号,用来产生不同方式工作时的输出波形,本次设计的1ms方波由此输出。
8254的工作方式
8254有六种工作方式,在此实验中由于只用来产生方波,所以使其工作在方式3(方波发生器),在此方式下,GATA信号为低电平,强迫OUT输出高电平,当GATA主高电平时,OUT输出时称方波。
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
8254的内部控制字
8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。
连接电路图
8254计时单元
键盘键盘及数码显示管单元
按图连接实验程序;
================================源程序及注释===============================
; 文件名: A82541.ASM
; 功能描述: 采用8254定时器0产生50ms方波,输入给定时器1,利用定时器1产生1s中断,然后显示
MY8255_A EQU 0600H
MY8255_B EQU 0602H
MY8255_C EQU 0604H
MY8255_CON EQU 0606H
A8254 EQU 06C0H
B8254 EQU 06C2H
C8254 EQU 06C4H
CON8254 EQU 06C6H
DATA SEGMENT
DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATA ENDS
SSTACK SEGMENT STACK
DW 200 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK,DS:DATA
START: PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV AX, OFFSET IRQ7 ;取中断入口地址
MOV SI, 003CH ;中断矢量地址
MOV [SI], AX ;填IRQ7的偏移矢量
MOV AX, CS ;段地址
MOV SI, 003EH
MOV [SI], AX ;填IRQ7的段地址矢量
CLI
POP DS
MOV AX,DATA ;remember this
MOV DS,AX ;not lose,it is very important
MOV CX,06H
MOV DI,3000H
MOV AL,00H
LP: MOV [DI],AL
INC DI
LOOP LP
MOV DI,3003H ;save counter
MOV SI,4000H
MOV AL,00H
MOV [SI],AL ;清显示缓冲
MOV [SI+1],AL ;display second
MOV [SI+2],AL
MOV [SI+3],AL ;display minute
MOV [SI+4],AL
MOV [SI+5],AL ;display hour
MOV SI,4000H
;MOV AX,COUNT ;SAVE COUNT=1000
;MOV [DI],AL
;MOV [DI+1],AH
;初始化主片8259
MOV AL, 11H
OUT 20H, AL ;ICW1
MOV AL, 08H
OUT 21H, AL ;ICW2
MOV AL, 04H
OUT 21H, AL ;ICW3
MOV AL, 01H
OUT 21H, AL ;ICW4
MOV AL, 6FH ;OCW1
OUT 21H, AL
;8254
MOV DX, CON8254
;MOV AL, 30H ;计数器0,方式0
MOV AL, 36H ;计数器0,方式3,产生50ms方波
OUT DX, AL
MOV DX, A8254 ;计数初值为3E8H=1000,产生1ms中断
MOV AL, 50H ;c350H=50000,产生50ms
OUT DX, AL
MOV AL, 0c3H
OUT DX, AL
MOV DX, CON8254
MOV AL, 50H ;计数器1,方式0
OUT DX, AL
MOV DX, B8254 ;计数初值为3E8H=1000,产生1ms中断
MOV AL, 20H ;c350H=50000,产生50ms中断
OUT DX, AL
;MOV AL, 0c3H
;OUT DX, AL
MOV DX,MY8255_CON ;写8255控制字
MOV AL,81H
OUT DX,AL
STI
AA1: CALL DIS ;调用显示子程序
JMP AA1
;========================================
;显示子程序
;========================================
DIS: PUSH AX
MOV SI,4000H
MOV DL,0DFH
MOV AL,DL
AGAIN: PUSH DX
MOV DX,MY8255_A
OUT DX,AL ;select first seg
MOV AL,[SI]
MOV BX,OFFSET DTABLE
XLAT
MOV DX,MY8255_B
OUT DX,AL
CALL DALLY
INC SI
POP DX
MOV AL,DL
TEST AL,01H
JZ OUT1
ROR AL,1
MOV DL,AL
JMP AGAIN
OUT1: POP AX
RET
;====== 延时子程序 ======
DALLY: PUSH CX
MOV CX,0012H
T1: MOV AX,0010H
T2: DEC AX
JNZ T2
LOOP T1
POP CX
RET
;save second
IRQ7:
PUSH AX
MOV DX, B8254 ;重装计数初值
MOV AL, 20H
OUT DX, AL
MOV AX, 0173H
INT 10H ;显示字符s
;;SECOND
MOV DI,3000H
MOV DL,[DI]
MOV AH,00H
MOV AL,DL
MOV BL,10
DIV BL
MOV BH,AH ;AH 保存余数,al保存商
MOV BL,AL ;
MOV SI,4001H ;4000H内存单元保存秒的十位
MOV [SI],AL
OR AL,30H ;ADD 30H
MOV AH,01H
INT 10H
MOV AL,BH
MOV SI,4000H ;4001H内存单元保存秒的个位
MOV [SI],AL
OR AL,30H ;ADD 30H
MOV AH,01H
INT 10H
MOV AX, 0120H ;20h=空格
INT 10H
MOV DI,3000H
MOV DL,[DI]
INC DL
MOV [DI],DL
CMP DL,60
JL EXIT
MOV DL,00H
MOV DI,3000H
MOV [DI],DL ;clear second value
;;minute
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
EXIT: MOV AL, 20H
OUT 20H, AL ;中断结束命令
POP AX
IRET
CODE ENDS
第二篇:微机原理课程设计报告(电子时钟)
1. 设计目的
培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
2. 设计内容
设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零 后重新开始计时。可用开关控制,也可用按键控制。(开关控制 ☆ )(按键控制★)
3. 设计要求
一.基本要求
1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。其中数字0控制清零,数字1控制继续和退出
二.提高要求:
1)秒表可以分组存储、批量显示、倒计时等。
2)采用图像显示,界面精美,设置报警声等
4. 设计原理与硬件电路
一.整体设计思想
使用8253工作在方式0计数,对 1/100S计数,并讲计数值写入bl中并与100比较若不相等,则将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。
二. 使用各芯片的作用及工作原理
1、定时器/计数器8253
用系统8253定时器提供的55ms定时单位,设计秒表定时程序。
有关系统定时方法:
PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,
频率:f=1.1931816MHz。
定时器0输出方波的频率:fout=1.1931816/65536=18.2Hz。
输出方波的周期Tout=1/18.2=54.945ms。8253A每隔55ms引起一次中断,作为定时信号。可用55945ms作基本计时单位。
用BIOS调用INT 1AH可以取得该定时单位。例:1秒=18.2 (计时单位)
8253的引脚图及硬件连接图如下图示:
2、 用可编程并行接口芯片8255的PA口以及PB口实现数码管输出,PC口实现按键实现数据显示输出
8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255 的内部结构及引脚如图2.1所示:
图2.1 内部结构及引脚
8255 工作方式控制字和C口按位置位/ 复位控制字格式如图3-7-2 所示:
图2.2 置位/ 复位控制字格式
3. 锁存器273
74LS273是8位数据/地址锁存器,他是一种带清除功能的8D触发器,下面介绍一下他的管脚图功能表等资料。
(1).1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;
(2).当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.
74ls273管脚功能:
1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
4. 数据收发器245
当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)
*DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。
5. 译码器74ls154
74ls154为4—16线制译码器其引脚图如下图所示
6. 7段数码管
数码管要正常显示,就要来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
5.程序流程图
6.程序代码
a1 equ 0000h
b1 equ 0002h
c1 equ 0004h
ctr1 equ 0006h ;8255各端口地址
a2 equ 0200h ;8253计数器0端口地址
ctr2 equ 0206h ;8253控制端口地址
a3 equ 0100h
data segment
; keynum db 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H
tab db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
buf db 0,0,0,0
buf1 db 0,0,0,0,0,0,0,0
buf2 db 0,0;前为第一开关次数
buf3 db 80 dup(?)
data ends
code segment 'code'
assume ds:data,cs:code
start: mov ax,data
mov ds,ax
;设中断入口地址设置
mov ax,0
mov es,ax
mov di,08
mov ax,offset intr_key
cld
stosw
mov ax,seg intr_key
stosw
mov ax,data
mov es,ax
;8255写入控制字
mov al,10001001b ;A口B口输出显示,C口高四位低四位输入
mov dx,ctr1
out dx,al
n3: call jishu
jmp n3
n2: lea si,buf2
mov bh,00h
mov bl,1h[si]
lea di,buf3
add di,bx
add bl,8
mov 1h[si],bl
lea si,buf1
cld
mov cx,8
rep movsb
n4: call dis
jmp n4
n5: lea si,buf2
mov bh,00h
mov bl,1h[si]
cmp bl,0
jz n1
lea di,buf1
sub bl,8
mov 1h[si],bl
lea si,buf3
add si,bx
cld
mov cx,8
rep movsb
n6: call dis
jmp n6
n1: call qinlin
jmp n1
;jmp start
jishu proc near ;计数子程序
lea si,buf
mov bl,[si]
cmp bl,100
jnz s6
s1: mov bl,0
mov [si],bl
mov ah,1h[si]
cmp ah,59
jz s2
inc ah
mov 1h[si],ah
jmp s6
s2: mov ah,0
mov 1h[si],ah
mov ah,2h[si]
inc ah
mov 2h[si],ah
jmp s6
s6:call chu
mov cx,3
s5:call dis
loop s5
call delay1s
inc byte ptr[si]
ret
jishu endp
chu proc ;rukou al ;数处理子程序
push si
push bx
mov bl,4
lea di,buf1
lea si,buf
next:lodsb
mov ah,00
mov cl,10
div cl
xchg ah,al
stosb
mov al,ah
stosb
dec bl
jnz next
pop bx
pop si
ret
chu endp
dis proc near ;显示buf1中的值
push bx
push cx
lea bx,tab
lea di,buf1
mov cx,8
mov ah,7Fh
loop1: mov al,[di]
xlat ;换码
mov dx,a1
out dx,al
mov dx,b1
mov al,ah
out dx,al
mov bh,1
call delay
call qp
lea bx,tab
ror ah,1
inc di
loop loop1
pop cx
pop bx
ret
dis endp
delay1s proc near ;8253延时子程序
push dx
push ax
mov dx,ctr2 ;8253 控制
mov al,00110000b
out dx,al ;8253计数器0控制字 方式0 out端作为中断请求信号
mov dx,a2
mov al,01h
out dx,al
mov al,00h
out dx,al
mov dx,a3
M1: in al,dx
test al,01h
jz M1
pop ax
pop dx
ret
delay1s endp
qp proc near ;清频子程序
mov al,0ffh
mov dx,b1
out dx,al
ret
qp endp
delay PROC NEAR ;内部延时之程序
PUSH bx
PUSH CX
wait0: MOV CX,06h
wait1: LOOP wait1
DEC bh
JNZ wait0
POP CX
POP bx
RET
delay ENDP
intr_key proc near ;中断服务子程序
call key
test al,2h
jz n1
test al,4h
jz n5
lea di,buf2
mov bh,[di]
inc bh
mov [di],bh
test bh,1h
jnz n2
jmp n3
iret
intr_key endp
qinlin proc ;键盘清零子程序
mov ax,0
lea di,buf
mov cx,14
cld
rep stosb
call dis
qinlin endp
key proc ;读取键盘程序
mov dx,c1
in al,dx
ret
key endp
code ends
end start
7.程序及硬件系统调试情况
按下暂停键实现暂停功能
继续计数后按下清零键实现清零功能
8.设计心得
经过这次课程设计,我觉得我有了很大的收获,:
1.我大大地锻炼了自己搞科研的能力,作为我们大学生,尤其是工科的大学生,对于科研能力,能够自主开发课题,项目有着很高的要求,而我们很多大学生动手研发的能力还不是很强。而通过这次课程设计,使自己的研发能力有了很大堤提高。
2.我对于工科设计的严谨性,仔细性有了更深地体会。我们本次设计的秒表仅仅是工科设计中非常简单的一个,思想并不是非常复杂,手头也有一定的资料,但是我们在研发,调试过程中还是出现了一些错误。简单的一些程序好检查,但是如果说是以后要设计的一些大型程序,出现故障就不是那么容易检查了。这就要求我们在以后的工程设计当中要更为细致仔细。
3我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。原来有很多知识只是死学课本,而并没有与实际相结合,而这次课程设计使我的专业知识与实际有了很好的契合。
4.在程序设计中不能够想当然,许多程序,功能在脑子中想得很好,但是将其转变城实际程序就会出现许多问题。如何由脑子里的构想转变成实际的程序,这是我以后需要提高的一点。
5.掌握了一些检查与判断错误的经验与方法,对今后的专业学习与设计有着深刻的影响。
6.对专业设计的许多流程、原则、注意事项以及撰写专业报告的有关事项有了一定的了解。
7.学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后的学习与设计有深远影响。
总之,经过这次课程设计,我对今后的专业学习所要注意的事项有了更深刻地了解,这对我以后的学习必将产生深远的影响。
9.参考文献
[1] 顾晖等。微机原理与接口技术-基于8086和Proteus仿真[M].电子工业出版社陈继红等. 微机原理及应用[M].高等教育出版社,2010
[2]戴梅萼等.微型计算机技术及应用[M].清华大学
[3]沈美明等.IBM-PC汇编语言程序设计 [M]. 清华大学出版社
[4]彭虎等. 微机原理与接口技术(第2版) [M].电子工业出版社,2008
[5] 张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社