《红外控制交通灯的设计与实现微机课程设计.doc》由会员分享,可在线阅读,更多相关《红外控制交通灯的设计与实现微机课程设计.doc(29页珍藏版)》请在三一办公上搜索。
1、合肥学院计算机科学与技术系微机原理与接口技术课程设计报告20112012学年第1学期课程微机原理与接口技术课程设计名称红外控制交通灯的设计与实现学生姓名张玉学号0904012045专业班级计算机科学与技术专业(09计本2)指导教师龙夏,何立新2011 年 12 月红外控制交通灯的设计与实现一、题义分析与解决方案 1 题意需求分析 本程序设计要求使用红外发送装置设计红外控制交通灯装置,通过红外发送管,发出载波信号,根据接收到的载波信号,获得红外编码,根据编码,改变交通灯的控制模式。本程序设计需应用软件控制并运行接口电路,使连接在该接口上的红、绿、黄发光二极管按交通红、绿、黄灯形式闪烁。并通过人机
2、交互输入1或2来按照预先设定好的红外编码,最终得到红外载波,并根据得到的低电平延时来判断输入的1还是2。如果输入1则使用单行线无左转模式,如果输入的是2则使用双行线带左转和右转。 程序一开始,交通灯全熄灭,若接收到的数据为1则表示单行线,首先东西方向绿灯(1号灯)亮,南北方向红灯(7号灯)亮持续5S;然后东西方向绿灯(1号灯)闪烁6次,延迟3S,南北方向继续红灯(7号灯);接着东西方向黄灯(2号灯)亮3秒,南北方向继续红灯(7号灯)。接着南北方向绿灯(5号灯)亮,东西方向红灯(3号灯)亮持续5S;然后南北方向绿灯(5号灯)闪烁6次,延迟3S,东西方向继续红灯(3号灯);接着南北方向黄灯(6号灯
3、)亮3秒,东西方向继续红灯(3号灯),再跳到一开始,如此循环。若红外接受到的数据为2,则表示选择的模式为双行线带左转模式。首先东西方向直行绿灯(1号灯)亮,左转红灯(4号灯)亮,南北方向直行红灯(7号灯)亮,左转红灯(8号灯)亮5秒;然后东西方向直行绿灯(1号灯)闪烁6次,延迟3S,左转红灯(4号灯)亮,南北方向继续红灯(7号灯和8号灯);之后东西方向左转绿灯(2号灯)亮5秒,直行红灯(3号灯)亮,南北方向直行红灯左转红灯亮(7号灯和8号灯);接着东西方向左转绿灯(1号灯)闪烁6次,延迟3S,南北方向继续红灯(7号灯和8号灯)。接着南北方向直行绿灯(5号灯)亮,左转红灯(8号灯)亮,东西方向直
4、行红灯左转红灯(3号灯和4号灯)亮,持续5秒;接着南北方向直行绿灯(5号灯)闪烁6次,延迟3S,东西方向继续直行红灯左转红灯(3号灯和4号灯)亮;接着南北方向左转绿灯(6号灯)亮,东西方向直行红灯左转红灯(3号灯和4号灯)亮,持续5秒;然后南北方向左转绿灯(6号灯)闪烁6次,延迟3S,东西方向继续直行红灯左转红灯(3号灯和4号灯)亮,再跳到一开始,如此循环。2 解决方法与思路1) 硬件部分使用到STAR ES598PCI实验仪的模块包括:A3区:CPU总线、片选区B2区:逻辑笔、单脉冲、频率发生器C1区:电源区 C5区:8253、8251B4区:8255电路D2区:05V电压输出G2区:红外通
5、讯G6区:发光管、按键、开关CPU 通过8251的TXD端口将红外控制信息的发送到红外通讯的IN端口,经过红外无线通讯将控制信息输出端口,然后将信息送到8251的RXD端口。送到CPU进行判断,根据收到的信号选择相应的模式。8255是用来控制交通灯的,通过8255的A口来控制。需要A3区的3个端口用来接8251、8255、8253。B2区提供脉冲频率。D2区提供电源。G6区提供发光管用来模拟交通灯。2) 软件部分(汇编语言编写程序) 首先要对8255进行初始化设计,设置8255的工作方式并确定8255的端口地址。 编写发光二极管的编码,交通灯控制程序,两种模式的选择。对8253进行初始化,定时
6、器的选择,工作方式的选择,以及编码方式。对8251进行初始化,设置方式控制字及命令控制字。编写红外通讯设备的数据发送子程序。二、硬件设计1选择芯片8255A1) 8255A在本设计中的作用8255用来并行的发送交通灯编码,接发光二极管,用来控制程序所控制要求的交通灯闪烁2) 8255A的功能分析 CS: 片选信号,低电平有效;A0、A1: 地址信号。JP52: PC口;JP53: PB口;JP56: PA口。图2-1 8255A的内部框图8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、口和口。三个端口都可以作为输入端口或输出端口。口有三种工作方式:即方式、方式和方式,而口
7、只能工作在方式或方式下,而口通常作为联络信号使用。8255A的工作只有当片选CS效时才能进行。而控制逻辑端口实现对其他端口的控制。8255A的操作功能表 A1 A0操 作数 据 传 送 方 式0 0 1 0 0读 A 口A口数据 数据总线0 0 1 0 1读 B 口B口数据 数据总线0 0 1 1 0读 C 口C口数据 数据总线0 1 0 0 0写 A 口数据总线数据 A口0 1 0 0 1写 B 口数据总线数据 B口0 1 0 1 0写 C 口数据总线数据 C口0 1 0 1 1写控制口数据总线数据 控制口表2-1 8255A的操作功能表8255A有三种工作方式,用户可以通过编程来设置。本设
8、计用到工作方式0。3) 8255A的技术参数 与外设相连的PA7PA0:A口数据信号线。PB7PB0:B口数据信号线。PC7PC0:C口数据信号线。 与CPU相连的RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7D0:它们是8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。只有当其有效时,读信号写才对8255A进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效
9、时,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,max0.8 V输入最高电压:2.0 V输出最低电压:0.45 V输出最高电压:2.4 V 8255A的方式控制字D7 D6 D5 D4 D3 D2 D1 D0100010011:工作方式 A口方式0输出 B口方式0输出 C口高4位输入 C口低4位输入图2-2 8255A的方式控制字表方式0的工作特点:
10、这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。通道的功能为:两个8位通道:通道A和B。两个四位通道:通道C高4位和低四位,任何一个通道可以作输入/输出,输入是不锁存的,输出是锁存的,在方式0时各个通道的输入/输出可有16种不同的组合。D7 D6 D5 D4 D3 D2 D1 D00XXX写入位编码写入内容 写入位 编码 0写入0 D0-D7 000-111 1写入1图2-3 8255A的置位/控制字表2选择芯片82531) 8253 在本设计中的作用8253在本实验中的用作方波发生器,可编程通信接口8251A串行发送和接受数据时需要脉冲时钟,8253
11、的作用是为8251提供收发时钟。2) 8253 的功能分析 CS:片选信号,低电平有效;A0、A1:地址信号;1片8253内部有3个计数器,分别称计数器0、1、2,其结构完全相同,互相之间工作完全独立。每个计数器有三个引脚和外部联系:CLK:计数脉冲输入,计数器对该引脚出现信号进行计数,最高计数速率为2.6MHZ。Gate:门控输入,用于控制计数器是否对CLK计数。OUT:输出信号端。每个计数器内部都有1个8位的控制寄存器,三个控制寄存器使用同一端口地址,在编程结构图中,画为1个控制寄存器;每个计数器内部还有1个计数初值寄存器、1个计数执行部件,执行部件(CE)是1个16位减法计数器,其起始值
12、等于初值寄存器(CR)的值。CR的值通过程序设置。输出寄存器(OL)用来锁存执行部件(CE)的值,以便CPU读出。(CE)和1个输出锁存器,它们都是16位的。计数器0,计数器1,计数器2 这3个计数器互相独立,各自可按不同的方式工作。计数器的内部结构如前面所述,每个计数器包含一个16位的初始寄存器,一个计数执行部件和一个锁存器。计数执行部件从初始值寄存器中获得计数初值,便进行减1计数,此时,锁存器跟随记数执行部件的内容而变化,当有一个锁存命令来到时,锁存器便锁定当前计数,直到被读走以后,又跟随计数执行部件的动作。各计数器的外部输入输出信号如图所示。CSRDWRA1A0功能01000对计数器0设
13、置计数初值01001对计数器1设置计数初值01010对计数器2设置计数初值01011设置控制字或给一个命令00100从计数器0读出计数值00101从计数器1读出计数值00110从计数器2读出计数值当A1A0=11时,通过读/写控制逻辑电路选中控制积存器,此时,CPU可以写入控制字。左表是CPU对8253各积存器访问时,信号和功能之间的对应关系。对左表,我们作两点说明:(1)除了这七组组合外,其他组合下,数据总线为高阻抗状态。(2)当A1=A0时,第一次写入的一定作为控制字,此后写入的作为命令。读/写电路从系统控制总线接收输入信号,经过组合,产生对8253各部分的控制。具体为:A1、A0用来对3
14、个计数器和控制积存器进行寻址。RD读信号。当RD为低电平时有效,此时,表示CPU正在对8253的一个计数器进行读操作。WR写信号。当WR为低电平时有效,此时,表示CPU正在对8253的几个计数器进行写操作。CS片选信号。只有在CS为持续低电平的情况下,RD和WR才会受到确认,否则会被忽略3) 8253的技术参数因为8253的控制积存器和3个计数器分别具有独立的编程地址,并且控制字本身的内容又确定了所控制的积存器序号,所以,队8253的编程没有太多严格的顺序规定,可以非常灵活.但是,编程有两条原则必须严格遵守:(1)对计数器设置初始值前必须先写控制字.(2)初始值设置时,要符合控制字中的格式规定
15、,即只写低位字节还是写高位字节,或者高低位字节都写,控制字中一旦规定,具体初始值设定时就要一致.A1A0写(WR)读(RD)00计数器0, 初值寄存器(CR)输出寄存器, ( 输出锁存器OL) 01计数器1, 初值寄存器(CR) 输出寄存器, ( 输出锁存器OL)10计数器2, 初值寄存器(CR)输出寄存器, ( 输出锁存器OL) 11控制寄存器 8253无状态寄存器8253有两根地址线A1A0,对应4个端口地址,各寄存器的端口地址分配如下:(PC机中口地址B0H-BFH)。初始化工作有2点: (1)写入控制字;(2)按控制字的要求写入计数初值。8253有六种工作模式(05),每种工作模式决定
16、以下内容:1. 计数初值何时起作用?2. 门控信号的影响。3. OUT信号的状态4. 计数操作是否可以重复,或称计数初值是否可以自动装入。 不可重复 自动重复 条件重复5. 计数器的工作模式:计数器在CLK的下降沿使计数值减1,计数值减至0时,“计数到”。写入初值0时,代表最大初值65536。下面分别为8253在各种模式下的时序。模式0:计数结束产生中断模式1:可重复触发的单稳态触发器 模式2:分频器, 模式3:方波发生器模式4:软件触发的选通信号发生器 模式5:硬件触发的选通信号发生器3.选择芯片82511) 8251 在本设计中的作用本实验中选择8251作为可编程串行接口,主要的作用的是将
17、红外编码串行的发送出去,通过红外的无线传输,在红外的接收端再将数据串行的发送回8251,8251将数据发回cpu进行判断2) 8251 的功能分析 CS 片选信号,低电平有效 RxC、TxC: 收发时钟;C/D: 命令/数据;RXD、TXD: 串行收发。CLK: 时钟。8251A由7个模块组成,这7个模块为接收缓冲器、接收控制电路、发送缓冲器、发送控制电路、数据总线缓冲器、读写控制逻辑电路和调制解调控制电路。A.读/写控制逻辑:它用来配合数据总线缓冲器工作。即:a.接收写信号WR,并将来自数据总线的数据和控制字写入8251A;b.接收读信号/RD,并将数据或状态字从8251A读往数据总线;c.
18、接收控制数据信号C/-D,将此信号和读写信号合起来通知8251A,当前读写的是数据还是控制字、状态字;d.接收时钟信号CLK,完成8251A的内部定时;e.接收复位信号RESET,使8251A处于空闲状态。B.接收缓冲器:对应于编程结构中的“接收移位寄存器”对外引脚为RxD。 功能:从RxD引脚上接收串行数据,并按照相应的格式转换为并行数据。 C.接收控制电路:配合接收缓冲器工作,管理有关接收的所有功能。即:a.在异步方式下,芯片复位后,先检测输入信号中的有效“1”,一旦检测到,就接着寻找有效的低电平来确定启动位。b.消除假起动干扰。c.对接收到的信息进行奇偶校验,并根据校验结果设置相应的状态
19、位。d.检测停止位,并按检测结果,设置状态位。D.发送缓冲器:从功能上来看,它对应于编程结构图中的的“发送移位寄存器”。发送缓冲器把来自CPU的并行数据,加上相应的控制信息,然后转换为串行数据,并从TXD引脚发出去。E.发送控制电路:它和发送缓冲器配合工作,它控制和管理所有与串行发送有关的功能。即:a.异步方式下,为数据加上起始位、校验位和停止位;b.同步方式下,插入同步字符,在数据中插入校验位。F.数据总线缓冲器:数据总线缓冲器用来把8251A和系统数据总线相连,在CPU执行输入/输出指令期间,由数据总线缓冲器发送和接收数据,此外,控制字、命令字和状态信息也通过数据总线缓冲器传输。所以,从功
20、能上看,数据总线缓冲器是编程结构中数据输入缓冲器、数据输出缓冲器、控制寄存器和命令寄存器的综合。G.调制/解调器控制电路:它用来简化8251A和调制解调器的连接。在进行远程通信时,要用调制器将串行接口送出的数据信号变为模拟信号,再发送出去,接收端则要用解调器将模拟信号变为数字信号,再由串行接口送往计算机主机。在全双工通信情况下,每个收发站都要连接调制解调器。有了调制解调控制电路,就提供了一组通用的控制信号,使得8251A可以直接和调制器连接。它为Modem提供一组通用控制信号(DSR、DTR、RTS、CTS)。注意:8251未提供DCD(数据载波检测信号)和RI(振铃信号),如需使用DCD和R
21、I,必须另加接口电路来提供。3) 8251的技术参数1.8251与CPU之间的连接信号 8251A和CPU之间的连接信号可以分为4类,具体如下: (1)片选信号 /CS片选信号/CS是CPU的地址信号通过译码后得到的。/CS为低电平时,8251A 被选种。反之,/CS为高电平时,8251A未被选中,这种情况下,8251A的数据线处于高阻状态,读信号/RD和写信号/WR对芯片不起作用。(2)数据信号 D7D08251A有8根数据线D7D0,通过它们,8251A与系统的数据总线相连。实际上,数据线上不止传输一般的数据,而且也传输CPU对8251A的编程命令和8251A送往CPU的状态信息。(3)读
22、/写控制信号/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这三个信号和读写
23、操作之间的关系如下表所示:需要简要说明一点,8251A只有两个连续的端口地址,数据输入端口和数据输出端口合用同一个偶地址,而状态端口和控制端口合用同一个奇地址。在8086/8088系统中,利用地址线A1来区分奇地址端口和偶地址端口。于是,A1为低电平时,正好选中了偶地址端口,在与/RD或/WR配合,变实现了状态信息的读取和控制信息的写入。这样,地址线A1的电平变化正好符合了8251A对C/-D端的信号要求,因此,在8086/8088系统中,将地址线A1和8251A的C/-D端相连。(4)收发联络信号 TxRDY TxRDY发送器准备好信号TxRDY用来告诉CPU,8251A已经准备好发送一个字
24、符。具体地讲,当/CTS为低电平而TxEN为高电平,并且发送缓冲器为空时,TxRDY为高电平,于是,CPU便得知,当前8251A已经作好发送准备,因而CPU可以往8251A传输一个数据。实际使用时,如果8251A和CPU之间采用中断方式联系,则TxRDY可以成为一个联络信号,CPU通过读操作变能检测TxRDY,从而了解8251A的当前状态,进一步决定是否可以往8251A输送一个字符。不管是用中断方式还是查询方式,当8251A从CPU得到一个字符后,TxRDY变变为低电平。 TxE TxE发送空信号TxE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,它实际上指示了一个发送动作
25、的完成。当8251A从CPU得到一个字符时,TxE便成为低电平。需要指出一点,即在同步方式时,不允许字符之间有空隙,但是CPU有时却来不及往8251A输送一个字符,此时TxE变为高电平,发送器在输出线上插入同步字符,从而填补了传输空隙。 RxRDY RxRDY接收器准备好信号RxRDY用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,正等待CPU取走。因此,在中断方式时,RxRDY可用来作联络信号。当CPU从8251A读取一个字符后,RxRDY便变为低电平,等到下一次接收到严格新的字符后,又升为高电平,即有效电平。SYNDET SYNDET同步检测信号SYNDET只用于同步方式。
26、SYNDET引脚可工作在输入状态,也可工作在输出状态,这决定于8251A工作在内同步状态还是工作在外同步情况,而这两种情况又决定于8251A的初始化程编程。当8251A工作在内同步情况时SYNDET作为输出端,如果8251A检测到了所要求的同步字符,则SYNDET便变为高电平,用来表明8251A当前已经达到同步。在双同步情况下,SYNDET信号会在第二个同步字符的最后一位被检测到后,在这一位的中间变为高电平,从而表明已经达到同步。当8251A工作在外同步情况时,SYNDET作为输入端,从这个输入端进入的一个正跳变,会使8251A在/RxC的下一个下降沿时开始装配字符。这种情况下,SYNDET的
27、高电平状态最少要维持一个/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数据
28、设备准备好信号/DSR是由外设送往8251A的,低电平时有效,它用来表示当前外设已经准备好。当/DSR端出现低电平时,会在8251A的状态寄存器第7位上反映出来,所以,CPU通过对状态寄存器的读取操作,便可以实现对/DSR信号的检测。例如,数据通信设备(Modem)准备好,该信号是外部设备(数据通信设备Modem)送给8251的。8251收到该信号后,使状态寄存器的DSR位置1。CPU可以查询状态寄存器的DSR位,以了解外部设备的状态。RTS请求发送信号/RTS是8251A送往外设,低电平时有效,CPU可以通过编程命令使/RTS变为有效电平,以表示CPU已经准备好发送。CTS清除请求发送信号/
29、CTS是对/RTS的响应信号,它是由外设送往8251A的,当/CTS为低电平时,8251A才能执行发送操作。数据信号TXD、RXDTxD发送数据信号端TxD用来输出数据。CPU送往8251的并行数据被转换为串行数据后,通过TxD送往外设。RXD接收器数据信号端RxD用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端CLK、TXC、RXC。其中,时钟端CLK用来产生8251A器件的内部时序,要求CLK的频率在同步方式下大于接收数据或发送数据的波特率的30倍,在异步方式下,则要大于数据波特率的4.5倍;发送器时钟
30、TxC控制发送字符的速度,在同步方式下,TxC的频率等于字符传输的波特率,在异步方式下TxC的频率可以为字符传输波特率的1倍、16倍或者64倍,具体倍数决定于8251A编程时指定的波特率因子;接收器时钟RxC控制接收字符的速度,和TxC一样,在同步方式下RxC的频率等于字符传输的波特率,在异步方式下,则可为波特率的1倍、16倍或者64倍。在实际使用时,RxC和TxC往往连在一起,由同一个外部时钟来提供,CLK则由另一个频率较高的外部时钟来提供。4选择发光二极管1) 发光二极管在本设计中的作用本设计利用二极管能发光的特性,用于模拟交通灯有规律的闪烁。2)发光二极管功能分析当在发光二极管PN结上加
31、正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。3)发光二极管的控制逻辑:模式一:单行线模式,8个发光二极管的编码设置如下。灯1灯2灯3灯4灯5灯6灯7灯8东西绿灯东西黄灯东西红灯无用南北绿灯南北黄灯南北红灯无用图12 单行无左转时二极管的设定二进制编码交通灯亮灭情况01111101东西绿灯亮,南北红灯亮11111101东西绿灯灭,南北红灯亮10111101东西黄灯亮,南北红灯亮11010111东西红灯亮,南北绿灯亮11011111东西红灯亮,南北绿灯灭11
32、011011东西红灯亮,南北黄灯亮图13 单行无左转时的编码设置模式二:双行线模式,8个发光二极管编码如下:灯1灯2灯3灯4灯5灯6灯7灯8东西直行绿灯东西左转绿灯东西直行红灯东西左转红灯南北直行绿灯南北左转绿灯南北直行红灯南北左转红灯图14 双行有左转时二极管的设定二进制编码交通灯亮灭情况01101100B东西直行绿灯亮,左转红灯亮;南北直行红灯亮,左转红灯亮11101100B东西直行绿灯闪烁,左转红灯亮;南北直行红灯亮,左转红灯亮10011100B东西左转绿灯亮,直行红灯亮;南北直行红灯亮,左转红灯亮11011100B东西左转绿灯闪烁,直行红灯亮;南北直行红灯亮,左转红灯亮11000110
33、B东西直行红灯亮,左转红灯亮;南北直行绿灯亮,左转红灯亮11001110B东西直行红灯亮,左转红灯亮;南北直行绿灯闪烁,左转红灯亮11001001B东西直行红灯亮,左转红灯亮;南北左转绿灯亮,直行红灯亮11001101B东西直行红灯亮,左转红灯亮;南北左转绿灯闪烁,直行红灯亮图15 双行有左转时的编码设置5.红外通讯设备1) 红外通讯设备在本设计中的作用在本设计中红外通讯的作用是通过红外接收器和红外发送器,可以无线的发送数据,准确的说是数据的编码。2)红外通讯设备功能分析红外通信, 即以红外线作为通信载体, 通过红外光在空中的传播来传输数据的通信方式, 它由发射端和接收端来完成。在发射端, 发
34、送的数字信号经过适当的调制编码后, 送入电光变换电路, 经红外发射管转变为红外光脉冲发射到空中; 在接收端, 红外接收器对接收到的红外光脉冲进行光电变换, 解调译码后恢复出原信号。红外发射端发送数据时, 是将待发送的二进制数据调制成一系列的脉冲信号后发射出去。红外载波为频率38KHz (可调)的方波, 采用脉宽调制PWM方式发送, 通过待发送二进制数据的“0”或“1”控制两个脉冲之间的时间间隔, 及PWM的占空比。红外载波既可以通过外围硬件电路实现, 也可以使用CPU内部的定时器的PWM功能实现。红外接收端在收到38KHz 的载波信号时, 会输出低电平, 否则输出高电平, 从而可以将“时断时续
35、”的红外光信号解调成一定周期的连续方波信号, 经处理, 便可以恢复出原数据信号。 3)红外通讯设备技术参数IN:串行数据输入 OUT:串行数据输出CLK:载波输入,可接31250(B2区)频率输出信号调制如下图:图7 信号调制波形先发一段前导码, 以检验这组码是否为想要的码。前导码由一个9ms 的高电平和一个4ms 的低电平组成。然后再发32 位数据代码, 其中高电平为0.5ms, 低电平为0.5ms的一个周期为代码“0”; 高电平为0.5ms, 低电平为1.5ms 的一个周期为代码“1”HS0038B的典型信号传输关系如下图 图5 HS0038B的信号传输6.硬件总逻辑图及其说明8255A的
36、PA口同发光二极管相连相连,即从PA口读入交通灯信号编码;8255的片选接CS1端口,所分配的地址为00F000FF。8253输出端口分别接8251的RxC、TxC 收发时钟,接入的频率为2MHz,经26分频产生16*4800Hz的频率,为8251提供收发脉冲时钟;8253的片选端CS接CS3端口,所分配的端口地址为00D000DF;CPU的WR(非),RD(非)和RESET与8255A的相对应的WR(非),RD(非)和RESET相连,通过控制信号CS(非),A1,A0以及RD(非),WR(非)来实现对数据口PA和控制寄存器进行读写操作。8251的片选端接CS2,端口地址为00E000EF;C
37、PU将模式选择信息通过端口发送到8251,8251在脉冲的作用下将收到的信息发送到红外通讯设备的接收端,通过发射设备的SAL6200将数据发送出去,在一段距离后由接收设备的HS0038B将数据传送到红外通讯设备的OUT端,信息再有OUT端将数据传送到8251的RXD端,再通过端口送往CPU,通过对接收到的数据进行分析,选择相应的模式,然后再由CPU将相应模式的交通信号的编码送往8255进行显示。硬件总逻辑图:实验连线:C5区:CS(8253) A3区:CS3C5区:A0ES-PCI:A0C5区:A1ES-PCI:A0C5区:OUT0 C5区:RxC、TxCC5区:GATE0B1区:VccC5区
38、:CLK0B2区:2MC5区:C/DES-PCI:A0C5区:CS(8251)A3区:CS2C5区:CLKB2区:4MC5区:RxDG2区:OUTC5区:TxDG2区:INB4区:CS(8255)A3区:CS1B4区:A0ES-PCI:A0B4区:A1ES-PCI:A1G2区:CLKB2区:31250B4区:JP56(PA口)G6区:JP65B4区:JP53(PB口) G6区;JP63三、控制程序设计1 .控制程序设计思路说明程序一开始对8255进行初始化设计,设置8255的工作方式并确定8255的端口地址。编写发光二极管的编码,交通灯控制程序,两种模式的选择。对8253进行初始化,定时器的选
39、择,工作方式的选择,以及编码方式。对8251进行初始化,设置方式控制字及命令控制字。编写红外通讯设备的数据发送子程序。交通灯全熄灭,若接收到的数据为1则表示单行线,首先东西方向绿灯(1号灯)亮,南北方向红灯(7号灯)亮持续5S;然后东西方向绿灯(1号灯)闪烁6次,延迟3S,南北方向继续红灯(7号灯);接着东西方向黄灯(2号灯)亮3秒,南北方向继续红灯(7号灯)。接着南北方向绿灯(5号灯)亮,东西方向红灯(3号灯)亮持续5S;然后南北方向绿灯(5号灯)闪烁6次,延迟3S,东西方向继续红灯(3号灯);接着南北方向黄灯(6号灯)亮3秒,东西方向继续红灯(3号灯),再跳到一开始,此时判断是否有键按下,
40、若无再跳到一开始,执行,若有键按下跳到模式选择那里进行模式选择,如此循环。若接受到的数据为2,则表示选择的模式为双行线带左转模式。首先东西方向直行绿灯(1号灯)亮,左转红灯(4号灯)亮,南北方向直行红灯(7号灯)亮,左转红灯(8号灯)亮5秒;然后东西方向直行绿灯(1号灯)闪烁6次,延迟3S,左转红灯(4号灯)亮,南北方向继续红灯(7号灯和8号灯);之后东西方向左转绿灯(2号灯)亮5秒,直行红灯(3号灯)亮,南北方向直行红灯左转红灯亮(7号灯和8号灯);接着东西方向左转绿灯(1号灯)闪烁6次,延迟3S,南北方向继续红灯(7号灯和8号灯)。接着南北方向直行绿灯(5号灯)亮,左转红灯(8号灯)亮,东
41、西方向直行红灯左转红灯(3号灯和4号灯)亮,持续5秒;接着南北方向直行绿灯(5号灯)闪烁6次,延迟3S,东西方向继续直行红灯左转红灯(3号灯和4号灯)亮;接着南北方向左转绿灯(6号灯)亮,东西方向直行红灯左转红灯(3号灯和4号灯)亮,持续5秒;然后南北方向左转绿灯(6号灯)闪烁6次,延迟3S,东西方向继续直行红灯左转红灯(3号灯和4号灯)亮,此时判断是否有键按下,若无再跳到一开始,执行,若有键按下跳到模式选择那里进行模式选择,如此循环。2 控制程序流程图开始初始化8255、8251、8253设置开关编码信号根据开关编码,设置红外编码8251向红外设备发红外编码红外设备发回红外编码根据红外编码选
42、择交通灯运行子模式进入子模式运行3 控制程序.MODEL TINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK100.DATAIO_Bit8_BaseAddressDW?msg0DBBIOS不支持访问PCI $msg1DB找不到Star PCI9052板卡 $msg2DB读8位I/O空间基地址时出错$msg3DB红外编码未收到$PA_ADDDW00F0H ;8255PA口偏移量PB_ADDDW00
43、F1H;8255PB口偏移量PC_ADDDW00F2H;8255PC口偏移量COM_ADDDW00F3H;8255控制口偏移(CS1:0F0H-0FFH)CTL_8251DW00E1H;8251控制字或状态字(CS2:0E0H-0EFH)DATA_8251DW00E0H;8251读写数据W_8253_T0 DW 00D0H;计数器0地址W_8253_C DW 00D3H;8253控制字(CS3:0D0H-0DFH)LED_Data1DB01111101B;东西方向绿灯亮,南北方向红灯亮DB11111101B;东西方向绿灯闪烁,南北方向红灯亮DB10111101B;东西方向黄灯亮,南北方向红灯亮DB11010111B;东西方向红灯亮,南北方向绿灯亮DB11011111B;东西方向红灯亮,南北方向绿灯闪烁DB11011011B;东西方向红灯亮,南北方向黄灯亮