打印

串口怎么显示这样,求教???

[复制链接]
1427|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\736629691\QQ\WinTemp\RichOle\7_89_0IEEJ@SWJ@Q]RX{]A4.jpg
怎么显示的是这样呢?是程序问题还是硬件问题啊?代码是自己完全按照例子写得,后面又把网上的代码直接弄进去,可还是显示乱码,是不是哪里设置错了呢?请大家帮帮忙,刚刚接触这个,谢谢!!!代码如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint ms)

{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//向串口发送字符
void Putc_to_SerialPort(uchar c)
{
SBUF=c;
while(TI==0);
TI=0;
}
//向串口发送字符串
void Puts_to_SerialPort(uchar *s)
{
while(*s!='\0')
{  
  Putc_to_SerialPort(*s);
  s++;
  DelayMS(5);
}
}
//主程序
void main()
{
uchar c=0;
SCON=0x40;  //串口模式1  
TMOD=0x20;  //T1 工作模式 2
TH1=0xfd;  //波特率9600
TL1=0xfd;
PCON=0x00;  //波特率不倍增
TI=0;
TR1=1;
DelayMS(200);
//向主机发送数据
  Puts_to_SerialPort("Receiving From 8051...\r\n");
Puts_to_SerialPort("-------------------------------\r\n");
DelayMS(50);
while(1)
{
  Putc_to_SerialPort(c+'A');
  DelayMS(100);
  Putc_to_SerialPort(' ');
  DelayMS(100);
  if(c==25) //每输出一遍后加横线
  {    Puts_to_SerialPort("\r\n-------------------------------\r\n");
   DelayMS(100);
  }
  c=(c+1)%26;
  if(c%10==0)  //每输出10个字符后换行
  {
   Puts_to_SerialPort("\r\n");
   DelayMS(100);

  }
}
}




相关帖子

沙发
wangflw| | 2013-3-26 22:26 | 只看该作者
你这个是在仿真软件里面看到的结果,不一定是程序本身的问题。粗略看了下,程序问题不大。你可以从以下几点查查看原因:
1.仿真软件串口波特率有没有和程序中的9600一致?
2.仿真软件本身是不是有哪里设置错误?
3.复制代码的时候是不是包含非法字符?尤其是双引号里面的内容。
希望能帮到你。

使用特权

评论回复
板凳
wangflw| | 2013-3-26 22:30 | 只看该作者
我可能看到原因了。你的原理图接法有点问题。
串口黑框的RXD应该接232的T1OUT(14引脚)。不是直接接到单片机的RXD。你这样接电平还没有转换呢。

使用特权

评论回复
地板
Angel3598|  楼主 | 2013-3-27 08:48 | 只看该作者
楼上的大哥,非常感谢,问题解决了,其实串口不用接232,是波特率的问题,开始时TH1=0xfd,TL1=0xfd,串口的波特率设为9600他换吗了,我现在是11.0592MHZ,TH1=0xf3,TL1=0xf3,串口的波特率设为2400,就不会乱码了,谢谢楼上这个兄弟,感谢!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

0

粉丝