红外控制交通灯的设计与实现微机课程设计 精品Word文档下载推荐.docx
- 文档编号:7723964
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:43
- 大小:428.05KB
红外控制交通灯的设计与实现微机课程设计 精品Word文档下载推荐.docx
《红外控制交通灯的设计与实现微机课程设计 精品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《红外控制交通灯的设计与实现微机课程设计 精品Word文档下载推荐.docx(43页珍藏版)》请在冰点文库上搜索。
然后南北方向左转绿灯(6号灯)闪烁6次,延迟3S,东西方向继续直行红灯左转红灯(3号灯和4号灯)亮,再跳到一开始,如此循环。
2.解决方法与思路
1)硬件部分
使用到STARES598PCI实验仪的模块包括:
A3区:
CPU总线、片选区
B2区:
逻辑笔、单脉冲、频率发生器
C1区:
电源区
C5区:
8253、8251
B4区:
8255电路
D2区:
0~5V电压输出
G2区:
红外通讯
G6区:
发光管、按键、开关
CPU通过8251的TXD端口将红外控制信息的发送到红外通讯的IN端口,经过红外无线通讯将控制信息输出out端口,然后将信息送到8251的RXD端口。
送到CPU进行判断,根据收到的信号选择相应的模式。
8255是用来控制交通灯的,通过8255的A口来控制。
需要A3区的3个端口用来接8251、8255、8253。
B2区提供脉冲频率。
D2区提供电源。
G6区提供发光管用来模拟交通灯。
2)软件部分(汇编语言编写程序)
①首先要对8255进行初始化设计,设置8255的工作方式并确定8255的端口地址。
②编写发光二极管的编码,交通灯控制程序,两种模式的选择。
③对8253进行初始化,定时器的选择,工作方式的选择,以及编码方式。
④对8251进行初始化,设置方式控制字及命令控制字。
⑤编写红外通讯设备的数据发送子程序。
二、硬件设计
1.选择芯片8255A
1)8255A在本设计中的作用
8255用来并行的发送交通灯编码,接发光二极管,用来控制程序所控制要求的交通灯闪烁
2)8255A的功能分析
CS:
片选信号,低电平有效;
A0、A1:
地址信号。
JP52:
PC口;
JP53:
PB口;
JP56:
PA口。
图2-18255A的内部框图
8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。
三个端口都可以作为输入端口或输出端口。
A口有三种工作方式:
即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。
8255A的工作只有当片选CS效时才能进行。
而控制逻辑端口实现对其他端口的控制。
8255A的操作功能表
A1A0
操作
数据传送方式
00100
读A口
A口数据→数据总线
00101
读B口
B口数据→数据总线
00110
读C口
C口数据→数据总线
01000
写A口
数据总线数据→A口
01001
写B口
数据总线数据→B口
01010
写C口
数据总线数据→C口
01011
写控制口
数据总线数据→控制口
表2-18255A的操作功能表
8255A有三种工作方式,用户可以通过编程来设置。
本设计用到工作方式0。
3)8255A的技术参数
①与外设相连的
PA7~PA0:
A口数据信号线。
PB7~PB0:
B口数据信号线。
PC7~PC0:
C口数据信号线。
②与CPU相连的
RESET:
复位信号。
当此信号来时,所有寄存器都被清除。
同时三个数据端口被自动置为输入端口。
D7~D0:
它们是8255A的数据线和系统总线相连。
CS:
片选信号。
在系统中,一般根据全部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。
只有当其有效时,读信号写才对8255A进行读写。
RD:
读信号。
当此信号有效时,CPU可从8255A中读取数据。
WR:
写信号。
当此信号有效时,CPU可向8255A中写入数据。
A1、A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定:
A1、A0为00时,选中A端口;
A1、A0为01时,选中B端口;
A1、A0为10时,选中C端口;
A1、A0为11时,选中控制口。
③参数说明:
输入最低电压:
min=-0.5V,max=0.8V
输入最高电压:
2.0V
输出最低电压:
0.45V
输出最高电压:
2.4V
8255A的方式控制字
D7D6D5D4D3D2D1D0
1
1:
工作方式A口方式0输出B口方式0输出
C口高4位输入C口低4位输入
图2-28255A的方式控制字表
方式0的工作特点:
这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。
通道的功能为:
两个8位通道:
通道A和B。
两个四位通道:
通道C高4位和低四位,任何一个通道可以作输入/输出,输入是不锁存的,输出是锁存的,在方式0时各个通道的输入/输出可有16种不同的组合。
X
写入位编码
写入内容
写入位编码0写入0
D0-D7000-1111写入1
图2-38255A的置位/控制字表
2.选择芯片8253
1)8253在本设计中的作用
8253在本实验中的用作方波发生器,可编程通信接口8251A串行发送和接受数据时需要脉冲时钟,8253的作用是为8251提供收发时钟。
2)8253的功能分析
片选信号,低电平有效;
地址信号;
1片8253内部有3个计数器,分别称计数器0、1、2,其结构完全相同,互相之间工作完全独立。
每个计数器有三个引脚和外部联系:
CLK:
计数脉冲输入,计数器对该引脚出现信号进行计数,最高计数速率为2.6MHZ。
Gate:
门控输入,用于控制计数器是否对CLK计数。
OUT:
输出信号端。
每个计数器内部都有1个8位的控制寄存器,三个控制寄存器使用同一端口地址,在编程结构图中,画为1个控制寄存器;
每个计数器内部还有1个计数初值寄存器、1个计数执行部件,执行部件(CE)是1个16位减法计数器,其起始值等于初值寄存器(CR)的值。
CR的值通过程序设置。
输出寄存器(OL)用来锁存执行部件(CE)的值,以便CPU读出。
(CE)和1个输出锁存器,它们都是16位的。
计数器0,计数器1,计数器2
这3个计数器互相独立,各自可按不同的方式工作。
计数器的内部结构如前面所述,每个计数器包含一个16位的初始寄存器,一个计数执行部件和一个锁存器。
计数执行部件从初
始值寄存器中获得计数初值,便进行减1计数,此时,锁存器跟随记数执行部件的内容而变
化,当有一个锁存命令来到时,锁存器便锁定当前计数,直到被读走以后,又跟随计数执
行部件的动作。
各计数器的外部输入输出信号如图所示。
CS
RD
WR
A1A0
功能
00
对计数器0设置计数初值
01
对计数器1设置计数初值
10
对计数器2设置计数初值
11
设置控制字或给一个命令
从计数器0读出计数值
从计数器1读出计数值
从计数器2读出计数值
当A1A0=11时,通过读/写控制逻辑电路选中控制积存器,此时,CPU可以写入控制字。
左表是CPU对8253各积存器访问时,信号和功能之间的对应关系。
对左表,我们作两点说明:
(1)除了这七组组合外,其他组合下,数据总线为高阻抗状态。
(2)当A1=A0时,第一次写入的一定作为控制字,此后写入的作为命令。
读/写电路从系统控制总线接收输入信号,经过组合,产生对8253各部分的控制。
具体为:
A1、A0—用来对3个计数器和控制积存器进行寻址。
RD—读信号。
当RD为低电平时有效,此时,表示CPU正在对8253的一个计数器进行读操作。
WR—写信号。
当WR为低电平时有效,此时,表示CPU正在对8253的几个计数器进行写操作。
CS—片选信号。
只有在CS为持续低电平的情况下,RD和WR才会受到确认,否则会被忽略
3)8253的技术参数
因为8253的控制积存器和3个计数器分别具有独立的编程地址,并且控制字本身的内容又确定了所控制的积存器序号,所以,队8253的编程没有太多严格的顺序规定,可以非常灵活.但是,编程有两条原则必须严格遵守:
(1)对计数器设置初始值前必须先写控制字.
(2)初始值设置时,要符合控制字中的格式规定,即只写低位字节还是写高位字节,或者高低位字节都写,控制字中一旦规定,具体初始值设定时就要一致.
A1A0
写(WR)
读(RD)
计数器0,初值寄存器(CR)
输出寄存器,(输出锁存器OL)
计数器1,初值寄存器(CR)
输出寄存器,(输出锁存器OL)
计数器2,初值寄存器(CR)
控制寄存器
8253无状态寄存器
8253有两根地址线A1A0,对应4个端口地址,各寄存器的端口地址分配如下:
(PC机中口地址B0H-BFH)。
初始化工作有2点:
(1)写入控制字;
(2)按控制字的要求写入计数初值。
8253有六种工作模式(0~5),每种工作模式决定以下内容:
1.计数初值何时起作用?
2.门控信号的影响。
3.OUT信号的状态
4.计数操作是否可以重复,或称计数初值是否可以自动装入。
①不可重复 ②自动重复 ③条件重复
5.计数器的工作模式:
计数器在CLK的下降沿使计数值减1,计数值减至0时,“计数到”。
写入初值0时,代表最大初值65536。
下面分别为8253在各种模式下的时序。
模式0:
计数结束产生中断
模式1:
可重复触发的单稳态触发器
模式2:
分频器,
模式3:
方波发生器
模式4:
软件触发的选通信号发生器
模式5:
硬件触发的选通信号发生器
3.选择芯片8251
1)8251在本设计中的作用
本实验中选择8251作为可编程串行接口,主要的作用的是将红外编码串行的发送出去,通过红外的无线传输,在红外的接收端再将数据串行的发送回8251,8251将数据发回cpu进行判断
2)8251的功能分析
CS片选信号,低电平有效
RxC、TxC:
收发时钟;
C/D:
命令/数据;
RXD、TXD:
串行收发。
时钟。
8251A由7个模块组成,这7个模块为接收缓冲器、接收控制电路、发送缓冲器、发送控制电路、数据总线缓冲器、读写控制逻辑电路和调制解调控制电路。
A.读/写控制逻辑:
它用来配合数据总线缓冲器工作。
即:
a.接收写信号/WR,并将来自数据总线的数据和控制字写入8251A;
b.接收读信号/RD,并将数据或状态字从8251A读往数据总线;
c.接收控制/数据信号C/-D,将此信号和读/写信号合起来通知8251A,当前读/写的是数据还是控制字、状态字;
d.接收时钟信号CLK,完成8251A的内部定时;
e.接收复位信号RESET,使8251A处于空闲状态。
B.接收缓冲器:
对应于编程结构中的“接收移位寄存器”对外引脚为RxD。
功能:
从RxD引脚上接收串行数据,并按照相应的格式转换为并行数据。
C.接收控制电路:
配合接收缓冲器工作,管理有关接收的所有功能。
a.在异步方式下,芯片复位后,先检测输入信号中的有效“1”,一旦检测到,就接着寻找有效的低电平来确定启动位。
b.消除假起动干扰。
c.对接收到的信息进行奇偶校验,并根据校验结果设置相应的状态位。
d.检测停止位,并按检测结果,设置状态位。
D.发送缓冲器:
从功能上来看,它对应于编程结构图中的的“发送移位寄存器”。
发送缓冲器把来自CPU的并行数据,加上相应的控制信息,然后转换为串行数据,并从TXD引脚发出去。
E.发送控制电路:
它和发送缓冲器配合工作,它控制和管理所有与串行发送有关的功能。
a.异步方式下,为数据加上起始位、校验位和停止位;
b.同步方式下,插入同步字符,在数据中插入校验位。
F.数据总线缓冲器:
数据总线缓冲器用来把8251A和系统数据总线相连,在CPU执行输入/输出指令期间,由数据总线缓冲器发送和接收数据,此外,控制字、命令字和状态信息也通过数据总线缓冲器传输。
所以,从功能上看,数据总线缓冲器是编程结构中数据输入缓冲器、数据输出缓冲器、控制寄存器和命令寄存器的综合。
G.调制/解调器控制电路:
它用来简化8251A和调制解调器的连接。
在进行远程通信时,要用调制器将串行接口送出的数据信号变为模拟信号,再发送出去,接收端则要用解调器将模拟信号变为数字信号,再由串行接口送往计算机主机。
在全双工通信情况下,每个收发站都要连接调制解调器。
有了调制解调控制电路,就提供了一组通用的控制信号,使得8251A可以直接和调制器连接。
它为Modem提供一组通用控制信号(DSR、DTR、RTS、CTS)。
注意:
8251未提供DCD(数据载波检测信号)和RI(振铃信号),如需使用DCD和RI,必须另加接口电路来提供。
3)8251的技术参数
1.8251与CPU之间的连接信号
8251A和CPU之间的连接信号可以分为4类,具体如下:
(1)片选信号
/CS——片选信号/CS是CPU的地址信号通过译码后得到的。
/CS为低电平时,8251A被选种。
反之,/CS为高电平时,8251A未被选中,这种情况下,8251A的数据线处于高阻状态,读信号/RD和写信号/WR对芯片不起作用。
(2)数据信号
D7~D0——8251A有8根数据线D7~D0,通过它们,8251A与系统的数据总线相连。
实际上,数据线上不止传输一般的数据,而且也传输CPU对8251A的编程命令和8251A送往CPU的状态信息。
(3)读/写控制信号
/RD——读信号/RD为低电平时,用来通知8251A,CPU当前正从8251A读取数据或者状态信息。
/WR——写信号WR为低电平时,用来通知8251A,CPU当前正在往8251A写入数据或者控制信息。
C/-D——控制/数据信号C/-D也是CPU送往8251A的信号,用来区分当前读写的是数据还是控制信息或状态信息。
具体地说,CPU在读操作时,如C/-D为低电平,则读取的是数据,如C/-D为高电平,则读取的是8251A当前的状态信息;
CPU在写操作时,如C/-D为低电平,则写入的是数据,如C/-D为高电平,则写入的是CPU对8251A的控制命令。
归纳起来,/RD、/WR、C/-D这三个信号和读/写操作之间的关系如下表所示:
需要简要说明一点,8251A只有两个连续的端口地址,数据输入端口和数据输出端口合用同一个偶地址,而状态端口和控制端口合用同一个奇地址。
在8086/8088系统中,利用地址线A1来区分奇地址端口和偶地址端口。
于是,A1为低电平时,正好选中了偶地址端口,在与/RD或/WR配合,变实现了状态信息的读取和控制信息的写入。
这样,地址线A1的电平变化正好符合了8251A对C/-D端的信号要求,因此,在8086/8088系统中,将地址线A1和8251A的C/-D端相连。
(4)收发联络信号
TxRDY TxRDY——发送器准备好信号TxRDY用来告诉CPU,8251A已经准备好发送一个字符。
具体地讲,当/CTS为低电平而TxEN为高电平,并且发送缓冲器为空时,TxRDY为高电平,于是,CPU便得知,当前8251A已经作好发送准备,因而CPU可以往8251A传输一个数据。
实际使用时,如果8251A和CPU之间采用中断方式联系,则TxRDY可以成为一个联络信号,CPU通过读操作变能检测TxRDY,从而了解8251A的当前状态,进一步决定是否可以往8251A输送一个字符。
不管是用中断方式还是查询方式,当8251A从CPU得到一个字符后,TxRDY变变为低电平。
TxE TxE——发送空信号TxE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,它实际上指示了一个发送动作的完成。
当8251A从CPU得到一个字符时,TxE便成为低电平。
需要指出一点,即在同步方式时,不允许字符之间有空隙,但是CPU有时却来不及往8251A输送一个字符,此时TxE变为高电平,发送器在输出线上插入同步字符,从而填补了传输空隙。
RxRDY RxRDY——接收器准备好信号RxRDY用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,正等待CPU取走。
因此,在中断方式时,RxRDY可用来作联络信号。
当CPU从8251A读取一个字符后,RxRDY便变为低电平,等到下一次接收到严格新的字符后,又升为高电平,即有效电平。
SYNDETSYNDET——同步检测信号SYNDET只用于同步方式。
SYNDET引脚可工作在输入状态,也可工作在输出状态,这决定于8251A工作在内同步状态还是工作在外同步情况,而这两种情况又决定于8251A的初始化程编程。
当8251A工作在内同步情况时SYNDET作为输出端,如果8251A检测到了所要求的同步字符,则SYNDET便变为高电平,用来表明8251A当前已经达到同步。
在双同步情况下,SYNDET信号会在第二个同步字符的最后一位被检测到后,在这一位的中间变为高电平,从而表明已经达到同步。
当8251A工作在外同步情况时,SYNDET作为输入端,从这个输入端进入的一个正跳变,会使8251A在/RxC的下一个下降沿时开始装配字符。
这种情况下,SYNDET的高电平状态最少要维持一个/RxC周期,以便遇上/RxC的下一个下降沿。
在复位时,SYNDET变为低电平。
在内同步情况下,SYNDET作为输出端,会在CPU执行依次读操作后,变为低电平;
在外同步情况下,SYNDET作为输入端,它的电平状况决定于外部信号。
2.8251与外部设备之间的信号连接
收发联络信号数据信号
(1)收发联络信号DTR、DSR、RTS、CTS
注意,RS-232-C标准的对应信号是:
DTR、DSR、RTS、CTS。
①/DTR——数据终端准备好信号/DTR是由8251A送往外设的,CPU通过命令可以使/DTR变为低电平即有效低电平,从而通知外部设备,CPU当前已经准备就绪。
②/DSR——数据设备准备好信号/DSR是由外设送往8251A的,低电平时有效,它用来表示当前外设已经准备好。
当/DSR端出现低电平时,会在8251A的状态寄存器第7位上反映出来,所以,CPU通过对状态寄存器的读取操作,便可以实现对/DSR信号的检测。
例如,数据通信设备(Modem)准备好,该信号是外部设备(数据通信设备Modem)送给8251的。
8251收到该信号后,使状态寄存器的DSR位置1。
CPU可以查询状态寄存器的DSR位,以了解外部设备的状态。
③/RTS——请求发送信号/RTS是8251A送往外设,低电平时有效,CPU可以通过编程命令使/RTS变为有效电平,以表示CPU已经准备好发送。
④/CTS——清除请求发送信号/CTS是对/RTS的响应信号,它是由外设送往8251A的,当/CTS为低电平时,8251A才能执行发送操作。
数据信号TXD、RXD
TxD——发送数据信号端TxD用来输出数据。
CPU送往8251的并行数据被转换为串行数据后,通过TxD送往外设。
RXD——接收器数据信号端RxD用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。
8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端CLK、TXC、RXC。
其中,时钟端CLK用来产生8251A器件的内部时序,要求CLK的频率在同步方式下大于接收数据或发送数据的波特率的30倍,在异步方式下,则要大于数据波特率的4.5倍;
发送器时钟TxC控制发送字符的速度,在同步方式下,TxC的频率等于字符传输的波特率,在异步方式下TxC的频率可以为字符传输波特率的1倍、16倍或者64倍,具体倍数决定于8251A编程时指定的波特率因子;
接收器时钟RxC控制接收字符的速度,和TxC一样,在同步方式下RxC的频率等于字符传输的波特率,在异步方式下,则可为波特率的1倍、16倍或者64倍。
在实际使用时,RxC和TxC往往连在一起,由同一个外部时钟来提供,CLK则由另一个频率较高的外部时钟来提供。
4.选择发光二极管
1)发光二极管在本设计中的作用
本设计利用二极管能发光的特性,用于模拟交通灯有规律的闪烁。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外控制交通灯的设计与实现微机课程设计 精品 红外 控制 交通灯 设计 实现 微机 课程设计