串口助手乱码

问题描述

开发板A的uart串口,用串口助手和电脑连接总是显示乱码:
最开始用U转串线连接板子和电脑——可能电平不匹配导致的乱码;
之后换了两块USB转TTL电平模块,串口助手都是乱码;
我怀疑是程序的问题
发送0x55、0xff到uart,用示波器测试都是正常的信号;
难道我拿到的USB转TTL模块都有问题?????

解决思路(感谢xy)

用开发板A作为发送端,用开发板B(提前测验过,可以正常使用)作为接收端,用uart通信,如果能正常通信,说明A的uart没有问题,两个U转T模块都有问题。如果B收集不到,或者说收集到的信号是错乱的,那就说明板子A上有问题(不论UART还是程序),USB转TTL模块可能没有问题。
(其实用示波器检测电平信号正常,基本上可以说明A的uart可以正常通信)。

具体做法

接线图:
在这里插入图片描述
测试程序语句:
板子A中的测试语句:
···
uint8_t a[256];
for( int i =0; i <= 255 ;i++)
{
a[i] = i ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用慧净的51单片机开发板PC 端通过串口向开发板发送16进制数据,并把该数据显示到数码显示管上,第二次输入的数据将替换之前的数据显示在数码管上,输入任意非 16 进制数据字符则清除显示内容(显示全 0)的代码: ```c #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管段码值 uchar smg[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//数码管显示缓存数组 uchar i,j,k;//计数器 uint num;//输入的16进制数据 bit flag;//标志位,用于判断输入是否为16进制字符 void delay(uint x)//延时函数 { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void init_serial()//串口初始化函数 { TMOD=0x20;//定时器1工作方式2,8位自动重载 TH1=0xfd;//9600波特率 TL1=0xfd; TR1=1;//启动定时器1 SCON=0x50;//串口工作方式1,8位数据位,无校验位,1位停止位 } void show()//数码管显示函数 { for(i=0;i<8;i++) { P0=smg[i]; switch(i) { case 0:break; case 1:break; case 2:break; case 3:break; case 4:break; case 5:break; case 6:break; case 7:P2=0xfe;break;//点亮第7个数码管 } delay(5);//延时5ms P2=0xff;//关闭所有数码管 } } void main() { init_serial();//串口初始化 while(1) { if(RI) //如果收到串口数据 { RI=0; num=SBUF;//把串口缓冲器中的数据读取到num变量中 if(num>=48&&num<=57) num-=48;//如果是数字字符,则转换为数字 else if(num>=65&&num<=70) num-=55;//如果是字母字符,则转换为数字 else if(num>=97&&num<=102) num-=87;//如果是小写字母字符,则转换为数字 else//如果是其他字符,则清除显示内容(显示全0) { for(i=0;i<8;i++) { smg[i]=0x00; } } if(num>=0&&num<=15)//如果是16进制字符 { flag=1;//标志位置1 for(i=7;i>=0;i--) { smg[i]=smgduan[num%16];//将对应的数码管段码值存入缓存数组 num/=16; if(num==0) break;//如果已经转换完毕,则退出循环 } } if(flag)//如果输入的是16进制字符 { flag=0;//将标志位清零 show();//在数码管上显示转换后的数据 } } } } ``` 该代码实现了使用慧净的51单片机开发板PC 端通过串口向开发板发送16进制数据,并把该数据显示到数码显示管上,第二次输入的数据将替换之前的数据显示在数码管上,输入任意非 16 进制数据字符则清除显示内容(显示全 0)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值