RS232接口电路原理原理

核心提示首先RS232接口电路一般是用在单片机串口与电脑的TTL电平转换上。 RS-232接口有DB25接口和DB9接口两种,现在普通使用的基本上都是DB9接口,DB25接口基本上不再使用。DB9接口定义如下(1.载波检测,2.接收数据,3.发送数

首先RS232接口电路一般是用在单片机串口与电脑的TTL电平转换上。 

RS-232接口有DB25接口和DB9接口两种,现在普通使用的基本上都是DB9接口,DB25接口基本上不再使用。DB9接口定义如下(1.载波检测,2.接收数据,3.发送数据,4.数据终端准备就绪,5.信号地,6.调制解调器就绪,7.请求发送,8.允许发送,9.振铃提示),RS-232串口相互连接分为通过Modem连接和无Modem连接,由于以太网,RS-485总线,CAN总线等总线的普及,通过Modem连接做较长距离通信已经基本上不再使用。无Modem连接即直接连接则分为握手连接和无握手连接,无握手连接直接使用2,3,5三个针脚就可以使用,而握手连接则是必须使用请求发送,允许发送,准备就绪等信号,握手连接又称全信号连接。由于RS-232使用单端非差分电路,多条线路共用一个接地线,长距离传输时,不同节点的接地线电平差异可能会达到几伏,有可能导致信号的误读,从而导致RS-232传输距离不能超过15米,传输速率不能超过110Kbps

RS232接口的电气特性:

RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。

在TxD和RxD上:

逻辑1(MARK)=-3V~-15V

逻辑0(SPACE)=+3~+15V

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)=+3V~+15V

信号无效(断开,OFF状态,负电压)=-3V~-15V

以上规定说明了RS-232C标准对逻辑电平的定义。对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。RS-232C 与TTL转换:EIA RS-232C 是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA RS-232C 与TTL电路之间进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTL←→EIA双向电平转换。

我做的滤波器

#include<reg51.h>

#include"math.h"

#define?N?25

#define?PI?3.1415926

sbit?da_wr1=P3^6;

sbit?da_cs=P2^7;

void?InputWave();

float?FIR();

void?da0832();

float?fHn[N]={0.0,0.0,0.001,-0.002,0.01,-0.09,

-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,

-0.11,-0.02,0.049,-0.018,-0.009,0.01,

-0.002,-0.002,0.001,0.0,0.0?

};

float?fXn[N]={0.0};

float?fInput,fOutput;

float?fSignal1,fSignal2;

float?fStepSignal1,fStepSignal2;

float?f2PI;

int?i;

float?FIN[256],FOUT[256];

int?nIn?,nOut;

main(void)

{

?nIn=0;nOut=0;

?f2PI=2*PI;

?fSignal1=0.0;

?fSignal2=PI*0.1;

?fStepSignal1=2*PI/30;

?fStepSignal2=2*PI*1.4;

?while(1)

?{

?//?fInput=InputWave();

?InputWave();

?//?FIN[nIn]=fInput;

?//?nIn++;nIn%=256;

?fOutput=FIR();

?FOUT[nOut]=fOutput;

?

?nOut++;

?if(nOut>=256)

?{nOut=0;da0832();

}

?}

}

void?InputWave()

{

int?i;

for(i=0;i<=15000;i++)

?{

?fXn[i]=(sin(PI*2*i/N*15000)+1)*5;

?}

}

float?FIR()

{

float?fSum;

fSum=0;

for(i=0;i<N;i++)?fSum+=(fXn[i]*fHn[i]);

return(fSum);

}

void?da0832()

{

unsigned?char?i;

da_cs=0;//da转换输出使能标志置位

da_wr1=0;//输入寄存器的官写选通信号,表示单片机要传送数据了

for (i=0;i<255;i++)

P0=FOUT[i];

da_wr1=1;//数据传送完成,使能锁存

da_cs=1;

}

 
友情链接
鄂ICP备19019357号-22