单片机发送字符串给串口助手 但是串口助手接收乱码为什么?发A接收A1,B接收A2,C接收A3,0接收80,1接收81

程序如下#include<AT89X52.h>#include<string.h>#defineucharunsignedchar#defineuintunsignedi... 程序如下
#include <AT89X52.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
uchar dis[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//char str[] = "AT";
/*****n(ms)延时子程序*****/
void delayms(uint ms) //延时ms
{
uchar i;
while(ms--)
{
for(i=0;i<240;i++);
}
}
/*****主程序*****/
void main()
{
int i;
TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
TH1=0xFD; //波特率9600
TL1=0xFD;
SCON=0x50; //设定串行口工作方式
TR1=1; //启动定时器1
while(1)
{
for(i=0;i<16;i++)
{
SBUF=dis[i];
// SBUF=str[i];
while(!TI); //等特数据传送
TI=0; //清除数据传送标志
delayms(500);
}
}
}
展开
 我来答
zhxiufan
2013-06-06 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38381
国家科技进步奖

向TA提问 私信TA
展开全部
1、你的串口助手显示模式切换一下试试(十六进制、字符模式)
2、波特率看看是否一致。
追问
波特率重新试了 9600 4800 1200 结果还是这样
模式切换也是 只能用十六进制的 别的更乱码
那还能有什么别的原因呢?
追答
还有就是你的晶振是多少,比如11.0592M的话,目前的波特率时9600,看看晶振是不是不对或者有问题。
dsoyy
2013-06-06 · TA获得超过723个赞
知道小有建树答主
回答量:1054
采纳率:50%
帮助的人:551万
展开全部
还是很有规律的,这不是乱码。

代码上面来看没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjj796
2013-06-06 · TA获得超过8702个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3379万
展开全部

你的程序没有问题

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liang890319
2013-06-06 · TA获得超过1235个赞
知道小有建树答主
回答量:1446
采纳率:50%
帮助的人:431万
展开全部
是不是波特率设置不对 或者不准?
追问
那该如何设置呢? 我要改程序里面的波特率吗?
和波特率有关吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式