最新电子钟课程设计完整创新版Word格式文档下载.docx

上传人:b****5 文档编号:19071896 上传时间:2023-01-03 格式:DOCX 页数:17 大小:1.94MB
下载 相关 举报
最新电子钟课程设计完整创新版Word格式文档下载.docx_第1页
第1页 / 共17页
最新电子钟课程设计完整创新版Word格式文档下载.docx_第2页
第2页 / 共17页
最新电子钟课程设计完整创新版Word格式文档下载.docx_第3页
第3页 / 共17页
最新电子钟课程设计完整创新版Word格式文档下载.docx_第4页
第4页 / 共17页
最新电子钟课程设计完整创新版Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

最新电子钟课程设计完整创新版Word格式文档下载.docx

《最新电子钟课程设计完整创新版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新电子钟课程设计完整创新版Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

最新电子钟课程设计完整创新版Word格式文档下载.docx

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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1