红外控制交通灯的设计1.docx

上传人:b****5 文档编号:5709185 上传时间:2022-12-31 格式:DOCX 页数:25 大小:109.03KB
下载 相关 举报
红外控制交通灯的设计1.docx_第1页
第1页 / 共25页
红外控制交通灯的设计1.docx_第2页
第2页 / 共25页
红外控制交通灯的设计1.docx_第3页
第3页 / 共25页
红外控制交通灯的设计1.docx_第4页
第4页 / 共25页
红外控制交通灯的设计1.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

红外控制交通灯的设计1.docx

《红外控制交通灯的设计1.docx》由会员分享,可在线阅读,更多相关《红外控制交通灯的设计1.docx(25页珍藏版)》请在冰豆网上搜索。

红外控制交通灯的设计1.docx

红外控制交通灯的设计1

 

一、题义分析及解决方案

1.题义需求分析:

本程序设计需通过红外通讯控制红、绿、黄发光二极管按十字路口红、绿、黄交通灯形式闪烁。

红外通信,即以红外线作为通信载体,通过红外光在空中的传播来传输数据的通信方式,它由发射端和接收端来完成。

在发射端,发送的数字信号经过适当的调制编码后,送入电光变换电路,经红外发射管转变为红外光脉冲发射到空中;在接收端,红外接收器对接收到的红外光脉冲进行光电变换,解调译码后恢复出原信号。

交通灯的变化规律根据实地查看,各个路口的交通灯的变化规律并不相同,本课程设计为了简化,只考虑了交通灯正常时的变化规律。

模式一(单行线)情况下,首先是东西直行绿灯亮,南北红灯亮,几秒后,东西绿灯闪烁,南北红灯亮,闪烁几次后,东西黄灯亮,而南北红灯亮,再过几秒后,东西红灯亮,南北绿灯亮,几秒后南北绿灯闪烁,最后变成黄灯亮,依此循环下去。

模式二(双行线)情况下,将黄灯当作左转绿灯,第二个红灯当作右转绿灯,首先是东西方向直行绿灯、右转绿灯和左转绿灯亮,南北红灯亮,几秒后,东西方向三个绿灯闪烁,闪烁几次后,变成东西红灯亮,南北方向直行绿灯、右转绿灯和左转绿灯亮,几秒后,南北方向三个绿灯闪烁,依此循环下去。

对此设计模拟交通灯变化规律,需要解决如下问题:

(1)交通灯用什么器材来模拟显示

(2)用什么芯片控制交通灯的亮灭及怎样控制?

(3)交通灯的两种模式之间如何切换?

(4)用什么芯片与红外通讯相连接?

怎样连接?

2.解决问题方法及思路:

(1)硬件部分

针对需求分析中的问题作如下解决:

(1)交通灯用发光二极管来模拟显示。

(2)交通灯与8255A的A口相连接,8255A初始化后,A口工作在方式0输出,用程序控制A口的输出即实现对交通灯的亮灭控制。

(3)开关1与2控制交通灯的模式,用户需要切换模式的时候,调节开关,程序查询开关1和2的电平信息,然后8251A向红外通讯发出相应编码,红外通讯自发自收后,8251A收到红外通讯发回的相应编码后,程序调用相应子程序控制8255A的A口输出,完成对模式的切换。

(4)用8251A与红外通讯相连,8251A能与红外通讯进行串行通信。

用8251A可编程串行接口芯片的发送器TxD端接入到红外通讯的发射in端,将红外通讯设备的out端接入到8251A的接收器RxD端。

用8255A可编程并行接口芯片的A口作为红、绿、黄交通灯的控制输入口,选用8255而不用8279是因为8279可编程芯片是一种通用的键盘/显示器的接口芯片,可对64个开关矩阵组成的键盘进行自动扫描。

8279内部有一个16x8的显示缓冲器,能对8位或16位LED进行自动扫描,使显示缓冲器的内容在LED上显示出来。

8255有三个并行输入输出口,可以方便的对三种颜色的交通灯进行很好的控制,我选择了8255A。

另外,在与红外通讯的连接方面,我选择8251A可编程串行接口芯片,并且8251A的收发时钟也需要统一,我用8253作分频器提供8251A的收发时钟,将8253的OUT0接到8251A的RXC和TXC端。

下面附上8255A与8251A芯片的比较。

8255A芯片

8251A芯片

通信方式

并行

串行

数据传送方式

数据的各位同时传送,

数据一位一位地顺序传送,,

内部组成

8155内有256字节RAM和一个定时计数器。

8255没有

特点

通信线路较8251复杂

通信线路简单,利用电话或电报线路就可实现通信

输入/输出

编程较为灵活

编程较8255不够灵活

应用范围

使用十分方便,传输距离近,成本较高

传输距离远,使用不方便,但传输速度慢,降低成本,

初始化特点

8255A直接位清0/置1功能简化了接口控制

8251在初始化时,必须重新设置模式寄存器的格式.

表18255A与8251A

(2)软件部分

首先,根据硬件需求采用8255A、8251A和8253芯片,为实现对通信和交通灯的控制,采用汇编语言,分别对8255A、8251A和8253进行初始化设置。

然后,程序查询8255A的PC口输入的开关信号,决定8251向红外通讯设备发送的红外编码,即0、1、2、3四种。

最后,程序查询8251的接收缓冲区内的红外编码是多少,根据所得到的编码,调用相应模式子程序,控制交通灯两种模式的转换及交通灯的亮灭规律。

二、硬件设计

1.选择芯片8251A

(1)8251A在本实验中的作用:

通过8251A的TxD向红外通讯设备发送信号,再通过8251A的RxD接收信号,根据8251接收到的红外编码选择交通灯的模式。

(2)8251A的功能分析:

1)用于异步传送,5~8bit/字符,接收/发送时钟频率为通信波特率的16倍

2)产生2个停止位

3)波特率:

DC-19.2Kbps

4)全双工,双缓冲发送和接收器

5)具有奇偶、帧、溢出出错检测电路

 

CS:

片选信号,低电平有效;

RxC、TxC:

收发时钟;

C/D:

命令/数据;

RXD、TXD:

串行收发。

CLK:

时钟。

图18251A

2.选择芯片8255A

(1)8255A在本实验中的作用:

通过8255A的A口与发光二极管相连,控制8个发光二极管的亮灭规律,模拟交通灯的设计。

通过8255A的C口PC0、PC1接收开关信号,决定8251A向红外通讯设备发送的红外编码。

(2)8255A的功能分析:

PA口工作在方式0输出状态,PC口工作在输入状态:

PA0-PA8接8个发光二极管,PC口接逻辑电平开关。

在使用8255A前首先要对它进行初始化。

 

CS:

片选信号,低电平有效。

IO/M:

高电平,选择I/O口;

低电平,选择数据RAM。

JP75:

PB口;

JP76:

PA口;

JP79:

PC口。

 

图28255A

方式0的工作特点:

这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。

其功能为:

两个8位通道:

通道A、B。

两个四位通道:

通道C高4位和低四位;任何一个通道可以作输入/输出;输出是锁存的;输入是不锁存的;在方式0时各个通道的输入/输出可有16种不同的组合。

方式0的使用场合:

同步传送是在外设控制过程的各种动作时间为固定,且已知的条件下使用的。

因此,传送中不要应答信号。

输入时,执行程序只要给出IN指令;而输出时,也只给出OUT指令,就能实现数据的输入或输出。

优点是程序简单,接口的硬件开销小。

8255A方式选择控制字说明:

控制字格式如下:

图38255A控制字格式

D7=1工作方式控制标志。

D5D6组合设定A口工作方式:

00~方式0、01~方式1、10/11~方式2。

D4设定A口的输入/输出,D4=1输入,D4=0输出。

D3是C口高位输入/输出选择,D3=1输入,D3=0输出。

D2是B口工作方式选择,D2=1方式1;D2=0方式0。

D1是B口输入/输出选择D1=1输入D1=0输出。

D0设定C口低位输入/输出,D0=1输入,D0=0输出。

(3)8255A技术参数:

参数名称

符号

测试条件

最大规范值

最小规范值

输入低电平电压

VIL

0.8V

-0.5V

输入高电平电压

VIH

Vcc

2.0V

输入低电平电压

(数据总线)

VOL

IOL=2.5MA

0.45V

输入低电平电压

(外部端口)

VOL

IOL=1.7MA

0.45V

输入高电平电压

(数据总线)

VOH

IOH=-400MA

2.4V

输入高电平电压

(外部端口)

VOH

IOH=-200MA

2.4V

达林顿驱动电流

IDAR

REXT=750

VEXT=1.5V

-0.4MA

1.0MA

电源电流

ICC

120MA

输入负载电流

IIL

I=Vcc—0V

+10MA

-10MA

输出浮动电流

IOFL

Vout=Vcc--0

+10MA

-10MA

表28255A技术参数表

表2的主要参数说明:

8255A工作最大电流为120MA,VCC=-5V~+5V,I(DAR)工作电流最大为4MA。

 

图48255A内部结构

3.选择芯片8253

(1)8253在本实验中的作用:

8253的主要功能是作分频器提供8251的收发时钟,这样在红外编码的时候不用调用delay子程序;8251是按位进行传输的,有了脉冲时钟,只要设定脉冲时钟的频率,这样每位收发的频率控制就简单多了。

(2)8253功能分析:

本实验中,运用8253的工作方式3,这种方式下,可以从OUT得到对称的方波输出,并且利用计数值达到对时钟脉冲的分频。

当装入的计数值N为偶数时,则前N/2计数过程中,OUT为高电平;后N/2计数过程中OUT为低电平,计数过程连续进行。

若N为奇数,则(N+1)/2计数过程中,OUT保持高电平;而(N-1)/2计数期间,OUT为低电平。

 

CS:

片选信号,低电平有效;

A0、A1:

地址信号;

图58253引脚接线图

(3)8253A的技术参数:

参数名称

符号

测试条件

最大规范值

最小规范值

输入低电平电压

VIL

0.8V

-0.5V

输入高电平电压

VIA

Vcc+0.5V

2.2V

输出低电平电压

VOL

Vin=Vcc-0V

0.45V

输出高电平电压

VOH

Vout=Vcc-0.45V

2.4V

输入负载电流

IIL

+/-10V

输出浮动漏电流

IOFL

+/-10V

电源电流

Icc

140V

表2  8253A的计数参数

8253A主要参数分析:

输入低电压的范围是-0.5V~0.8V,输出低电压的范围0.45V~2.4V,输入高电压的范围是2.2V~Vcc+0.5V。

而测试条件均为Vin=Vcc-0V,Vout=Vcc-0.45V。

4.选择红外通信设备

(1)红外通信在本实验中的作用:

通过红外发送管,发出载波信号,根据接收到的载波信号,获得红外编码,实现自发自收,程序再根据发回的红外编码控制交通灯模式。

(2)红外通信功能分析:

红外通信,即以红外线作为通信载体,通过红外光在空中的传播来传输数据的通信方式,它由发射端和接收端来完成。

在发射端,发送的数字信号经过适当的调制编码后,送入电光变换电路,经红外发射管转变为红外光脉冲发射到空中;在接收端,红外接收器对接收到的红外光脉冲进行光电变换,解调译码后恢复出原信号。

红外发射端发送数据时,是将待发送的二进制数据调制成一系列的脉冲信号后发射出去。

红外载波为频率38KHz(可调)的方波,采用脉宽调制PWM方式发送,通过待发送二进制数据的“0”或“1”控制两个脉冲之间的时间间隔,及PWM的占空比。

红外载波既可以通过外围硬件电路实现,也可以使用CPU内部的定时器的PWM功能实现。

红外接收端在收到38KHz的载波信号时,会输出低电平,否则输出高电平,从而可以将“时断时续”的红外光信号解调成一定周期的连续方波信号,经处理,便可以恢复出原数据信号。

IN:

串行数据输入

OUT:

串行数据输出

CLK:

载波输入,可接31250(B2区)频率输出

图6红外通讯原理图

信号调制如下图:

图7信号调制波形

先发一段前导码,以检验这组码是否为想要的码。

前导码由一个9ms的高电平和一个4ms的低电平组成。

然后再发32位数据代码,其中高电平为0.5ms,低电平为0.5ms的一个周期为代码“0”;高电平为0.5ms,低电平为1.5ms的一个周期为代码“1”

HS0038B的典型信号传输关系如下图

图8HS0038B的信号传输

5.选择发光二极管

(1)发光二极管在本实验中的作用:

本实验中用发光二极管模拟红绿交通灯的亮灭规律及模式转换。

(2)功能分析:

发光二极管采用共阳极接线法,当8255A的PA口相应端输出高电平时,发光二极管不导通,不发光;当输出低电平时,发光二极管导通,发光。

因此,8255A的PA口输出控制着交通灯亮灭的规律。

(3)发光二极管的控制逻辑:

模式一:

单行线模式,8个发光二极管的编码设置如下。

图98个发光二极管的设定

二进制编码

编码含义

01111101

东西方向直行绿灯亮,南北方向红灯亮

11111101

东西方向绿灯闪烁,南北方向红灯亮

10111101

东西方向黄灯亮,南北方向红灯亮

11010111

东西方向红灯亮,南北方向绿灯亮

11011111

东西方向红灯亮,南北方向绿灯闪烁

11011011

东西方向红灯亮,南北方向黄灯亮

表3模式一的编码设置

模式二:

双行线模式,8个发光二极管编码如下。

图108个发光二极管的设定

编码

编码含义

01101100

东西方向直行绿灯亮,左转红灯亮;南北方向直行红灯亮,左转红灯亮

01111111

方向直行绿灯亮,左转红灯闪烁;南北方向直行红灯闪烁,左转红灯闪烁

10011100

东西方向直行红灯亮,左转绿灯亮;南北方向直行红灯亮,左转红灯亮

10111111

东西方向直行红灯闪烁,左转绿灯亮;南北方向直行绿灯闪烁,左转红灯闪烁

11000110

东西方向直行红灯亮,左转红灯亮;南北方向直行绿灯亮,左转红灯亮

11110111

东西方向直行红灯闪烁,左转红灯闪烁;南北方向直行绿灯亮,左转红灯闪烁

11001001

东西方向直行红灯亮,左转红灯亮;南北方向直行红灯亮,左转绿灯亮

11111011

东西方向直行红灯闪烁,左转红灯闪烁;南北方向直行红灯闪烁,左转绿灯亮

表4模式二的编码设置

图11发光二极管共阳极接线法

6.选择逻辑电平开关

(1)逻辑电平开关在本实验中的作用:

逻辑电平开关在本设计中作为输入器件,通过其输入,决定8251A向红外通讯发送的编码,进而控制交通灯模式的转换。

它与8255A的PC口相连。

(2)逻辑电平开关的功能分析

逻辑电平开关可作为数值的输入器件,也可以表示逻辑值。

具体的是:

当开关拨上去时为输出+5V,代表的是逻辑值“1”,反之,当开关拨下来的时后输出的为0V,此时代表的逻辑值为“0”。

PC0

PC1

模式

交通灯间隔

红外编码

0

0

模式一

20秒

0

0

1

模式一

40秒

2

1

0

模式二

20秒

1

1

1

模式二

40秒

3

7.硬件总逻辑图及其说明:

8086CPU的数据总线和8255A、8251A与8253的数据总线相连,8086的读写控制分别和8255A的读写控制相连。

译码器和8255A、8251A与8253的片选CS相连。

8255A的PA0-PA8接8个发光二极管,PC0-PC8与逻辑电平开关相连。

8251A的TXD与RXD分别和红外通讯的IN与OUT端相连,8253的OUT0端与8251A的TXC和RXC相连。

图12程序硬件原理图

三、控制程序设计

1.程序流程图:

2.程序设计思路:

编写程序,查询来自8255A的PC0、PC1端口输入的开关信号,确定8251A向红外通讯设备发送的红外编码(在此为了简化编码,发送的红外编码就是PC口的编码值),红外通讯设备将这一编码进行自发自收后,发回给8251A,通过程序判断8251A接收红外通讯发回的编码,根据这个编码,调用模式子程序(MODE1和MODE2),并设置红绿灯的亮灭时间。

模式子程序调用一次后,主程序将会再次查询开关信号,因此,改变开关0或1电平可以不断进行交通灯的模式转换。

3.控制程序源代码:

.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空间基地址时出错$'

msg3DB'红外编码未收到$'

PA_ADDDW00F0H;8255PA口偏移量

PB_ADDDW00F1H;8255PB口偏移量

PC_ADDDW00F2H;8255PC口偏移量

COM_ADDDW00F3H;8255控制口偏移(CS1:

0F0H--0FFH)

CTL_8251DW00E1H;8251控制字或状态字(CS2:

0E0H--0EFH)

DATA_8251DW00E0H;8251读写数据

W_8253_T0DW00D0H;计数器0地址

W_8253_CDW00D3H;控制字(CS3:

0D0H--0DFH)

LED_Data1DB01111101B;东西直行绿灯,南北红灯

DB11111101B;东西绿灯闪烁,南北红灯

DB10111101B;东西黄灯亮,南北红灯

DB11010111B;东西红灯,南北直行绿灯

DB11011111B;东西红灯,南北绿灯闪烁

DB11011011B;东西红灯,南北黄灯亮

LED_Data2DB01101100B;东西方向直行绿灯亮,左转红灯亮;南北方向直行红灯亮,左转红灯亮

DB01111111B;方向直行绿灯亮,左转红灯闪烁;南北方向直行红灯闪烁,左转红灯闪烁

DB10011100B;东西方向直行红灯亮,左转绿灯亮;南北方向直行红灯亮,左转红灯亮

DB10111111B;东西方向直行红灯闪烁,左转绿灯亮;南北方向直行绿灯闪烁,左转红灯闪烁

DB11000110B;东西方向直行红灯亮,左转红灯亮;南北方向直行绿灯亮,左转红灯亮

DB11110111B;东西方向直行红灯闪烁,左转红灯闪烁;南北方向直行绿灯亮,左转红灯闪烁

DB11001001B;东西方向直行红灯亮,左转红灯亮;南北方向直行红灯亮,左转绿灯亮

DB11111011B;东西方向直行红灯闪烁,左转红灯闪烁;南北方向直行红灯闪烁,左转绿灯亮

.CODE

START:

MOVAX,@DATA

MOVDS,AX

NOP

CALLInitPCI

CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址

CALLINIT_8255

CALLINIT_8253

CALLINIT_8251

MOVDX,PA_ADD;灯全熄灭

MOVAL,0ffH

OUTDX,AL

NONE:

MOVDX,PC_ADD;判断输入的开关信号(高电平或低电平)

INAL,DX

CALLSendout

CALLReceivein

CMPAL,0

JZL1

CMPAL,2

JZL2

CMPAL,1

JZL4

CMPAL,3

JZL5

JMPLOST

L1:

MOVsi,20

JMPL_MODE1

L2:

MOVsi,40

L_MODE1:

CALLMODE1

JMPNONE

L4:

MOVsi,20

JMPL_MODE2

L5:

MOVsi,40

L_MODE2:

CALLMODE2

JMPNONE

LOST:

LEADI,msg3

MOVAH,9

INT21H

JMPNONE

;-------------------------------------

SendoutPROCNEAR

PUSHAX

MOVDX,CTL_8251

Sendout1:

INAL,DX

TESTAL,01H;允许数据发送吗?

JZSendout1

DECDX;发送

POPAX

OUTDX,AL;发送1给红外通讯

RET

SendoutENDP

ReceiveinPROCNEAR

MOVDX,CTL_8251

Receivein1:

INAL,DX

TESTAL,02H

JZReceivein1;有数据吗?

DECDX

INAL,DX

RET

ReceiveinENDP

MODE1PROCNEAR

MOVDX,PA_ADD

MOVBX,offsetLED_Data1

MOVAL,0

XLAT

OUTDX,AL;东西绿灯,南北红灯

movah,1

CALLsub_mode

calldl_3s

MOVAL,3;东西红灯,南北绿灯

XLAT

OUTDX,AL

movah,4

callsub_mode

calldl_3s

RET

MODE1ENDP

MODE2PROCNEAR

MOVDX,PA_ADD

MOVBX,offsetLED_Data2

MOVAL,0

XLAT

OUTDX,AL

movah,1

callsub_mode

movah,3

callsub_mode

movah,5

callsub_mode

movah,7

callsub_mode1

RET

MODE2ENDP

sub_modeprocnear;子程序,入口参数AH

callsub_mode1

INCAH

MOVAL,AH

XLAT

OUTDX,AL

ret

endp

sub_mode1procnear

MOVCX,SI

sub_MODE_1:

MOVAL,ah

XLAT

OUTDX,AL

CALLDL500ms

decah

MOVAL,ah

XLAT

OUTDX,AL

CALLDL500ms

incah

LOOPsub_MODE_1

ret

endp

INIT_8255PROCNEAR

MOVDX,COM_ADD

MOVAL,89h;A口方式0,输出,C口输入

OUTDX,AL

RET

INIT_8255ENDP

INIT_8253PROCNEAR

MOVDX,W_8253_C

MOVAL,37H;定时器0,方式3

OUTDX,AL

MOV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1