单片机的红外串行通信
发布时间:2008/5/27 0:00:00 访问次数:638
如何增加传送距离呢?有两个方法:其中一个方法是采用高灵敏度的红外接收电路,但是其成本比较高,且比较容易受到干扰。另一个方法是提高发射功率(指峰值功率,不一定需要提高平均功率),这可以通过减小连接到发射器的电阻r来实现,通常可以减小到10ω。但是需要注意的是,在这种情况下,为了降低功耗和对其他红外设备的干扰,红外线载波的占空比需要降低。一般选择30%左右的占空比,,也就是datclk的高电平时间应为18us左右,而低电平时间应为8us左右(38khz载波频率)
二. pc红外接收原理
1. rs232标准简介
现在的pc中,一般已经集成了红外通信端口,但由于其通信协议比较复杂,与单片机接口不便。为简便起见,我们采用在pc的com口(rs232端口)上扩展一个红外接收电路来实现。在此,首先对rs232标准作一个简单介绍。
rs232是eia(电子工业联合会)制定的一个串行通信推荐标准,用于dte与dce的连接(典型的dte是pc,典型的dce是调制解调器),有效传输距离15米,如果采用4~20ma的电流环则可达到1公里以上的通信距离。rs232中,共规定了25条信号线(包括数据线、控制线、状态线等),但是在实际应用中不一定要用到全部的信号线。在早期的pc中,通常配置有一个25针的串行口和一个9针的串行口;而现在生产的pc中,两个串行口一律采用9针的db9插座。9针串行口的信号线定义如表1所示:
2. 红外接收扩展电路
这里我们认为dte是pc,那么就可以从表1中看到,pc的输出脚有3个:txd、drt和rts。txd是串行数据发送端口,波特率从110bps到115200bps(需硬件支持)。dte用dtr以告诉dce已经准备好接收数据,并用rts向dce请求发送数据,这两个信号主要用于硬件流量控制。在红外接收扩展电路中,不需要进行流量控制,而是利用dtr和rts为接收电路提供电源。我们知道,标准的rs232电平是负逻辑:+3v~+15v表示逻辑0;-3v~-15v表示逻辑1。这样,只要使能dtr和rts,这两个引脚就可以输出+15v左右的电平,从而给红外接收电路供电。根据这样的设计思路,红外接收扩展电路如图1:
上图中,d1、d2和d4起隔离作用,r1主要用来保护pc串口,c1和c2用来滤波,u1是三端稳压器,为红外接收模块提供+5v工作电源。u2是三端集成红外接收模块,一般接收中心频率为38khz,可以完成从红外接收、滤波到解调的全部过程。led作为指示灯,当接收到红外信号时,led会闪亮。此电路的关键之处在于dtr、rts和txd三个引脚的接法:dtr和rts为电源供应脚,可提供+15v左右的电源,前提是需要在pc监控程序中使能。txd引脚为接收提供负电源。txd脚是数据发送脚,为什么可以提供负电源呢?这正是本电路的巧妙之所在。我们知道,rs232协议标准中,当不发送数据时,txd脚输出低电平,即-15v左右。在红外接收扩展电路中,只具有红外接收功能,而无发送功能,因此正好可以利用txd脚为接收提供低电平。当没有接收到红外信号时,红外接收模块的1脚输出高电平,三极管q1截止,txd通过d4把rxd脚下拉到低电平;而当接收到红外信号时,红外接收模块输出低电平,三极管q1导通,这时rxd脚变为高电平。
如何增加传送距离呢?有两个方法:其中一个方法是采用高灵敏度的红外接收电路,但是其成本比较高,且比较容易受到干扰。另一个方法是提高发射功率(指峰值功率,不一定需要提高平均功率),这可以通过减小连接到发射器的电阻r来实现,通常可以减小到10ω。但是需要注意的是,在这种情况下,为了降低功耗和对其他红外设备的干扰,红外线载波的占空比需要降低。一般选择30%左右的占空比,,也就是datclk的高电平时间应为18us左右,而低电平时间应为8us左右(38khz载波频率)
二. pc红外接收原理
1. rs232标准简介
现在的pc中,一般已经集成了红外通信端口,但由于其通信协议比较复杂,与单片机接口不便。为简便起见,我们采用在pc的com口(rs232端口)上扩展一个红外接收电路来实现。在此,首先对rs232标准作一个简单介绍。
rs232是eia(电子工业联合会)制定的一个串行通信推荐标准,用于dte与dce的连接(典型的dte是pc,典型的dce是调制解调器),有效传输距离15米,如果采用4~20ma的电流环则可达到1公里以上的通信距离。rs232中,共规定了25条信号线(包括数据线、控制线、状态线等),但是在实际应用中不一定要用到全部的信号线。在早期的pc中,通常配置有一个25针的串行口和一个9针的串行口;而现在生产的pc中,两个串行口一律采用9针的db9插座。9针串行口的信号线定义如表1所示:
2. 红外接收扩展电路
这里我们认为dte是pc,那么就可以从表1中看到,pc的输出脚有3个:txd、drt和rts。txd是串行数据发送端口,波特率从110bps到115200bps(需硬件支持)。dte用dtr以告诉dce已经准备好接收数据,并用rts向dce请求发送数据,这两个信号主要用于硬件流量控制。在红外接收扩展电路中,不需要进行流量控制,而是利用dtr和rts为接收电路提供电源。我们知道,标准的rs232电平是负逻辑:+3v~+15v表示逻辑0;-3v~-15v表示逻辑1。这样,只要使能dtr和rts,这两个引脚就可以输出+15v左右的电平,从而给红外接收电路供电。根据这样的设计思路,红外接收扩展电路如图1:
上图中,d1、d2和d4起隔离作用,r1主要用来保护pc串口,c1和c2用来滤波,u1是三端稳压器,为红外接收模块提供+5v工作电源。u2是三端集成红外接收模块,一般接收中心频率为38khz,可以完成从红外接收、滤波到解调的全部过程。led作为指示灯,当接收到红外信号时,led会闪亮。此电路的关键之处在于dtr、rts和txd三个引脚的接法:dtr和rts为电源供应脚,可提供+15v左右的电源,前提是需要在pc监控程序中使能。txd引脚为接收提供负电源。txd脚是数据发送脚,为什么可以提供负电源呢?这正是本电路的巧妙之所在。我们知道,rs232协议标准中,当不发送数据时,txd脚输出低电平,即-15v左右。在红外接收扩展电路中,只具有红外接收功能,而无发送功能,因此正好可以利用txd脚为接收提供低电平。当没有接收到红外信号时,红外接收模块的1脚输出高电平,三极管q1截止,txd通过d4把rxd脚下拉到低电平;而当接收到红外信号时,红外接收模块输出低电平,三极管q1导通,这时rxd脚变为高电平。