倒计时钟课程设计报告.docx

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

倒计时钟课程设计报告.docx

《倒计时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《倒计时钟课程设计报告.docx(28页珍藏版)》请在冰点文库上搜索。

倒计时钟课程设计报告.docx

倒计时钟课程设计报告

 

合肥学院

计算机科学与技术系

 

课程设计报告

2008~2009学年第一学期

 

课程

微机原理

课程设计名称

倒计时数字钟

学生姓名

田元

学号

0604032038

专业班级

06网工二班

指导教师

肖连军

2009-2-15

 

倒计时数字钟

一.题义分析及解决方案:

设计一个接口与七段LED显示器,显示一个倒计时时钟,显示初值为60分00秒,每隔一秒改变一次显示值,60秒为一分钟,LED显示器显示分、秒的动态值。

1题义需求分析:

根据题意设计一个接口和七段LED显示器,本设计能显示一个具有固定初值的倒计时钟,能每隔固定时间间隔(1s),动态刷新显示值,并且能用LED显示器显示分秒的动态值,需要解决如下问题:

1).选择怎样的接口问题?

2).显示设备的选择问题?

3).初值的设置和输入问题?

4).计数值与显示码的转换及动态值显示问题?

5).相关芯片与译码器的选择问题?

2解决问题方法及思路:

1)硬件部分:

根据七段LED显示器的硬件结构,为减少器件的使用量,可以选择芯片8255A,将七段LED显示器与8255A的两个八位并行输出口连接,比如使用8255的A口和B口。

其中,A口用于位选,确定选择哪一个显示灯;B口用于段选择,通过改变B口中的段码,使得显示灯能够显示出相应的时间数字。

8255与七段LED显示器采用的共阴极的接法。

2)软件部分:

根据题义要求,可以设立一个段码表和一个显示缓冲区,以动态刷新的方式,显示四位数字表示的时间。

前者存放的是共阴极方式下数字0---9的段码;后者存放的是显示初值。

设置好8255的工作方式后,运行显示程序,将缓冲区中的数字通过LED灯显示出来。

为消除串码和闪烁,应让每位数字显示2~5毫秒后,关闭显示,之后再显示下一个数字。

四位数字显示完成后,将缓冲区中的时间减少一秒,重复显示,直到时间减少到00分00秒。

二.硬件选择分析

1、8255芯片:

并行输入/输出接口

1)8255的功能分析:

(1)芯片8255在本设计中主要用于选择位码和输出段码,同时也减少了器件数量。

Intel公司生产的可编程并行接口芯片8255A已广泛应用于实际工程中,例如8255A与A/D、D/A配合构成数据采集系统,通过8255A连接的两个或多个系统构成相互之间的通信,系统与外设之间通过8255A交换信息,等等,所有这些系统都将8255A用作为并行接口。

(2)、8255引脚图:

8255是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。

三个端口都可以作为输入端口或输出端口。

A口有三种工作方式:

即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。

8255的工作只有当片选CS效时才能进行。

而控制逻辑端口实现对其他端口的控制。

2)芯片选择——8255与8253的比较:

8255:

RESET:

复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

CS:

片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。

RD:

读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。

WR:

写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。

D0~D7:

三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

PA0~PA7:

端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

PB0~PB7:

端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

PC0~PC7:

端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

8253:

8253具有3个独立的16位计数器,6种不同的工作方式。

计数寄存器用来寄存计数初值,计数工作单元为16位减1计数器,它的初值便是计数寄存器内容,计数单元对CLK脉冲计数,每出现一个CLK脉冲,计数器减1,当减为零时,通过OUT输出指示信号表明计数单元已为零。

当作为定时器工作时,每当计数单元为零时,计数寄存器内容会自动重新装入计数单元,而且CLK输入是均匀的脉冲序列,于是OUT输出频率是降低了的(相对于CLK信号频率)脉冲序列。

当作为计数器工作时,表明只关心在CLK端出现(代表事件)的脉冲个数,当CLK端出现了规定个数的脉冲时,OUT输出一个脉冲信号

3)8255A的引脚信号

(1).与外设相连的

图2-18255A内部结构框图

PA7~PA0:

A口数据信号线。

PB7~PB0:

B口数据信号线。

PC7~PC0:

C口数据信号线。

4)8255A的端口录址及操作功能表:

A1

A0

端口号及其功能

0

0

0

1

0

端口A—>数据总线

输入操作(读)

0

1

0

1

0

端口B—>数据总线

1

0

0

1

0

端口C—>数据总线

0

0

1

0

0

数据总线—>端口A

 

输出操作(写)

0

1

1

0

0

数据总线—>端口B

1

0

1

0

0

数据总线—>端口C

1

1

1

0

0

数据总线—>控制字寄存器

x

x

x

x

1

未选中8255A,数据总线—>三态

断开功能

1

1

0

1

0

非法状态

x

x

1

1

0

数据总线—>三态

表2-18255A端口录址及操作功能

(1)8255A的方式控制字:

D7D6D5D4D3D2D1D0

1

A组工作方式

A口I/O

C7-c4I/O

B组工作方式

B口I/O

C3-c0I/O

|||||||

特征位00方式01输入1输入0方式01输入1输入

01方式10输出0输出1方式10输出0输出

10方式2

图2-28255A的方式控制字

 

8255A方式选择字

(2)8255A的置位/复位控制字

D7D6D5D4D3D2D1D0

0

×

×

×

写入位编码

写入内容

写入位|编码|

D0~D7000~1110写入0

1写入1

图2-38255A的端口置位/复位控制字格式

(3)8255A的主要技术参数分析

8255A技术参数表

参数名称

符号

测试条件

规范值

最大

最小

输入低电平电压

VIL

0.8v

-0.5v

输入高电平电压

VIH

Vcc

2.0v

输入低电平电压

<数据总线>

VOL

IOL=2.5mA

0.45v

输入低电平电压

<外部端口>

VOL

IOL=1.7mA

0.45v

输入高电平电压

<数据总线>

VOH

IOH=-400μA

2.4v

输入高电平电压

<外部端口>

VOH

IOH=-200μA

2.4v

达林顿驱动电流

IDAR

REXT=750

VEXT=1.5v

4.0mA

1.0mA

电源电流

ICC

120mA

输入负载电流

IIL

I=VCC~0v

+10mA

-10mA

输出浮动电流

IOFL

VOUT=VCco~0v

+10mA

-10mA

表2-28255A的技术参数表

由上可知:

8255A的达林顿驱动电流最大值为4.0mA。

5)8255在本实验中的作用:

1)8255作为可编程接口芯片实现了外设(LED数码管显示器,逻辑开关)与8086之间的数据传输,解决了两者之间的速度不匹配的矛盾,具有数据缓冲功能。

2)8255的A口工作与方式0,作为输入口,其PA0~PA7分别与逻辑开关的K1~k8相连,其中开关量k8用于判断是否修改时间(若为0不修改,若为1则修改),K6~k7用于判断修改哪一位,K1~k4为要修改的值;B口工作与方式0,作为输出口,其PB0~PB7分别与LED数码管显示器的八段a.b.c.d.e.f.g.dp相连,C口作为输出口,其PC0~PC3L分别与LED数码管显示器的ED3~LED0相连,作为位选。

6)CPU接口(数据总线缓冲器和读/写控制逻辑)

(1)数据总线缓冲器

这是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的。

这个缓冲器是8255A与CPU数据总线的接口。

所有数据的输入/输出,以及CPU用输出指令向8255A发出的控制字和用输入指令从8255A读入的外设状态信息,都是通过这个缓冲器传递的。

(2)读/写控制逻辑

它与CPU的6根控制线相连,控制8255A内部的各种操作。

控制线RESET用来使8255A复位。

和地址线A1及A0用于芯片选择和通道寻址。

控制线和用来决定8位内部和外部数据总线上信息传送的方向,即控制把CPU的控制命令或输出的数据送到相应的通道,或把状态信息或输入数据送到CPU。

8255A的读/写控制逻辑的作用,是从CPU的地址和控制总线上接受输入的信号,转变成各种命令送到A组或B组控制电路进行相应的操作。

7)与CPU相连的

RESET:

复位信号。

当信号来时,所有寄存器都被清除。

同时三个数据端口被自动置为输入端口。

D7~D0:

它们是8255A的数据线和系统总线相连。

CS:

片选信号。

在系统中,一般根据全部接口芯片来分配若于低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,于8255A被选中。

只有当有效时,读信号写才对8255进行读写。

RD:

读信号。

当此信号有效时,CPU可从8255A中读取数据。

WR:

写信号。

当此信号有效时,CPU可向8255A中写入数据。

A1、A0:

端口选择信号。

8255A内部有3个数据端口和1个控制端口,共4个端口。

规定当A1、A0为00时,选中A端口;为01时,中B端口;为10时,选中C端口;为11时,选中控制口。

2选择器件LED:

1)芯片在本设计中的作用:

LED发光二极管在本设计中采用7段数字发光二极管,作为终端显示。

显示时间的分秒。

2)LED的功能分析:

物理构造:

LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。

3)工作原理:

当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。

4)数字成像:

将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。

有段选码和位选码确定数字1~8的输出并在延时程序中保持复位。

它是一种当外加电压超过额定电压时发生击穿,并因此而产生可见光的器件。

这种数码管是有7段或8段笔画显示器组成一个字符而形成的。

 

如下图:

 

(a)(b)(c)

(d)

图2-4LED结构图

 

LED显示管段选码编码表

数字

dp

g

f

e

d

c

b

a

二进制编码

0

0

0

1

1

1

1

1

1

3Fh

1

0

0

0

0

0

1

1

0

06h

2

0

1

0

1

1

0

1

1

5Bh

3

0

1

0

0

1

1

1

1

4Fh

4

0

1

1

0

0

1

1

0

66h

5

0

1

1

0

1

1

0

1

6Dh

6

0

1

1

1

1

1

0

1

7Dh

7

0

0

0

0

0

1

1

1

07h

8

0

1

1

1

1

1

1

1

7Fh

E

0

1

1

1

1

0

0

1

79h

表2-3LED显示管段选码编码表

5)LED的技术参数分析

LED发光二极管的压降一般为1.5-2.0V,其工作电流一般取10-20Ma,发光二极管可应用于直流驱动电路、交流驱动电路和脉冲驱动电路。

由于8255A的最大驱动电流为4.0mA,而LED的工作电流一般为10-20mA,所以需要加一个驱动器74LS244。

3、74LS244芯片:

1)74LS244在本设计中的作用:

(1)数据的缓冲驱动,传递地址和数据信号。

(2)是数据总路线收发器,也是三态的总线收发器。

具有八个输入引脚和八个输出引脚,两个使能端。

当它的使能端为有效低电平时,输出端就能将输入信息放大输出。

 

2)74LS244的逻辑图及真值表

输入

输出

G

A

Y

L

L

L

L

H

H

H

X

X

2-574LS244逻辑图表2-474LS244真值表

3)74LS244的主要技术参数

表2-574LS244的主要技术参数

4、开关

1)开关的作用:

本次设计需要用七位开关置数来修改时间。

2)开关功能的分析:

注:

由于本程序后来改进加入了时的倒计,所以下面的开关是针对有时、分、秒的设计

开关K4~K1位设置输入的时间数字(0~15),K7~K5用来控制对不时间的时分秒位数的修改,k8控制程序的运行与否,仅当K8为1时即程序停止运行时才可以修改时间。

3)逻辑开关及其编码

 

K4K3K2K1

数字

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

K5K6K7

对应的操作

000

修改秒位的低位

001

修改秒位的高位

011

修改分位的低位

010

修改分位的高位

110

修改时的低位

111

修改时的高位

 

图2-6逻辑开关表2-6逻辑开关逻辑编码表

开关高电平:

+5V、低电平:

0V

三.硬件总逻辑图及其说明

图3-1硬件总逻辑图

AD0~AD19经锁存器分别送往总线收发器和地址译码器。

经总线收发器将低八位数据与8255的八位数据线相连地址线A1、A2与8255的A0、A1相连,即偶地址有效。

控制总线RD、WR、RESET分别与8255相应的控制信号线连接。

片选信号CS0与8255的CS信号连接,则8255的端口地址为04A0~04A6。

8255的PA口用于存放位选码,使用的是高四位,分别连接到四个七段LED显示器上。

使用的是共阴极接法。

PB口用于存放段选码,八位全部连接到八个二极管的阳极上。

所以,PA口中的信号是“0”才能表示选中了该位七段LED显示器,而PB口中信号为“1”表示使该二极管发光,否则,不发光。

四.控制程序设计

1、控制程序设计思路说明:

程序框架是一个主程序用于设置8255的工作方式;一个显示程序用于显示当前的时值、分值和秒值,在其中还设置了一个小的程序用于延时,以稳定显示的数值。

采用动态刷新的方式将六位数字显示一遍。

每遍约20秒的时间,显示约50次可使得时间约为一秒。

然后将时间减少一秒,再次将时间显示出来。

如此循环,直到时间减少到00时00分00秒为止。

2、程序流程图

 

Y

 

N

N

Y

 

图4-1总流程图

修改缓冲区子程序

图4-2计时子程序流程图

显示子程序

 

图4-3显示子程序流程图

3、控制程序

.MODELTINY

PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32BITRAM板卡上的8237提供基地址)

Vendor_IDEQU10EBH;厂商ID号

Device_IDEQU8376;设备ID号

.STACK100

.DATA

IO_Bit8_BaseAddressDW?

msg0DB'BIOS不支持访问PCI$'

msg1DB'找不到StarPCI9052板卡$'

msg2DB'读8位I/O空间基地址时出错$'

COM_ADDDW00F3H;控制口偏移量

PA_ADDDW00F0H;PA口偏移量

PB_ADDDW00F1H;PB口偏移量

PC_ADDDW00F2H;PC口偏移量

lendb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码表

timedb00h,00h,00h,00h,04h,02h

len0db00h,40h,60h,20h,30h,70h

len1db09h,05h,09h,05h,03h,02h

.CODE

START:

MOVAX,@DATA

MOVDS,AX

NOP

CALLInitPCI

CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址

;*********************************************************************

MOVal,89h;10001001b初始化工作方式控制字

MOVdx,COM_ADD;工作方式寄存器端口地址

OUTdx,al

loop3:

MOVdx,PC_ADD;PC口端口地址

INal,dx;读入八位开关量

ANDal,80h;判断最高位K8是否为1

CMPal,80h;为1时设置数据缓冲区初值

JEsetlen

CALLdisplay1;调用显示子程序,显示一秒

CALLalter;调用数据缓冲区修改子程序

JMPloop3

setlen:

MOVbx,offsettime;数据缓冲区送BX

MOVdx,PC_ADD;PC口端口地址

INal,dx;读八位开关量

MOVah,al;AH=AL保存数据,下面的操作会改变al的值

ANDax,0f70h;选取567进行输入选择判断,并保留ah中的低四位

MOVsi,offsetlen0

loop0:

MOVcl,byteptr[si]

CMPal,cl

JNEloop00

MOVbyteptr[bx],ah;读入的开关量低四位存入缓冲

CALLdisplay1;调用显示子程序

JMPloop3

loop00:

INCsi

INCbx

JMPloop0

;*********************************************************************

display1PROC;显示子程序

PUSHsi;保护SI

PUSHdx;保护DX

PUSHcx;保护CX

PUSHbx;保护BX

PUSHax;保护AX

PUSHdi;保护DI

MOVdi,40h;控制1s的计时

loop1:

MOVsi,offsettime;数据缓冲区首地址送SI

MOVcx,6

MOVah,0feh;设置位选选中秒的个位

loop2:

MOVal,byteptr[si];位移量

MOVbx,offsetlen;查表转换

XLAT;查数据段表,[al+bx]->al

MOVdx,PB_ADD;PB口地址

OUTdx,al;送段选码

MOVal,ah;位选码AL

MOVdx,PA_ADD;PA口地址

OUTdx,al

CALLdelay;调用延时子程序

MOVal,0ffh;禁止显示

OUTdx,al

ADDsi,1

ROLah,1

LOOPloop2

DECdi;控制显示一秒

JNEloop1

POPdi

POPax

POPbx

POPcx

POPdx

POPsi

RET

display1ENDP

;*********************************************************************

alterPROC;数据缓冲区子程序

PUSHsi

PUSHax

PUSHbx

PUSHdx

MOVsi,offsettime;数据缓冲区首值送BX

MOVbx,offsetlen1

loop7:

MOVax,[si];缓冲区中的秒值取入ax

MOVdx,[bx]

SUBal,1

CMPal,-1

JGloop6

MOVal,dl

SUBah,1

CMPah,-1

JGloop6

MOVah,dh

MOV[si],ax

INCsi

INCsi

INCbx

INCbx

JMPloop7

loop6:

MOV[si],ax;修改后的值再保存回缓冲区

POPdx

POPbx

POPax

POPsi

RET

alterENDP

;*********************************************************************

delayPROC;延时子程序

PUSHcx

MOVcx,0ffffh

loop5:

LOOPloop5

POPcx

RET

delayENDP

;*********************************************************************

InitPCIPROCNEAR

MOVAH,00H

MOVAL,03H

INT10H;清屏

MOVAH,0B1H

MOVAL,01H

INT1AH

CMPAH,0

JZInitPCI2

LEADX,msg0

InitPCI1:

MOVAH,09H

INT21H

JMPExit

InitPCI2:

MOV

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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