单片机实现激光测距接收到激光扫码装置的数据,乱码显示,什么原因

罕见的固定码编码器件,无线发射接收模块只要直接连接即可,模块必需用信号调制才能正常工作。非常简单,因为是专用编码芯片,所以效果很好传输距离很远。这时有一定的技巧,模块还有一种重要的用途就是配合单片机来实现数据通讯。
合理的信息码格式,通常自己定义传输协议,单片机和模块工作时,不论用何种调制方式,所要传递的信息码格式都很重要,将直接影响到数据的可靠收发。
码组格式推荐方案,前导码长度应大于是10m以避开背景噪声,前导码+同步码+数据帧。因为接收模块接收到数据第一位极易被干扰(即零电平干扰)而引起接收到数据错误。所以采用CPU编译码可在数据识别位前加一些乱码以抑制零电平干扰。同步码主要用于区别于前导码及数据。有一定的特征,好让软件能够通过一定的算法鉴别出同步码,同时对接收数据做好准备。
更不能长0和长1采用曼彻斯特编码或POCSA G码等,数据帧不宜采用非归零码。
合理的通讯速率,过高的数据速率会降低接收灵敏度及增大误码率甚至根本无法工作。数据模块的最大传输数据速率为9.6KB,一般控制在2.5k左右。
然而单片机模拟2272解码时通常会发现遥控距离缩短很多,单片机模拟2262时一般都很正常。这是因为单片机的时钟频率的倍频都会对接收模块发生干扰,51系列的单片机电磁干扰比较大,2051稍微小一些,PIC系列的比较小,需要采用一些抗干扰措施来减小干扰。比如单片机和遥控接收电路分别用两个5伏电源供电,将接收板单独用一个78L05供电,单片机的时钟区远离接收模块,降低单片机的工作频率,中间加入屏蔽等。能较好地遏制单片机对接收模块的电磁干扰,接收模块和51系列单片机接口时最好做一个隔离电路。
不是直流电平,接收模块工作时一般输出的高电平脉冲,所以不能用万用表测试,调试时可用一个发光二极管串接一个3K电阻来监测模块的输出状态。连接很简单只要直接连接即可,无线数据模块和PT2262/PT2272等专用编解码芯片使用时。传输距离比较理想,一般能达到600米以上,如果和单片机或者微机配合使用时,会受到单片机或者微机的时钟干扰,造成传输距离明显下降,一般实用距离在200米以内。
& & & & & & & & & & & & & 本文章来自深圳无线发射接收模块:http://www.zab168.com/
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号单片机串口通信中文时易出现乱码?求大神指点! - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
单片机串口通信中文时易出现乱码?求大神指点!
00:03:31  
/***************************************************************************************/
#include &reg52.h&
#define uchar unsigned char
#define uint unsigned int
#define error 0
& && && && && && && && && && && && && &
/***************************/
void delay(uint z)
& && &&&uint x,y;
& && &&&for(x=0;x&110;x++)
& && && && && & for(y=0;y&z;y++);
/*********串口初始化*******/
void Uart_Init(void)& && && && && & //9600bps@12.000MHz
& && &&&PCON &= 0x7F;& && && && && & //波特率不倍速
& && &&&SCON = 0xD0;& && && && && & //8位数据,可变波特率
& && &&&TMOD &= 0x0F;& && && && && & //清除定时器1模式位
& && &&&TMOD |= 0x20;& && && && && & //设定定时器1为8位自动重装方式
& && &&&TL1 = 0xFD;& && && && && & //设定定时初值
& && &&&TH1 = 0xFD;& && && && && & //设定定时器重装值
& && &&&ET1 = 0;& && && && && & //禁止定时器1中断
& && &&&TR1 = 1;& && && && && & //启动定时器1
/********发送一个字节****/
void Uart_SendByte(uchar dat)& &//9位 (1校验位)
& && &&&ACC=
& && &&&TB8=P;
& && &&&SBUF=
& && &&&while(TI==0);
& && &&&TI=0;& && &&&
/**************************/
void Uart_SendStr(uchar *s)
& && &&&for(i=0;s!='\0';i++)
& && && && && & ACC=s;
& && && && && & TB8=P;
& && && && && & SBUF=s;
& && && && && & while(TI==0);
& && && && && & TI=0;
& && &&&delay(800);
/*************************/
uchar Uart_Receive()
& && &&&uchar dat,
& && &&&if(RI==1)
& && &&&{& && &&&
& && && && && & dat=SBUF;
& && && && && & ACC=
& && && && && & if(RB8==P)
& && && && && & {
& && && && && && && && &buf=
& && && && && && && && &RI=0;
& && && && && && && && &
& && && && && & }
& && && && && & else
& && && && && & {
& && && && && && &&&RI=0;
& && && && && && &&&
& && && && && &&&}
/*******************/
void main()
& & Uart_Init();
& && &&&ES=1;
& && &&&EA=1;
& && &&&while(1)
& && && && && & Uart_SendStr(&狂奔的蜗牛哥 !&);
& && && && && & Uart_SendStr(&\n&);
& && && && && & delay(5000);
& && && && && & Uart_SendStr(&START.......&);
& && && && && & delay(5000);
/************串口中断*****************/
void Uart_ser()interrupt 4
& && && && && & temp=Uart_Receive();;
单片机串口通信中文时易出现乱码?求大神指点!
00:05:15  
/***************************************************************************************/
#include &reg52.h&
#define uchar unsigned char
#define uint unsigned int
#define error 0
& && && && && && && && && && && && && &
/***************************/
void delay(uint z)
& && &&&uint x,y;
& && &&&for(x=0;x&110;x++)
& && && && && & for(y=0;y&z;y++);
/*********串口初始化*******/
void Uart_Init(void)& && && && && & //9600bps@12.000MHz
& && &&&PCON &= 0x7F;& && && && && & //波特率不倍速
& && &&&SCON = 0xD0;& && && && && & //8位数据,可变波特率
& && &&&TMOD &= 0x0F;& && && && && & //清除定时器1模式位
& && &&&TMOD |= 0x20;& && && && && & //设定定时器1为8位自动重装方式
& && &&&TL1 = 0xFD;& && && && && & //设定定时初值
& && &&&TH1 = 0xFD;& && && && && & //设定定时器重装值
& && &&&ET1 = 0;& && && && && & //禁止定时器1中断
& && &&&TR1 = 1;& && && && && & //启动定时器1
/********发送一个字节****/
void Uart_SendByte(uchar dat)& &//9位 (1校验位)
& && &&&ACC=
& && &&&TB8=P;
& && &&&SBUF=
& && &&&while(TI==0);
& && &&&TI=0;& && &&&
/**************************/
void Uart_SendStr(uchar *s)
& && &&&for(i=0;s[i]!='\0';i++)
& && && && && & ACC=s[i];
& && && && && & TB8=P;
& && && && && & SBUF=s[i];
& && && && && & while(TI==0);
& && && && && & TI=0;
& && &&&delay(800);
/*************************/
uchar Uart_Receive()
& && &&&uchar dat,
& && &&&if(RI==1)
& && &&&{& && &&&
& && && && && & dat=SBUF;
& && && && && & ACC=
& && && && && & if(RB8==P)
& && && && && & {
& && && && && && && && &buf=
& && && && && && && && &RI=0;
& && && && && && && && &
& && && && && & }
& && && && && & else
& && && && && & {
& && && && && && &&&RI=0;
& && && && && && &&&
& && && && && &&&}
/*******************/
void main()
& & Uart_Init();
& && &&&ES=1;
& && &&&EA=1;
& && &&&while(1)
& && && && && & Uart_SendStr(&狂奔的蜗牛哥 !&);
& && && && && & Uart_SendStr(&\n&);
& && && && && & delay(5000);
& && && && && & Uart_SendStr(&START.......&);
& && && && && & delay(5000);
/************串口中断*****************/
void Uart_ser()interrupt 4
& && && && && & temp=Uart_Receive();;
单片机串口通信中文时易出现乱码?求大神指点!
没发好,变绿了
09:55:13  
15:52:03  
你可以试着调整波特率或者字符编码方式,中文选择GB2312或者UTF-8
11:00:59  
thank you for share,i think i need it.
01:19:00  
你可以试着调整波特率或者字符编码方式,中文选择GB2312或者UTF-8
请问单片机怎么选择发送哪种编码格式的中文?这好像是编译器做的工作,没得选吧,
比如keil中fd的bug
等待验证会员
10:30:41  
我也遇到同样的问题
浏览过的版块
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司单片机控制激光条码扫描器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机控制激光条码扫描器
&&单片机控制激光条码扫描器
你可能喜欢串口发送接收数据乱码
[问题点数:20分,结帖人andy_James]
串口发送接收数据乱码
[问题点数:20分,结帖人andy_James]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2010年6月 硬件/嵌入开发大版内专家分月排行榜第二
2011年1月 VB大版内专家分月排行榜第二2010年10月 VB大版内专家分月排行榜第二
2013年1月 VB大版内专家分月排行榜第三2012年12月 VB大版内专家分月排行榜第三2011年6月 VB大版内专家分月排行榜第三2011年2月 VB大版内专家分月排行榜第三2010年12月 VB大版内专家分月排行榜第三2010年11月 VB大版内专家分月排行榜第三2009年7月 VB大版内专家分月排行榜第三
2010年6月 硬件/嵌入开发大版内专家分月排行榜第二
匿名用户不能发表回复!|}

我要回帖

更多关于 rabbitmq接收消息乱码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信