微机原理交通灯课程设计讲解.docx
《微机原理交通灯课程设计讲解.docx》由会员分享,可在线阅读,更多相关《微机原理交通灯课程设计讲解.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理交通灯课程设计讲解
湖南科技大学
潇湘学院信息与电气工程系
《课程设计报告》
题目:
硬件描述语言课程设计
专业:
通信工程
班级:
二班
姓名:
学号:
指导教师:
欧青立
2015年12月28日
信息与电气工程学院
课程设计任务书
2015—2016学年第一学期
专业:
通信工程班级:
二班学号:
姓名:
课程设计名称:
微机原理与接口技术
设计题目:
基于PC机与8255的交通灯电路系统设计
完成期限:
自2015年12月14日至2015年12月25日共2周
设计依据、要求及主要内容(可另加附页):
设计依据:
交通灯在我们的日常生活中很常见,现代化城市交通中交通灯已成为城市不可或缺的一部分。
基于微处理器的交通灯控制系统成为主要设计方法。
采用微处理器结合外围芯片,通过软件编程方式即可实现对交通灯的控制。
设计内容及要求:
采用8086\8088控制器和8位并行接口芯片8255设计实现交通灯控制系统,编写相关软件程序。
基本要求:
(1)采用Protel软件或其它软件绘制电路原理图;
(2)初始状态为全红灯,等待5秒,LED显示倒计时,然后东、西方向亮红灯,南、北方向亮绿灯,时间为10秒,LED显示倒计时;转为南、北方向绿灯闪3秒,然后转为黄灯3秒,LED显示倒计时;再转为东、西方向亮绿灯,南、北方向亮红灯,时间为10秒,LED显示倒计时;然后再转为东、西方向绿灯闪3秒再转为黄灯3秒,再次转为东、西方向红灯,南、北方向绿灯,以后按此循环。
提高要求:
如果发生突发情况,能通过按键使东西或南北方向长时间红灯。
指导教师(签字):
批准日期:
年月日
前言
在21世纪这个科技当道的年代,只要你敢想一切皆有可能。
微机原理与接口技术作为大学本科通信电子专业的一门必修科目,对我们理解科学,认识科学的意义是深远的。
本次课程设计皆在提高我们对微机原理以及相关软硬件的认识,提升理论与实践的结合能力,在本次课程设计中将基于AEDK8688ET微机教学实验系统来实现8259A、8255A芯片的工程应用设计。
本课程设计报告共分四章,在第一章中主要阐述课程设计的意义与目的,并说明期望的目标。
在第二章和第三章中分别就设计的硬件和软件做详细阐述,其中包括关键芯片的功能介绍,软硬件的设计思路与实现。
第四章为课程设计的心得体会。
当然目前自己的知识与水平是非常有限的,设计报告中还存在很多的不足与错误,恳请老师与读者批评指正。
在车辆日渐增多的今天,人们也越来越关注交通问题,而交通灯在安全行车过程中无疑起着十分重要的作用。
现在交通灯一般都设在十字路口,用红、绿、黄三种颜色的指示灯和一个倒计时的显示计时器来控制行车, 对一般情况下的安全行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点:
1、车道轮流放行时间相对固定, 不能根据实际情况中两个车道的车辆多少来设置改变通行时间;2、 没有考虑紧急车辆通过时, 两车道应采取的措施。
譬如, 有消防车通过执行紧急任务时, 两个车道的车都应停止, 让紧急车辆通过。
因此如何合理高效地利用交通灯指示交通情况,是一个亟需解决的问题。
交通灯是采用计算机通过编写汇编语言程序控制的。
红灯停,绿灯行的交通规则。
广泛用于十字路口,车站, 码头等公共场所,成为人们出行生活中不可少的必需品,由于计算机技术的成熟与广泛应用,使得交通灯的功能多样化,远远超过老式交通灯, 交通灯的数字化给人们生产生活带来了极大的方便,而且大大地扩展了交通灯的功能。
诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示,所有这些,都是以计算机为基础的。
还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间。
或者给红绿色盲声音警示的人性化设计。
现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。
当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。
要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。
因此,研究交通灯及扩大其应用,有着非常现实的意义。
绪论
本次专业课程设计作为前阶段学习知识的一个检验,培养了我们的动手能力以及独立思考设计的能力,也是大学培养的一个重要实践步骤。
设计初期,我们通过网络,图书馆等资源查找到利用微机原理与接口技术设计制作交通灯的相关信息,对不同的方案进行细致的分析比较。
并且按照题意与实际情况进行改进,使之符合要求。
然后按照电路图进行接线,最终做出一个简单的交通灯。
制作过程中发现的一些问题通过共同的分析研究得到的解决,此次课程设计巩固了前期的理论知识,增强了动手实践能力。
程序主要是由定时子程序、发光二极管显示子程序和中断服务程序组成。
包括对8255、8088等可编程器件的编程。
一、 课程设计目的以及要求
1、课程设计题目:
交通灯
使用8255A和8088模拟十字路口交通灯的闪烁情况
2、基本要求:
1、设计实验电路
2、分析实验原理
3、列出实验接线表
4、采用汇编语言编写实验程序
5、通过实验验证功能的实现
6、编写课程设计说明书。
3、初始条件:
运用所学的微机原理和接口技术知识;
微机原理和接口技术实验室的实验箱设备。
4、设计目的
●掌握8255A方式0的使用与编程方法
●PC机及配套的接口电路实验装置
●IC芯片:
8255A应用
●利用并行I/O识别开关(4个),使相应的发光二极管发光。
●熟练掌握Altiumdesigner10.0(或protel99)软件对电路原理图
4.1)设计期望实现的目标
因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的规律。
假设一个十字路口为东西南北走向,初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1
4.2)目标的可行性分析
通过微机原理与接口课程的学习,在理论上设计目标是可以实现的,结合学校实验教学系统在设计合适的软硬件模块能够实现此课程设计的目标。
双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
4.43)使用的技术和方法
通过实验教学系统上搭建硬件环境,通过外设计算机提供软件编译环境两者结合起来,由汇编实现编程控制。
二、内容
●采用8255A设计交通灯控制的接口方案
●插接电路
●编写控制程序
1.设计步骤
(1)方案设计
考虑普通十字路口,交通灯的控制可分东西向和南北向两组,每组可用红、黄、绿三个灯进行交通管理,所以本方案要点是对六个交通灯进行控制。
由于灯光控制只需要开、关两个状态,所以可以采用开关量实施控制。
开关量的输出可以采用8255A的端口,由于开关量有6位,所以采用8位端口,又因为灯光控制不需要联络信号,所以按照方式0输出即可。
(2)电路插接
本实验利用装置提供的8255A芯片和逻辑电平显示器进行。
(3)编程与运行
2.详细设计:
(1)电路原理:
本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。
完整系统的硬件连接如图所示。
硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。
定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。
中断子程序包括数码管输出数据刷新程序和各状态处理程序。
数码管输出数据刷新子程序是实现倒计时25s,用LEDOUT表示输出的数据,cnt用来软件计时1s,就是计数10个100ms。
LED输出是要将输出的数据转化为段选码。
根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。
状态1和3的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。
状态2和4要实现黄灯的闪烁,间隔点亮和熄灭就可以了。
状态1和3处理程序的流程图NUM是状态1对应的PC口输出。
外部中断服务子程序主要用来处理紧急情况,将2个方向的车都停止运行,点亮所有红灯。
下次中断来时恢复以前的状态。
用一个标志位FLAG判断是第一次进入还是恢复状态。
(2)编写汇编程序通过8255A控制四个方向交通灯的状态,具体假设设计状态如下:
1、首先初始状态0为东西南北都关灯。
2、然后经过一段时间后转为状态1东西绿灯通车,南北红灯。
3、过一段时间转为状态2,东西绿灯闪几次转亮黄灯,延时几秒,南北路口的仍然亮红灯。
4、再转状态3,南北绿灯通车,东西红灯。
5、过一段时间转状态4,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
6、最后返回至状态1继续循环。
说明:
(1)实际上黄灯的闪烁由两个状态组成,例如南北红灯同时东西黄灯亮与南北红灯同时东西黄灯灭这两个状态的组成。
所以端口一共有七组状态。
东西方向:
PA0红灯;PA1黄灯;PA3绿灯;
南北方向:
PA4红灯;PA5黄灯;PA6绿灯;
三、硬件设计
3.18255A的工作原理
1、8255A的内部结构:
1)数据总线缓冲器:
这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。
输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
2)三个端口A,B和C:
A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。
B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。
C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
3)A组和B组控制电路:
这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。
方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。
对C口按位复位命令字可对C口的每一位实现置位或复位。
A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。
4)读写控制逻辑:
用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2、8255A的工作方式:
方式0---基本输入输出方式;
方式1---选通输入输出方式;
方式2---双向选通输入输出方式。
3、脚信号
8255A的引脚如有:
分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。
D7~D0(databus):
三态、双向数据线,与CPU数据总线连接,用来传送数据。
(chipselect):
片选信号线,低电平有效时,芯片被选中。
A1,A0(portaddress):
地址线,用来选择内部端口。
(read):
读出信号线,低电平有效时,允许数据读出。
(write):
写入信号线,低电平有效时,允许数据写入。
RESET(reset):
复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0(portA):
A口输入/输出信号线。
PB7~PB0(portB):
B口输入/输出信号线。
PC7~PC0(portC):
C口输入/输出信号线。
VCC:
+5V电源。
GND:
电源地线。
3.28088工作原理
1)、任何微处理器(包括8086/8088)的地址总线、数据总线及部分控制总线均采用三态缓冲器式总线电路。
所谓三态,是指它们的输出可以有逻辑“1”、逻辑“0”和“浮空”三种状态。
当处于浮空状态时,总线电路呈现极高的输出阻抗,如同与外界“隔绝”一样。
总线电路的这种三态性,既保证了在任何时候,只允许此刻进行信息交换的设备占用总线,其他设备与总线“完全” 脱离,不会影响正常的信息传递,又为其他快速信息传递方式(如DMA)提供了必要条件。
只要申请DMA方式传递,外总线可以完全“脱离”CPU的控制,而与存储器或I/O设备直接进行信息交换。
总线的三态性是现在问世的所有微处理器的共性。
学习和使用微处理器必须认识到这一特性。
对8086来说,还应该认识其CPU引脚的特殊性:
此元件是存储器电路中的一部分,它有28个端口,其中A1-A12为输入端是A【0..14】网络中一部分,而D0-D7就是D【0..7】网络中的一部分,另外28脚和14脚为电源和接地,在制作QEWE和CS1端口时,在每个字母后面都要加一个斜杠
这个图中8255元件是输入输出电路中的主要元件之一,D0-D7就是D【0..7】网络中的一部分,A0-A1是A[0..14]网络的一部分,其中PA0-PA7,PB0-PB7,PC0-PC7全部是IO输出
四、实验原理图
五、pcb图
六、程序:
PA55EQU0210H;8255PA口地址
PC55EQU0212H;8255PC口地址
P55CTLEQU0213H;8255控制口地址
;-----------LED灯----------------------
PB55EQU211H
D1EQU10H
D2EQU50H
DATASEGMENT
PBDB?
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
;-----------开始-----------------
CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
START:
PUSHCS
POPDS
MOVDX,P55CTL;设置8255口为输出口
MOVAL,80H
OUTDX,AL
;---------LED----------------------
MOVDX,204H
MOVAL,00H
OUTDX,AL;清LED
MOVDX,PB55;全红
MOVAL,0FH
OUTDX,AL
MOVBX,7fH
CALLDLY
CALLDLY
CALLDLY
CALLDLY
CALLDLY
;CALLBEGIN
;CALLWRITE2;调用数码管过程
BG:
MOVAL,96H;南北绿,东西红
OUTDX,AL
MOVBX,D2
CALLDJS;计数
MOVDX,P55CTL;设置8255口为输出口
MOVAL,80H
OUTDX,AL
;---------LED----------------------
MOVDX,204H
MOVAL,00H
OUTDX,AL;清LED
MOVDX,PB55;全红
;JMPXH1
MOVCX,03H
JNZXH1
XH1:
MOVAL,9FH;绿灭
OUTDX,AL
MOVBX,D1
CALLDLY
MOVAL,96H;绿亮
OUTDX,AL
MOVBX,D1
CALLDLY
LOOPXH1
MOVAL,06H;南北黄
OUTDX,AL
MOVBX,D1
CALLDLY
MOVBX,D1
CALLDLY
MOVAL,69H;南北红,东西绿
OUTDX,AL
MOVBX,D2
CALLDJS
MOVDX,P55CTL;设置8255口为输出口
MOVAL,80H
OUTDX,AL
;---------LED----------------------
MOVDX,204H
MOVAL,00H
OUTDX,AL;清LED
MOVDX,PB55;全红
MOVCX,03
XH2:
MOVAL,6FH
OUTDX,AL
MOVBX,D1
CALLDLY
MOVAL,69H
OUTDX,AL
MOVBX,D1
CALLDLY
LOOPXH2
MOVAL,09H
OUTDX,AL
MOVBX,D1
CALLDLY
MOVBX,D1
CALLDLY
JMPBG
;倒计时-----------------------------------
DJSPROCNEAR
PUSHDX
PUSHCX
PUSHAX
PUSHBX
BEGIN:
MOVAL,0
MOVCH,0
WRITE2:
MOVAH,AL
LEABX,LED
XLAT
MOVCL,8H;分八位写一个LED
;-----------164驱动---------------------------------
WRITE1:
MOVDX,PA55
OUTDX,AL
PUSHAX
MOVDX,P55CTL;利用8255PC5口控制DCLK,使DCLK产生一低电平到高电平的跳变
MOVAL,0AH;PC5置"0"
OUTDX,AL
MOVAL,0BH;PC5置"1"
OUTDX,AL
POPAX
RCRAL,1
DECCL
CMPCL,0
JNZWRITE1
CALLDLY
MOVAL,AH
INCAL
INCCH
CMPCH,0AH;循环10次
JBEWRITE2;调用数码管过程
POPDX
POPCX
POPBX
POPAX
RET
DJSENDP
;JMPBEGIN
;---------延时1S--------------------
DLYPROCNEAR
PUSHCX
MOVBL,24
M2:
MOVCX,2810H
LOOP$
DECBL
JNZM2
POPCX
RET
DLYENDP
;-----------数码管编码----------------------
LED:
DB09H,01H,1FH,41H,49H,99H,0DH,25H,9FH,03H
;9876543210
CODEENDS
;-------------------------------------------
ENDSTART
七、心得体会
此次实习可以说是获益匪浅。
通过查阅了很多资料,了解了许多汇编程序的思想,扩展了自己的视野,不再仅仅局限于书本中几条简短的程序,而且更重要的是明白写程序的态度:
仔细谨慎,精益求精。
在程序中添加了黄灯闪烁,更加醒目。
另外加入能够实现各路口绿灯显示时间不同,适应在主干道和支线路口中使用。
在系统加电调试中,针对一些问题,熟练掌握了根据原理分步测试,将错误之处缩小的最小范围内。
实验的完成需要扎实的基础知识,这次实验不仅是对课程内容掌握程度的一次考验,而且是一次很好的训练机会,训练了我们查找资料的能力。
通过此次课程设计的锻炼,自己的动手能力有了很大的提高,查找问题、解决问题的能力也有了相应的进步。
在本次的实验过程中,遇到很多困难,毫无头绪的时候,毅力和坚持的勇气很重要,支撑我们走过实验的每一步。
。
在这次课程设计的过程中,我无论是在关于X86系列的相关知识或在接口芯片的初始化及应用方面还是在利用所学到知识全面设计系统方面收获都很大。
为以后从事软件的设计开发打下了良好的基础树立独立从事研发的信心,同时也培养了我认真的做事态度。
通过设计交通灯数字控制系统将软硬充分相结合,学会了很多有用的知识锻炼了软硬相互协调的能力。
同时也增强了全面系统考虑问题的能力,以及硬件设计能力。
可以说这次课程设计很成功,在自己学习独立思考的情况下找到了分析问题解决问题的方法。
这对以后的学习和工作具有重要的指导意义!
虽然花了很长时间编写软件程序设计,但这一切还是理论上的。
希望学校能提供机会和条件,让我们能够去真正地将理论和实践相结合。
通过这次程序,感觉自己所掌握的知识是那么的有限,还有许多需要改进和不足的地方,同时也帮助了我怎样学好这门课程,增加了我对这门学科的兴趣。
通过这次实习报告的设计,使我更加清楚以后的发展及学习的方向。
最后感谢老师这个学期的指导和帮助!
参考文献
[1]李国洪.可编程器件EDA技术与实践[M].北京:
机械工业出版社,2004:
100-123.
[2]翟殿堂,方敏,历光伟.基于EDA的多功能计时器设计[J].信息技术,2008,17(11):
39-45.
[3]奚素霞.基于EDA技术的数字电路设计[J].重庆科技学院学报(自然科学),2009,11(4):
124-151.
[4]候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:
西安电子科技大学出版社,1999:
5-7.
[5]赵辉.基于EDA技术的数字系统设计[J].电子设计工程,2012,20
(2):
34-37.
[6]周永亮,王军民,薛良玉,胡文宝.基于CPLD的时间信号精确同步研究[J].石油天然气学报,2011,33(4):
105-108.
[7]乔桥,张弛,邹安阳.基于CPLD的扭簧分选仪交流伺服系统的设计[J].武汉纺织大学学报,2011,24(3):
62-65.
[8]王永祥.基于CPLD的两相步进电机细分驱动器设计[J].宜春学院学报,2011,33(4):
52-53.
[9]刘凯,王红航.电子抢答器的EDA设计与实现[J].电子元器件应用,2010,12(8):
54-57.
[10]侯宝生.基于VHDL的数字倍频器设计[J].科学技术与工程,2009,9(3):
705-708.
.