单片机与相位计的RS232串口通信编程问题。 硬件已经没有问题,c程序存在问题,请帮忙修改一下。

作者&投稿:塞婷 (若有异议请与网页底部的电邮联系)
如何实现单片机对相位计的RS232串口通信和控制?~

如果仅仅 是串口数据通讯,很简单。无非就是 收对发 发对收 你发我收 我发你收,定义好模块 定义好所有参数。

你这里的关键是:

"相位计的RS232串口通信和控制"

这个是关键,你要看看相位计的通讯规则。首先是相位计收到一个特定字串 才发送什么字节 这一串字 如何定义的,发送过来的又是如何定义的,这些必须有相位计厂家的说明。不然累死也通讯不上。

这些都不需要了。
把单片机1的TXD接单片机2的RXD,把单片机1的RXD接单片机2的TXD,同一个电路,地是相通的。
MAX232,DB9之类的都不需要。

/*************************************************
如果你的相位计只需要在初始的时候发送p0 c0 l0 这三个的话,也就是说后继的数据都是由相位计发送,
单片机接收的话,初始化部分没有大问题,但接收数据的部分 ReceStr()有问题,应该是收不到数据吧?

1、串口初始化程序先确定TH1的值和单片机晶振匹配不?0xfd是用于11.0592M晶振的波特率不加倍(smod = 0)方式下的9600bps的
这个可以控制单片机发送,由pc设定9600接收,看单片机串行速率设置是否正确
2、你现在的串口接收函数执行了也收不到数据, 因为单片机串口只有一个字节的缓冲,所以一般用中断方式来接收数据,
每次有一个字节收到后,通过中断来将收到的字节放入程序缓冲去。
还有接收变量怎么会写成float的?单字节用char 。
如果是相位计的数据发过来是float类型,那需要你自己程序转换,串口发送的只会是8bit的hex数据
3、如果程序需要很准确的延迟的话,延迟函数需要调试一下的
串口接收例程:

全局变量:
unsigned char x_Buf[50] = {0};
unsigned char * pX = x_Buf;
//volatile unsigned char posBf = 0;
中断服务:
void Serial_ISR(void) interrupt 4
{
if(RI)
{
RI = 0;
*pX++ = SBUF;
if(pX == &x_Buf[49]+1) pX = x_Buf;
}
}
*************************************************/

/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)
{

SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
ES = 1; //串口中断使能
EA = 1;
}

个人觉得
接收函数
void ReceStr(void)
{
float i;
i=SBUF;
P2=i;
DelayMs(240);
DelayMs(240);
}
应该在中断中来完成。
void ReceStr(void) interrupt 4 //串行中断服务程序
{
float i; //定义临时变量

if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
i=SBUF; //读入缓冲区的值
P2=i; //把值输出到P1口,用于观察
SBUF=i; //把接收到的值再发回电脑端
}
if(TI) //如果是发送标志位,清零
TI=0;

}
你试试,不行再具体说明一下会出现什么问题。

在void ReceStr(void)中要检查UART控制寄存器中 RI接收中断标志,为1才能读,而且读完要清零。读入到数据放入float i;中好像不合适,每次读入是一个BYTE。

仿真 吧

建议 去 我的领地 5d6d 的 proteus 论坛看看

那里有很多 单片机仿真实例,包括仿真图 和 源码


交通信号机的主要功能
定周期控制按照预先设定的控制方案进行相位信号输出。在方案运行期间周期长、绿信比、相序不随道路状况的变化而变化。多时段控制在不同的时段,交叉口的交通状态也不相同,为了达到较好的控制效果,应设置不同的控制方案。信号机可以将1天24小时分成若干个时段,每个时段运行相应的周期、绿信比方案。动态方案...

电磁流量计超声流量计都有什么区别?
PS.以上测量都是满管状态,电磁流量计和超声波流量计均只能测量满管状态下流量。而这两款流量计的通讯协议都是比较丰富的,几乎都是标配了4-20mA和RS485,更有甚者可以选配市场上别的通讯协议,这是比其他流量计都优势的。迅升不但标配了4-20mA和RS485,还有OCT报警设置(可设置上下限,达到会发出...

什么是质量流量计
5层流压差式质量流量计的工作原理:层流压差原理,基于哈根泊肃叶定律设计的 在温度、管径等参数一定的情况下,气体是层流状态时,通过获取层流元件两端的压差信号,计算出体积流量,然后通过温度、压力等参数的修正,获得标准体积流量。易度质量流量计结构示意图:6质量流量计的通讯:易度质量流量计可通过R...

什么是质量流量计
5层流压差式质量流量计的工作原理:层流压差原理,基于哈根泊肃叶定律设计的 在温度、管径等参数一定的情况下,气体是层流状态时,通过获取层流元件两端的压差信号,计算出体积流量,然后通过温度、压力等参数的修正,获得标准体积流量。易度质量流量计结构示意图:6质量流量计的通讯:易度质量流量计可通过R...

三相相位伏安表主要用在哪些方面?
8. 内置存储器,能保存 50 组(屏)测量数据。可通过面板上的操作按键查阅已保存的历史数据组及向量图。9. 外配 RS-232 接口,可将仪表测量数据成组上传至 PC 机,由配套的 PC 机管理软件转换成数据库予以保存,或形成打印报告存档。10. 表内安装充电电池,一次充足电后连续工作时间在关闭液晶背光...

三相标准源哪个厂家的好些?各位推荐下
也适用于其它需要高精度标准信号源进行测量、检验的场合。三相程控精密测试电源可以输出工频(40Hz~65Hz)频率、相位及幅度可调的高精度电压电流,是非常高精度的可调电压电流标准源。DGDY-3H三相程控精密测试电源可以输出非常纯净的正弦电压电流,其失真度不超过0.1%,有着非常高的输出稳定度,典型值为0...

用MATLAB怎么设计带通滤波器?那个firls函数好像没有约束采样频率,还有...
4.IIR数字滤波器的相位特性不好控制,对相位要求较高时,需加相位校准网络。在MATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数...[n,Wn]= buttord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs...

编码器的输出方式是什么?
这种编码器的输出方式为长线驱动(line driver),其中A+A-B+B-Z+Z-为输出的信号线,增量编码器给出两相方波,它们的相位差90°(电气上),通常称为A通道和B通道。其中一个通道给出与转速有关的信息,与此同时,通过两个 通道信号进行顺序对比,得到旋转方向的信息。还有一个特殊信号称为Z或零...

编码器输出的是什么波形?
这种编码器的输出方式为长线驱动(line driver),其中A+A-B+B-Z+Z-为输出的信号线,增量编码器给出两相方波,它们的相位差90°(电气上),通常称为A通道和B通道。其中一个通道给出与转速有关的信息,与此同时,通过两个 通道信号进行顺序对比,得到旋转方向的信息。还有一个特殊信号称为Z或零...

崇仁县18071694302: 如何实现单片机对相位计的RS232串口通信和控制?
唐吉凯西: 如果仅仅 是串口数据通讯,很简单.无非就是 收对发 发对收 你发我收 我发你收,定义好模块 定义好所有参数. 你这里的关键是: "相位计的RS232串口通信和控制" 这个是关键,你要看看相位计的通讯规则.首先是相位计收到一个特定字串 才发送什么字节 这一串字 如何定义的,发送过来的又是如何定义的,这些必须有相位计厂家的说明.不然累死也通讯不上.

崇仁县18071694302: 单片机与相位计的RS232串口通信编程问题. 硬件已经没有问题,c程序存在问题,请帮忙修改一下. -
唐吉凯西: /************************************************* 如果你的相位计只需要在初始的时候发送p0 c0 l0 这三个的话,也就是说后继的数据都是由相位计发送,单片机接收的话,初始化部分没有大问题,但接收数据的部分 ReceStr()有问题,应该是收不...

崇仁县18071694302: MAX232与51单片机之间怎样连接? -
唐吉凯西: 这里的TX,RX对应单片机的那两个口即可!

崇仁县18071694302: 在调试rs232串口通信时,单片机往PC机上发数据,串口调试助手可以接收,但是PC往单片机发数据,接收不到. -
唐吉凯西: 先解释一下现象:(1)MAX232的12脚即R1OUT连接到了单片机的RX脚,因此使用探头碰MAX232的12引脚时导入了干扰信号,所以接收到了乱的数据.同时,也证明了单片机的接收电路和程序都没有问题.(2)板子上的地接到示波器上的地...

崇仁县18071694302: 关于51单片机的串口通信,为什么要用rs232电平 -
唐吉凯西: 所谓的RS-232通信标准,就是对插件样式、信号名称和意义以及所谓的驱动器/接收器的电气模式这种硬件作出规定.一般的都是9针的接口,其中包括CD接口:数据通道接收载波的检测;RD接口:接收数据;SD接口:发送数据;ER接口:数...

崇仁县18071694302: 单片机RS232串口通信实验中,单片机与单片机之间如何进行串行口间通信? -
唐吉凯西: R接T ,T接R;波特率一样,通讯协议一样

崇仁县18071694302: 单片机中的做RS232串口通信时,我的数据总是无法传到单片机实验板上,我用的线是USB转串口线 -
唐吉凯西: 程序没问题 就从连接方面帮你分析下 1.调试助手通讯协议,波特率(还是该对应程序检查下),端口号 2.线的问题:RS232的2,3口短接看看 3.也可以更改下调试助手的收发格式:有可能是HEX格式 点点试试

崇仁县18071694302: 单片机串口通信原理 -
唐吉凯西: 1、51系列单片机的串口有4个模式,可分别用作串并转换、并串转换、异步串行通信(2种模式).异步串行通信中,有1+8+1和1+8+1+1两种帧格式,多机通信是特殊的通信方式. 2、基本原理是两组移位寄存器.将并行通信转换成串行通信模式(发送部分),或反之(接收部分).可全双工运行. 3、速度通过移位脉冲决定.具体一般通过定时器1的自动装载模式产生的溢出脉冲给出. 4、电平上采用的是CMOS逻辑. 5、以上是物理层和数据链路层的单片机串口模块的约定,其他层需要软件人员根据需要自行把握.另外,电平需要根据实际通信环境做变换,如232、485或红外等.

崇仁县18071694302: 电脑如何通过RS232线 同单片机实现通信 电脑上得要什么软件吗?最好具体点 谢谢了 -
唐吉凯西: PC机上常用的是串口调试助手,很容易下载到的,很方便调试用,接收发送数据都很方便,但如果有特殊需要的话可以自己编程序实现.单片机与电脑通讯需要做电平转换,一般MAX232就可以.

崇仁县18071694302: rs232串口通信原理 -
唐吉凯西: 串口的电气特性: 1)RS-232串口通信最远距离是50英尺=15m 2)RS232可做到双向传输,全双工通讯,最高传输速率20kbps 3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网