计时数字时钟课程设计报告资料Word格式.docx

上传人:b****5 文档编号:18966335 上传时间:2023-01-02 格式:DOCX 页数:22 大小:115.19KB
下载 相关 举报
计时数字时钟课程设计报告资料Word格式.docx_第1页
第1页 / 共22页
计时数字时钟课程设计报告资料Word格式.docx_第2页
第2页 / 共22页
计时数字时钟课程设计报告资料Word格式.docx_第3页
第3页 / 共22页
计时数字时钟课程设计报告资料Word格式.docx_第4页
第4页 / 共22页
计时数字时钟课程设计报告资料Word格式.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

计时数字时钟课程设计报告资料Word格式.docx

《计时数字时钟课程设计报告资料Word格式.docx》由会员分享,可在线阅读,更多相关《计时数字时钟课程设计报告资料Word格式.docx(22页珍藏版)》请在冰豆网上搜索。

计时数字时钟课程设计报告资料Word格式.docx

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

端口号及其功能

1

端口A—>

数据总线

输入操作(读)

端口B—>

端口C—>

数据总线—>

端口A

输出操作(写)

端口B

端口C

控制字寄存器

x

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

三态

断开功能

1

0

非法状态

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

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

D7D6D5D4D3D2D1D0

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的置位/复位控制字

×

写入位编码

写入内容

写入位|编码|

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

外部端口>

IOL=1.7mA

VOH

IOH=-400μA

2.4v

IOH=-200μA

达林顿驱动电流

IDAR

REXT=750

VEXT=1.5v

4.0mA

1.0mA

电源电流

ICC

120mA

输入负载电流

IIL

I=VCC~0v

+10mA

-10mA

输出浮动电流

IOFL

VOUT=VCco~0v

表2-28255A的技术参数表

由上可知:

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

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

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

2)8255的A口工作与方式0,作为输入口,其PC0~PC7分别与逻辑开关的K1~k8相连,其中开关量k8用于判断是否暂停(若为0不暂停,若为1则暂停),k7用于判断是否修改,K5~K6判读修改那一位,K1~k4为要修改的值;

B口工作与方式0,作为输出口,其PB0~PB7分别与LED数码管显示器的八段a.b.c.d.e.f.g.dp相连,C口作为输出口,其PA0~PA3L分别与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的数据线和系统总线相连。

片选信号。

在系统中,一般根据全部接口芯片来分配若于低位地址(比如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

二进制编码

3Fh

06h

2

5Bh

3

4Fh

4

66h

5

6Dh

6

7Dh

7

07h

8

7Fh

E

79h

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

5)LED的技术参数分析

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

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

4、开关

1)开关的作用:

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

2)开关功能的分析:

注:

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

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

3)逻辑开关及其编码

K4K3K2K1

数字

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

9

K5K6

对应的操作

00

修改秒位的低位

修改秒位的高位

01

修改分位的低位

修改分位的高位

图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

图4-1总流程图

修改缓冲区子程序

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

显示子程序

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

3、控制程序

.MODELTINY

COM_ADDEQU0F003H;

控制口偏移量

PA_ADDEQU0F000H;

PA口偏移量

PB_ADDEQU0F001H;

PB口偏移量

PC_ADDEQU0F002H;

PC口偏移量

.STACK100

.DATA

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

段码表

timedb00h,00h,00h,00h

.CODE

START:

loop3:

MOVAX,@DATA

MOVDS,AX

NOP

MOVdx,COM_ADD;

工作方式寄存器端口地址

MOVal,89h;

10001001b初始化工作方式控制字

OUTdx,al

movdx,PC_ADD

inal,dx

andal,80h

cmpal,80h;

/暂停

jzL

CALLdisplay1;

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

CALLalter;

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

JMPloop3

L:

CALLdisplay1

MOVdx,PC_ADD

INal,dx

ANDal,40h

CMPal,40h;

是否修改

JNZstart

A:

MOVsi,offsettime;

数据缓冲区送BX

MOVdx,PC_ADD;

PC口端口地址

INal,dx;

读八位开关量

MOVah,al;

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

ANDax,0f30h;

选取56进行输入选择保留ah低四位

A0:

CMPal,00h

JNZA1

CMPah,10

JBA5

Callerror

A1:

cmpal,10h

jnzA2

addsi,1

cmpah,6

Callerror

jbA5

A2:

cmpal,20h

jnzA3

addsi,2

cmpah,10

A3:

cmpal,30h

jnzA5

addsi,3

jbA5

A5:

MOVbyteptr[si],ah

调用显示子程x

JMPSTART

;

***************************************************************

errorPROC;

输入错误提示子程序

PUSHdx;

保护DX

PUSHax;

保护AX

PUSHsi

PUSHdi

MOVdi,0c8h

LOOp4:

MOVah,00Fh;

设置位选选中

moval,71h

MOVdx,PB_ADD;

PB口地址

OUTdx,al;

送段选码

MOVal,ah;

位选码AL

MOVdx,PA_ADD;

PA口地址

OUTdx,al

CALLdelay

DECdi

JNEloop4

CALLDISPLAY1

popdi

POPsi

POPax

POPdx

JMPLOOP3

errorENDP

*********************************************************************

display1PROC;

PUSHsi

PUSHdx

PUSHcx

PUSHbx

PUSHax

PUSHdi

MOVdi,60;

控制1s的计时

loop1:

数据缓冲区首地址送SI

MOVcx,4

MOVah,0feh;

设置位选选中秒的个位

loop2:

MOVal,byteptr[si];

位移量

MOVbx,offsetlen

XLAT;

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

al

MOVdx,PB_ADD

MOVdx,PA_ADD

ADDsi,1

ROLah,1

LOOPloop2

JNEloop1

POPdi

POPbx

POPcx

POPsi

RET

display1ENDP

alterPROC;

修改数据缓冲区子程序

PUSHsi

PUSHax

PUSHdx

数据缓冲区

MOVax,[si];

缓冲区中的秒值取入ax

ADDAL,1

CMPal,10

JBloop6

MOVal,00h

ADDah,1

CMPah,6

JBloop6

MOVah,00h

MOV[si],ax

INCsi

INCsi

MOV[si],ax

loop6:

MOV[si],ax;

修改后的值再保存回缓冲区

POPdx

alterENDP

********************************************************************

delayPROC;

延时子程序4190us

PUSHcx

MOVcx,500

loop5:

LOOPloop5

POPcx

RET

delayENDP

Exit:

ENDSTART

五.上机调试过程

1、硬件调试:

本实验所用的硬件主要是实验箱和集成的七段LED显示板。

共有四个七段LED显示器,采用的是共阴极接法,七段LED的共阴极接地,CE端接低电平,七段LED的阳极接到八个模拟开关上。

改变开关量,则七段LED显示出相应的数字。

将四个七段LED测试完后,全部正常。

硬件调试成功。

2、软件调试:

1)此次实验的设备原因,在正式编程之前要加入一段设备的初始化程序,检查设备,读取设备的一些信息,然后是自己设计代码完成实验要求,

2)来添加的新的任务中要求初始值可以通过逻辑开关随意设置,这就要对C口的PC0~PC7另外编写一段程序进行相应的判断和控制。

这些都不是很困难,关键是编写的程序既要完成些功能又要简短才行。

若程序太长,虽然可以编译并且链接成功,但显得很烦琐,看起来也很费力。

所以,修改的程序时尽量使用循环控制语句来完成的。

3)有太多的判断,再根据判断转去执行不同的操作,这就需要使用标号,但同样的标号如果使用太多就又会给程序产生逻辑上的混乱,所以我使用查表法将要判断的值存入缓冲区中,要判断时就于与缓冲区中的值比较,这样就使得程序简单

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

当前位置:首页 > 求职职场 > 简历

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

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