计时时钟.doc

上传人:wj 文档编号:2128869 上传时间:2023-05-02 格式:DOC 页数:18 大小:284KB
下载 相关 举报
计时时钟.doc_第1页
第1页 / 共18页
计时时钟.doc_第2页
第2页 / 共18页
计时时钟.doc_第3页
第3页 / 共18页
计时时钟.doc_第4页
第4页 / 共18页
计时时钟.doc_第5页
第5页 / 共18页
计时时钟.doc_第6页
第6页 / 共18页
计时时钟.doc_第7页
第7页 / 共18页
计时时钟.doc_第8页
第8页 / 共18页
计时时钟.doc_第9页
第9页 / 共18页
计时时钟.doc_第10页
第10页 / 共18页
计时时钟.doc_第11页
第11页 / 共18页
计时时钟.doc_第12页
第12页 / 共18页
计时时钟.doc_第13页
第13页 / 共18页
计时时钟.doc_第14页
第14页 / 共18页
计时时钟.doc_第15页
第15页 / 共18页
计时时钟.doc_第16页
第16页 / 共18页
计时时钟.doc_第17页
第17页 / 共18页
计时时钟.doc_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计时时钟.doc

《计时时钟.doc》由会员分享,可在线阅读,更多相关《计时时钟.doc(18页珍藏版)》请在冰点文库上搜索。

计时时钟.doc

课程

微机原理与技术

课程设计名称

计时时钟

计时时钟

1、题义分析与解决方案:

1.1 题义需求分析:

该题目要求设计一个接口与七段LED显示器,显示一个计时时钟,显示初值为0,每隔一秒改变一次显示值,60s为一分钟,60min为一小时,LED显示器循环显示时、分、秒的动态值。

根据要求提出以下几点问题:

(1)选择用于显示时间的显示器;

(2)怎样使显示器实现显示时间;

(3)如何实现计时功能,是用软件还是硬件实现;

(4)选择何种接口芯片以及考虑该接口芯片及LED显示器的技术参数,考虑最大工作电流,需不需要其他辅助芯片等。

1.2 解决问题方法及思路:

1.2.1 硬件部分:

(1)接口芯片选择问题:

秒位设置完毕后,如何将时间信息传送到外设中,即选择何种芯片用于CPU与外设之间传送信息。

接口芯片是微型机系统中实现输入输出的常用器件,是CPU与外设之间的界面,一方面要接收CPU进行输入/输出所发出的一系列信息,另一方面又要与外设交换数据以及一些联络信号等。

为增加本设计的灵活性,在接口的选择上要求是可编程的输入/输出接口8255或8155。

表1-1 8255A与8155A的比较

芯片

8255A

8155A

功能

可作为单片机与外设连接的接口电路

可作为单片机与外设连接的接口电路

关键参数

40条引脚,单一+5V电源供电

40条引脚,单一+5V电源供电

可编程

价格

2.2$

3.74$

易用性

使用灵活

比8255差,使用较少

8255A芯片:

它是一种可编程通用并行接口芯片,它有24条可编程的I/O引脚,采用40脚双列直插式封装,单一+5V电源,全部输入/输出均与TTL电平兼容。

在8255A中有A、B、C三个并行输入/输出端口,其功能全部由程序设定,每个端口都有自己的特点。

A口、B口通常作为独立的I/O端口使用,C口也可以作为一般的I/O端口使用,但当A口、B口作为应答式的I/O端口使用时,C口分别以来为A口、B口提供应答控制信号。

如果采用8255A作为计时时钟的输入/输出接口,那么8255A的三个端口设置如下:

A口工作与方式0,作为输出口,其PA0~PA6分别与外设的段选码相连,用以确定在何时显示时间的哪一位;B口工作与方式0,作为输出口,其PB0~PB7分别与外设相连,作为位选线;C口用来为A口、B口提供应答控制信号。

8251A芯片:

它是一种可编程通用串行接口芯片,是通用的同步异步接收/发送器,它的作用是把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,它可以通过编程选用同步/异步通信方式,它具有独立的发送器和接收器,能够以单工、半双工或全双工方式进行通信,并提供相应的控制信号。

最佳解决方案:

如果采用8251A作为计时时钟的输入/输出接口,那么就需要把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,这个过程是需要时间的,所以从时间效率方面来说并没有8255A芯片合适;另外,可编程并行接口(8255A)的是数据传输速度快,虽然使用的通信线多,但是传输距离并不算远,所以在解决接口问题时,采用可编程并行接口(8255A)是比较合适的。

(2)时间的显示问题:

为实现计时时钟的显示,可选择芯片LCD或LED。

表1-2 LCD与LED的比较

LCD

液晶显示器,通过液晶和彩色过滤器过滤光源,在平面面板上产生图象,具有零辐射,低耗能,散热小,纤薄轻巧,精确还原图象,显示字符锐利,屏幕调节方便,可视角度小,响应时间过慢,亮度可对比度低等特点

LED

发光二极管,是由发光二极管排列组成的显示器件,它采用低电压扫描技术,具有耗电少,使用寿命长,成本低,亮度高,故障少,视角大,视角大,可视距离远的特点

通过分析和对比,LED显示器要较优于LCD显示器,因此本实验选择LED 来实现时间的显示

(3)秒钟的设计问题:

两种解决方案:

硬件实现、软件实现

(1)硬件分析:

可选择8253A芯片,8253A是一种定时准确、使用方便、灵活性大的可编程定时器/计数器,其定时的时间长度可以通过软件来设置,对芯片设置处置初值后,计数器开始工作,微处理器就可以去做其他工作,定时时间到,电路会产生一个信号,向微处理器提出中断请求,告诉处理器定时时间已到。

(2)软件分析:

为实现1秒长度的设定,可执行一个循环程序,通过循环次数和循环嵌套的层数来调节计时时间的长短,该方法的优点是不需要专用的硬件,从而成本低,方法简单灵活,使用起来也比较容易。

(3)最佳解决方案:

通过以上分析,硬件实现1秒的设定虽然较准确,但用软件来实现可以极大的节约成本,而且通过周密的计算循环的次数和循环嵌套的层数也可以将计时的准确度提高,所以在实现计时时间方面选择软件是比较好的方案。

1.2.2 软件部分:

初始值设置:

在程序中的数据段定义秒位数据second,分位数据minute,时位数据hour,初始值都设为00h,并在LED显示器上显示初值;

8255初始化:

设置8255的工作方式:

B口和C口都用于输出,且都工作于方式0;

计时:

从初值开始显示,当显示了1s时,秒位加1,并判断秒位是否为60,若不是,则直接显示时间;若是,则将秒位置0,分位加1,接着判断分位是否为60,若不是,则直接显示;若是,则将分位置0,时位加1,然后判断时位是否为25,若不是,则直接显示;若是,则将时位置0,日期加1,并判断日期是否加到31,若是,则将日期清零,重新计时。

如此循环。

1秒时间的设定:

执行一个循环程序,通过循环次数和循环嵌套的层数来调节计时时间的长短,该循环次数处定为0100h。

2、硬件设计:

2.1 选择芯片8255:

2.1.1 芯片8255A在本设计设计中的作用:

8255是并行的I/0接口芯片,内部有三个相互独立的8位数据端口。

8255实现了外设与8086之间的数据传输。

8255的B口工作于方式0,作为输出口,其PB0~PB7分别与LED数码管显示器的显示器的八段a,b,c,d,e,f,g,dp相连,C口作为输出口,其PC7~PC0与LED数码管显示器的LED0~LED7相连,作为位选。

2.1.2芯片8255的功能分析:

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

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

A口有三种工作方式:

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

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

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

当8255工作于方式0时,即基本输入输出方式时,可将三个数据端口划分为四个独立的部分:

A口和B口作为两个8位端口,C口的高4位和低4位可以用作两个4位的输入输出口,各个端口都可独立地用作输入或输出。

(2)CPU接口:

数据总线缓冲器:

这是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的,它可与系统的DB直接相连,实现CPU和8255A之间的信息传送;读写控制逻辑:

用于管理数据、控制字或状态字的传送,接收来自CPU的地址信息及一些控制信号,然后向A组、B组控制电路发送命令,控制端口数据的传送方向。

2.1.3 8255部分技术参数:

8255A的方式控制字:

(见图2-1)

图2-1 8255A的方式控制字

表2-1 8255A的部分技术参数

标识符

最小

最大

测试条件

输入低电平(VIL)

-0.5V

0.8V

输入高电平(VIH)

2.0V

5V

输出低电平(VOL)DB

0.45V

IOL=2.5mA

输出低电平(VOL)PER

0.45V

IOL=1.7mA

输出高电平(VOH)DB

2.4V

IOH=-400μA

输出高电平(VOH)PER

2.4V

IOH=-200μA

驱动电流

-1.0mA

-4.0mA

REXT=750Ω,VEXT=1.5V

供应电流

120mA

IIL(INPUTLOADCURRENT

±10μA

VIN=0V~5V

IOFL(Outputfloatleakage

±10μA

VOUT=0.45~5V

技术参数分析:

8255A工作的最低输入电压-0.5~0.8V,最高输入电压是2.0~Vcc电压,从这两者之间的区域来看,逻辑电平的差值还是比较大的;另外在数据总线上的逻辑电平是2.4V,输入的负载电流为在最大电流为±10mA,电源的电流是120mA,驱动电流在-1.0mA~-4.0mA之间

2.1.4 8255与外设相连的逻辑图:

(见图2-3)

图2-3 8255与外设相连的逻辑图

PA7~PA0:

A口数据信号线;

PB7~PB0:

B口数据信号线;

PC7~PC0:

C口数据信号线。

2.2选择器件LED:

2.2.1 LED在本设计中的作用:

LED发光二级管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,是作为终端用来显示计时时钟的分秒值用的。

2.2.2 LED功能分析:

LED发光二级管分为共阳极和共阴极两种,共阳就是7段的显示字码共用一个电源的正极,原理示意图如下:

(见图2-4)

图2-4 LED原理图

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

从上图可以看出,要是数码管显示数字,有两个条件:

1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。

这样才能显示的。

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

2.2.3 LED技术参数:

表2-2 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

0

1

1

03H

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

9

0

1

1

0

1

1

1

1

6FH

A

0

1

1

1

0

1

1

1

77H

B

0

1

1

1

1

1

0

0

7CH

C

0

0

1

1

1

0

0

1

69H

D

0

1

0

1

1

1

1

0

5EH

E

0

1

1

1

1

0

0

1

79H

F

0

1

1

1

0

0

0

1

71H

表2-3 LED显示管参数

Pcw

If

Vr

Ir

If

P

对应型号

散射颜色

BT235—2

70

25

5

≥1.5

≤2.5

200

SEL—10

BT1441529

100

40

5

≥0.5

≤2.5

565

绿

BT1341529

100

40

5

≥0.5

≤2.5

585

LED技术参数说明:

通过以上所列出的LED技术参数,可以总结出发光二极管的压降一般为1.5~2.0V,即工作电压要求不高,而且构造简单,其工作电流一般取10~20mA为宜。

2.3 硬件总逻辑图及其说明:

2.3.1 实验与原理图的相关说明:

8086的8位数据线D7~D0与8255的D7~D0相连,地址线经74LS373锁存后其低位A0、A1分别与8255的A0、A1相连,其他地址线经74LS138译码后,其CS0接8255的片选CS8255引脚,其入口地址为34F0H~34F3H。

8255的A口PA0~PA6分别与逻辑开关的K1~K7相连,其中开关量K7用于判断是否修改时间,K5~K6用于判断修改哪一位,K1~K4为要修改的值;B口作为段选;C口作为位选。

2.3.2 实验组成原理图:

(见图2-6)

图2-6 实验组成原理图

3、控制程序设计:

3.1 控制程序思路说明:

(1)初始化8255A,设置其工作方式;

(2)设置初值,定义对应十六进制数的七段代码表及其时间区表

(3)显示计时并循环判断,当1秒时间到是则秒位加1计时显示。

(4)8255A芯片的相关地址如下:

端口地址:

34F3H

A口地址:

00F0H

B口地址:

00F1H

C口地址:

00F2H

3.2 流程图:

见图3-1

3.3 程序流程图的相关说明:

首先对8255进行初始化,然后开始读取开关量,判断是否要修改时间,若需修改,则判断需修改哪位,随后将该位对应的时间区数据修改为逻辑开关K1~K4对应的值,若不需要修改则继续显示并循环判断,当1秒时间到达时,则秒位加1计时显示。

3.4 控制程序:

.MODEL TINY

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

Vendor_ID EQU 10EBH ;厂商ID号

Device_ID EQU 8376 ;设备ID号

.STACK 100

.DATA

IO_Bit8_BaseAddress DW ?

msg0 DB 'BIOS不支持访问PCI$'

msg1 DB '找不到StarPCI9052板卡$'

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

COM_ADD DW 00F3H ;控制口偏移量

PA_ADD DW 00F0H ;PA口偏移量

PB_ADD DW 00F1H ;PB口偏移量

PC_ADD DW 00F2H ;PC口偏移量

.CODE

START:

MOV AX,@DATA

MOV DS,AX

NOP

CALL InitPCI

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

MOVBX,OFFSETTAB ;LED数码管的换码的偏移地址

MOVDX,COM_ADD;8255初始化

MOVAX,90H

OUTDX,AX;A口输入,B口输出,C口低位输出,且都工作于方式0

A1:

MOVCX,0100H ;送一秒时间常数

A2:

MOVSI,OFFSETSECOND ;读入秒变量的偏移地址

MOVDX,PA_ADD

INAX,DX ;从A口读取开关量

PUSHCX ;保存时间常数

MOVAH,AL

ANDAH,0F0H

CMPAH,70H ;判断是否修改时间

JAREM3 ;若等于0,不修改

CMPAH,00H

JZA3

CMPAH,10H

JZA4

CMPAH,20H

JZA6

CMPAH,30H

JZA7

CMPAH,40H

JZA9

CMPAH,50H

JZA11

CMPAH,60H

JZA13

JMPA14

A3:

MOVAH,[SI] ;修改秒位低位

ANDAH,0F0H

ORAL,AH

MOV[SI],AL

JMPD1

A4:

MOVAH,[SI] ;修改秒位高位

ANDAH,0FH

MOVCL,04H

SHLAL,CL

CMPAL,60H ;若修改值在0~5之间才能修改

JBA5

JMPD1

A5:

ORAL,AH

MOV[SI],AL

REM3:

JMPD1

A6:

MOVAH,[SI+1] ;修改分位低位

ANDAH,0F0H

ANDAL,0FH ;禁止显示

ORAL,AH

MOV[SI+1],AL

JMPD1

A7:

MOVAH,[SI+1] ;修改分位高位

ANDAH,0FH

MOVCL,04H

SHLAL,CL

CMPAL,60H

JBA8 ;若修改值在0~5之间才能修改

JMPD1

A8:

ORAL,AH

MOV[SI+1],AL

JMPD1

A9:

MOVAH,[SI+2] ;修改时位低位

ANDAH,0F0H

ANDAL,0FH ;禁止显示

CMPAL,40H

JBA10 ;若修改值在0~3之间才能修改

JMPD1

A10:

ORAL,AH

MOV[SI+2],AL

JMPD1

A11:

MOVAH,[SI+2] ;修改时位高位

ANDAH,0FH

MOVCL,04H

SHLAL,CL

CMPAL,30H

JBA12 ;若修改值在0~2之间才能修改

JMPD1

A12:

ORAL,AH

MOV[SI+2],AL

JMPD1

A13:

MOVAH,[SI+3] ;修改日位低位

ANDAH,0F0H

ANDAL,0FH ;禁止显示

ORAL,AH

MOV[SI+3],AL

JMPD1

A14:

MOVAH,[SI+3]

ANDAH,0FH

MOVCL,04H

SHLAL,CL

ORAL,AH

MOV[SI+3],AL

D1:

MOVCX,0004H ;分秒切换

MOVAH,0FEH;位选码11111110

D2:

MOVAL,[SI] ;把时间常数放入AL中

ANDAL,0FH;取分/秒个位

PUSHCX

MOVCX,0002H

D3:

XLAT ;换码

MOVDX,PB_ADD

OUTDX,AL ;送段选码

MOVAL,AH

MOVDX,PC_ADD

OUTDX,AL ;送位选码,显示低位

ROlAH,1

PUSHCX

MOVCX,0FFFH ;低位暂留时间

DELAY1:

NOP

NOP

LOOPDELAY1 ;延时子程序

MOVAL,0FFH ;位选码为11111111

OUTDX,AL ;禁止显示

MOVAL,[SI]

SHRAL,04H

POPCX

LOOPD3

INCSI

POPCX

DECCX

JNZD2

POPCX

DECCX

MOVDX,PA_ADD

JNZREM2

INAX,DX ;从A口读取开关量

MOVAH,AL

ANDAH,80H

CMPAH,80H ;判断是否修改时间

JNZREM

MOD1:

MOVSI,OFFSETSECOND ;计时

MOVAL,[SI]

ADDAL,01H ;秒位加1

DAA ;压缩BCD码调整指令

MOV[SI],AL

CMPAL,60H

JNZREM

MOVAL,00H ;秒位置00,分位加1

MOV[SI],AL

MOVAL,[SI+1]

ADDAL,01H

DAA

MOV[SI+1],AL

CMPAL,60H

JNZREM

MOVAL,00H

MOV[SI+1],AL

MOVAL,[SI+2]

ADDAL,01H ;时位加1

DAA ;压缩BCD码调整指令

MOV[SI+2],AL

CMPAL,24H

JNZREM

MOVAL,00H ;时位置00,日位加1

MOV[SI+2],AL

MOVAL,[SI+3]

ADDAL,01H

DAA

MOV[SI+3],AL

CMPAL,30H

JNZREM

MOVAL,00H

MOV[SI+3],AL ;重新计时

REM:

JMPA1

REM2

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

当前位置:首页 > PPT模板 > 商务科技

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

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