微型计算机技术及应用.docx
《微型计算机技术及应用.docx》由会员分享,可在线阅读,更多相关《微型计算机技术及应用.docx(19页珍藏版)》请在冰点文库上搜索。
![微型计算机技术及应用.docx](https://file1.bingdoc.com/fileroot1/2023-6/25/60072289-28a1-41c2-9bec-bb05093f840c/60072289-28a1-41c2-9bec-bb05093f840c1.gif)
微型计算机技术及应用
微型计算机技术及应用
课程设计
课程题目:
跑马灯的设计与实现
学院:
物理电气信息学院
专业:
电子信息工程
班级:
电子信息工程
(1)班
姓名:
刘丽丽12013241930
刘浩12013241979
李云鹏12013241932
指导老师:
李春树
完成日期:
2015年12月7日
跑马灯的设计与实现
一实验目的
1.巩固和加深课堂所学知识;熟悉各种指令的应用及条件;
2.深入了解与掌握8086微处理器、8255A、74ls154和74LS273的工作原理
3.通过走马灯的设计与制作,深入了解与掌握利用可编程8255A进行
开关量控制的原理与方法。
二实验要求
1.产生6种彩灯(8位LED)的走马灯花样;
2.键控(或拨码开关控制)发光实验。
通过按下不同的开关来控制灯的不同的走向。
三实验内容
1.进行走马灯的系统电路设计,掌握基本原理;
2.利用PROTEUS软件画出电路原理图;
3.进行走马灯的控制程序设计(采用ASM语言);
4.将程序导入8086中进行仿真,完成4种不同的走向。
四程序流程图
Y
N
五.设计原理与硬件电路
1.功能分析
此次课程设计具体功能为:
(1)采用不同的开关作为输入信号,8个LED灯作为输出信号。
(2)当按下不同的开关时(每次只能按下一个开关,不能同时按下多个开关)LED灯会出现不同的闪烁方式。
当开关断开始,LED灯自动熄灭。
2.实验原理(系统连接图的设计)
8255A是一种通过可编程并行I/O接口芯片。
广泛用于几乎所有系列的微机系统中,8255A具有三个带锁存或缓冲的数据端口,可与外设并行进行数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。
8255A和各端口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换,使用条件传输方式时可用“联络”线进行控制。
在实验中,我们运用8255为CPU与外设之间提供输入输出输出通道来实现对走马灯花样变换的控制。
8086微处理器,选择最小工作模式,所有的总线控制信号均由8086产生;8086CPU的地址\数据总线AD15-AD0和地址\状态总线A16/S3-A19/S6是复用的,必须通过地址锁存器把地址总线和数据总线分离。
走马灯模拟电路原理如图1所示。
模块包括8个LED彩灯、三个74LS273、一个74LS154和若干电阻及开关。
用LED可以观测在不同按键输入下,走马灯花样的变化效果。
如图1所示我们利用软件输入信号,通过8255端口扩展芯片和74LS273芯片,调节输出端口的电平变化,来控制共阴极的LED灯的亮与灭,实现走马灯花样变化。
图一
接线说明:
8255A共有三个8位端口,A口、B口和C口。
在本电路中,B口8个输出管脚PB7-PB0分别接8个并联的LED彩灯反馈跑马灯的发光方式;A口8个管脚PA7-PA0分别接8个并联的开关控制选择走马灯的发光方式。
3个74LS273的D0-D7接输入端,是信号的输入。
74LS154是4线-16线的译码器,具有选片作用,ABCD四个端口是输出端口,分别接到74LS273的输入端,E1和E2是低电平有效。
2.锁存控制电路
锁存控制电路电路如图2所示,在微控制器单元(MCU)中,寄存器是十分重要的资源。
寄存器的主要作用是快速寄存算术逻辑运算单元(ALU)运算过程中的数据,其锁存功能利用74LS273来实现,74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。
第一脚WR:
主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平);
CP(CLK):
触发端,上升沿触发,即当CP从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存,D0~D7的数据不变。
CPU向外部发出地址锁存允许信号,从而使74LS273锁存地址信号,在通过译码芯片74LS154控制接口芯片8255A,在此系统中充当一个桥梁的作用。
这部分电路将相应信号传送给8255A的A0、A1和CS片选,进而CPU开始控制8255A从而驱动发光二极管显示不同的样式。
如下图为仿真图中的锁存部分
3)可编程并行通信接口芯片8255A
8255A的芯片引脚图如上图所示
8255共有40个引脚,采用双列直插式封装,各引脚功能如下:
D0--D7:
三态双向数据线,与单片机数据总线连接,用来传送数据信息。
CS:
片选信号线,低电平有效,表示芯片被选中。
RD:
读出信号线,低电平有效,控制数据的读出。
WR:
写入信号线,低电平有效,控制数据的写入。
PA0--PA7:
A口输入/输出线。
PB0--PB7:
B口输入/输出线。
PC0--PC7:
C口输入/输出线。
RESET:
复位信号线。
A1、A0:
地址线,用来选择8255内部端口。
GND:
地线。
8255内部包括三个并行数据输入/输出端口,两个工作方式控制电路,一个读/写控制逻辑电路和8位总线缓冲器。
各部分功能概括如下:
(1)端口A、B、C
A口:
是一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。
B口:
是一个8位数据输入/输出锁存器/缓冲器和一个8位数据输入锁存器。
C口:
是一个8位数据输出锁存器/缓冲器和一个8位数据输入缓冲器(输入不锁存)。
(2)工作方式控制电路
工作方式控制电路有两个,一个是A组控制电路,另一个是B组控制电路。
A组控制电路用来控制A口和C口的上半部分(PC7-PC4)。
B组控制电路用来控制B口和C口的下半部分(PC3-PC0)。
(3)总线数据缓冲器
总线数据缓冲器是一个三态双向8位缓冲器,作为8255与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。
(4)读/写控制逻辑电路
读/写控制逻辑电路接受CPU发来的控制信号RD、WR、RESET、地址信号A1-A0等,然后根据控制信号的要求,将端口数据读出,发往CPU,或者将CPU送来的数据写入端口。
8255A有3种基本的工作方式:
方式0:
基本的输入输出方式(无条件);端口A、端口B、端口C均可使用;
方式1:
选通的输入输出方式;(查询)端口A、端口B可以用。
方式2:
双向的传输方式,只有端口A可以使用。
方式0也叫基本输入/输出方式。
这种方式,不需要应答联络信号,端口A、端口B和端口C的高4位及低4位都可以作为输入或输出端口。
方式0的应用场合有无条件传送和查询传送2种;故根据我们系统设计的要求,综上所述,选择8255A的A,B口为工作方式0,其中A口作为输入、B口作为输出。
8255A的3种基本工作方式由方式控制字来决定,D7=1(特征位)表明是设定方式选择控制字;D7=0,则表示是端口C按位置位/复位控制字。
端口C分成高4位(PC7~PC4)和低4位(PC3~PC0),可分别设置成输入端口或输出端口;端口C的高4位与端口A配合组成A组,端口C的低4位与端口B配合组成B组。
根据系统设计得出8255A的方式选择控制字,以及将A口设置为输入,B口设置为输出的PROTEUS仿真图如图所示:
74LS1544线-16线译码器
将4个二进制编码输入译成16个彼独立的输出之一
将数据从一个输入线分配到16个输出的任意一个而实现调节功能-将4个二进制编码输入译成16个彼独立的输出之一
将数据从一个输入线分配到16个输出的任意一个而实现调节功能
原理:
这种单片4线--16线译码器非常适合用于高性能的存储译码器。
当两个选通输入G1和G2为低时,它可将4个二进制编码的输入译成16个互独立的输出之一。
实现解调功能的办法是:
用4个输入线写出输出线的地址,使得在一个选通输入为低时数据通过另一个选通输入。
当任何一个选通是高时,所有输出都为高。
6.软件及源程序
本次试验程序采用MASM软件进行调试,如图为程序运行调试成功的截图
7.实验源程序及注释
DATASEGMENT
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,10010000B
OUT96H,AL
A0:
INAL,90H;将A口的值11111110给AL
NOTAL;将AL取反00000001
MOVBL,AL;将AL值给BL,BL值为00000001
CMPAL,1;AL值与1比较
JNZA3;不为0跳转
A2:
MOVDL,AL;将AL值给DL,DL为00000001
OUT92H,AL;将AL从B口输出
INAL,90H;将A口的值送给AL
NOTAL;对AL取反
CMPAL,BL;将AL,BL比较
JNZA0;不为0跳转
MOVCX,20000
A1:
LOOPA1;CX减1,如不为0,则循环A1
MOVAL,DL;将DL值给AL
ROLAL,1;将AL值左移一位
JMPA2;跳转至A2
A3:
CMPAL,2;AL值与2比较
JNZA6;不为0跳转
MOVAL,80H;将80H值给AL
A5:
MOVDL,AL;将AL值给DL
OUT92H,AL;将AL值从B口输出
MOVCX,20000
A4:
LOOPA4;CX减1,如不为0则循环A4
INAL,90H;将A口的值给AL
NOTAL;将AL取反
CMPAL,BL;AL与BL比较
JNZA0;不为0跳转至A0
MOVAL,DL;将DL值给AL
RORAL,1;AL值右移一位
JMPA5;跳转至A5
A6:
CMPAL,4;AL与4比较
JNZA9;不为0跳转
MOVAL,05H;将05H给AL
A8:
MOVDL,AL;将DL值给AL
OUT92H,AL;AL值从B口输出
MOVCX,50000
A7:
LOOPA7;CX值减1,不为0循环A7
INAL,90H;将A口的值给AL
NOTAL;将AL取反
CMPAL,BL;将AL与BL比较
JNZA0;不为0跳转
MOVAL,DL;DL值给AL
ROLAL,1;AL值左移一位
JMPA8;跳转至A8
A9:
CMPAL,8;AL值与8比较
JNZA12;不为0跳转
MOVAL,0A0H;将0A0H值给AL
A11:
MOVDL,AL;将AL值给DL
OUT92H,AL;将AL从B口输出
MOVCX,50000
A10:
LOOPA10;CX减1若不为0,则循环A10
INAL,90H;将A口值给AL
NOTAL;将AL取反
CMPAL,BL;将AL于BL比较
JNZA0;不为0跳转
MOVAL,DL;将DL值给AL
RORAL,1;AL值右移一位
JMPA11;跳转至A11
A12:
CMPAL,10H;AL值与10H比较
JNZA17;不为0跳转
A16:
MOVAL,18H;将18H给AL
A14:
MOVDL,AL;将AL值给DL
OUT92H,AL;将AL值从B口输出
MOVCX,60000
A13:
LOOPA13;CX减1,若不为0则循环A13
INAL,90H;将A口值给AL
NOTAL;将AL取反
CMPAL,BL;AL与BL比较
JNZA0;不为0跳转至A0
MOVAL,DL;将DL值给AL
CMPAL,81H;AL值与81H比较
JZA16;为0跳转至A16
ANDAL,0F0H;AL值与0F0H值取与所得值放在AL中
MOVCX,0
MOVCH,AL;将AL值给CH
ROLCH,1;将CH值左移一位
MOVAL,DL;将DL值给AL
ANDAL,0FH;将AL值与0FH取与所得值放入AL中
MOVCL,AL;将AL值给CL
RORCL,1;将CL值右移一位
ADDCH,CL;将CH与CL值相加所得值给CH
MOVAL,CH;将CH值给AL
JMPA14;跳转至A14
A17:
CMPAL,20H;将AL值与20H比较
JNZA0;不为0跳转
A19:
MOVAL,81H;将81H值给AL
A20:
MOVDL,AL;将AL值给DL
OUT92H,AL;将AL值从B口输出
MOVCX,50000
A18:
LOOPA18;CX减1若不为0,则循环A18
INAL,90H;将A口值给AL
NOTAL;将AL取反
CMPAL,BL;AL与BL比较
JNZA0;不为0跳转
MOVAL,DL;将DL值给AL
CMPAL,18H;将AL与18H比较
JZA19;为0跳转至A19
ANDAL,0F0H;将AL值与0F0H相与所得值给AL
MOVCX,0
MOVCH,AL;将AL值给CH
RORCH,1;将CH值右移一位
MOVAL,DL;将DL值给AL
ANDAL,0FH;将AL值与0FH相与所得值给AL
MOVCL,AL;将AL值给CL
ROLCL,1;将CL值左移一位
ADDCH,CL;将CH与CL值相加所得值给CH
MOVAL,CH;将CH值给AL
JMPA20;跳转至A20
RET
CODEENDS
ENDSTART
8255A端口地址:
由于8086的A1和A2与8255A的A0和A1形成错位连接,形成4个偶地址,即如下:
端口地址A1A0
A口90H10010000
B口92H10010010
C口94H10010100
控制口96H10010110
七.课程设计过程中遇到的问题:
1.在开始的PROTEUS系统结构连线中,由于对该软件接触较少,所以对它的元件库不太熟悉,因此走了很多弯路。
2.8255A的芯片选择信号引脚CS连接译码器的Q0端,接受来自译码器的一个输出的低电平,但是这个引脚却始终为高电平,导致8255A的读信号和写信号不能正常完成。
在多次尝试后都不行,最后我将译码器的Q0端与8255A的CS端直接用导线连接起来却达到了效果。
8.实验心得及体会
通过本次课程设计,我进一步的了解和掌握了各种理论知识,如MASM和PROTEUS软件的使用及汇编语言的程序设计,同时也更深刻的认识到8086,8255A等一些芯片的工作原理,,加强了自己的动手能力,学会了如何用自己学的知识去处理一些实际问题,如何去处理一些常见的错误。
通过自己动手完成这次试验我明白了,只有自己做出来的才是自己的。
更加广泛的知道了一些芯片的功能和使用时的注意事项。
虽然这次课程设计成功完成了,但是在课程设计过程中,我也遇到了不少的问题。
一开始,由于对PROTEUS软件不太熟悉,在硬件连接的过程中,走了不少弯路,在连线时,由于不下心将两根不同的线头连在了一起,最后的LED灯却怎么也达不到预期效果,多次调试都不能成功,最后计息检查了电路才发现了这个错误,可见,做任何事都要认真,仔细,要不然就会出现问题。
在利用MASM软件调试的过程中,程序的出现了很多逻辑和语法错误,经过向同学请教,共同商讨,最终将程序调试成功。
这次课程设计使我明白了很多,首先做事要足够的细心和耐心,做实验不仅仅考验的是我们的理论知识,更加锻炼了我们的动手能力和心理素质,以及团结合作的能力,
总之,尽管我这次的课程设计成功了,但是仍然存在着不足,对书中的指令掌握的还不够好,自己的编程能力还很薄弱,需要以后不断的努力。