搜索
bottom↓
回复: 16

单片机 向 串口调试助手发送 字符 怎么显示奇怪符号

[复制链接]

出0入0汤圆

发表于 2013-8-2 20:21:50 | 显示全部楼层 |阅读模式
单片机为stc11L60xe;程序如下:

#include "REG52.H"
#include "stdio.h"
#include "intrins.h"

#define SYSCLK 32000000
#define BAUD   9600

sfr AUXR = 0x8E ;

char code MESSAGE[]="hello wqs";
unsigned char a;

void main (void)
{               
        AUXR &= 0xbf;                //定时器1时钟为Fosc/12,即12T
            AUXR &= 0xfe;                //串口1选择定时器1为波特率发生器
        //AUXR1|=UART_P1;
        SCON = 0x50;       //REN=1允许串行接受状态,串口工作模式2               
            TMOD|= 0x20;      //定时器工作方式2                       
            PCON &= 0x7f;                //波特率不倍速                                                  
            TH1 = -(SYSCLK/12/32/BAUD);                               
            TL1 = -(SYSCLK/12/32/BAUD);
                TR1  = 1;        //开启定时器1                                                      
                ES   = 1;        //开串口中断                  
                EA   = 1;        // 开总中断
   
            a=0;
           while(1)
              {
                SBUF = MESSAGE[a];                //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
        while(!TI);                                // 等特数据传送        (TI发送中断标志)
                TI = 0;                                        // 清除数据传送标志
                a++;                                   // 下一个字符
                if(MESSAGE[a]=='\0')
                break;                                            
       }
           while(1);           
}
求各位大侠指点,谢谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-8-2 20:55:21 | 显示全部楼层
这么简单的软件为什么不多点点鼠标呢
把“16进制”前面打钩!

出0入0汤圆

发表于 2013-8-2 23:45:44 | 显示全部楼层
16 进制显示

出0入0汤圆

发表于 2013-8-3 00:11:19 | 显示全部楼层
我也是新手,遇到问题最好先自己找找资料,再跟坛友请教,以免犯低级错误。

出0入0汤圆

 楼主| 发表于 2013-8-3 02:11:24 | 显示全部楼层
嗯,勾选16进制了  但还是没有显示“hello wqs”。显示如下,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-8-3 02:25:44 来自手机 | 显示全部楼层
换个串口助手,有字符显示的

出0入0汤圆

发表于 2013-8-3 07:15:30 | 显示全部楼层
检查晶振是不是用的内部的

出0入0汤圆

 楼主| 发表于 2013-8-3 09:31:12 | 显示全部楼层
换了个串口助手也一样 。    我用的是外部的晶振  32M,这个一定要用内部的R/C振荡器吗?

出0入0汤圆

发表于 2013-8-3 14:42:45 | 显示全部楼层
检查下波特率对不对,让单片机一直发数据,然后换其他波特率试试

出0入0汤圆

发表于 2013-8-3 15:09:56 | 显示全部楼层
Wqs 发表于 2013-8-3 09:31
换了个串口助手也一样 。    我用的是外部的晶振  32M,这个一定要用内部的R/C振荡器吗?
...

用外部。32兆发串口可能有问题吧,stc应该也要11.0592等等这些频率吧。430这些倒不要,你换11.0592试下51标准的串口程序…

出0入0汤圆

 楼主| 发表于 2013-8-3 18:36:32 | 显示全部楼层
嗯,好。我再试试

出5入4汤圆

发表于 2013-8-4 12:08:04 | 显示全部楼层
先做个最最简单的发送字符的程序,比如:
while(1)
              {
                SBUF = 'a';                //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
        while(!TI);                                // 等特数据传送        (TI发送中断标志)
                TI = 0;                                        // 清除数据传送标志
               }
看看能不能收到字符 a

出5入4汤圆

发表于 2013-8-4 12:13:20 | 显示全部楼层
TH1 = -(SYSCLK/12/32/BAUD);                                
TL1 = -(SYSCLK/12/32/BAUD); 这个能不能说说为什么这么算的啊

出0入0汤圆

发表于 2013-8-4 12:32:40 | 显示全部楼层
#define SYSCLK 32000000
改为
#define SYSCLK 32000000UL

出0入0汤圆

 楼主| 发表于 2013-8-4 14:46:46 | 显示全部楼层
这样改了#define SYSCLK 32000000UL
还是没什么效果

出0入0汤圆

发表于 2013-8-6 00:42:54 | 显示全部楼层
看了半天,还用STC89C52测试了一下!11.0592M晶振下,用STC89C52测试。程序没得错。最后看了一下你的主题,是stc11L60xe单片机。你看看你的单片机stc11L60xe应该是1T机器周期的。STC89C52是12T的 。是不是这里出错了!

出0入0汤圆

发表于 2013-8-10 18:23:09 来自手机 | 显示全部楼层
晶振问题!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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