微机课程设计zuixin讲解.docx
《微机课程设计zuixin讲解.docx》由会员分享,可在线阅读,更多相关《微机课程设计zuixin讲解.docx(22页珍藏版)》请在冰豆网上搜索。
微机课程设计zuixin讲解
课程设计
课程名称微机课程设计
题目名称计时器(计数3)
学生学院自动化学院
专业班级13电气
(2)班
学号3113001318
学生姓名彭浩
指导老师廉迎战
2015年10月23日
一、概述
1.课程设计的目的
1)巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平。
2)掌握汇编语言程序的编制方法。
8253编程。
2.课程设计的要求
1)系统硬件设计
设计8053定时器计时,8253地址为40H\41H\42\H\43H,控制电路如图:
2)软件编程内容
显示器工作于查询方式,键盘工作于中断方式。
16个按键定义的键值为:
0~F,按任意键在显示器上显示对应键值。
设定8253的通道2工作于方式0,用于事件计数,当计数值为8,按键9次后,发出中断请求信号并显示“EEEEEE”。
显示满30秒时数字清除。
8253只写高8位计数值时,8253的计数是8位计数,还是16位计数?
A、软件实现:
计数结束后,读取计数值,看是0还是0FFH?
B、软件实现:
定时结束后,读取定时数值,看是0还是0FFH?
二、设计思路
微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成。
微处理器,存储器和所有I\O设备之间的信息交换都通过总线进行。
总线包括地址总线,数据总线和控制总线,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构。
8086CPU的地址数据总线AD15-AD0和地址状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离。
控制总线直接和8086CPU相连,这样8086CPU就工作在最小工作方式。
微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8086CPU的简单微型计算机系统就是工作于最小工作方式的8086CPU系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上。
一个基于8088CPU的简单微型计算机系统框图如图所示。
图中键盘与显示器作为外围设备通过接口芯片与系统总线相连。
本次课程设计使用软件是wmd86硬件是TP-PITE5.4板,通过8255可编程并行I/O接口芯片可以对4X4键盘进行扫描,从而可以确定哪一个键被按下,同时又可对七段数码管的输出显示进行控制,从而可以做到按下某个键后在数码管上显示出自己需要显示的相应的字符。
8254可编程定时和计数芯片有三个计数器,利用其中任何一个计数器设置其工作方式为0,其中的out端口接到8259A中断控制器芯片的中断请求端口上,CLK接到板子的KK1+接口上,通过人工触发的方式给计时器送计时脉冲,将计数次数8送进计数器,那么按键KK1+九次后计数器计数终止计数,同时out端口送出一个高电平,这个就是中断请求信号,由此进入中断,中断服务程序里面利用8255芯片对七段数码管进行输出显示控制,让数码管显示“EEEEEE”,最后再在显示程序后设定一个30s的延时子程序,由此实现了“设定
8253的通道2工作于方式0,用于事件计数,当计数值为8,按键9次后,发出中断请求信号并显示“EEEEEE”。
显示满30秒时数字清除”。
三、系统详细原理
1.硬件电路系统设计
1)确定组成电路所用元器件
本次课程设计使用实验室提供的元器件,分别为:
8086微处理器
可编程接口芯片8255A
可编程定时器/计数器8253
可编程中断控制器8259A
74LS07芯片
键盘及数码管显示单元
2)8086CPU的引脚信号和功能
a.引言
如下图所示,是8088/8086CPU的外部结构,即引脚信号图。
图2-58086/8088CPU引脚功能
8088/8086CPU芯片都是双列直插式集成电路芯片,都有40个引脚,其中32个引脚在两种工作模式下的名称和功能是相同的,还有8个引脚在不同的工作模式下,具有不同的名称和功能。
下面,我们分别来介绍这些引脚的输入/输出信号及其功能。
b.两种模式下,名称和功能相同的32个引脚
1VCC、GND:
电源、接地引脚(3),8088/8086CPU采用单一的+5V电源,但有两个接地引脚。
2AD15—AD0(AddressDataBus):
地址/数据复用信号输入/输出引脚(16),分时输出低
16位地址信号及进行数据信号的输入/输出。
3A19/s6—A15/s3(AddressStatusBus):
地址/状态复用信号输出引脚(4),分时输出地址的高4位及状态信息,其中s6为0用以指示8086/8088CPU当前与总线连通;s5为1表明8086/8088CPU可以响应可屏蔽中断;s4、s3共有四个组态,用以指明当前使用的段寄存器,00—ES,01—SS,10—CS,11—DS。
4NMI(Non-MaskableInterrupt)、INTR(InterruptRequest):
中断请求信号输入引脚
(2),引入中断源向CPU提出的中断请求信号,高电平有效,前者为非屏蔽中断请求,后者为可屏蔽中断请求信号。
5RD(Read):
读控制输出信号引脚
(1),低电平有效,用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于M/IO控制信号。
6CLK/(Clock):
时钟信号输入引脚
(1),时钟信号的方波信号,占空比约为33%,即
1/3周期为高电平,2/3周期为底电平,8088/8088的时钟频率(又称为主频)为
4.77MHz,即从该引脚输入的时钟信号的频率为4.77MHz。
7Reset(Reset):
复位信号输入引脚
(1),高电平有效。
8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。
8READ(YReady):
“准备好”状态信号输入引脚
(1),高电平有效。
9TEST(Test):
测试信号输入引脚
(1),低电平有效,TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。
10MN/MX(Minimum/MaximumModelControl)最小/最大模式设置信号输入引脚
(1),该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接+5V时,CPU工
作于最小模式下,当该引脚接地时,CPU工作于最大模式下。
c.最小模式下的24--31引脚
当8088/8086CPU的MN/MX引脚固定接+5V时,CPU处于最小模式下,这时候剩余的
24—31共8个引脚的名称及功能如下:
1INTA(InterruptAcknowledge)中断响应信号输出引脚
低电平有效,该引脚是CPU响应中断请求后,向中断源发出的认可信号,用以通知中断源,以便提供中断类型码,该信号为两个连续的负脉冲。
2ALE(AddressLockEnable):
地址锁存允许输出信号引脚
高电平有效,CPU通过该引脚向地址锁存器8282/8283发出地址锁存允许信号,把当前地址/数据复用总线上输出的是地址信息,锁存到地址锁存器8282/8283中去。
注意:
ALE
信号不能被浮空。
3DEN(DataEnable):
数据允许输出信号引脚
低电平有效,为总线收发器8286提供一个控制信号,表示CPU当前准备发送或接收一项数据。
4DT/R(DataTransmit/Receive):
数据收发控制信号输出引脚
CPU通过该引脚发出控制数据传送方向的控制信号,在使用8286/8287作为数据总线
收发器时,DT/R信号用以控制数据传送的方向,当该信号为高电平时,表示数据由CPU
经总线收发器8286/8287输出,否则,数据传送方向相反。
5IO/M(Memory/Input&Output):
存储器/I/O端口选择信号输出引脚
这是CPU区分进行存储器访问还是I/O访问的输出控制信号。
当该引脚输出高电平时,表明CPU要进行I/O端口的读写操作,低位地址总线上出现的是I/O端口的地址;当该引脚输出低电平时,表明CPU要进行存储器的读写操作,地址总线上出现的是访问存储器的地址。
⑥WR(Write):
写控制信号输出引脚
低电平有效,与IO/M配合实现对存储单元、I/O端口所进行的写操作控制。
⑦HOLD(HoldRequest):
总线保持请求信号输入引脚高电平有效。
这是系统中的其它总线部件向CPU发来的总线请求信号输入引脚。
⑧HLDA(HoldAcknowledge):
总线保持响应信号输出引脚
高电平有效,表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权。
3)8255A芯片基本资料
a.8255A内部结构如下图所示
1
8255A有3个8位数据接口,即接口A、接口B和接口C。
使用者可以用软件使它们分
时,数据不被锁存;而作为输出端口是,数据被锁存。
2A组控制和B组控制
这两组控制电路一方面接收芯片内部总线上的控制字,一方面接收来自读/写控制逻辑电路的读/写命令,从而解决端口的工作方式和读/写操作。
其中,A组控制电路控制端口A和端口C高4位(PC7-PC4)的工作方式和读/写操作:
而B组控制电路控制端口B和端口C低4位(PC3-PC0)工作方式和读写操作。
3读/写控制逻辑电路
读/写控制逻辑电路负责管理8255A的数据传输过程。
它接收来自系统总线的信号A1,
A0和控制总线信号RESET、WR、RD,将这些信号组合后,得到A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,完成对数据、状态信息的传输。
4数据总线缓冲器
这是个双向三态8位数据缓冲器,8255A通过它与系统数据总线相连。
输入数据、输出数据、CPU发给8255A的控制字都是通过这个缓冲器传递的。
b.8255的引脚信号
1与外部设备端相连的引脚
PA7-PA0:
A端口的输入/输出引脚。
PB7-PB0:
B端口的输入/输出引脚。
PC7-PC0:
C端口的输入/输出引脚。
2与CPU相连的引脚
RESET:
复位信号,低电平有效。
当RESET信号来到时,所有内部寄存器都被清0,同时3个端口被自动设为输入端口。
D7-D0:
8255A的数据线,和系统数据总线相连。
CS:
芯片选择信号。
只有当CS有效时,读出信号RD和写入信号WR才对8255A有效。
RD:
读出信号。
CPU通过IN指令使RD有效,将数据或状态信息从8255A中读到CPU。
WR:
写入信号。
CPU通过OUT指令使WR有效,将数据或状态信息从CPU中写道8255A.
A1,A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定A1,A0为00、01、10和11时,分别选中端口A、端口B、端口C和控制端口。
c.8255的控制字
①方式选择控制字
(1)方式选择控制字把A、B、C三个端口分为A、B两组来设定工作方式。
A组包括端口A和端口C的上半部,B组包括端口B和端口C的下半部。
(2)端口A可工作于3种方式中的任何一种;端口B只能工作于方式0和方式1;而端口
C除用作输入、输出口(方式0)外,通常用来配合端口A和端口B提供联络控制信号和状态信号。
(3)归在同一组的两个端口可分别作为输入端口或输出端口,不要求同为输入或输出。
②端口C按位置位/复位控制字
(1)端口C按位置位/复位控制字尽管是对端口C进行操作的,但此控制字必须写入控制口,而不写入端口C。
(2)一个控制字只能完成端口C中某一位置的置1或置0,要对多位置1或置0,必须使用多个控制字。
d.实验中8253对应端口地址
如下表所示:
实验系统中8255A对应的端口地址表
信号线
A口
B口
C口
控制寄存器
IOY0
0600H
0602H
0604H
0606H
IOY1
0640H
0642H
0644H
0646H
IOY2
0680H
0682H
0684H
0686H
IOY3
06C0H
06C2H
06C4H
06C6H
4)8253工作原理
a.8253工作方式
8253可编程计数器/定时器的工作频率为0~2MHz,它有3个独立编程的计数器,每个计数器有三个引脚,分别为时钟CLK、门控GATE、计数器和计时结束输出OUT,每个计数器分别有6种工作方式。
下面仅对方式1和方式2的工作原理进行简述。
①方式1:
可编程单稳,即由外部硬件产生的门控信号GATE触发8253而输出单稳脉冲。
计数器装入计数初值后,在门控信号GATE由低电平变高电平并保持时,计数器开始计数,此时输出端变成低电平并开始单稳过程。
当计数结束时,输出端OUT转变成高电平,单稳过程结束,在OUT端输出一个单稳脉冲。
硬件再次触发。
OUT端可再次输出一个同样的单稳脉冲。
单稳脉冲的宽度由装入计数器的计数初值决定。
在WR信号的上升沿(CPU写控制字之后),输出端OUT保持高电平(若OUT原为低电平则变为高电平)。
CPU写入计数值后,计数器并不马上开始计数,而要等到门控信号GATE启动之后的下一个CLK的下降沿才开始。
在整个计数过程中,输出端OUT保持低电平直至计数值至0,OUT变为高电平为止。
②方式2:
速率发生器,其功能如同一个N分频计数器。
其输出是将输入时钟按照N计数值分频后得到的一个连续脉冲。
在该方式下,当计数器装入初始值开始工作后,输出端OUT将不断地输出负脉冲,其宽度为一个时钟周期的时间,而两个负脉冲间的时间脉冲个数等于计数器装入的计数初值。
若计数初值为N,则每N个输入脉冲输出一个脉冲。
当CPU写完控制字后,输出端OUT转变成高电平,计数器将立即自动开始对输入CLK时钟计数。
在计数过程中,OUT端始终保持高电平,直至计数器的计数值减到1时,OUT端才变为低
电平,其保持的宽度为一个输入CLK时钟周期的时间,然后输出端OUT恢复高电平,计数器重新开始计数。
b.8253控制字格式
SC1SC0为计数器选择位,RL1RL0为计数器读写操作选择位,以确定计数器进行装入或读出是单字节还是双字节,M2、M1、M0为计数器工作方式选择位,BCD表示计数器计数方式选择位。
c.8253的内部结构框及引脚
如下图所示:
①数据总线缓冲器及数据总线D0~D7
这是8253与CPU数据总线连接的8位双向三态缓冲器,是8253内部总线与CPU系统的8位数据总线之间的接口。
CPU通过它写方式控制字到控制字寄存器,写计数初值到计
通过编程向8253
数通道,读取计数通道的当前计数值。
即数据总线缓冲器有三个基本功能:
写入确定8253工作方式的命令;向计数寄存器装入计数初值;读出当前计数值。
内数只高控②能器部制阻的状字有写读这寄入态读是/3写。
写不存个控8当器能,2独制5以读片仅3立逻选出及能内的辑。
进对信部计及行控号操数控制写有作通制操寄效的道引时作存控和脚(。
器制低的部1电写分各个平入,个控)。
端制当,按口字片照的寄选读C存信PC器号UP/写U共发操来可作4的以的个读对选端写择为8口信2见高,5号3下电由及表某平地。
时端A址1口,信和数进号注据行A来意
3控制字寄存器
4计数通道
d.实验中8253对应端口地址
如下表所示:
实验系统8253对应的端口地址表
信号线
计数器0
计数器1
计数器2
控制寄存器
IOY0
0600H
0602H
0604H
0606H
IOY1
0640H
0642H
0644H
0646H
IOY2
0680H
0682H
0684H
0686H
IOY3
06C0H
06C2H
06C4H
06C6H
5)8259A中断控制器
a.引言
b.工作原理
c.实验中8259A对应端口地址6)存储器芯片,接口芯片与系统总线的连接存储器芯片,接口芯片与系统总线的连接就是如何把存储器芯片和接口芯片挂到系统的三类总线上。
存储器芯片和接口芯片与数据总线的连接比较简单,因为是简单系统,对数据总线的负载能力没有特别的要求,所以只要把存储器芯片和接口芯片的数据引脚与数据总线相应各位作并联就可以。
连接到芯片上的控制总线不多,常用的有IO/M,RD,WR,RESET等信号,这些信号
线也都是与各芯片的有关引脚做并联连接。
存储器芯片,接口芯片与地址总线的连接原则上是一样的,低地址线与存储器芯片或接口芯片的地址引脚直接并联连接,用来作为芯片内部单元的选择,高位地址线经译码器译码后一般连接到芯片的片选端作为芯片的选择。
一般高位地址线的低位部分作为译码器的译码
输入,高位部分则作为译码器译码的许可条件。
由于80886CPU的端口地址采用独立编址方式,为了区分是存储器芯片地址还是接口芯片地址,一定要把IO/M信号参与到芯片的片选端控制。
本次设计的连接图如下所示:
7)接口芯片与外围设备的连接
采用8255A接口芯片作为4*4键盘与6位七段数码管显示器的接口。
如下图所示:
a.8255A接口芯片与4*4键盘的连接
图中有4行4列,4根行线通过74LS07芯片与PA3~PA0相连,4根列线与PC7~PC4相连。
按键设置在行、列交点处,行、列线分别连接到按键开关的两端。
当列线通过上拉电阻接+5V时,就被钳位在高电平状态。
键盘中有无按键按下是由行线送入全扫描字、列线读入行线状态来判断的。
这就是:
给行线所有I/O线均置成低电平,然后读入列线电平状态。
如果有按键按下,总会有一根列线电平被拉置底电平,从而使列线输入不全为1。
键盘中哪一个键按下是由行线逐行置低电平后,检查列线输入状态予以确定的。
其方法是:
依次给行线送低电平,然后查所有列线状态,如果全为l,则所按下之键不在此行。
如
果不全为1,则所按下之键必在此行。
而且是在与0电平行线相交的交点上的那个键。
键盘的工作方式采用编程扫描工作方式,即通过调用键盘子程序来响应键输入的要求,在键盘扫描子程序中完成下述功能:
1)判断键盘上有无键按下。
其方法是先使PA3~PA0=O,然后读PC7~PC4的状态,若为全1,则键盘中无键按下;若不全为1,则说明键盘中有键按下。
2)去除按键的机械抖动影响。
对于由机械触点构成的按键,由于机械触点的弹性作用,触点在闭合及断开瞬间有一个抖动过程,一般为5~10ms时间。
为了消除抖动影响可作这样处理,当判断有键按下后,软件延时一段时间再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键按下,否则按键抖动处理。
3)求按下键的键值及键号。
键盘上的缚个键都对应一个键值。
键值的组成,低8位为扫描该键时的行线输出值(PA3~PA0),高8位为该键按下时的列线输入值(PC7~PC4为有效位其余位令其为1)。
4)为保证键闭合一次CPU仅进行一次键功能操作。
程序中需要等待键释放以后再将键号送累加器AH。
键盘的工作方式还有定时扫描及中断工作方式,前者是一种定时中断,CPU响应中断后对键盘进行扫描,并在有键按下时转入键功能处理程序。
中断工作方式只有在键盘按下时,才执行键盘扫描,并执行该键的功能程序。
b.显示电路的连接
在程序内设置8255的控制字D2-D1位分别为00,使B端口工作在方式0作为输出端,PB0-PB7分别对应连接数码管的A-DP。
七段发光二极管为阳极LED器件。
要让A段点亮,要求PB0输出高电平“1”,要使B段熄灭,要求从PB1输出低电平“0”。
其余各段以此类推。
要使LED上显示0-F十六个数字,需要按照如下段码表来驱动数码管的七段LED。
显示字符
0
1
2
3
4
5
6
7
七段代码
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
显示字符
8
9
A
b
C
d
E
F
七段代码
7FH
6EH
77H
7CH
39H
5EH
79H
71H
8)LED显示器的工作方式
LED数码管是目前最常用的数字显示器,图A、B为共阴管和共阳管的电路,图C为
两种不同出线形式的引出脚功能图。
一个LED数码管可用来显示一位0~9十进制数和一个小数点。
小型数码管(0.5寸和0.36寸)每段发光二极管的正向压降,随显示光的颜色不同略有差别,通常约为2~2.5V,每个发光二极管的点亮电流在5~10mA。
LED数码管要显示BCD码所表示的十进制数字就需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。
LED数码管符号及引脚功能图
LED显示器有静态和动态两种工作方式。
LED显示器工作在静态显示方式下,共阴极或共阳极连接在一起,然后接地或+5V,每位的段选线(A、B...G、H)与一个8位并行口相连。
这样,只要在每一位的段选线上保持段选码电平,该位就能保持相应的显示字符。
在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位的I/O口控制,即控制段选码而共阴极点或共阳极点分别由相应的I/O线控制即控制位选码,这就是动态显示。
4位LED动态显示电路只需一个8位I/O口及一个4位I/O口,其