8086课程设计文档格式.docx
《8086课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《8086课程设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
学习微机原理与接口技术,主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言、设计以及微型计算机各个组成部分,而其中很大一块就是汇编语言的学习。
汇编语言是面向机器的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
用汇编语言编写的程序由于目标程序占用内存少,运行速度快,它有着高级语言不可替代的用途。
因此,学习汇编语言是很必要的,通过学习汇编语言可以体会它的作用。
通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识联系实际,进一步学习微机原理与接口技术的相关知识,为以后深入学习打下良好的基础。
1总体方案论证
功能分析
此次课程设计的要求为,设计微型计算机最小系统,实现跑马灯的模拟显示功能。
具体要求为:
(1)、输入设备三个启动按钮、一个停止按钮,输出设备为八个跑马灯;
(2)、三个启动按钮对应三种跑马灯显示效果,按下任意一个启动按钮,跑马灯显示对应的效果,按下停止按钮则跑马灯全部熄灭。
电路中需包含四个按钮和八个我们的硬件的电路需要另行搭建,由上分析可知,
跑马灯以及相关芯片,既有输入设备又有输出设备,经过分析可以使用芯片8255A来实现输入与输出,再加上锁存地址芯片74LS273、译码芯片74LS154以及相关门电路即可构成本设计的硬件电路基础。
进一步分析最终决定用8255A的A口作为输出去控制跑马灯,B口作为按钮信号输入,CPU通过接收输入信号从而发出对应命令去控制8255A芯片A口输出,从而A口输出相应电平控制跑马灯有规律的亮灭。
连接好硬件电路后的主要任务就是编写相应程序,通过程序去控制和调度硬件电路的输入与输出。
系统连接图设计
8255A是一种通过可编程并行I/O接口芯片。
广泛用于几乎所有系列的微机系统中,8255A具有三个带锁存或缓冲的数据端口,可与外设并行进行数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。
8255A和各端口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换,使用条件传输方式时可用“联络”线进行控制。
在本次课程设计中,我们运用8255A为CPU与外设之间提供输入输出输出通道来实现对跑马灯花样变换的控制。
8086微处理器,选择最小工作模式,所有的总线控制信号均由8086产生;
8086CPU的地址\数据总线AD15-AD0和地址\状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离。
跑马灯硬件电路如图1所示。
电路包括8个LED彩灯、三片74LS273、一片74LS154、一片8086CPU、一片8255A以及若干导线和电阻。
用LED可以观测在不同按键输入下,跑马灯花样的变化效果。
如图1所示我们利用启动按钮作为输入信号,通过8255A端口扩展芯片,调节输出端口的电平变化,来控制共阳极的LED灯的亮与灭,实现跑马灯不同的花样变化。
跑马灯硬件电路图1图1.2.1锁存控制电路
锁存控制电路电路如图2所示,在微控制器单元(MCU)中,寄存器是十分重要的资源。
寄存器的主要作用是快速寄存算术逻辑运算单元(ALU)运算过程中的数据,其锁存功能利用74LS273来实现,74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。
D0~D7:
输入,Q0~Q7:
输出;
第一脚WR:
主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平);
CP(CLK):
触发端,上升沿触发,即当CP从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存,D0~D7的数据不变。
CPU向外部发出地址锁存允许信号,从而使74LS273锁存地址信号,在通过译码芯片74LS154控制接口芯片8255A,在此系统中充当一个桥梁的作用。
这部分电路将相应信号传送给8255A的A0、A1和CS片选,进而CPU开始控制8255A从而驱动发光二极管显示不同的样式。
图2锁存控制电路
1.2.2可编程并行通信接口芯片8255A
芯片8255A有三种工作方式,他们分别是方式0、方式1、方式2,电路如图3所示。
方式0为简单I/O,查询方式,端口A、端口B、端口C均可使用;
方式1为选通I/O,中断方式,端口A、端口B可以使用,选通的输入/输出方式;
方式2为双向I/O,中断方式,只有端口A可以使用,双向的传输方式。
方式0也叫基本输入/输出方式。
一种方式,不需要应答联络信号,端口A、端口B和端口C的高4位及低4位都可以作为输入或输出端口。
方式0的应用场合有无条件传送和查询传送2种;
故根据我们系统设计的要求,综上可知,选择8255A为工作方式0,A口作为输出、B口作为输入。
8255A的3种基本工作方式由方式控制字来决定,D7=1(特征位)表明是设定方式选择控制字;
D7=0,则表示是端口C按位置位/复位控制字。
端口C分成高C端口可分别设置成输入端口或输出端口;
,PC0)~(PC3位4和低PC4)~(PC7位4.
的高4位与端口A配合组成A组,端口C的低4位与端口B配合组成B组。
综上可得此系统需要满足A端口为输出,输出数据给到8个LED彩灯;
端口B为输入,需要检测按键的输入情况。
图3芯片8255A接口电路
算法说明
本程序涉及芯片8255A的初始化,因此首先需要确定端口地址,CPU向8255A送出方式控制字,进而8255A的A口作为输出、B口作为输入;
定义控制LED灯的相应数据段,由于需要LED亮后持续一段时间这就需要一个相应的延时程序片段,需要确定B口那个按钮开关按下,这就需要一个扫描B口开关按下的子程序,从而CPU发出相应控制等操作给A口送出相应电平,LED显示相应的亮灭。
因此,主要要点就是找对端口地址,这个是程序能够运行的必需品,通过分析硬件线路可以正确找到A口、B口以及控制口的地址。
2程序流程图设计及其说明
所示:
4主程序流程图如图
开初始化程送控制口输通使灯全子调ledflas序4主程序流程图图所示:
LED子程序流程图如图5检测按键延时控制
开口信号输检型走马灯的是否为按移地址送S型走马灯的是否为按S移地址送型走马灯的是否为按移地址送S是否终止开结是否Nu延时
5子程序流程图图
3关键程序段落说明
数据段定义
dsegsegment
numdw0
data1db0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00h
data2db
00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFh
data3db
7Eh,3Ch,18h,00h,0FFh,00h,0FFh,00h,0FFh,00h,18h,3Ch,7Eh,0FFh
dsegends
三种灯光变幻组合为:
第一种为每隔1s依次亮起8个灯后保持2s然后全部熄灭
第二种为8个灯全亮2s后闪烁3次,然后依次熄灭
第三种为每个1s从两头同时依次亮起(即先亮1、8,然后2、7,然后3、6,然后4、5),8个灯全部亮起后闪烁3次,然后向两头依次熄灭
dw为灯光循环的控制次数。
程序初始化
csegsegmentparapublic'
code'
assumess:
sseg,cs:
cseg,ds:
dseg
start:
movax,dseg
movds,ax
初始化程序。
芯片初始化.
movdx,0206h;
取8255A的控制端口的地址
moval,82h;
初始化8255A的A口为输出模式,B口为输入模式
outdx,al
82h即为b,也就是说将A口定义在方式0下并且作为输出,B口定义在方式0下并且作为输入,因此这个方式控制字不是唯一的,其通用形式为1000X01X,C口没有定义故可以为任意二进制数。
movdx,0200h;
取8255的端口A的地址
moval,0FFh;
使8255的PA0-PA7全为1
上边这个程序段是往外送数据置LED亮灭的。
movdx,0202h;
取8255的端口B的地址
inal,dx;
检测B口输入信号
这个是将B口开关闭合信息读回来的,从而发出相应控制命令。
初始LED亮灭状态
outdx,al;
使所有的灯LED全灭
电路上电工作后首先要使所有的LED灯全灭,防止对后面的显示造成影响。
检测按键开关子程序
ledflashproc;
检测开关闭合,以便确定哪种闪烁方式
取8255A的端口B的地址
choice1:
cmpal,0feh
jnechoice2
movsi,offsetdata1;
置第一种灯光变幻组合
jmphere
choice2:
cmpal,0fdh
jnechoice3
movsi,offsetdata2;
置第二种灯光变幻组合
choice3:
cmpal,0fbh
jnechoice4
movsi,offsetdata3;
置第三种灯光变幻组合
jmphere
choice4:
;
每盏灯亮完检测开关,如果停止开关没有按下跳到choice5,如果停止开关按下灯全灭
cmpal,0f7h
jnechoice5
jmpexut
choice5:
cmpnum,0h;
检测num是否为0,若为0扫描开关,若不为0继续执行
jnehere
jmpledflash
here:
movbx,num
moval,[si+bx]
movdx,0200h;
取8255的端口A的地址
outdx,al;
输出加电数据到端口A
incnu