51单片机串口通信错误的原因

发布者:梦回归处最新更新时间:2013-01-16 来源: 21IC 关键字:51单片机  串口通信  CH372 手机看文章 扫描二维码
随时随地手机看文章

之前发过一篇博文《MCU-51串口通信程序》,程序挺好用的,之后一直把串口当做测试用途,像正在调试USB,用的是CH372,PC通过CH372(USB)发一个字符到单片机,单片机再通过串口回传这个字符,从而验证CH372是否收到字符,结果出现意想不到的错误,错误还挺有规律的。就是发16位字符0A,接收到字符用16位显示是8A;发2A,显示AA;发2B,显示AB,就是最高位(第8位)0变为1了,试验了几个都是一样。

串口通信调试界面

之前老板也是同样的问题(可见这事是多么普遍),不过当时由于不是我的事,就没管。问了一下老板,才知道是晶振的问题,之前板子是用11.0952MHz晶振,现在的板子是12MHz,程序中串口通信也没改预置值,直接就下载了,结果是误差太多,前面的码没事,但误差积累,最后的码0就变成1了。敲响警钟![page]

程序中串口初始化

程序

可是板子用的是12MHz晶振。

51波特率计算器

通过这个小程序,可以看到误差为8.5%,通常要求不出现误码的话,误差要求在4.5%以下,而对于传统的51单片机来说,最好是选择11.0592的晶振,因为这个频率,不会有误差,也就不可能误码。

51波特率计算器

做单片机的串口通信,要注意单片机所用的晶振。

关键字:51单片机  串口通信  CH372 引用地址:51单片机串口通信错误的原因

上一篇:从零开始学51单片机定时器
下一篇:51单片机串口的问题

推荐阅读最新更新时间:2024-03-16 13:16

MCS-51单片机实现与Internet 的交互
实现MCS-51 单片机嵌入式接入Internet 技术。单片机通过ATL8019AS 以太网控制器实现与Internet 的交互。利用开源代码的TCP/IP 协议栈uIP 实现对底层设备的驱动,同时通过uIP 协议的应用程序接口实现各种应用服务。给出了硬件设计图,编写了单片机主程序。应用此技术实现了一个城市中心停车监测系统。 近年来以单片机(MICroComputer Unit,MCU)为代表的嵌入式系统在工业探测系统、智能仪器、安防系统、智能家电和信息家电领域得到了广泛应用。 如果嵌入式系统能够连接到Internet 上,则用户可以方便、快捷、低廉地通过网络进行远程控制、监测和信息传送。Internet 技术和嵌入
[单片机]
MCS-<font color='red'>51单片机</font>实现与Internet 的交互
51单片机基础之矩阵键盘4X4
原理: 16个键盘,通过八个引脚就可以控制,高四位控制行,低四位控制列。 代码: #include reg51.h #define SMG P0 //宏定义数码管 #define KEY P1 //宏定义矩阵键盘 typedef unsigned char u8; typedef unsigned int u16; u8 sum; //定义一个全局变量,用来保存按键的值 u8 SMG_Code ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xff}; //数码管显示的
[单片机]
<font color='red'>51单片机</font>基础之矩阵键盘4X4
51单片机基于一个定时器实现多个软件定时器
软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不足,这是软件定时器的一个优点,即数量不受限制。但由于软件定时器是通过程序实现的,其运行和维护都需要耗费一定的CPU资源,同时精度也相对硬件定时器要差一些。在RTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间标记加一,每个软件定时器都保存着到期时间,程序需要定期扫描所有运行中的软件定时器,将各个到期时间与全局时钟标记做比较,以判断对应软件定时器是否到期,到期则执行相应的回调函数,并关闭该定时器
[单片机]
<font color='red'>51单片机</font>基于一个定时器实现多个软件定时器
51单片机IO口总结
首先,看51单片机4类IO口,P0~P3,做一个结构上直观的比较 之所以把P0口和P2口放在一起,是因为其硬件结构上都包含一个多路开关,用于选择是做为普通I/O口使用还是作为 数据/地址 总线使用。对于没有内部ROM的单片机(8031)或单片机内部存储器无法满足程序大小需求,多路开关就与上面接通,作为单片机与扩展存储器通信的地址/数据总线使用。 它们之间的不同也显而易见,P0口引脚前2个mosfet(金属氧化物半导体场效应管)构成了一个推挽结构,而P2口前mosfet则为普通开关作用,且包含上拉电阻。 推挽结构:在输出 地址/数据 信息时,V1、V2管是交替导通的,负载能力很强,可以直接与外设存储器相连
[单片机]
<font color='red'>51单片机</font>IO口总结
嵌入式实时操作系统μC/OS-II下的多串口通信编程方法
本文介绍了以LPC2365为核心处理器、嵌入式实时操作系统μC/OS-II下的多串口通信编程方法。对于固定长度的短字节帧数据,通过设置合适的字节触发深度,一次中断完成数据接收任务;对于变长的长字节帧数据,则通过多次中断和等待延时的方法判断数据稳定并完成帧数据的接收;对于大量数据的接收和发送采用建立FIFO数据队列的方法。 通过这些措施较好地完成了多串口较大数据量的通信任务。 国产某掠海恒高硬体拖靶在拖曳飞行时,需要将自身的各种参数通过无线链路实时上传至拖曳母机,同时实时接收拖曳母机的遥控指令完成相应的动作。拖靶自身的参数包括:开关高控状态、 蓄电池 电压 、无线电高度表值、飞行高度装定值、垂向加速度值、舵翼角、温度值、普通
[单片机]
嵌入式实时操作系统μC/OS-II下的多<font color='red'>串口通信</font>编程方法
MCS-51单片机指令详解
MCS-51系列单片机指令以A开头的指令有18条,分别为: ACALL addr11 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,RnADDC A,direct ADDC A,@Ri ADDC A,#data AJMP addr11 ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ANL C,bit ANL C,/bit 1、ACALL addr11 指令名称:绝对调用指令 指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令
[单片机]
基于51单片机红外编码解码的C语言程序
当学习键按下后,红外接收头便可将接受到的信号存储到单片机中。在接受到通用遥控器发出的信号后,如果按下发射键,单片机将调出刚刚储存的信息,通过红外发射头发射出和遥控器一样的信号来达到控制的作用。 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit studylamp=P2^7; sbit lamp=P2^6; sbit studykey=P3^2; sbit remotein=P1^1;
[单片机]
80C51单片机的定时计数器的结构和工作原理
单片机怎么学,先从哪入手开始学,怎么开始入门 无论是对于新手还是已经在行内的朋友,学习单片机技术,实战动手能力十分重要,如果只知道从网络上的视频以及配套教材来入手开始学,很肯定的说,你永远也学不会。为何?单片机的学习最重要的一点是需要去动手实战实操,单单只看培训教材,也许看的时候能懂一些,但过了一段时间就会遗忘得一干二净,中国有句成语交“纸上谈兵”,经常用来嘲讽一些完全没有实践过的人,单凭从书上了解的知识就胸有成竹的长篇大论。 在这里建议大家,一定要给自己构建一个合适的动手实战试验场所,结合具体的实操对象就很容易理解单片机的电路组态原理,以及理解单片机的程序编制原理,对于入行不深的人,建议给自己出一道居家智能化的物联网课题,采
[单片机]
80C<font color='red'>51单片机</font>的定时计数器的结构和工作原理
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved