微机原理课程设计报告.docx
- 文档编号:29377948
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:23
- 大小:176.88KB
微机原理课程设计报告.docx
《微机原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
微机原理课程设计报告
一、设计要求
(1)南北路口的绿灯、东西路口的红灯同时亮5秒。
(2)南北路口的黄灯闪烁若干次,维持3秒,同时东西路口的红灯。
(3)南北路口的红灯、东西路口的绿灯同时亮5秒。
(4)南北路口的红灯、同时东西路口的黄灯亮烁若干次,维持3秒。
(5)转
(1)重复。
(6)紧急情况可以手动控制红绿灯的变换。
一个开关控制南北绿,东西红,另一个按钮南北红,东西绿。
(7)黄灯闪烁时扬声器发声,提醒。
二、设计目的
(1)了解红绿灯电路的基本工作原理;
(2)了解8086微型计算机的工作过程;
(3)学习8086CPU与外围设备的接口技术。
(4)运用微机原理与接口技术、数字电路、汇编语言程序设计等课程学到的知识,掌握微型计算机接口的方法和原理,具备一定的微机应用开发的实践能力,加深对理论课程的理解。
三、设计的具体实现
原理框图
3.1系统概述本
次设计是模拟交通灯实时控制系统,以8086CPU为核心加以并行接口芯片8255、可编程计数器/定时器8253、LED灯、开关等组成的系统。
以LED灯模拟十字路口的红绿灯。
对交通灯控制的实
现主要是通过编写汇编语言程序对8255的I/O及8253进行控制,从而实现对灯的亮与灭进行控制。
PC口做输入,读取定时,及应急开关状态。
用8253对扬声器的发声进行控制,利用软件编程给定8253芯片某一频率的方波信号,并且设定8255芯片的门控信号PB0=1,则可控制扬声器发声。
利用8253的计数器1方式3、计数器0方式0实现对扬声器的控制,以及对于交通灯亮灭时间的精确延时。
3.28086CPU介绍
8086由执行部件和总线接口部件组成(内部结构图如下图)
8086内部结构图
1.执行部件EU
由算术逻辑单元(ALU)、标志寄存器、通用寄存器组和EU控制器等部件组成。
主要功能是执行指令:
一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。
需要访问存储器取操作数时,EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。
算术逻辑单元(ALU)完成16位或8位的二进制运算;16位暂存寄存器用来暂存参加运算的操作数。
运算结果通过内部总线送到通用寄存器组或BIU的内部寄存器中等待写入存储器。
经ALU运算后的结果特征置入标志寄存器中保存。
负责从BIU的指令队列中取指令,并对指令译码;据指令要求向EU内部各部件发出控制命令以完成各条指令的功能。
2.总线接口部件BIU
由地址加法器、专用寄存器组、指令队列缓冲器和总线控制电路等部件组成;主要功能是形成访问存储器的物理地址,负责与外部(存储器或I/O接口)打交道。
(1)指令队列
可存放6字节的指令代码。
一般情况下指令队列中总是填满指令,使EU可不断地得到执行的指令。
(2)16位地址加法器
专门用来完成由逻辑地址变换成物理地址的功能。
实际上是进行一次地址加法,将两个16位的逻辑地址转换为20位的物理地址,以达到可寻址1M字节的存储空间。
(3)总线控制电路
将8086CPU的内部总线与外部总线相连,是8086CPU与外部交换数据的必经之路。
包括16条数据总线、20条地址总线和若干条控制总线。
3.3可编程并行接口芯片8255
3.3.18255内部结构
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
8255内部结构
1.与CPU连接部分
根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
各信号的引脚编号如下:
(1)数据总线DB:
编号为D0~D7,用于8255与CPU传送8位数据。
(2)地址总线AB:
编号为A0~A1,用于选择A、B、C口与控制寄存器。
(3)控制总线CB:
片选信号、复位信号RESET、写信号、读信号。
当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。
2.与外设接口部分
根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。
各通道的引脚编号如下:
(1)A口:
编号为PA0~PA7,用于8255向外设输入输出8位并行数据。
(2)B口:
编号为PB0~PB7,用于8255向外设输入输出8位并行数据。
(3)C口:
编号为PC0~PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。
3.控制器
8255将3个通道分为两组,即PA0~PA7与PC4~PC7组成A组,PB0~PB7与PC0~PC3组成B组。
相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:
(1)A组控制器:
控制A口与C口高四位的输入与输出。
(2)B组控制器:
控制B口与C口低四位的输入与输出。
3.3.2特性
(1)一个并行输入/输出的LSN芯片,多功能的N/O器件,可作为CPU总线与外围的接口。
(2)具有24个可编程设置的N/O口,即3组8位的N/O口为PA口,PB口和PC口。
它们又可分为两组12位的N/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。
A组可设置为基本输入输出、选通输入输出、双向选通输入/输出;B组只能设置为基本输入输出或选通输入输出两种模式,而这些操作模式完全由控制寄存器的控制字决定。
3.3.3引脚功能
RESET:
复位信号输入引脚,当该输入引脚处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有N/O口均被置成输入方式。
:
芯片选择信号线,当这个输入引脚为低电平时,即
=0时,表示芯片被选中,允许8255与CPU进行通讯,
=1时,8255无法与CPU做数据传输。
:
读信号线,当这个输入引脚为低跳变沿时,即
产生一个低脉冲且
=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
:
写入信号,当这个输入引脚为低跳变沿时,即
产生一个低脉冲且
=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
3.3.4工作方式
8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。
方式0——基本输入输出方式;方式1——选通输入/出方式;方式2——双向选通输入/输出方式;
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
工作于三种方式中的任何一种;
PB0~PB7:
端口B输入输出线,一个8位的N/O锁存器,一个8位的输入输出缓冲器。
不能工作于方式2;
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
不能工作于方式1或2。
A1、A0:
地址选择线,用来选择8255的PA口、PB口、PC口和控制寄存器。
当A1=0,A0=0时,PA口被选择;
当A1=0,A0=1时,PB口被选择;
当A1=1,A0=0时,PC口被选择;
当A1=1,A0=1时,控制寄存器被选择。
3.48253可编程计数/定时器
3.4.1基本概述
Nntel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
3.4.28253内部结构
8253内部结构图
(1)数据总线缓冲器
数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
(2)读/写控制读/写控制分别连接系统的
和
,由CPU控制着访问8253的内部通道。
接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
A1A0:
端口选择信号由CPU输入。
8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。
这4个端口地址由最低2位地址码A1A0来选择,如表1所示。
3.4.3通道选择
(1)
——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。
(2)
、
——读/写控制命令,由CPU输入,低电平有效。
效时,CPU读取由A1、A0所选定的通道内计数器的内容。
有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。
3.4.4计数通道0~2
每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,写入的初值范围为0000H~FFFFH,最大计数值是FFFFH,代表65536。
采用BCD码计数时,写入的初值范围为0000~9999,最大计数值是9999,代表10000。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
必要时可用来锁存计数值。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。
OUT端将有输出。
表示计数次数到。
当某个通道用作定时器时。
由CLK输入一定频率的时钟脉冲。
根据要求定时的时间长短确定所需的计数值。
并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。
OUT将有输出,表示定时时间到。
允许从CLK输入的时钟频在1~2MHz范围内。
因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。
而后者是内时钟脉冲进行减“1”计数。
作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:
定时系数=需要定时的时间/时钟脉冲周期
①设置通道:
向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;
②计数/定时:
向通道写入计数值,启动计数操作;
③读取当前的计数值:
向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:
当计数器减1为0时,通过引脚OUTn向外输出脉冲信号。
计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。
3.4.58253的通道工作方式
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
8253的各种工作方式如下:
(1)方式0:
计数结束则中断
(2)方式1:
可重复触发单脉冲发生器
(3)方式2:
速率波发生器
(4)方式3:
方波发生器
(5)方式4:
软件触发方式计数
(6)方式5:
硬件触发方式计数
在上述各工作方式中,GATE作为各通道的门控信号,对于各种不同的工作方式,它所起的作用各不相同。
在8253的应用中,必须正确使用GATE信号,才能保证各通道的正常操作。
3.3.6读取计数器的当前值
⑴直接读计数器:
输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。
但由于计数器处于工作状态,读出值不一定能稳定。
⑵先锁存再读取:
①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。
②读计数器通道(有锁存器)。
3.58284始终发生器/驱动器
在8086CPU内部没有有时时钟发生器,当组成微型机系统时,所需的时钟信号由外部时钟发生器提供。
8284是专门为8086设计的时钟发生器/驱动器。
在8284中,不仅有时钟信号发生器,还有复位信号RESET和准备好信号READY产生电路,这些电路分别向8086系统提供时钟信号CLK,复位信号RESET和准备好信号READY,还可向外界提供晶振信号OSC以及外围芯片所需的时钟信号PCLK。
3.5.18284的引脚
8284是双列直插式18脚组件,其引脚分配如下图所示。
其功能为:
X1,X2:
晶振输入端。
ASYNC:
READY同步选择输入。
ASYNC信号决定READY的同步方式。
当ASYNC为低电平时,提供两级READY同步,若ASYNC为高电平时,提供一级READY同步。
EFI:
外来时钟输入端。
当F/C接高电平时,由EFI端输入外来时钟。
输入时钟信号的频率为系统时钟CLK的三倍。
F/C:
时钟源选择输入端。
若F/C接低电平,则系统时钟CLK由晶体振荡器产生;若F/C接高电平,则CLK由外来时钟产生。
OSC:
晶振输出端。
输出频率为晶振频率,TTC电平。
CLK:
提供给整个计算机系统的时钟信号,所以称为系统时钟。
CLK的频率是晶体震荡器频率或EFI端输入频率1/3,占空比为33%。
PCLK:
为外设提供的输出时钟信号,频率是CLK的1/2,占空比为50%。
RES:
复位输入端,低电平有效。
用于产生8086的RESET信号。
由于8284内部具有斯密特整形电路,因此RES可以是缓慢变化的脉冲信号,它经8284内部电路整形而获得较陡的复位信号RESET。
RESET:
提供给8086及整个系统的复位信号,高电平有效,其宽度由RES决定。
AEN1,AEN2:
对应RDY1,RDY2的允许控制信号,低电平有效。
当AEN1为低电平时,RDY1起作用,AEN2为低电平时,RDY2起作用。
在单CPU系统中AEN应接低电平,在多系统中,用这两个信号。
RDY1,RDY2:
RDY高电平有效的输入信号。
可由系统总线的设备产生,它有效表示数据已收到或数据可以使用。
CSYNC:
同步输入信号。
用来使多个8284同步,以提供同步的CLK信号。
CSYNC为高电平时,内部计数器复位;CSYNC为低电平时,才允许内部计数器计数。
3.6软件程序设计
硬件电路连接见附图
3.6.1功能流程图
3.6.2东西、南北方向的红黄绿的控制表
东西
南北
传送状态
红
黄
绿
红
黄
绿
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
0
0
1
0
0
1
0
0
南北红亮,东西绿亮
0
1
0
0
0
1
0
0
南北红亮,东西黄亮
0
0
0
0
0
1
0
0
南北红亮,东西黄*
1
0
0
0
0
0
0
1
东西红亮,南北绿亮
1
0
0
0
0
0
1
0
东西红亮,南北黄亮
1
0
0
0
0
0
0
0
东西红亮,南北黄*
0
0
1
0
0
1
0
0
强制南北红灯东西绿灯
1
0
0
0
0
0
0
1
强制东西红灯南北绿灯
3.6.3源程序
DATASEGMENT
IO8255AEQU280H
IO8255BEQU281H
IO8255CEQU282H
IO8255ctEQU283H
IO8253_0EQU290H
IO8253_1EQU291H
IO8253ctEQU293H
LEDDB24H,2DUP(44H,04H);六个灯可能(绿红、黄红、*红)
DB81H,2DUP(82H,80H);的状态数据(红绿、红黄、红*)
DB0FFH;结束标志
BCDB?
;用于保存灯的状态
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,IO8255ct
MOVAL,81H
OUTDX,AL;设置8255A、B输出,C口低四位输入
MOVDX,IO8253ct;计数器1、先读/写低八
;位后读/写高八位、方式3、OUT1产生方波
MOVAL,76H
OUTDX,AL
MOVAX,100;通道1与蜂鸣器相连
MOVDX,IO8253_1
OUTDX,AL
MOVAL,AH
OUTDX,AL
NEXT:
MOVBX,0
NEXT1:
MOVDX,IO8255A
MOVAL,LED[BX]
CMPAL,0FFH
JZNEXT
OUTDX,AL;点亮相应的灯
MOVBC,AL;保存AL为下面的比较做准备
INCBX
MOVCX,300;短延时CX值
TESTAL,21H;是否有绿灯亮,东西南北任一方有绿灯
JZDELAY1;没有,跳转至短延时DELAY1
MOVCX,500;有,长延时
MOVDX,IO8255B;屏蔽蜂鸣器
MOVAL,00H
OUTDX,AL
;检测开关的状态程序
DELAY1:
MOVDX,IO8255C;开关是硬开关,按下去不
;能自动弹起,需人工
INAL,DX;检测开关状态
TESTAL,03H;检测K0,K1状态
JZDELAY2;开关状态为00,延时
MOVDX,IO8255B;开关按下,屏蔽蜂鸣器
MOVAL,00H
OUTDX,AL
MOVDX,IO8255C
INAL,DX;读PC0和PC1的状态
TESTAL,03H;检测是否有开关按下
JZDELAY2;没有开关按下,延时
TESTAL,01H;检测开关K0是否按下
JZK1;开关K0断开
K0:
MOVDX,IO8255A;开关K0按下
MOVAL,81H;强制东西红灯,南北绿灯
OUTDX,AL
JMPDELAY1;返回DELAY1重新检测开关的状态
K1:
MOVDX,IO8255C
INAL,DX
TESTAL,02H;检测开关K1是否按下
JZDELAY2;开关K1断开
MOVDX,IO8255A;开关K1按下
MOVAL,24H;强制南北红灯,东西绿灯
OUTDX,AL
JMPDELAY1;返回DELAY1重新检测开关的状态
DELAY2:
TESTBC,21H
JNZDELAY;有绿灯亮
MOVDX,IO8255B;没有绿灯亮
MOVAL,01H;有黄灯,蜂鸣器发声
OUTDX,AL
DELAY:
MOVDX,IO8253ct;重新延时计数器0方式0
MOVAL,30H;计数器0、读/写低
;八位后读/写高位方式0、二进制计数
OUTDX,AL
MOVAX,10000;周期为0.01秒
MOVDX,IO8253_0
OUTDX,AL
MOVAL,AH
OUTDX,AL
WAIT:
MOVDX,IO8255C;延时判断
INAL,DX
TESTAL,04H
JZWAIT;PC2为0则计数还
;未结束,继续检测为1则计数结束,时间为0.01S
LOOPDELAY1;CX=CX-1,当CX等
;于0时,顺序执行
JMPNEXT1;没有,转到NEXT1
CODEENDS
ENDSTART
通过利用8255并行接口芯片口、8253定时/计数器芯片、LED发光二极管、开关以及扬声器,实现了对交通信号的灯控制系统的模拟。
此程序可实现东西方向绿灯亮,南北方向红灯亮;5秒后东西方向绿灯灭,东西方向的黄灯闪烁和南北方向的红灯保持;3秒后东西方向红灯亮,南北方向绿灯亮;5秒后南北方向绿灯灭,东西方向的红灯和南北方向的黄灯闪烁;3秒后东西方向绿灯亮,南北方向红灯亮,依次循环。
此程序可根据不同的设计要求,调节周期时间或者是CX初值,从而实现对交通灯的亮灭时间长短的控制。
同时在特殊情况下,可人为操作强制改变交通灯的状态。
本系统实现了交通灯自动变换的基本功能,并通过扬声器提醒灯的转换,使系统更人性化。
利用编程给定8253芯片某一频率的方波信号,控制扬声器发声。
并利用8253的方式0工作方式,在计数期间,输出OUT始终为低电平,实现了LED发光二极管的亮灭的精确延时。
四、心得体会
经过近两个星期的努力,我们完成了红绿灯控制系统的设计。
本次设计对我们学习的知识的做了一个检验,培养了我们的动手能力以及独立思考设计的能力,也是大学培养的一个重要实践步骤。
设计初期,我们通过网
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)