最新电子钟课程设计完整创新版Word格式文档下载.docx
《最新电子钟课程设计完整创新版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新电子钟课程设计完整创新版Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
SS:
DD由左到右分别为时、分、秒,最大记时59:
59:
59超过这个时间时分秒位都清零从00:
00:
00重新开始。
设计一个定时显示装置,用六个数码管显示时间,用小键盘控制计时,设置和显示时间。
系统一运行就从00点00分00秒开始计时,并在数码管上显示秒、分、时当前值,而且,可以用键盘设置当前时间。
基本工作原理:
每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;
六个数码管动态显示时、分、秒的当前值。
C键:
置初值,显示00:
00
G键:
显示动态变化(启动表);
D键:
显示静态不变(表停止);
E键:
终止程序,返回DOS;
P键:
设置秒:
时的值
A0,A1—片内寄存器地址输入信号;
CLK一一-it数输入,用于输入定时基准脉冲或计数脉冲
OUT输出信号,以相应的电平指示计数的完成,或输出脉冲波形
GATE-迭通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。
六、系统总体设计
本系统设计的电子钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8279做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。
在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。
8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。
即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。
程序由以下模块组成:
系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。
系统总体框图如下:
1.CPU模块
8088最小工作模式,作为整个电子表的核心控制部分。
在8088最小模式中,硬件连接上有如下特点:
(1)MN/MX端接+5V,决定了8088工作在最小模式。
(2)有1片8284A,作为时钟发生器。
(3)有3片8282,用来作为地址锁存器。
8282是典型的锁存器芯片,因为它是8位的,所以需要3片8282作为锁存器。
(4)当系统中所连的存储器和外设系统较多时,需要增加数据总线的驱动能力,这时,要用两片8286作为总线收发器。
8088构成的CPU
2.定时模块
定时模块是为8259提供中断请求信号的。
由一片8253实现,选用定时器0#,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。
定时模块原理图
3.中断处理模块
中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。
4.显示模块和小键盘模块
5.实物硬件连接图
七、实验步骤
1、主机连线说明:
E5区:
CLK
——
B2区:
2M
CS、A0
A3区:
CS5、A0
A、B、C、D
G5区:
B3区:
CS1、A0
B3区:
INT、INTA
ES8088:
INTR、INTA
IR0
C5区:
OUT0
CS(8253)、A0、A1
CS2、A0、A1
GATE0
C1区:
VCC
CLK0
62.5K
2、运行程序,按G5区的F键,设置时钟初值;
3、观察G5区数码管上显示的时间是否正确。
中断信号送CPU处理。
八、演示程序
.MODELTINY
EXTRNDisplay8:
NEAR,GetKeyA:
NEAR,GetKeyB:
NEAR
IO8259_0EQU0F000H
IO8259_1EQU0F001H
Con_8253EQU0E003H
T0_8253EQU0E000H
.STACK200
.DATA
halfsecDB0;
0.5秒计数
SecDB0;
秒
MinDB0;
分
hourDB0;
时
bufferDB8DUP(0);
显示缓冲区,8个字节
buffer1DB8DUP(0);
bNeedDisplayDB0;
需要刷新显示
numberDB0;
设置哪一位时间
bFlashDB0;
设置时是否需要刷新
.CODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP
movsec,0;
时分秒赋初值00:
00:
movmin,00
movhour,00
MOVbNeedDisplay,1;
显示初始值
CALLInit8253
CALLInit8259
CALLWriIntver
STI
MAIN:
CALLGetKeyA;
按键扫描
JNBMain1
CMPAL,0FH;
设置时间
JNZMain1
CALLSetTime
Main1:
CMPbNeedDisplay,0
JZMAIN
CALLDisplay_LED;
显示时分秒
MOVbNeedDisplay,0;
1s定时到刷新转速
Main2:
JMPMAIN;
循环进行实验内容介绍和测速功能测试
SetTimePROCNEAR
LEASI,buffer1
CALLTimeToBuffer
MOVNumber,0
Key:
CMPbFlash,0
JZKey2
LEADI,buffer
MOVCX,8
REPMOVSB
CMPhalfsec,0
JNZFLASH
MOVBL,number
NOTBL
ANDBX,07H
LEASI,buffer
MOVBYTEPTR[SI+BX],10H;
当前设置位置产生闪烁效果
FLASH:
CALLDisplay8
MOVbFlash,0
Key2:
CALLGetKeyA
JNBKey
CMPAL,0EH;
放弃设置
JNZKey1
JMPMain1
Key1:
CMPAL,0FH
JZSetTime8
SetTime1:
CMPAL,10
JNBKey;
无效按键
CMPnumber,0
JNZSetTime2
CMPAL,3;
调整时的十位数
MOVbuffer1+7,AL
JMPSetTime7
SetTime2:
CMPnumber,1
JNZSetTime3
CMPbuffer1+7,1;
调整时的个位数
JZSetTime2_1
CMPAL,4
SetTime2_1:
MOVbuffer1+6,AL
INCnumber
SetTime3:
CMPnumber,3
JNZSetTime4
CMPAL,6;
调整分的十位数
MOVbuffer1+4,AL
JMPSetTime7
SetTime4:
CMPnumber,4
JNZSetTime5
MOVbuffer1+3,AL;
调整分的个位数
SetTime5:
CMPnumber,6
JNZSetTime6
调整秒的十位数
JBSetTime5_1
JMPKey
SetTime5_1:
MOVbuffer1+1,AL
SetTime6:
MOVbuffer1,AL;
调整秒的个位数
SetTime7:
INCnumber
CMPnumber,8
JNBSetTime8
MOVbFlash,1;
需要刷新
JMPKey
SetTime8:
MOVAL,buffer1+1;
确认
MOVBL,10
MULBL
ADDAL,buffer1
MOVsec,AL;
MOVAL,buffer1+4
ADDAL,buffer1+3
MOVmin,AL;
MOVAL,buffer1+7
ADDAL,buffer1+6
MOVhour,AL;
JMPExit
Exit:
RET
SetTimeENDP
TimeToBufferPROCNEAR
MOVAL,hour
XORAH,AH
DIVBL
MOV[SI],AH
MOV[SI+1],AL;
MOVBYTEPTR[SI+2],10H;
这位不显示
MOVAL,min
MOV[SI+3],AH
MOV[SI+4],AL;
MOVBYTEPTR[SI+5],10H;
MOVAL,sec
MOV[SI+6],AH
MOV[SI+7],AL;
TimeToBufferENDP
Display_LEDPROCNEAR
CALLDisplay8;
显示
Display_LEDENDP
Timer0Int:
PUSHAX
PUSHDX
MOVbFlash,1
INChalfsec
CMPhalfsec,2
JNZTimer0Int1
MOVbNeedDisplay,1
MOVhalfsec,0
INCsec
CMPsec,60
MOVsec,0
INCmin
CMPmin,60
MOVmin,0
INChour
CMPhour,24
MOVhour,0
Timer0Int1:
MOVDX,IO8259_0
MOVAL,20H
OUTDX,AL
POPDX
POPAX
IRET
Init8253PROCNEAR
MOVDX,Con_8253
MOVAL,34H
OUTDX,AL;
计数器T0设置在模式2状态,HEX计数
MOVDX,T0_8253
MOVAL,12H
MOVAL,7AH
CLK0=62.5kHz,0.5s定时
Init8253ENDP
Init8259PROCNEAR
MOVDX,IO8259_0
MOVAL,13H
MOVDX,IO8259_1
MOVAL,08H
MOVAL,09H
MOVAL,0FEH
RET
Init8259ENDP
WriIntverPROCNEAR
PUSHES
MOVAX,0
MOVDI,20H
LEAAX,Timer0Int
STOSW
MOVAX,CS
POPES
WriIntverENDP
ENDSTART
九、软件设计和流程图
1、数字电子时钟主程序流程图
数字电子时钟主程序流程图
2、中断服务程序流程图
中断服务程序流程图如下图所示。
中断服务程序流程图
3.实验结论
通过运用数字集成电路设计的24小时制的数字电子时钟,经过试验,改装后成功实现了一下基本功能:
1.能准确的实现通过开关控制时分秒。
2.能准确计时,以数字形式显示秒、分、时的时间。
3.能实现记忆的功能,并能在记录完数据之后实现交替记录的功能。
十.实验总结
通过这次数字电子钟的课程设计,我们才把学到的东西和实践相结合。
从中对我们学的知识有了更进一步的理解,而且更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。
也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。
虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。
设计本身并不是有很重要的意义,而是同学们对待问题时的态度和处理事情的能力。
各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。
同一个电路可以用哪些芯片实现,各个芯片实现同一个功能的区别。
通过这次实践,我真正意识到自己的不足之处,在编程方面还有很多需要学习的地方,还有许多芯片的功能,也需要再进一步学习研究,来不断扩大自己的知识面。
参考文献
1.现代数字电路和逻辑设计清华大学出版社北京交通大学出版社.
2.模拟电子技术(修订版)清华大学出版社北京交通大学出版社
3.模拟电子技术教程电子工业出版社
5.朱定华主编.电子电路测试和实验.北京:
清华大学出版社,2004.