标题:
单片机串口通信数据错误的问题!
[打印本页]
作者:
xjtong
时间:
2019-4-8 09:34
标题:
单片机串口通信数据错误的问题!
89c52rc11.05892m 9600bps
直接接在电脑的上,用串口助手发的字符A ,单片机收的情况看一下,
怎么 错这么多呀?????(上次用红外线发的错的更多!!!!!!
何解????!!!!!
IMG_20190408_091112647.jpg
(240.86 KB, 下载次数: 50)
下载附件
2019-4-8 09:31 上传
作者:
xjtong
时间:
2019-4-8 09:35
发送间隔是1111MS
作者:
zhan8665
时间:
2019-4-8 10:26
上传代码帮你看一下
作者:
笨笨兔
时间:
2019-4-8 10:32
是不是控制字符没处理好,显示出来了?
作者:
badegg3
时间:
2019-4-8 10:59
单片机的串口发送比较简单,不可靠,红外线更不可靠
作者:
天风情
时间:
2019-4-8 11:22
这个需要分析你的程序
作者:
上帝在睡觉
时间:
2019-4-8 17:19
接收的程序可能有问题
作者:
xjtong
时间:
2019-4-9 14:59
程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs= P1^0;
sbit lcdrw= P1^1;
sbit lcden= P2^5;
uchar i,daa[];
void delay(unsigned int i){while(--i);}
void write(uchar da,bit cr)
{
lcdrs=cr;
P0=da;
delay(5);
lcden=1;
delay(15);
lcden=0;
}
void init()
{
lcdrw=0;
lcden=0;
delay(1);
write(0x38,0);
write(0x0c,0);
write(0x01,0);//??
delay(155);
write(0x80,0); //???
}
void URATinit( )
{
TMOD=0x20;
SCON=0x50;
EA=1;
ES=1;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
void receive() interrupt 4
{
if(RI)
{
RI=0;
daa[i]=SBUF;
write(daa[i],1);
}
i++;
if(i>20)i=0;
}
void main()
{
init();
URATinit( );
while(1);
}
复制代码
作者:
黄思远
时间:
2019-4-9 17:28
这可能是代码进入了死循环不断接收
作者:
xjtong
时间:
2019-4-10 01:04
应该没进死循环,因为我在电脑换个字符,一样可以收到,一样错很多。
作者:
dalaoshi
时间:
2019-4-10 13:14
能接收到正确字符表示波特率与接线都很正确,几个字符后错误是因为时序误差超过了极限,过后恢复正常是因为错误时序错多几次后又恢复正常。主要是因为:接收程序里接收到字符后必须先放到记忆缓冲,然后马上离开,不能在里面就写字符(write),因为write的时候有很多delay,等写完再回头已经来不及了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1