找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2357|回复: 9
收起左侧

这个单片机程序为什么在串口助手里面发送都是乱码,我的波特率4800

[复制链接]
ID:650640 发表于 2020-6-3 23:22 | 显示全部楼层 |阅读模式
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 str[]=“请输入文字";
void delay100ms(void)
{
  unsigned char a,b,c;
  for(c=19;c>0;c--)
    for(b=20;b>0;b--)
    for(a=130;a>0;a--);
}
void UartInit() //?????????????????
{
  TMOD=0x20;   //
  TH1=0xf3;   
  TL1=0xf3;
  PCON=0x80;
  TR1=1;
  SCON=0x50;
  ES=1;
  EA=1;
}
void UartSend(char *Data,char len)
{
  u8 i;
  for(i=0;i<len;i++)
  {
  SBUF=*Data++;
  while(!TI);
  TI=0;
  }
   delay100ms();
}
void main()   //??????
{   
  while(1)
{
    UartInit();
UartSend(str,10);   
}
}

回复

使用道具 举报

ID:419968 发表于 2020-6-3 23:49 | 显示全部楼层
显示选的是ASCII 吧,改HEX看看
回复

使用道具 举报

ID:65956 发表于 2020-6-4 08:07 | 显示全部楼层
void UartSend(char *Data,char len)
{
  u8 i;
  for(i=0;i<len;i++)
  {
  SBUF=*Data++;
  while(!TI);
  TI=0;
  }
}
这个函数中不能加这个   delay100ms();,加了这个发送就慢了,软件怎么识别到呢
回复

使用道具 举报

ID:739545 发表于 2020-6-4 09:23 | 显示全部楼层
串口只能输入ASCII码,不能输中文,自己百度ASCII内容,str[]="please input the word"
回复

使用道具 举报

ID:726693 发表于 2020-6-4 09:39 | 显示全部楼层

KEIL

KEIL
看你的代码出现了问号,应该是你的IDE 也就是keil的文本编辑器里没有设置成支持中文,设置成utf8应该就可以了,串口助手支持中文,楼上的不要误导大家
回复

使用道具 举报

ID:726693 发表于 2020-6-4 09:41 | 显示全部楼层
串口和串口助手都支持中文,针对楼上的回复
回复

使用道具 举报

ID:648281 发表于 2020-6-4 10:39 | 显示全部楼层
你好!
1、有部分串口调试助手不支持中文
2、单片机晶振要选对,否则误差大
3、给你发一个支持中文的串口助手
2020-06-04_103437.jpg


    串口调试助手.rar (514.96 KB, 下载次数: 15)
回复

使用道具 举报

ID:650640 发表于 2020-6-4 23:38 | 显示全部楼层
moon20000boy 发表于 2020-6-4 09:41
串口和串口助手都支持中文,针对楼上的回复

对,我以前试过可以,现在要做实验试一下,不知道怎么搞得,中文就是乱码
回复

使用道具 举报

ID:650640 发表于 2020-6-4 23:42 | 显示全部楼层
51hei**1140 发表于 2020-6-4 10:39
你好!
1、有部分串口调试助手不支持中文
2、单片机晶振要选对,否则误差大

好的,非常感谢
回复

使用道具 举报

ID:764088 发表于 2020-6-5 08:30 | 显示全部楼层
另外 不能在 while(1)loop内 一直初始化串口UartInit();可放在 main前,while(1) 之前:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表