求助,51串口通信发送程序,接收端乱码

2019-07-15 08:41发布

一个单片机不断向PC发一个字符的程序,但是串口助手收到的乱码,网上的其他程序我也试过,人家例子可以成功,但是我这就收到是乱码,求大神讲解一下 QQ截图20180409171303.png
#include "reg52.h"       
#define uchar unsigned char
#define uint unsigned int
void inital (void)
{
        SCON = 0X50;  //UART方式1;8位UART
        REN  = 1;     //允许串行口接收数据
        PCON = 0x00;  //SMOD=0;波特率不加倍
        TMOD = 0x20;  //T1方式2,用于产生波特率
        TH1  = 0xFD;  //装初值
        TL1  = 0xFD;
        TR1  = 1;     //启动定时器1
        EA   = 1;     //打开全局中断控制
        ES   = 1;     //打开串行口中断       
}
void delay(uchar milisec)
{
uchar i,j;
for(i=0;i<milisec;i++)
     for(j=0;j<150;j++);
}
void main()
{
inital();
SBUF=0x01;
while(1)
{
   if(ti==1)
   {
   SBUF=0x01;
   TI=0;
   delay(500);
   }
}
}       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
工大古天乐
1楼-- · 2019-07-16 12:50
人中狼 发表于 2018-4-11 20:18
程序没问题,在硬件电路上测试通过了。
串口助手要设置为16进制的,应该是串口线,USB转串口设备,或者串口助手设置的问题,可以先换一个串口助手试试。

能吧您的串口助手接受的数据给我截个图么,我改成16进制收到的是81 81 81 ,也对不上,我试过网上很多单片机串口通讯例程,全都乱码 没一个成功的,串口助手我也换过,接受到是一样的
人中狼
2楼-- · 2019-07-16 15:51
数据正确的是11.0592晶振,错误的是12M晶振,看看你的晶振是否正确,单片机是否有内部振荡器,晶振设置是否正确
1.jpg
2.jpg
工大古天乐
3楼-- · 2019-07-16 17:38
人中狼 发表于 2018-4-11 21:41
数据正确的是11.0592晶振,错误的是12M晶振,看看你的晶振是否正确,单片机是否有内部振荡器,晶振设置是否正确

程序我这里一直设置的是11.0592,不太明白怎么设置内部晶振,
QQ截图20180412110426.png
人中狼
4楼-- · 2019-07-16 18:32
有的单片机芯片自身带有内部振荡器,这样有些应用场合就可以节省外部晶振,如果你用的单片机不具备内部振荡器,那就不需要进行设置,那问题就应该是外部电路或外部晶振,或者换个晶振试试
工大古天乐
5楼-- · 2019-07-16 23:39
 精彩回答 2  元偷偷看……
人中狼
6楼-- · 2019-07-17 04:32
查查硬件电路吧,STC的振荡器选择是在下载软件界面设置的,并不是在KEIL里设置的,同样在KEIL里设置的晶振频率应该只是做软件仿真时使用,硬件的晶振频率取决于硬件电路里的晶振,与KEIL的设置没关系

一周热门 更多>