交通灯微机接口课程设计报告x.docx
《交通灯微机接口课程设计报告x.docx》由会员分享,可在线阅读,更多相关《交通灯微机接口课程设计报告x.docx(24页珍藏版)》请在冰豆网上搜索。
交通灯微机接口课程设计报告x
合肥学院
计算机科学与技术系
课程设计报告
2008~2009学年第一学期
课程
微型计算机原理与接口技术
课程设计名称
交通灯
学生姓名
朱丽娜
学号
0604032035
专业班级
06网络工程
(2)班
指导教师
肖连军老师
2009年1月
一、题义分析及解决方案
1、题义需求分析
本程序设计需应用软件控制并运行接口电路,使连接在该接口上的红、绿、黄发光二极管按十字路口交通红、绿、黄灯形式闪烁,并显示绿灯的倒计时时间,如果需要还可以动态的对到计时时间进行设定。
交通灯变化规律根据实地查看和查看资料:
各个路口的交通灯变化规律并不相同,本课程设为了简化,只考虑了交通灯正常时的变化规律,即有如下规律变化:
程序一开始,四个方向的灯全为红灯,接着变为黄灯闪烁数次,然后东西方向为红灯,南北方向为绿灯并显示倒计时时间,倒计时间结束后,交通灯变成黄灯,闪烁几次后,东西方向变成绿灯,南北变成红灯,再变成黄灯,如此按交通灯的变化规则交替变化,在对绿灯采取倒计时时,采用的是为各个灯设置固定的亮持续时间。
对此设计模拟交通灯变化规律,需要解决如下问题:
(1)绿灯的倒计时时间如何显示,倒计时间用什么来控制
(2)交通灯用什么器材来模拟显示
(3)如何设计pc机与实验模拟芯片接口通信
(4)交通灯运行状态怎么实现,交通灯状态的切换问题怎么解决
(5)如何实现交通灯的闪烁,并且控制闪烁时间,
(6)如何对所选芯片进行编程控制
(7)如何获取开关上用户设置的初值信息,并且把初值信息如何存储。
2、解决问题方法及思路
1)硬件部分
1、LED设计说明:
用LED作为倒计时时间的显示器,LED在亮度、功耗、可视角度和刷新速率等方面,都更具优势。
LED与LCD的功耗比大约为10:
1,利用LED技术,可以制造出比LCD更薄、更亮、更清晰的显示器,LED是发光二极管属于二极管的一种,LCD是液晶显示器,两者相差太多.但是用LED的点阵也能组成显示器,适用于户外大屏幕显示,分辨率较低,LED与LCD具体比较如下图
表1-1:
LCD与LED的比较
LCD
液晶显示器,通过液晶和彩色过滤器过滤光源,在平面面板上产生图象,具有零辐射,低耗能,散热小,纤薄轻巧,精确还原图象,显示字符锐利,屏幕调节方便,可视角度小,响应时间过慢,亮度可对比度低等特点
LED
发光二极管,是由发光二极管排列组成的显示器件,它采用低电压扫描技术,具有耗电少,使用寿命长,成本低,亮度高,故障少,视角大,视角大,可视距离远的特点
通过分析和对比,LED显示器要较优于LCD显示器,因此本实验选择LED
2、8255设计说明:
用8255A可编程并行接口芯片的A、B、C三口作为红、绿、黄交通灯的控制输入口。
8255有三个并行输入输出口,可以方便的对三种颜色的交通灯进行很好的控制。
解决方案是:
PB0~PB7接模拟灯二极管,PA0~PA7接7段二极管的段选,PC0~PC3接7段二极管的位选,PC4~PC7与开关相连,处理器芯片集成芯片卡PCI卡连接,用于完成硬件方面的实验正常通信。
其芯片比较说明:
如下表
表1-2:
8255A与8251芯片的比较
比较内容
8255A芯片
8251A芯片
通信方式
并行
串行
数据传送方式
数据的各位同时传送,
数据一位一位地顺序传送,,
内部组成
8155内有256字节RAM和一个定时计数器。
8255没有
特点
通信线路较8251复杂
通信线路简单,利用电话或电报线路就可实现通信
输入/输出
编程较为灵活
编程较8255不够灵活
应用范围
使用十分方便,传输距离近,成本较高
传输距离远,使用不方便,但传输速度慢,降低成本,
初始化特点
8255A直接位清0/置1功能简化了接口控制
8251在初始化时,必须重新设置模式寄存器的格式.
2)、软件部分
根据硬件需求采用8255A芯片,为实现对通信的控制,采用汇编语言,分别编程控制8255的工作方式,在编程时应考虑到状态的转换采用查询方式控制,根据需求分析可采用8255的方式0下工作具体如下设置:
硬件连接说明:
8255A芯片的PA、PB、PC三口的工作方式为方式0,将8255的PB0~PB7接红绿灯用以模拟交通灯的变化,PA0~PA7接7段LED灯的段选码,,完成LED显示器的段选,PC0~PC3接LED显示器的位选码用以完成位选,PC4-PC7接开关,以完成初值接收。
初始化8255后。
利用汇编语言编写访问控制程序,控制绿灯的显示倒记时间,它与红灯的显示时间是相同的,编写控制程序控制黄灯的闪烁时间,当绿灯的显示时间结束后切换到黄灯,再切换到红灯,如此循环下去。
二、硬件设计
1、选择芯片74138译码器
1)、74138译码器在本实验中的作用:
由于在对8255A写控制字时只有C口可以实现高四位输入,低四位输出,然而集成箱中的接口不够多,因此通过74138译码器实现动态的设置到计时
2)、74138译码器的功能分析:
图1-1:
74138译码器的引脚排列图和逻辑符号
表1-3:
74138译码器真值表
输入
输出
S1S1+S3A2A1A0
Y0Y1Y2Y3Y4Y5Y6Y7
10000
01111111
10001
10111111
10010
11011111
10011
11101111
10100
11110111
10101
11111011
10110
11111101
10111
01111110
0dddd
11111111
d10dd
11111111
1、选择芯片8255A
1)、8255A在本实验中的作用:
通过8255A的三个I/O端口A口、B口、C口与红、绿、黄二极管连接起来控制交通灯的规律性变化。
2)、8255A的功能分析:
PA、PB、PC三口均工作在方式0状态。
:
PB2~PB3接黄灯,PB4~PB5接红灯;PB0~PB1接绿灯,PA0~PA7作为段选码;PC0~PC1作为位选码。
我们采用的是将PC口分成两部分使用,PC0-PC3作为位选码,PC4-PC7作为输入口,接收开关输入的初值信息。
将在用8255A前首先要对它进行初始化,设置它的方式选择控制字。
3)、8255A工作方式0说明:
方式0的工作特点:
这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。
其功能为:
(1)两个8位通道:
通道A、B。
两个四位通道:
通道C高4位和低四位;
(2)任何一个通道可以作输入/输出;(3)输出是锁存的;
(4)输入是不锁存的;
(5)在方式0时各个通道的输入/输出可有16种不同的组合。
方式0的使用场合:
同步传送是在外设控制过程的各种动作时间为固定,且已知的条件下使用的。
因此,传送中不要应答信号。
输入时,执行程序只要给出IN指令;而输出时,也只给出OUT指令,就能实现数据的输入或输出。
优点是程序简单,接口的硬件开销小。
查询式传输时,要先查询一个外设的状态,当该状态表示外设已准备好时,方能开始查询传输,否则CPU将继续查询。
但在方式0,没有规定固定的应答信号,所以,这时将通道A、B作为数据通道,把通道C的4个位(高4位或低4位)规定为输出口,用来输出一些控制信号,而把通道C的另外4个位规定为输入口,用来输入外设的状态。
这样利用通道C来配合通道A和B的输入/输出操作。
4)、8255A方式选择控制字说明:
控制字格式如图1-2:
图1-2:
8255A芯片的控制字格式
参数说明:
D7=1工作方式控制标志。
D6D5组合设定A口工作方式:
00~方式0、01~方式1、10/11~方式2。
D4设定A口的输入/输出,D4=1输入D4=0输出。
D3C口高位输入/输出选择,D3=1输入D3=0输出。
D2B口工作方式选择,D2=1方式1;D2=0方式0。
D1B口输入/输出选择D1=1输入D1=0输出。
D0设定C口低位输入/输出D0=1输入D0=0输出。
5)、8255A技术参数:
主要参数说明:
8255A工作最大电流为120MA,VCC=-5V~+5V,I(DAR)工作电流最大为4MA。
8255的输出电压不高,连接到LED时,最好加入一个驱动器起到电流放大的作用,其具体参数值说明如表3-1。
表1-4:
8255A技术参数说明
8255A技术参数
测试条件
规范值
单位
大
小
输入低电平电压VIL
0.8
-0.5
V
输入高电平电压VIH
VCC
2.0
V
输出低电平电压VOL(数据端口)
IOL=2.5MA
0.45
V
输出低电平电压VOL(外围端口)
IOL=1.7MA
0.45
V
输出高电平电压VOH(数据端口)
IOR=-400MA
2.4
V
输出高电平电压VOH(外围端口)
IOH=-200MA
2.4
V
达林顿驱动电流IOAR
-4.0
-1.0
mA
电源电流 ICC
120
mA
输入负载电流 IIL
IIN=0~VCC
I/O
mA
输出浮动电流 IOF
VOR=0.45~VCC
I/O
mA
6)、8255A的逻辑图
图1-3:
8255A内部逻辑图
2、选择芯片七段LED显示器
1)、LED显示器在本设计中的作用:
接收由8255A芯片送来的字型码显示编码结果其中LED技术参数如表1-5:
表1-5:
LED技术参数说明
PCW
LF
Vr
Ir
If
p
对应变量
散射颜色
BT235
70
25
5
≥1.5
≤2.5
200
SEL-10
红
BT144
100
40
5
≥0.5
≤2.5
565
绿
BT134
100
40
5
≥0.5
≤2.5
585
蓝
2)、七段LED显示器LED显示器的功能分析:
LED显示器有共阳极和共阴极两类。
其原理图(图1-4):
图是一个6位LED动态显示电路,段驱动器输出LED字符7段代码信息,位驱动器输出6个LED的位选信号,即分时使Q0~Q5轮流有效,使得LED0~LED5轮流显示。
图1-4:
七段LED显示器
笔画型LED显示器是由8个二极管电路a~dp按字型‘8’的方式排列,当不同的二极管被选通后根据发光效果会显示不同的自型。
本设计中采用共阴极连接方式,a~dp分别与74LS273的1Q~8Q相连,接收段选码信号(高电平);4位LED显示器的4根共阴极引线与8255A的PC0~PC3相连,接收位选码信号(低电平)。
段选码和位选码共同作用以显示不同的字型。
LED字型显示原理:
表1-6:
LED字型显示组合
Dp
G
f
E
d
c
b
A
显示数码
散射颜色
0
0
1
1
1
1
1
1
0
3fh
0
0
0
0
0
1
1
0
1
O6H
0
1
0
1
1
0
1
1
2
5bh
0
1
0
0
1
1
1
1
3
4fH
0
1
1
0
0
1
1
0
4
66H
0
1
1
0
1
1
0
1
5
6dH
0
1
1
1
1
1
0
1
6
7dH
0
0
0
0
0
1
1
1
7
07H
0
1
1
1
1
1
1
1
8
7fH
0
1
1
0
1
1
1
1
9
6fH
4、硬件总逻辑图及其说明
1)、硬件原理说明:
本设计以STARES598PCI实验仪提供的最实用、新颖的接口实验,提供的汇编控制程序设计控制硬件运行为依据设计的;在课程设计中主要利用了STARES598PCI实验提供的8255A芯片,7段LED显示器,以及红绿灯LED显示二极管,其中完成PC机与实验箱之间的通信用到了最主要的集成卡PCI卡。
课程设计时完成编程调试的只要开发工具为星研集成开发环境。
2)、硬件连接说明:
8255A芯片的PA、PB、PC三口的工作方式为方式0,将8255的PB0~PB7接红绿灯用以模拟交通灯的变化,PA0~PA7接7段LED灯的段选码完成LED显示器的段选,PC0~PC3接LED显示器的位选码用以完成位选,PC机通过数据总线经过集成电路卡PCI卡与8255A芯片相连接。
其连接方式为:
PCI卡的地址总线A1A0接到8255A芯片的A1A0来实现端口选择。
将8255A芯片的片选信号CS与PCI卡的CS1相连接来决定各端口的初始地址。
8255A芯片的PB口中PB0~PB7经过排线与实验箱的红绿灯电路板的插槽相连接,用来实现控制交通灯的变化规律;8255A的PC口中的PC0~PC3经过排线与实验箱上的7段LED灯的位选码插槽相连接,用来实现选择绿灯倒计时时的7段LED灯的位置选择,8255A芯片的PA口中的PA0~PA7经过排线与实验箱上的7段LED灯的段选码插槽相连接,用来实现7段LED灯的段选码选择。
LED灯管的a、b、c、d、e、f、g、dp做为段选来显示倒计时数据。
图1-5:
硬件总连接图
三、控制程序设计
1、控制程序设计思路说明:
首先,明确交通灯的变化规律,假设在一个十字路口,其中东西方向,南北方向,工作方式如下:
将红黄绿灯按照红灯停,绿等行,黄灯闪烁为缓冲时间的原则进行通车。
倒计时将可以由用户自由设定,用8255的PB,PC口来连接红黄绿灯电路板,而PA口连接LED显示管来计数倒计时。
开始时初始化东西南北方向全为红灯,然后东西方向绿灯亮,进入倒计时默认值40秒,结束后东西方向绿灯闪烁三次,变黄灯亮三秒,然后红灯亮;南北方向绿灯亮,此时南北方向进入倒计时,倒计时时间可以在开关口提前设定本次倒计时时间。
结束后绿灯闪烁三秒后,变黄灯亮三秒,然后红灯亮,东西方向绿灯亮,如此循环下去。
其次,主程序的设计思路:
首先初始化8255A的芯片的控制字格式和状态字格式,其次设置交通灯开始运行的初始状态并做相应的延时便于观察,再次调用子程序对东西绿灯的倒计时时间,调用子程序显示绿灯的倒计时,后进行查表选择相应的LED灯的段选码,使相应的灯亮,显示东西绿灯交通灯变化,然后设置绿灯的闪烁,以及黄灯的亮持续,再次就是查表设置转换成南北绿灯的亮,同时调用子程序设置南北绿灯的倒计时时间,后进行查表选择相应的LED灯的段选码,使相应的灯亮,显示南北绿灯交通灯变化,然后做南北绿灯的闪烁,和黄灯的亮持续,最后做主程序的循环,利用无条件跳转指令。
其控制流程如下
2、程序流程图
图1-6:
主控制程序
再次,也设计了一个到计时显示子程序,用来显示绿灯的到计时时间,设计思路:
首先要保存进入到计时子程序时的断点保存,以保证能够子程序结束能够正常返回主程序,其次设置LED灯的秒数跳的快慢,使其运行结果便于观察,再次设置程序分别显示到计时LED灯的秒数的个位与十位,在显示秒数的个位与十位时要做秒数的个位与十位计数是否到零的判断,与此同时也要做秒数的个位与十位的断选码指示器的移动,最后做恢复断点和子程序的返回。
其控制流程图:
图1-7:
倒计时显示程序
最后,还设计了两个延时程序,一个是绿灯闪烁3次时间的延时DL500子程序,一个是延时黄灯亮的时间DELAY子程序;DL500子程序的设计思路利用了设备提供的软中断实现的延时,其控制流程如(流程图:
1-7);DELAY子程序的设计利用的是多次循环空操作实现,思路首先保存断点设置空操作的次数,做判断循环是否该结束,然后恢复断点,返回主程序,其控制流程如下
图1-8:
500ms延时程
图1-9:
DELAY延时程序
3、控制程序
;片选CS1偏移地址范围0F0H~0FFH
.MODELTINY
PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32BITRAM板卡上的8237提供基地址)
Vendor_IDEQU10EBH;厂商ID号
Device_IDEQU8376;设备ID号
.STACK100
.DATA
IO_Bit8_BaseAddressDW?
msg0DB'BIOS不支持访问PCI$'
msg1DB'找不到StarPCI9052板卡$'
msg2DB'读8位I/O空间基地址时出错$'
GGGDW?
HHHDW?
WWWDW?
XXXDW?
COM_ADDDW00F3H;控制口偏移量
PA_ADDDW00F0H;PA口偏移量
PB_ADDDW00F1H;PB口偏移量
PC_ADDDW00F2H;PC口偏移量
LED_DataDB10111110B;东西绿灯,南北红灯
DB10111111B;东西绿灯灭,南北红灯
DB10111101B;东西黄灯亮,南北红灯
DB11101011B;东西红灯,南北绿灯
DB11111011B;东西红灯,南北绿灯灭
DB11011011B;东西红灯,南北黄灯亮
SGDB6fH,7fH,07H,7dH,6dH,66H,4fH,5bH,06H,3fH;9-0
.CODE
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLInitPCI
CALLMoDIfyAddress;根据PCI提供的基地址,将偏移地址转化为实地址
;程序开始
MOVDX,COM_ADD;初始化8255控制口,将地址设置成COM_ADD
MOVAl,88H;方式0下,PA,PB为输出口PC为输入口
OUTDX,Al
LEADI,[SG+7]
MOVGGG,DI
MOVWWW,DI
LEASI,[SG+9]
MOVHHH,SI
MOVXXX,SI
CALLDL500ms
START1:
CALLTEST1
LEABX,LED_Data;将控制信息表的首地址给B
MOVDX,PB_ADD
MOVAl,0;Al为0表示查表中第一个字节的内容
XLAT;查表,将表中第一个字节的内容放入Al中
OUTDX,Al;东西绿灯,南北红灯
MOVSI,HHH
MOVDI,GGG
CALLDJS
MOVCX,3
START2:
MOVAl,1
XLAT
OUTDX,Al;东西绿灯灭,南北红灯
CALLDL500ms
MOVAl,0
XLAT
OUTDX,Al;东西绿灯亮,南北红灯
CALLDL500ms
LOOPSTART2
MOVAl,2;东西黄灯亮,南北红灯
XLAT
OUTDX,Al
CALLDL2S
MOVAl,3;东西红灯,南北绿灯
XLAT
OUTDX,Al
CALLTEST1
MOVSI,XXX
MOVDI,WWW
CALLDJS
MOVCX,3
START3:
MOVAl,4;东西红灯,南北绿灯灭
XLAT
OUTDX,Al
CALLDL500ms
MOVAl,3;东西红灯,南北绿灯亮
XLAT
OUTDX,Al
CALLDL500ms
LOOPSTART3
MOVAl,5;东西红灯,南北黄灯亮
XLAT
OUTDX,Al
CALLDL2S
JMPSTART1
;延时500ms
DL500msPROCNEAR
PUSHAX
PUSHDX
MOVDX,500
MOVAH,0FFH
INT21H
POPDX
POPAX
RET
DL500msENDP
;延时2秒
DL2SPROCNEAR
PUSHCX
MOVCX,4
DL2S1:
CALLDL500ms
LOOPDL2S1
POPCX
RET
DL2SENDP
TEST1PROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVDX,PC_ADD
INAL,DX
TESTAL,80H
JZOOO
MOVDX,PC_ADD
INAL,DX
ANDAL,7FH
SHRAL,4
MOVBL,9
SUBBL,AL
MOVBH,0
MOVSI,BX
LEADI,[SG+SI]
MOVGGG,DI
movWWW,DI
OOO:
POPDX
POPCX
POPBX
POPAX
RET
TEST1ENDP
;倒计时显示程序
DJSPROCNEAR
PUSHDX
PUSHCX
PUSHBX
PUSHAX
PRT:
MOVCX,050H;设置循环秒数跳的快慢(LED);;;;循环计数初值CX->30
NUM:
MOVAl,[SI];设置段选码,将SI中的内容送入PA口
MOVDX,PA_ADD
OUTDX,Al
MOVAl,0FcH;设置位选码,PC0口置0高四位为0
MOVDX,PC_ADD;其他口为1来选中LED1,显示个位
OUTDX,Al
CALLDELAY
MOVAl,[DI];设置段选码,将DI中的内容送入PA口
MOVDX,PA_ADD
OUTDX,Al
MOVAl,0FDH;设置位选码,PC1口置0高四位为0
MOVDX,PC_ADD;其他口为1来选中LED2,显示十位
OUTDX,Al
CALLDELAY
LOOPNUM;循环到NUM
INCSI;个位SI自增1
CMPS