倒计时钟课程设计报告.docx
- 文档编号:8933987
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:28
- 大小:149.94KB
倒计时钟课程设计报告.docx
《倒计时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《倒计时钟课程设计报告.docx(28页珍藏版)》请在冰点文库上搜索。
倒计时钟课程设计报告
合肥学院
计算机科学与技术系
课程设计报告
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时钟 课程设计 报告