找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3601|回复: 5
收起左侧

51单片机串口发送数字实验为什么改了一下波特率就不对了?

[复制链接]
ID:237065 发表于 2018-4-3 21:59 | 显示全部楼层 |阅读模式
51单片机为什么串口,根据例程将4800改成了9600就不对了(我是根据图片上配置的)(功能:串口发送一个数字,串口助手上显示出来)感觉是配置上哪里出了点问题???

  1. #include<reg52.h>


  2. typedef unsigned char u8;

  3. void UsartInit()
  4. {
  5.   SCON=0x50;
  6.   TMOD=0x20;                //定时器1方式2
  7.   PCON=0x80;
  8.   TH1=0xF9;                  //自动重装载8位计数器
  9.   TL1=0xF9;                         //9600
  10.   TR1=1;                          
  11.   ES=1;                        //开串口中断
  12.   EA=1;



  13. }


  14. void Usart() interrupt 4
  15. {
  16. u8 ReceiveData;
  17.           ReceiveData=SBUF;
  18.           RI=0;
  19.         SBUF=ReceiveData;
  20.          while(!TI);
  21.    TI=0;

  22. }





  23. void main()
  24. {

  25. UsartInit();

  26.   while(1);

  27. }
复制代码



显示结果

显示结果

波特率配置

波特率配置
回复

使用道具 举报

ID:237065 发表于 2018-4-3 22:06 | 显示全部楼层
是12Mhz晶振,下载软件也是9600,com4,就是调不出来
回复

使用道具 举报

ID:285069 发表于 2018-4-4 06:48 | 显示全部楼层
使用12Mhz晶振,一開始就不好.買不到11.0592M?甚至買22.1184M.
計算波特率誤差最小.
回复

使用道具 举报

ID:164602 发表于 2018-4-4 07:32 | 显示全部楼层
Hazard 发表于 2018-4-3 22:06
是12Mhz晶振,下载软件也是9600,com4,就是调不出来

这就对了!!!!!
12M晶振,最大只能是4800的波特率且要加倍。不然误差很大,串口就收不到正确的信息。 1.jpg

2.jpg

3.jpg

4.jpg


评分

参与人数 1黑币 +5 收起 理由
浪子knight + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:287575 发表于 2018-4-4 08:42 | 显示全部楼层
程序没错,错的是12M 不应该在9600波特率工作,你仔细看看后边的误差率6.99%
用11.0592在大多数波特率工作下,误差很小
回复

使用道具 举报

ID:237065 发表于 2018-4-4 16:46 | 显示全部楼层
谢谢大牛们们
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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