欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

51单片机串口发送中文字符到pc调试助手,发作乱码求指点

更新时间: 2014-01-05 03:14:35 责任编辑: Author_N1

 

51单片机串口发送中文字符到PC调试助手,发生乱码求指点!
51单片机程序如下:
/***************   writer:shopping.w   ******************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint id=0;
uchar data table[100];
void Delay(uint x)
{
  uchar i;
while(x--)
{
  for(i=0;i<120;i++);
}
}
void send(uchar *dis) 

while(*dis!='\0') {
SBUF=*dis;
dis++;  
while(!TI);
TI=0; //软件请发送中断
}

/*********************************************** 
串行口初始化波特率9600定时器1工作方式2    
*************************************************/ 
void serial_init(void) 

TMOD=0x20;//计时器1作为比特率发生器方式2 
TH1=0xfd;  
TL1=0xfd; //装入初值 
TR1=1;//计时中断允许 
SM0=0; 
SM1=1;//串行口工作于方式2 
ES=1;//串行口中断允许 
REN=1;//接收允许 
EA=1;// 总中断允许 

void main()
{
serial_init();
Delay(100);
send("Receiving From 8051...\r\n");
while(1) ;
}

void Serial_INT() interrupt 4
{
  if(RI)
{  
  ES=0; //关串口中断   
  table[id++]=SBUF;//命令存到命令数组
  RI=0; //软件清除接收中断
  if(table[id-1]==0x0a) 
  {
   table[id]='\0';
id=0; 
send(table); //将单片机接收完成的字符串发送回计算机
  }        
  ES=1;//开串口中断
}
// else
//   TI=0;
}

硬件接线如图:

观察串口调试助手显示是一堆乱码,然而将汉字改为英文字符或数字后显示是正常的,这说明发送部分的程序应该是没有问题的,请问如何解决?
--参考方法--
.......
你发汉字过去,你让VT1,VT2怎么办呢
--参考方法--
串口助手在WINDOWS下运行的支持汉字显示
VT1,VT2能支持汉字?
--参考方法--
     if(table[id-1]==0x0a) 
      {
          table[id]='\0';
        id=0; 
        send(table); //将单片机接收完成的字符串发送回计算机
      }           
send(table);中有没有再补上 ‘\n' ?
--参考方法--
看图,乱码在 行 头。
补发一个 0a 看看,
严格的 说 应该是 0d 0a
--参考方法--
用十六进制显示不就能看出来是哪里出问题了吗
--参考方法--
应该是0a 0d吧
--参考方法--
串口助手解析不出来汉字
--参考方法--
顶起,我也有这样的问题
--参考方法--

--参考方法--
太强了51能发送汉字
--参考方法--
貌似是可以的吧;乱码可以检查下波特率、停止位等;如都没问题,可根据RS485的电气特性,测下电压
--参考方法--
一个汉字的长度大于一个字符长度造成的
--参考方法--
引用:
引用:一个汉字的长度大于一个字符长度造成的

引用:一个汉字的长度大于一个字符长度造成的
如果是如此,为何有时却能完整返回数据呢?


>>能返回完全是偶然
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19982/
本文WWW.DOC100.NET DOC100.NET版权所有。