基于微机原理电子时钟课程设计.docx

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

基于微机原理电子时钟课程设计.docx

《基于微机原理电子时钟课程设计.docx》由会员分享,可在线阅读,更多相关《基于微机原理电子时钟课程设计.docx(29页珍藏版)》请在冰点文库上搜索。

基于微机原理电子时钟课程设计.docx

基于微机原理电子时钟课程设计

基于微机原理电子时钟课程设计

 

一、课程设计要求及目的

1、用8255的A口驱动六个七段数码管(LED)的字段,C口驱动六位七段数码管(LED)的为控制端,右侧两位显示分值,左侧两位显示秒值,

2、数码管采用动态扫描方式,用8253做定时器(采用查询方式),每位显示的时间<5ms,扫描频率>50HZ。

3以5ms为基本时间单位,计数产生秒时间值,秒计数到60时对分计数,分计数到60时对时计数。

二、开发环境及设备

1、设计环境

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

2、设计所用设备

8254定时器:

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

8255并口:

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

8259中断控制器:

用于产生中断。

LED:

七个LED用于显示时:

分:

秒值。

小键盘:

用于控制设置。

三、设计思想与原理

1、设计思想

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

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

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

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

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

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

2、设计原理

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

电子时钟的显示格式HH:

MM:

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

59:

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

00:

00重新开始。

基本工作原理:

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

1、内容

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

电子时钟的显示格式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、设计所用设备

8254定时器:

用于产生秒脉冲,其输出信号可作

为中断请示信号送IRQ2。

8255并口:

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

8259中断控制器:

用于产生中断。

LED:

七个LED用于显示时:

分:

秒值。

小键盘:

用于控制设置。

三、设计所用芯片结构

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

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

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

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

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

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

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

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

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

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

图18259A引脚图

A0——地址信号;

INT——中断请求信号;

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

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

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

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

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

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

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

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

表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引脚图如图2示,各引脚功能如下。

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

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

RD(低电平有效)——读输入信号;图28255引脚图

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

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

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

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

PC7~PC0——C口外设双向数据线;

RESET——复位输入信号

3、8255端口地址

表3.28255端口地址表

信号线

寄存器

编址

IOY3

A口

60H

B口

61H

C口

62H

控制寄存器

63H

4、8254芯片的内部结构及引脚

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

8254的功能用途是:

(1)延时中断

(2)可编程频率发生器

(3)事件计数器

(4)二进倍频器

(5)实时时钟

(6)数字单稳

(7)复杂的电机控制器

8254有六种工作方式:

(1)方式0:

计数结束中断

(2)方式1:

可编程频率发生器

(3)方式2:

频率发生器

(4)方式3:

方波频率发生器

(5)方式4:

软件触发的选通信号

(6)方式5:

硬件触发的选通信号

5、8254引脚图如图3示,各引脚功能如下。

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

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

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

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

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

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

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

图38254引脚图

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

2、8254端口地址

表3.38254端口地址表

信号线

寄存器

编址

IOY2

0#计数器

40H

1#计数器

41H

2#计数器

42H

控制寄存器

43H

四、具体模块设计

1、概述

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

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

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

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

程序由以下模块组成:

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

系统框图如下:

图4系统框图

2、主程序模块

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

主要由软件实现。

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

00:

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

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

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

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

并调用显示模块显示。

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

3、小键盘模块

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

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

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

本课题只考虑去抖动。

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

实现代码如下:

KEYROCNEAR

PUSHCX

KST:

MOVAL,82H

MOVDX,P55CTL

OUTDX,AL

MOVAL,00H

MOVDX,PA55

OUTDX,AL

MOVDX,PB55

INAL,DX

ORAL,0F8H

CMPAL,0FFH

JZDELAY

MOVCX,0300H

DLY:

LOOPDLY

MOVCL,08H

MOVAH,0FEH

SCAN1:

MOVDX,PA55

MOVAL,AH

OUTDX,AL

MOVDX,PB55

INAL,DX

ORAL,0F8H

CMPAL,0FFH

JNZKEYN

ROLAH,1

DECCL

JNZSCAN1

JMPKST

KEYN:

PUSHAX

MOVDX,PB55

RELEA:

INAL,DX

ORAL,0F8H

CMPAL,0FFH

JNZRELEA

POPAX

NOTAX

MOVSI,OFFSETTABLE

MOVDI,OFFSETCHAR

MOVCX,24

TT:

CMPAX,[SI]

JZNN

DECCX

JZKST

ADDSI,02

INCDI

JMPTT

NN:

MOVDL,[DI]

MOV[CHAR1],DL

MOVAH,02H

INT21H

POPCX

JMPYANG

DELAY:

CALLDISPLY

JMPKST

YANG:

RET

KEYENDP

4、显示模块

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

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

实现代码如下:

DISPLAYPROCNEAR

MOVCX,77FFH

LED52:

CALLDISUP

LOOPLED52

DISUP:

PUSHCX

MOVDI,OFFSETMIN1

MOVCL,01

DISUP1:

MOVAL,0

MOVDX,PORTBIT

OUTDX,AL

MOVAL,[DI]

MOVBX,OFFSETLED

XLAT

MOVDX,PORTSEG

OUTDX,AL

MOVAL,CL

MOVDX,PORTBIT

OUTDX,AL

MOVBX,35H

DELAY1:

DECBX

JNZDELAY1

CMPCL,20H

JZDISUP2

INCDI

SHLCL,1

JMPDISUP1

DISUP2:

POPCX

RET

DISPLAYENDP

5、定时模块

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

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

6、中断处理模块

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

7、芯片引脚

按如下图4接线图连接好试验箱上的芯片引脚,主要用到器件有8255,8254,LED,8259,小键盘。

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

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

LED的片选接地址210-217。

 

图5试验接线图

五、程序流程图

1、主程序流程图如图6所示

2、键盘扫描程序流程图:

(KEY)如图7所示

图7键盘扫描程序流程图

3、中断处理程序流程图如图8所示:

图8中断处理程序流程图

六、心得体会

经过以上步骤,课程设计所要求设计的电子钟显示设计软件便成功完成了,它能显示数字式的时钟,并且能设置初值和时钟进制。

整个页面简洁清晰,方便用户读取,且操作简捷,符合课程设计中的各项要求。

通过这次课程设计,我们对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,将书本中的知识更好地与实际生活中的应用结合在了一起。

通过这次微机原理课程设计学到了很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

而且我第一次感受到在写一个程序的时候,一定要事先把程序原理方框图画出来的重要性。

在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。

因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。

本次课程设计的过程中遇到了很多问题,比如时间走得太快、光标的位置无法定位等等。

对每个问题的解决都是一种对知识的重新整理和考察。

我更加感到愉悦的,此次的课程设计锻炼了我的编程能力。

到此为止,我们接近两周的课程设计也告一段落。

通过这次课程设计,使我认识到理论与实际相结合的重要性,对课本上的只是在实际生活中的运用也有了进一步的了解,同时基本上能够掌握汇编语言编程中编程的步骤,可以说是从中受益匪浅。

通过本次课设我也学到很多课堂上学不到的调试知识。

很感谢学校给我们提供了这么好的学习机会,感谢老师的指导,从老师的身上学到了对知识真正严谨细致的态度,让我受益匪浅。

附录一:

参考书目

1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版).北京:

清华大学出版社,2003

2、周明德编著.微型计算机系统原理及应用(第四版).北京:

清华大学出版社,2002

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

机械工业出版社,2006

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

科学技术文献出版社,1986.11

5、李大友.微型计算机原理[M].北京:

清华大学出版社,1998.7

6、眭碧霞.微型计算机原理与组成[M].人民邮电出版社,2003.8

附录二相关程序

电子时钟程序

;8255用作读键盘信息

;8253提供时钟信号

;led采用动态显示

modelsmall

.stack50

,数据段

data

bufd60,0,0,0,0,0;显示缓冲区

;数码管笔形码

ledd63FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,80h

hourd608h;时缓冲单元

mindb30h;分缓冲单元

seed630h;秒缓冲单元

mseod60;毫秒缓冲单元

dexdb0;笔形码索引值

;键盘编码表

keytabDW57FH,5BFH,5DFH,5EFH,5FEH,5FDH,5FBH,5F7H

DW67FH,6BFH,6DFH,6EFH,6FEH,6FDH,6FBH,6F7H

keyenddw7ffh

agekeydb12;键龄

oldkeydw0;键码字保存

keynumd60;键号

keyokdb0;按键响应标记

stated60;系统状态,。

一运行态;1一修改态

keymddb0;修改键标记,B一修改时;C一修改分;D-修改秒

somed60;时间设定单元,保存键盘输入的时间

二代码段

code

;主程序:

;实现8253的设置,中断向量的设置,检测系统大键盘信号,有按键就结束程序返回系统。

mainprocfar

start:

movax,data;设置数据段和附加段

movds,ax

moves,ax

cli;关中断

;设置8253,2l,方式2,输入250kHz,输出200Hz

movdx,233h

mova1,74h

outdx,al

m-dx.231h

movax,1250

outdx,al

moval,ah

outdx,al

;保存原中断向量

a1,Obh

ah,35b

21h

esbxds

︸︸intnushvushPush

;设置新中断向量

movdx,offsetintpro

movax,segintpro

movds,ax

mova1,Obh

movah,25h

tm21h

;打开中断屏蔽

Popds

ina1,21h

Andal,Of7h

out21h,a1

sti;开中断

;等持按键,返回系统

wat:

movah,l

intlbh

jzwat

;回复中断向量

popdx

popds

mova1,Obh

movah,25h

int21h

;退出程序,返回系统

movax,4e00h

In21h

,中断一f程序:

;完成时钟处理、键盘监控和显示功能

tntproprocnear

pushds;保存寄存器

pushax

pushcx

ax

ax,data;设置数据段和代码段寄存器

ds,ax

;不是修改状态才走时钟

nush

;时钟处理模块,以5毫秒为单位调整时、分秒。

elk:

incmsec

nU

鱿、h

cn]nlmmladdamlcn]nl抑mI

addal,l

min,al

min,60h

daa﹄cmP

jnenext

movmin,0

moval,hour

addal,l

daa

movhour,al

cmphour,24h

jnenext

movhour,0

,键盘监控模块

next:

decagekey

jznextl

jmpdsp

nextl:

movagekey,12

movdx,223h;设置PA输出,PB输入

mova1,82h

outdx,al

mova1,0;A口输出低电平,读B口

movdx,220h

outdx,al

movdx,221h

inal,dx

movbh,al

movdx,223h;设置PB输出,PA输入

mova1,90h

outdx,al

moval,();b

movdx,22lh

outdx,al

movdx,220b

inal,dx

movbl,al;i?

andbx,7ffh;去除键码中无用位数

cmpbx,7ffh

jnekeyon;有按键则进入按键处理

movkeyok,0;无按键则清除响应标志退出按键处理

jmpdsp

keyon:

cmp.bx,oldkey

jekeyonl;已经去抖动则直接处理按键

movagekey,4;有新按键则设置键龄退出中断

movkeyok,0

movoldkey,bx

impdsp

keyonl:

cmpkeyok,l

jneII;按键已响应则退出键盘处理

impdsp

11:

movkeyok,l;设立按键响应标记

std

leadi,keyend;指向键码表

movax,bx;读取键号,地址递减,cx的值为键号

movcx,17

repnescasw

jekeyon2

impdsp

keyon2:

movkeynum,cl;保存键号

cmpstate,0;系统在修改态否?

jnekeyon3;跳到修改态的处理

cmpkeynum,0ah;为A键否

jnekeyb

movkeymd,l;作a键修改标志

movhour,0aah沙时显示为一

movstate,l;进入修改态

impdsp

keyb:

cmpkeynum,Obh;为B键否

jnekeye

movkeymd,2;作b键修改标志

movmin,0aah;分钟异示为..

movstate,l;进入修改态

impdsp

keyc:

cmpkeynum,Och;为c键否

jekeycl

impdsp

keycl:

movkeymd,3;作c键修改标志

movsec,0aah

movstate,l;秒显示为..

impdsp

keyon3:

cmpkeynum,9;在修改态,判断是否为数字键

jbekeys;<=9则认为是数字键

impkeyen;否则判断是否为确定键

keyn:

moval,stime滋取输入时间,十进制格式

movc1,4

shlal,cl;在确定以前最后输入的两个十进制数有效

oral,keynum

movstime,al

impdsp

keyen:

cmpkeynum,Ofh;处理f键

jekeyenl

impdsp

keyenl:

movstate,0;恢复到运行态

cmpkeymd,l;将修改内容送小时单元

jnekeyen2

movkeymd,0;清除修改小时标志

empstime,24h;判断输入时间是否>=24

jbkey-3

movhour,0;大于24时,输入为。

movsdme,0;清除时间单元

impdsp

key-3:

moval,stime

movhour,al;

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

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

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

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