电子时钟CODE ENDSEND START.docx

上传人:b****2 文档编号:2127275 上传时间:2023-05-02 格式:DOCX 页数:23 大小:522.95KB
下载 相关 举报
电子时钟CODE ENDSEND START.docx_第1页
第1页 / 共23页
电子时钟CODE ENDSEND START.docx_第2页
第2页 / 共23页
电子时钟CODE ENDSEND START.docx_第3页
第3页 / 共23页
电子时钟CODE ENDSEND START.docx_第4页
第4页 / 共23页
电子时钟CODE ENDSEND START.docx_第5页
第5页 / 共23页
电子时钟CODE ENDSEND START.docx_第6页
第6页 / 共23页
电子时钟CODE ENDSEND START.docx_第7页
第7页 / 共23页
电子时钟CODE ENDSEND START.docx_第8页
第8页 / 共23页
电子时钟CODE ENDSEND START.docx_第9页
第9页 / 共23页
电子时钟CODE ENDSEND START.docx_第10页
第10页 / 共23页
电子时钟CODE ENDSEND START.docx_第11页
第11页 / 共23页
电子时钟CODE ENDSEND START.docx_第12页
第12页 / 共23页
电子时钟CODE ENDSEND START.docx_第13页
第13页 / 共23页
电子时钟CODE ENDSEND START.docx_第14页
第14页 / 共23页
电子时钟CODE ENDSEND START.docx_第15页
第15页 / 共23页
电子时钟CODE ENDSEND START.docx_第16页
第16页 / 共23页
电子时钟CODE ENDSEND START.docx_第17页
第17页 / 共23页
电子时钟CODE ENDSEND START.docx_第18页
第18页 / 共23页
电子时钟CODE ENDSEND START.docx_第19页
第19页 / 共23页
电子时钟CODE ENDSEND START.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子时钟CODE ENDSEND START.docx

《电子时钟CODE ENDSEND START.docx》由会员分享,可在线阅读,更多相关《电子时钟CODE ENDSEND START.docx(23页珍藏版)》请在冰点文库上搜索。

电子时钟CODE ENDSEND START.docx

电子时钟CODEENDSENDSTART

电子时钟课程设计

一、设计要求

设计一个电子时钟,能够在LED上显示时,分,秒.LED上显示的格式为XX(时)-XX(分)-XX(秒),并且每秒钟更新一次.利用8253的计数通道输出一定频率的定时信号,将其作为中断请求信号送给8259的.由8259的中断服务程序来记录时间.到达整秒时,调整时,分,秒的显示。

二、设计方案与原理

1、设计方案

本系统设计的电子时钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。

在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。

8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。

即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。

其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259。

8259接收到信号后,产生中断信号送CPU处理。

2、设计原理

利用实验台上提供的定时器8253和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。

电子时钟的显示格式HH:

MM:

SS由左到右分别为时、分、秒,最大记时59:

59:

59超过这个时间时分秒位都清零从00:

00:

00重新开始。

基本工作原理:

每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一,六个数码管动态显示时、分、秒的当前值。

1、内容

利用实验台上提供的定时器8253和扩展板上提供的8259以及键盘和数码显示电路,设计一个电子时钟,由8253中断定时,小键盘控制电子时钟的启停及初始值的预置。

电子时钟的显示格式HH:

MM:

SS由左到右分别为时、分、秒,最大记时59:

59:

59超过这个时间时分秒位都清零从00:

00:

00重新开始。

2、要求

本实验要求设计一个定时显示装置,用六个数码管显示时间,用小键盘控制计时,设置和显示时间。

系统一运行就从00点00分00秒开始计时,并在数码管上显示时、分、秒当前值,而且,可以用键盘设置当前时间。

基本工作原理:

每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。

C键:

置初值,显示00:

00:

00

G键:

显示动态变化(启动表);

D键:

显示静态不变(表停止);

E键:

终止程序,返回DOS;

P键:

设置时:

分:

秒的值

3、设计环境

PC机一台、windowsXP系统、实验箱,导线若干。

4、设计所用设备

8253定时器:

用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。

8255并口:

用做接口芯片,和小键盘相连。

8259中断控制器:

用于产生中断。

LED:

六个LED用于显示时:

分:

秒值。

小键盘:

用于控制设置。

三、系统资源分配表

1、8259A芯片的内部结构及引脚

中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。

因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

在MD微机系统中,8259芯片工作于单片方式。

8259引脚图如图3.3,各引脚功能如下。

D7~D0——八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0——地址信号;

INT——中断请求信号;

INTA(低电平有效)——中断响应信号;

CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;

SP/EN——从编程/允许级联。

在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。

在非缓冲方式中,作为输入信号用于表示主片还是从片;

IR0~IR7——外部中断请求输入线。

要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。

8259中断矢量地址与中断信号之间的关系如表3.1所示:

图3.18259A引脚图

表3.18259A中断矢量表

中断序号

0

1

2

3

4

5

6

7

功能调用

08H

09H

0AH

0BH

0CH

0DH

0EH

0FH

矢量地址

20H

~

23H

24H

~

27H

28H

~

2BH

2CH

~

2FH

30H

~

33H

34H

~

37H

38H

~

3BH

3CH

~

3FH

说明

时钟

键盘

可用

可用

串行口

可用

可用

可用

2、8255芯片的内部结构及引脚

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:

方式0—基本输入/输出方式

方式1—选通输入/输出方式

方式2—双向选通输入/输出方式

8255引脚图如图3.2示,各引脚功能如下。

D7~D0——与CPU侧连接的八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0、A1——片内寄存器选择输入信号;

PA7~PA0——A口外设双向数据线;

PB7~PB0——B口外设双向数据线;

PC7~PC0——C口外设双向数据线;图3.28255引脚图

RESET——复位输入信号

表3.28255端口地址表

8255端口地址

信号线

寄存器

编址

IOY3

A口

60H

B口

61H

C口

62H

控制寄存器

63H

3、8253芯片的内部结构及引脚

8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。

8253的功能用途是:

(1)延时中断

(2)可编程频率发生器

(3)事件计数器

(4)二进倍频器

(5)实时时钟

(6)数字单稳

(7)复杂的电机控制器

8253有六种工作方式:

(1)方式0:

计数结束中断

(2)方式1:

可编程频率发生器

(3)方式2:

频率发生器

(4)方式3:

方波频率发生器

(5)方式4:

软件触发的选通信号

(6)方式5:

硬件触发的选通信号

8253引脚图如图3.3示,各引脚功能如下。

D7~D0——八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0、A1——片内寄存器地址输入信号;

CLK——计数输入,用于输入定时基准脉冲或计数脉冲;

OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;

GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。

ttt图3.28255引脚图

图3.38253引脚图

8253端口地址

表3.38253端口地址表

信号线

寄存器

编址

IOY2

0#计数器

40H

1#计数器

41H

2#计数器

42H

控制寄存器

43H

四、具体模块设计

1、概述

本系统设计的电子钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。

在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号。

8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号。

即每隔20ms,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化。

程序由以下模块组成:

系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块。

系统框图如下:

图一系统框图

2、主程序模块

主控模块是系的核心模块,对8253、8255A进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理。

主要由软件实现。

它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读小键盘输入键值并执行要做的工作,如果键值为C则将显示初始值00:

00:

00置入显示缓冲,并调用显示模块显示。

如果键值为G则开中断,(中断程序为秒最低位加一)。

如果键值为D则关中断,停止动态显示。

如健值为P则连续六次调用小键盘模块,将键值依次存入显示缓冲。

并调用显示模块显示。

如果健值为E,则终止程序,返回DOS。

3、小键盘模块

小键盘模块送入主控模块的子功能模块。

由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。

软件上使用行扫描法获得键值并送回主控模块。

执行一个约10ms的延时程序后再扫描键盘,若F0=1表示真正有键按下,从而消除了抖动影响。

4、显示模块

显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位。

硬件上由六个LED构成,软件上由扫描显示的方法实现。

5、定时模块

定时模块是为8259提供中断请求信号的。

由一片8253实现,选用定时器0#,工作在方式3,由4时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号。

6、中断处理模块

中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果。

图二原理图

7、按图二接线原理图连接好试验箱上的芯片引脚,主要用到器件有8255,8253,LED,8259,小键盘。

8253的片选接地址208-20F,OUT1,OUT0接灯(测试用),GATE0,GATE1接+5V,CLK1接8259的IRQ2,CLK0接Q12(12分频)。

8255的片选接地址218-21F,实验箱已将其和小键盘相连。

五、程序流程图

键盘扫描程序流程图:

(KEY)

主程序流程图:

中断流程图

六、心得体会

通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8088微处理器完成了电子钟的小系统的独立设计。

同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。

 

附录一:

参考书目

1.钱晓捷主编:

《微机原理与接口技术》,第4版,机械工业出版社,2008年1月出版。

2.沈美明等编著:

《80X86汇编语言程序设计》,清华大学出版社,2001年9月出版。

3、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:

机械工业出版社,2006年出版

4、杨立新.微型计算机原理和应用[M].北京:

科学技术文献出版社,1986年11月出版

 

附录二:

部分源代码

INTCSR_BYTE0EQU9C38H

INTCSR_BYTE1EQU9C39H

INTCSR_BYTE2EQU9C3AH

INTCSR_BYTE3EQU9C3BH

IMB4_BYTE3EQU9C1FH

MY8253_COUNT0EQU9C40H

MY8253_COUNT1EQU9C41H

MY8253_COUNT2EQU9C42H

MY8253_MODEEQU9C43H

MY8255_AEQU9C60H

MY8255_BEQU9C61H

MY8255_CEQU9C62H

MY8255_MODEEQU9C63H

IRQEQU01CCH

DATASEGMENT

CSBAKDW?

IPBAKDW?

MKBAKDB?

ADJUSTDB00H;调整位标志

FLASHDB00H;闪烁标志位

PAUSEDB0B;暂停标志位

KEYMARKDB0B;按键标志位

INKEYDB00H;按键

SECONDADB00H;秒个位

SECONDBDB00H;秒十位

MINUTEADB00H;分个位

MINUTEBDB00H;分十位

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

CLI

MOVAX,DATA

MOVDS,AX

MOVDX,INTCSR_BYTE0

MOVAL,00H

OUTDX,AL

MOVDX,INTCSR_BYTE1

MOVAL,1FH

OUTDX,AL

MOVDX,INTCSR_BYTE2

MOVAL,3FH

OUTDX,AL

MOVDX,INTCSR_BYTE3

MOVAL,00H

OUTDX,AL

MOVAX,0000H

MOVES,AX

MOVDI,01CCH

MOVAX,ES:

[DI]

MOVIPBAK,AX

MOVAX,OFFSETMYINT

CLD

STOSW

MOVAX,ES:

[DI]

MOVCSBAK,AX

MOVAX,SEGMYINT

STOSW

INAL,0A1H

MOVMKBAK,AL

ANDAL,0F7H

OUT0A1H,AL

STI

MOVDX,MY8253_MODE

MOVAL,17H;00010101

OUTDX,AL

MOVDX,MY8253_COUNT0

MOVAL,0

OUTDX,AL

MOVDX,MY8255_MODE

MOVAL,81H;10000001:

OUTDX,AL

A1:

NOP

MOVCX,32H

A2:

MOVDX,MY8255_B

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETLED

MOVAL,SECONDA

XLATLED

CMPADJUST,01H

JNEDIS_SECONDA

CMPFLASH,0FFH

JNEDIS_SECONDA

ANDAL,00H

DIS_SECONDA:

OUTDX,AL

MOVDX,MY8255_A

MOVAL,0111B

OUTDX,AL

CALLKEYCTR

CALLDELAY

MOVDX,MY8255_B

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETLED

MOVAL,SECONDB

XLATLED

CMPADJUST,02H

CMPFLASH,0FFH

JNEDIS_SECONDB

ANDAL,00H

DIS_SECONDB:

OUTDX,AL

MOVDX,MY8255_A

MOVAL,1011B

OUTDX,AL

CALLKEYCTR

CALLDELAY

MOVDX,MY8255_B

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETLED

MOVAL,MINUTEA

XLATLED

CMPADJUST,03H

JNEDIS_MINUTEA

CMPFLASH,0FFH

JNEDIS_MINUTEA

ANDAL,00H

DIS_MINUTEA:

ADDAL,80H

OUTDX,AL

MOVDX,MY8255_A

MOVAL,1101B

OUTDX,AL

CALLKEYCTR

CALLDELAY

MOVDX,MY8255_B

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETLED

MOVAL,MINUTEB

XLATLED

CMPADJUST,04H

JNEDIS_MINUTEB

CMPFLASH,0FFH

JNEDIS_MINUTEB

ANDAL,00H

DIS_MINUTEB:

OUTDX,AL

MOVDX,MY8255_A

MOVAL,1110B

OUTDX,AL

CALLKEYCTR

CALLDELAY

LOOPSK1

JMPSK2

SK1:

JMPA2

SK2:

JMPA1

MYINT:

PUSHDS

PUSHAX

PUSHDX

MOVDX,IMB4_BYTE3

INAL,DX

MOVDX,INTCSR_BYTE2

MOVAL,3FH

OUTDX,AL

OUT0A0H,AL

MOVAL,62H

OUT20H,AL

MOVAX,DATA

MOVDS,AX

NOTFLASH

MOVKEYMARK,0B

CMPPAUSE,0B

JNEL1

INCSECONDA

CMPSECONDA,0AH

JCL1

MOVSECONDA,00H

INCSECONDB

CMPSECONDB,06H

JCL1

MOVSECONDB,00H

INCMINUTEA

CMPMINUTEA,0AH

JCL1

INCMINUTEB

MOVMINUTEA,00H

CMPMINUTEB,06H

JCL1

MOVMINUTEB,00H

L1:

POPDS

POPAX

POPDX

IRET

KEYCTRPROCNEAR

MOVINKEY,AL

MOVDX,MY8255_C

INAL,DX

ANDAL,03H;高六位清零

CMPAL,10B;是否按下Y1行

JNEINY2

ADDINKEY,00H

JMPJUDGKEY

INY2:

CMPAL,01B;是否按下Y2行

JNESKIP

ADDINKEY,10000B

JUDGKEY:

CMPINKEY,01110B;是否按下1键

JNEKEY2

ANDSECONDA,00H;时间位清零

ANDSECONDB,00H

ANDMINUTEA,00H

ANDMINUTEB,00H

SKIP:

JMPBACK

KEY2:

CMPINKEY,01101B;是否按下2键

JNEKEY3

ANDPAUSE,0B;启动计时

JMPBACK

KEY3:

CMPINKEY,01011B;是否按下3键

JNEKEY4

MOVPAUSE,1B;暂停计时

JMPBACK

KEY4:

CMPINKEY,00111B;是否按下4键

JNEKEY5

MOVDX,MY8255_A

MOVAL,0FFH;熄灭数码管,程序退出

OUTDX,AL

CALLDELAY

MOVAX,4C00H

INT21H

JMPBACK

KEY5:

CMPINKEY,11110B;是否按下5键

JNEKEY6

CMPKEYMARK,0B

JNEKEY6

MOVKEYMARK,1B

MOVPAUSE,1B

CMPADJUST,04H;是否已调整完分的十位

JETL

INCADJUST

JMPBACK

TL:

ANDADJUST,00H

JMPBACK

KEY6:

CMPINKEY,11101B;6键

JNEBACK

CMPKEYMARK,0B

JNEBACK

MOVKEYMARK,1B

CMPADJUST,01H;是否调整秒的个位

JNEAD1

INCSECONDA;秒的个位加1

CALLOUTCLEAR;判断溢出

JMPBACK

AD1:

CMPADJUST,02H;是否调整秒的十位

JNEAD2

INCSECONDB

CALLOUTCLEAR

JMPBACK

AD2:

CMPADJUST,03H;是否调整分的个位

JNEAD3

INCMINUTEA

CALLOUTCLEAR

JMPBACK

AD3:

CMPADJUST,04H;是否调整分的十位

JNEBACK

INCMINUTEB

CALLOUTCLEAR

BACK:

RET

KEYCTRENDP

OUTCLEARPROCNEAR;溢出清零程序

CMPSECONDA,0AH

JCQ1

ANDSECONDA,00H

Q1:

CMPSECONDB,06H

JCQ2

ANDSECONDB,00H

Q2:

CMPMINUTEA,0AH

JCQ3

ANDMINUTEA,00H

Q3:

CMPMINUTEB,06H

JCQ4

ANDMINUTEB,00H

Q4:

RET

OUTCLEARENDP

DELAY:

PUSHCX;延迟程序

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2