基于SPCE061A单片机的红外数据传输Word格式.docx
《基于SPCE061A单片机的红外数据传输Word格式.docx》由会员分享,可在线阅读,更多相关《基于SPCE061A单片机的红外数据传输Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
1红外通信的原理
红外通信是利用950nm近红外波段做为信息的载体来实现两点之间的近距离保密通信和信息转发,红外通信的基本原理就是发送端将二进制信号调制成某一频率的脉冲序列,通过驱动LED以光脉冲的形式将信号发射出去,接收端利用光电二极管将接收到的光脉冲转换为电信号,再经过放大、滤波等环节处理后送给解调电路解调,还原为二进制数字信号输出,红外发射部分对一个红外辐射源调制后发射红外信号,接收部分是利用光学装置和红外探测仪进行接收。
[4]
红外通信由红外发送和红外接收两部分组成。
红外发送部分基本原理是将待发的二进制信号按照一定的编码方式变成一定的输出波形。
红外发送中编码不能直接通过红外发送器发送,因为发送信号容易受到外界的干扰。
[5]为了提高编码的稳定性,必须调制编码,调制好的信号可通过红外发射管发射红外信号。
调制的过程是将编好的码和一定频率的信号相叠加形成输出的波形。
一定的频率是指接收器件的接收频率。
例如常用的HS0038,其接收频率为38kHz。
[6]
红外发射器一般会选用红外线LED(红外发射管),其工作原理实际上与可见光LED是一样的,只是这些LED是设计用于发射红外光的,发射光波长大约在880~940nm之间。
他们通常与光敏传输器件(如光敏二极管、光敏三电阻、光敏三极管)在遥控电路(如TV遥控电路、入侵报警器)中配合使用。
[7]与可见光LED比较,他们的光发射角很窄,这使它们传播信息的指向性良好,在一定大小的正向电流下,输出光具有确定的输出功率。
下图1为常用的红外发射电路[8]。
图1常用红外发射电路
红外接收需要先进行解调,解调的过程是通过红外接收管进行接收的。
其基本工作过程为:
当接收到调制信号时,输出高电平,否则输出为低电平,是调制的逆过程。
在应用设计中,常使用一些集成的红外接收器件,这些器件吧解调的电路和接收电路集成在一个管子当中,直接就可以输出解调后的高低电平信号;
下图2是红外接收器HS0038的应用电路。
图2红外接收器HS0038的应用电路
一般集成的红外接收器有三个引脚,从正面看,自左到右分别为G、V、S、,G为接地,V为电源供电端,S为信号输出端。
[9]
2系统整体设计
本系统由红外发送端和红外接收端两部分组成,将由两块61板完成,利用红外进行单向通信,一块61板发送数据,作为发送端,另一块接收数据,作为接收端,而发送端要进行键盘扫描,并将扫描获得的键值发送到接收端,接收端将键值显示。
其UART信号将采用38KMz的方波调制,通信速率2400bps,发送方共接有8个按键,接收方用8个发光二极管显示接收的键值,系统框图如下图3。
图3系统框图
2.1发送端设计思路
发送端采用1×
8键盘扫描,将扫描获取的键值通过红外调制的UART发送,UART波特率选用2400bps。
发送端的61板外接1×
8直接式键盘,通过IOA的低位端口进行键盘扫描;
而红外发射采用IOB8产生38KHz的PWM信号进行调制,IOB10作为UART的发送信号,受38KHz信号的调制,通过红外发射管将信号发送到接收端。
发送端系统框如下图4。
图4发送端系统框图
2.2接收端设计思路
接收端采用外接8个发光二极管,通过红外接收器接收解调的UART信号,把接收到的数据在8个发光二极管上显示,一个二极管对应一个接收的键值。
接收端的61板通过集成的红外接收器件,对红外信号进行解调,然后把解调后的信号送入IOB7(UARTRX端),作为UART的输入,当接收到数据(既发送端发送来的键值)后,利用8个发光二极管显示键值。
接收端系统框图如下图5。
图5接收端系统框图
3硬件电路设计
本文的红外通信接口所用的单片机是凌阳公司的SPCE061A。
3.1SPCE061A的性能
SPCE061A是凌阳公司生产的性价比很高的一款16位单片机,其工作电压范围2.6~3.6V,工作频率范围0.320~49.152MHz。
当工作频率设定在49.152MHz时,指令周期约为20ns。
SPCE061A单片机采用模块化结构,以16位微控制器为内核。
SPCE061A单片机具有内置2k字SRAM;
内置32kFLASH;
可编程音频处理;
晶体振荡器2个16位可编程定时器/计数器(可自动预置初始计数值);
2个10位DAC(数一模转换)输出通道;
32位通用可编程输入/输出端口;
14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;
具备触键唤醒的功能;
使用凌阳音频编码SACM S240方式(2.4kb/s),能容纳210s的语音数据;
锁相环PLL振荡器提供系统时钟信号;
32768Hz实时时钟;
7通道1O位电压模一数转换器(ADC)和单通道声音ADC;
声音ADC输入通道内置麦克风放大器和自动增益控制(AGC)功能;
具备串行设备接口;
具有低电压复位(LVR)功能和低电压监测(LVD)功能;
内置在线仿真电路ICE(In-CircuitEmulator)接口;
具有保密能力;
具有看门狗功能。
[10]
它独有的语音功能可以用在很多方面,在红外通信接口应用的这款单片机可以自动播报语音,具有独特的风格。
在该红外通信接口设计中,输入输出端口发挥着重要作用。
3.2硬件电路
红外发射、调制电路如图6所示;
IOB8为SPCE061A的PWM输出端口,输出38KHz的调制信号;
IOB10为UART的TX发送端。
8直接式键盘,如下图7所示。
图6红外发射及调制电路
图71×
8直接式键盘
红外接收电路如下图8所示,SIGNAL端输出高低电平信号,接到接收端的61板的IOB7作为UART的RX输入。
接收端用IOB0~7接8个发光二极管,如下图9所示。
图8红外接收电路
图9接收端用接8个发光二极管
4软件设计
本设计的软件部分设计较简单,实际上在软件中就把红外通信当做UART通信进行设计。
发送端的主程序中,主要完成键盘的扫描、获取键值并把键值通过调制的UART发送出去,下图9为其主程序流程图。
图10发送端主程序流程图
接收端的主程序中,则主要是检测UART、获取调制的键值并将其解码,解码的键值将送至二极管端口显示,流程图如下图10。
图11接收端主程序流程图
5总结
本文利用SPCE061A单片机和一些外围电路完成了红外数据传输系统的设计,开发的红外数据传输接口电路,具有电路简单、成本低廉、编程方便、维护容易、可靠性高等优点。
这为基于SPCE061A单片机的红外数据传输设备的应用奠定了基础。
随着红外技术的发展,红外通信接口在功能设置、自动化抄表、数据的适时采集等方面正发挥着越来越大的作用,具有良好的应用前景[11]。
参考文献
[1]邱磊,肖兵.基于IrDA协议栈的红外通信综述[J].无线通信技术,2004,(04).
[2]张培仁,张志坚,高秀峰.十六位单片机微处理器原理及应用(凌阳SPCE061A)[M].北京:
清华大学出版社,2005.
[3]罗亚非等,凌阳16位单片机应用基础[M].北京:
北京航空航天大学出版社,2003.
[4]王芳,吴谨.基于凌阳SPCE061A的红外通信接口设计[J].电子技术,2009,(09).
[5]柏军,胡屏,郭佩英.一种应用于单片机系统的红外串行通信接口[J].东北电力学院学报,2003,(02).
[6]石磊,刘忠艳.红外通信接口在单片机系统中的设计[J].信息技术,2003,(07).
[7]张晓红,SasanSaadat,桥为民,敬岚,苟世哲,刘军科.红外通信IrDA标准与应用[J].光电子技术,2003,(04).
[8]侯媛彬.凌阳单片机原理及其毕业论文精选[M].北京:
科技出版社,2006.
[9]金永福,王黎钦.计算机串口红外通信接口设计[J].电子技术,2004,(07).
[10]熊庆国.新型16位单片机SPCE061A及应用展望[J].现代电子技术,2003,(08).
[11]罗兆虹,詹学文,戴学安.红外通讯技术在电能表数据交换中的应用[J].电测与仪表,2002,(12).
DesignofinfrareddatatransmissionbasedonSPCE061A
ZhouXin
Abstract:
BasedonSPCE061Amonolithicintegratedcircuitallsortsofsuperiority,thisdesignchosehaveinsultedthepositiveSPCE061Amonolithicintegratedcircuittocarryontheinfrareddatatransmissionfortheplatformdesignproposal.Theprincipleofinfraredcommunicationiselaborated,thehardwarecircuitoftheinfraredcommunicationinterfacebasedonSunplusSPCE061A,includingthehardwarecircuitdesignofthereceivingandtransmittingparts,areintroduced.Alsothepracticabilityofthedesignisdescribed,theworkingprincipleisanalyzed,andthesoftwaredesignispresentedcombiningwiththespecificapplicationexample.Thisdesignhasgoodapplicationprospectandverylargedevelopmentspace.
Keywords:
SPCE061A;
infrareddatatransmission;
61board;
infraredcommunication
附录一源程序
发送端
IR_Send.h
#ifndef__IR_SEND_H__
#define__IR_SEND_H__
//writeyourheaderhere
#endif
main.c
//功能描述:
扫描键盘,如有键值,则将键值通过调制后的UART
#defineP_Watchdog_Clear(volatileunsignedint*)0x7012
#defineP_TimerA_Data(volatileunsignedint*)0x700A
#defineP_TimerA_Ctrl(volatileunsignedint*)0x700B
//声明UART相关函数,在RSDocument.c中有定义
voidInitUART(void);
externunsignedintuiRS_Buff;
//串行口接收数据缓存
externunsignedintuiRS_ReciveFlag;
//串行口接收数据标识
externunsignedintuiTX_Buff[5];
//发送数据缓冲区暂时设定为10个8bit的数据区域
//声明扫键相关的函数,在key.asm中定义
voidF_Key_Scan_Initial(void);
voidF_Key_Scan_ServiceLoop(void);
unsignedintSP_GetCh(void);
//实现功能:
初始化UART,初始化TimerA,使IOB8输出38KHz的PWM信号,用于调制UART信号;
主循环中,扫描键盘,并获取键值,当有键按下时,把键值发送出去
intmain(void)
{
unsignedintKey;
InitUART();
//初始化UART端口,波特率为2400bps
F_Key_Scan_Initial();
//键盘扫描初始化
//设置TimerA,使IOB8输出38KHz的PWM波形,供红外发射调制作
*P_TimerA_Data=0xff61;
*P_TimerA_Ctrl=0x03f0;
while
(1)
{
Key=SP_GetCh();
//获取键值
if(Key)//是否有键按下?
{
uiTX_Buff[0]=Key<
<
8;
//如有键按下,则把Key送到发送队列中的最高八位
UART_SendChar
(1);
//启动发送队列中的一个字节数据(从最高位开始)
}
F_Key_Scan_ServiceLoop();
//后台的循环服务程序(for键盘)
*P_Watchdog_Clear=0x0001;
//清狗
}
}
接收端
IR_Recive.h
#ifndef__IR_RECIVE_H__
#define__IR_RECIVE_H__
//功能描述:
接收解调回来的UART信号,作为RX输入,检测到RX有输入时,读出数据,并在LED上显示数值
#defineP_Watchdog_Clear(volatileunsignedint*)0x7012
#defineP_IOA_Data(volatileunsignedint*)0x7000
#defineP_IOA_Buffer(volatileunsignedint*)0x7001
#defineP_IOA_Dir(volatileunsignedint*)0x7002
#defineP_IOA_Attrib(volatileunsignedint*)0x7003
//串行口接收数据缓存
//实现功能:
主循环,在循环里等待UART接收到数据,当接收到数据时,把数据从UART缓冲区读出,送至IOA0~7输出,点亮对应的发光二极管
*P_IOA_Dir=0x00ff;
//初始化IOA端口,IOA0~7为输出端口
*P_IOA_Attrib=0x00ff;
*P_IOA_Data=0x0000;
//初始输出值为0x00
if(uiRS_ReciveFlag!
=0)//是否接收到数据?
uiRS_ReciveFlag=0;
*P_IOA_Data=uiRS_Buff;
//送至IOA0~7显示
//清狗
附录二61板原理图