12408|4

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

新手求助帖:51单片机串口控制LED灯 [复制链接]

刚接触51单片机的串口知识,遇到一个问题,希望大家解答
串口控制LED灯的程序:
#include
unsigned char flag;
unsigned char temp;
main()
{
  TMOD=0x20;
  TH1=0xFD;
  TL1=0xFD;
  TR1=1;
  EA=1;
  ES=1;
  SCON=0x50;      
  while(1)
  {
  if(flag==1)
    {
        ES=0;
        flag=0;
        SBUF=temp;
        while(!TI);
        TI=0;
        ES=1;
        }
  }
}
void ser() interrupt 4
{
  RI=0;
  P0 = SBUF;
  temp = SBUF;
  flag=1;
}
  理论来说程序的发送和接收的数据是一致的。
  我用串口调试助手这软件,发现发送的数据为什么和PC机接收的数据不一样的呢?如图,
我的发送框中分别是:01 55 aa ff 00,为什么PC机中接收的数据是:81,F5,8A,FF,80呢?
  
  当发送aa和ff的确可以全亮或者全灭。并且低四位的LED灯能准确控制,就是当发送01到0f都能正确显示。
但当发生的数据的高四位不为0时,LED灯就不能准确显示了。比如当我发送是1f时,理论来说,LED灯应正确显示10001111,就是第五、第六、第七位的灯会亮。而实际上它显示是:00111111。
  再比如我发送是3f,而实际上LED灯显示的是01111111.就是只有最高位亮,其他都是灭的。
  为什么是这样子的呢?望解答!
此帖出自51单片机论坛

最新回复

不客气,新手经常遇到类似的问题  详情 回复 发表于 2012-10-8 21:02
点赞 关注(1)
 

回复
举报

5

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

新手求助帖:51单片机串口控制LED灯

补充一下:我表达有误,应该是:比如当我发送是1f时,理论来说,LED灯应正确显示00011111,就是第六、第七位、第八的灯会亮。而实际上它显示是:00111111。
此帖出自51单片机论坛
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

板凳
 
你的晶振是多大了啊?如果是12MHz的话波特率在9600的时候的误差可达8.5%,也就是波特率误差太大了,所以单片机接收到的数可能会错其中的一位或两位。你举的例子里错的也都是一位或两位,而0xFF因为都是1,所以没错,0x80就一位是1,其他都为0,出错的机会也就少了。我觉得这样的解释算是比较合理的。
用12MHz晶振的时候就1200和600的波特率误差还小一些,只有0.16%。你可以把波特率换成1200试一下。这个时候TH1的值应该为0xE6。你可以试一下,如果使用9600的波特率的话必须使用11.0592MHz的晶振,一般用51做串口通讯的都是用这个频率的晶振的,因为这个频率的晶振就是为了做51通讯而专门算出来生产的!
此帖出自51单片机论坛

点评

十分感谢,我刚换了11.0592M的晶振,问题解决了!!!:) :) 发送和接收的数据一致了!!!:carnation: 因为我是用买回来的开发板,也是第一次做串口实验,所以不知道也没注意到板子上是用了12M的晶振、、、:handsha  详情 回复 发表于 2012-10-8 13:39
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 jishuaihu 的帖子

十分感谢,我刚换了11.0592M的晶振,问题解决了!!! 发送和接收的数据一致了!!!:carnation: 因为我是用买回来的开发板,也是第一次做串口实验,所以不知道也没注意到板子上是用了12M的晶振、、、
此帖出自51单片机论坛
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

5
 
不客气,新手经常遇到类似的问题
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表