基于8086的汽车尾灯控制电路.docx
《基于8086的汽车尾灯控制电路.docx》由会员分享,可在线阅读,更多相关《基于8086的汽车尾灯控制电路.docx(19页珍藏版)》请在冰豆网上搜索。
基于8086的汽车尾灯控制电路
HefeiUniversity
微机原理与接口技术课程设计报告
课题名称:
基于8086的汽车尾灯控制电路
报告人:
黄静0705075032
孙必友0705075046
谢建梅0705075011
班级:
07级自动化
(2)班
指导老师:
刘伟、林泽坤
成绩评定:
2010年1月3日
自动化专业微机原理课程设计任务书
论文
题目
基于8086的汽车尾灯控制电路的设计
设计类型
导师姓名
刘伟
林泽坤
主要内容及目标
要求:
假设汽车尾部左右两侧各有三个指示灯。
要求:
①正常行驶时指示灯全灭;②左转弯时,左边3个指示灯按左循环依次点亮;③右转弯时,右边3个指示灯按右循环依次点亮;④超车时,指示灯闪烁;⑤刹车时,指示灯全亮;
具有的设计条件
1.PC机一台,EL教学实验箱一台及汇编程序;
计划学生数及任务
3人
(1):
明确课题对程序功能,运算精度等方面的要求及硬件条件
(2):
把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。
(3):
存储器资源分配
(4):
编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序
(5):
对程序进行汇编,调试和修改,直到程序运行结果正确为止。
计划设计进程
(按课程设计周计算)
第一周设计任务:
(1):
明确课题对程序功能,运算精度等方面的要求及硬件条件
(2):
把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。
(3):
存储器资源分配
第二周设计任务:
(4):
编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序
(5):
对程序进行汇编,调试和修改,直到程序运行结果正确为止。
参考文献
《微型计算机原理及接口技术》中国科技大学出版社吴秀清周荷琴编著
《16-32位微型计算机技术及应用》清华大学出版社戴梅萼史嘉权编著
<<汇编语言程序设计》南京大学出版社姚君遗编著
《汇编语言程序设计教程》清华大学出版社杨记文编著
《微型计算机原理及接口技术》实验指导书
摘要:
当代社会汽车文明进步飞速,但伴随这汽车数量的增多,产生的交通事故也越来越多。
而通过本次设计,目的是理解以往所学的知识,掌握数字系统设计和调试的方法,增加集成电路应用知识,培养自己的实际动手能力以及分析解决问题的能力。
关键字:
8255芯片8086PC机
序言
8255A是一种通用的可编程串行I/O接口芯片,它是为INTEL系列微处理器设计的配套电路,也可用于其它的微处理器系统中。
通过对它编程,芯片可工作于不同的工作方式。
在微型计算机系统中,用8255A做接口时,通常不需要附加外部逻辑电路就可直接为CPU与外设之间提供数据通道,所以得到广泛的应用。
1.设计目的
通过此次设计为使汽车尾灯满足以下要求:
①正常行驶时指示灯全灭;②左转弯时,左边3个指示灯按左循环依次点亮;③右转弯时,右边3个指示灯按右循环依次点亮;④超车时,指示灯闪烁;⑤刹车时,指示灯全亮。
2.设计任务
(1)明确课题对程序功能,运算精度等方面的要求及硬件条件;
(2)把复杂问题分解为若干模块,确定各模块处理方法,画出流程图;
(3)存储器资源分配;
(4)编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序;
(5)对程序进行汇编,调试和修改,直到程序运行结果正确为止。
3.设计思路
(1)程序流图
此次设计针对汽车尾灯,具体分为左转、右转、超车和刹车四个单元
总体设计流程图如下:
四个模块流程图如下:
(2)相关知识
1.LED发光二极管指示电路
实验台上包括6只发光二极管及相应驱动电路。
见图1,Ll-L6为相应发光二极管驱动信号输入端,该输入端为低电平“0”时发光二极管亮。
2.逻辑电平开关电路(见图2)
实验台上有8只开关Kl-K8,与之相对应的K1-K8各引线孔为逻辑电平输出端。
开关向上拨相应插孔输出高电平“l”,向下拨相应插孔输出低电平“0”。
3.DJ-8086k软件启动和联机
双击桌面上‘DJ-8086k’快捷图标,即可运行DJ-8086k软件,屏幕显示DJ-8086k软件的工作窗口,底边状态栏由“下位机没有连接…”变成“连接上下位机”,说明联机成功,否则会弹出对话框提示:
“下位机没有连接…”,此时单击“OK”,实验系统和PC机处于脱机状态,然后用户根据连接硬件实际情况来设定COMl或COM2,设定方法如下:
依次单击菜单栏:
“设置(X)、通讯口设置(Z)、COM1或COM2”确定,然后点击‘打开端口’,状态设定后,系统会自动检测连接。
如果此时确定端口正确,但系统仍然没有连接,可按以下两种方法解决:
(1)单击工具栏上的“重新连接”按钮,即可联机;
(2)复位实验系统,使得数码管上显示监控提示符“P.”,然后关闭DJ-8086k软件,重新运行,故障即可排除。
4.8086基本理论
引脚图,如右图
1)算术逻辑单元ALU
ALU是运算器的核心。
它是以全加器为基础,辅之以移位寄存器及相应控制逻辑组合而成的电路,在控制信号的作用下可完成加、减、乘、除四则运算和各种逻辑运算。
2)寄存器组
RS实质上是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。
采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。
3)控制单元
控制单元是整个CPU的指挥控制中心,由指令寄存器IR、指令译码器ID和操作控制器0C三个部件组成,对协调整个电脑有序工作极为重要。
它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。
操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
4)总线
就像工厂中各部位之间的联系渠道,总线实际上是一组导线,是各种公共信号线的集合,用于作为电脑中所有各组成部分传输信息共同使用的“公路”。
直接和CPU相连的总线可称为局部总线。
其中包括:
数据总线DB(DataBus)、地址总线AB(AddressBus)、控制总线CB(ControlBus)。
其中,数据总线用来传输数据信息;地址总线用于传送CPU发出的地址信息;控制总线用来传送控制信号、时序信号和状态信息等。
5.8255A的相关知识
8255A的串行接口是通过系统总线和CPU相连,串行接口部件的典型结构主要由控制寄存器状态寄存器、数据输入寄存器和数据输出寄存器4部分组成。
⑴控制寄存器
控制寄存器用来保存决定接口工作方式的控制信息。
⑵状态寄存器
状态寄存器中的每一个状态位都可以用来标识传输过程中某一种错误或当前传输状态。
⑶数据寄存器
①数据输入寄存器:
在输入过程中,串行数据一位一位地从传输线进入串行接口的移位寄存器,经过串入并出(串行输入并行输出)电路的转换,当接收完一个字符之后,数据就从移位寄存器传送到数据输入寄存器,等待CPU读取。
②数据输出寄存器:
在输出过程中,当CPU输出一个数据时,先送到数据输出缓冲寄存器,然后,数据由输出寄存器传到移位寄存器,经过并入串出(并行输入串行输出)电路的转换一位一位地通过输出传输线送到对方。
串行接口中的数据输入移位寄存器和数据输出移位寄存器是为了和数据输入缓冲寄存器和数据输出缓冲寄存器配对使用的。
串行通信时,数据在两个站(或设备)A与B之间传送,按传送方向可分为单工(a)、半双工(b)和全双工(c)三种不同的方式,如下图所示:
8255A的三个数据口分别是A端口、B端口、C端口,它们彼此独立,都是8位的数据口,用来完成和外设之间的信息交换。
三个口在使用上有所不同。
1)A端口
A端口对应一个8位的数据输入锁存器和一个8位的数据输出锁存器和缓冲器。
因此A端口适合用在双向的数据传输场合,用A端口传送数据,不管是输入还是输出,都可以锁存。
2)B端口和C端口
这两个口分别是由一个8位的数据输入缓冲器和一个8位的数据输出锁存器和缓冲器组成。
因此用B端口和C端口传送数据作输出端口时,数据信息可以实现锁存功能;而用作输入口时,则不能对数据实现锁存,这一点在使用中要注意。
在实际应用中,A端口和B端口通常作为独立的输入口和输出口,而C端口常用来配合A端口和B端口的工作使用。
C端口分成两个4位的端口,这两个4位的端口分别作为A端口和B端口的控制信号和输入状态信号使用。
8255A是40条引脚的双列直插式芯片,引脚排列如图所示。
单一的+5V电源,使用时要注意它的+5V电源引脚是第26脚,地线引脚是第7脚,它不像大多数TTL芯片电源和地线在右上角和左下角的位置,除了电源和地线之外,其他引脚的信号按连接的功能可分为两大组。
8255A由四个部分组成:
⑴输入/输出端口A、B、C;
⑵A组和B组控制电路;
⑶读/写控制逻辑;
⑷数据总缓冲器。
8255A的工作方式:
⒈方式0:
基本输入输出方式
它适用于不需要用应答信号的简单输入输出场合,在这种方式下,A口和B口可作为8位的端口,C口的高4位和低4位可作为两个4位的端口。
这4个端口中的任何一个既可作为输入也可作为输出,从而构成16种不同的输入输出组态。
在实际应用时,C口的两半部分也可合在一起,构成一个8位的端口。
这样8255A可以构成3个8位的I/O端口,或两个8位两个4位的I/O的端口,以适应各种不同的应用场合。
⒉方式1:
选通的输入/输出方式
在这种方式下,当A端口和B端口进行输入输出时,必须利用C端口提供的选通和应答信号。
方式1的基本定义如下:
分成2组(A组和B组)。
每组包含一个8位的数据端口和1个4位的控制/数据端口。
8位的数据端口既可以作为输入也可以作输出,输入和输出都可以被锁存,4位的控制/数据端口用于传送8位数据端口的控制和状态信息。
(1)选通的输入方式
选通输入方式:
规定是PC3~PC5分配给A端口,PC0~PC2分配给B端口。
C端口剩下的2位PC6,PC7可’作为简单的输入/输出线使用,控制字的D3位为l时输入;D3位为0时输出。
(2)选通的输出方式
在这种方式下,A口和B口都作为输出口,端口C的PC3,PC6和PC7作A口的联络控制信号,PC0,PC1和PC2作B口的联络控制信号,端口C余下的两位PC4和PC6可作为输入和输出,当方式选择字的D3=1时,PC4和PC5作输入,D3=0时,PC4和PC5作输出。
(3)选通输入/输出方式的组合
在这种方式下,端口C的低4位总是作控制用,而高4位总有两位仍用作输入或输出。
因此,在控制字中,用于决定C口高半部分是输入还是输出的D3位可以取1或0,而决定C口低4位为输入或输出的D0位可以为任意值。
⒊方式2:
双向总线方式
只有A口可以工作于这种方式。
在这种方式下,CPU与外设交换数据是,可以在单一的8位端口数据线PA7~PA0上进行,既可以通过A口把数据传送到外设,又可以从A口接收从外设送过来的数据,而且输入和输出数据均能锁存,但输入和输出过程不能同时进行。
(3)实现步骤
硬件部分:
8255A的A口作输入口,8个开关K7-K0分别接PA7-PA0。
B口为输出口,PB7-PB0分别接显示器LED7-LED0。
8255A的
、
和RESET引脚分别与CPU相应输出相连,8255A的数据线D7-D0与8086的低8位数据总线D7-D0相连。
如图所示,按下开关1为左转指示,开关2为右转指示,开关3为超车指示,开关4为刹车指示。
实验步骤:
1.进入星研系统集成环境
2.编写部分实验程序
3.连线说明:
B4区:
CS(8255)------A4区:
CS1
B4区:
A0、A1-------ES-PCI:
A0、A1
B4区:
JP56(PA口)---G6区:
JP80
B4区:
JP53(PB口)---G6区:
JP65
4.逻辑电平开关拨上正时,发光二极管输入为1时亮,输入为0时灭。
5.开关1闭合时:
1、2、3灯左循环点亮;开关2闭合时:
4、5、6灯右循环点亮;开关3闭合时:
6个灯闪烁;开关4闭合时:
6个灯全亮。
软件部分:
.MODELTINY
PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32BIT;RAM板卡上的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口偏移量
ZZEQU11111110B;左转
YZEQU11111101B;右转
CCEQU11111011B;超车
SCEQU11110111B;刹车
LED_DataDB11111110B;1灯亮,2、3灯灭
DB11111101B;2灯亮,1、3灯灭
DB11111011B;3灯亮,1、2灯灭
DB11110111B;4灯亮,5、6灯灭
DB11101111B;5灯亮,4、6灯灭
DB11011111B;6灯亮,4、5灯灭
DB11000000B;6个指示灯亮
DB11111111B;6个指示灯灭
.CODE
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLInitPCI
CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址
MOVAL,10010000B;PA接开关、PB接LED灯、PC为基本输出模式
MOVDX,COM_ADD
OUTDX,AL;写入控制字
TEST_IT:
MOVBX,OFFSETLED_Data
MOVDX,PB_ADD
MOVAL,0FFH;正常行驶灯全灭
OUTDX,AL
MOVDX,PA_ADD;指向A口
INAL,DX;从A口读入开关状态
CMPAL,ZZ;左转?
JEP1
CMPAL,YZ;右转?
JEP2
CMPAL,CC;超车?
JEP3
CMPAL,SC;刹车?
JEP4
JMPTEST_IT
P1:
MOVDX,PB_ADD;左转程序
MOVAL,2;3灯亮,1、2灯灭
XLAT
OUTDX,AL
CALLDL1S;延迟
MOVAL,1;2灯亮,1、3灯灭
XLAT
OUTDX,AL
CALLDL1S;延迟
MOVAL,0;1灯亮,2、3灯灭
XLAT
OUTDX,AL
CALLDL1S;延迟
JMPTEST_IT
P2:
MOVDX,PB_ADD;右转程序
MOVAL,3;4灯亮,5、6灯灭
XLAT
OUTDX,AL
CALLDL1S;延迟
MOVAL,4;5灯亮,4、6灯灭
XLAT
OUTDX,AL
CALLDL1S;延迟
MOVAL,5;6灯亮,4、5灯灭
XLAT
OUTDX,AL
CALLDL1S;延迟
JMPTEST_IT
P3:
MOVDX,PB_ADD;超车程序
MOVAL,6;6个指示灯全亮
XLAT
OUTDX,AL
CALLDL1S;延迟
MOVAL,7;6个指示灯全灭
XLAT
OUTDX,AL
CALLDL1S;延迟
JMPTEST_IT
P4:
MOVDX,PB_ADD;刹车程序
MOVAL,6
XLAT
OUTDX,AL
CALLDL1S;延迟
MOVDX,PA_ADD;指向A口
INAL,DX;从A口读入开关状态
CMPAL,SC
JNZTEST_IT
JMPP4
DL50msPROCNEAR
PUSHAX
PUSHDX
MOVDX,50;延时500ms
MOVAH,0FFH;星研公司提供的软中断
INT21H
POPDX
POPAX
RET
DL50msENDP
DL1SPROCNEAR
PUSHCX
MOVCX,10
DL5S1:
CALLDL50ms
LOOPDL5S1
POPCX
RET
ENDP
InitPCIPROCNEAR
MOVAH,00H
MOVAL,03H
INT10H;清屏
MOVAH,0B1H
MOVAL,01H
INT1AH
CMPAH,0
JZInitPCI2
LEADX,msg0
InitPCI1:
MOVAH,09H
INT21H
JMPExit
InitPCI2:
MOVAH,0B1H
MOVAL,02H
MOVCX,Device_ID
MOVDX,Vendor_ID
MOVSI,0
INT1AH
JNCInitPCI3;是否存在StarPCI9052板卡
LEADX,msg1