历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2021年02月03日 | 51单片机的串口通信实例

2021-02-03 来源:eefocus

其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。


SM2 :多机通信控制位。 该仅用于方式2 和方式3 的多机通信。其中发送机SM2 = 1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。


REN :串行接收允许位:REN =0 时,禁止接收;REN =1 时,允许接收。


TB8 :在方式2、3 中,TB8 是发送机要发送的第9 位数据。在多机通信中它代表传输的地址或数据,TB8=0 为数据,TB8=1 时为地址。


RB8 :在方式2、3 中,RB8 是接收机接收到的第9 位数据,该数据正好来自发送机的TB8,从而识别接收到的数据特征。


TI :串行口发送中断请求标志。当CPU 发送完一串行数据后,此时SBUF 寄存器为空,硬件使TI 置1,请求中断。CPU 响应中断后,由软件对TI 清零。


RI :串行口接收中断请求标志。当串行口接收完一帧串行数据时,此时SBUF 寄存器为满,硬件使RI 置1,请求中断。CPU 响应中断后,用软件对RI 清零。


电源控制寄存器PCON(见表3) 。

表3 PCON寄存器


表中各位(从左至右为从高位到低位)含义如下。


SMOD :波特率加倍位。SMOD=1,当串行口工作于方式1、2、3 时,波特率加倍。SMOD=0,波特率不变。


GF1、GF0 :通用标志位。


PD(PCON.1) :掉电方式位。当PD=1 时,进入掉电方式。


IDL(PCON.0) :待机方式位。当IDL=1 时,进入待机方式。


另外与串行口相关的寄存器有前面文章叙述的定时器相关寄存器和中断寄存器。定时器寄存器用来设定波特率。中断允许寄存器IE 中的ES 位也用来作为串行I/O 中断允许位。当ES = 1,允许 串行I/O 中断;当ES = 0,禁止串行I/O 中断。中断优先级寄存器IP的PS 位则用作串行I/O 中断优先级控制位。当PS=1,设定为高优先级;当PS =0,设定为低优先级。


波特率计算:在了解了串行口相关的寄存器之后,我们可得出其通信波特率的一些结论:


① 方式0 和方式2 的波特率是固定的。


在方式0 中, 波特率为时钟频率的1/12, 即fOSC/12,固定不变。


在方式2 中,波特率取决于PCON 中的SMOD 值,即波特率为:



当SMOD=0 时,波特率为fosc/64 ;当SMOD=1 时,波特率为fosc/32。


② 方式1 和方式3 的波特率可变,由定时器1 的溢出率决定。



当定时器T1 用作波特率发生器时,通常选用定时初值自动重装的工作方式2( 注意:不要把定时器的工作方式与串行口的工作方式搞混淆了)。其计数结构为8 位,假定计数初值为Count,单片机的机器周期为T,则定时时间为(256 ?Count)×T 。从而在1s内发生溢出的次数(即溢出率)可由公式(1)所示:

从而波特率的计算公式由公式(2)所示:


在实际应用时,通常是先确定波特率,后根据波特率求T1 定时初值,因此式(2)又可写为:


二、电路详解


下面就对图1 所示电路进行详细说明。


图1 串行通信实验电路图


最小系统部分(时钟电路、复位电路等)第一讲已经讲过,在此不再叙述。我们重点来了解下与计算机通信的RS-232 接口电路。可以看到,在电路图中,有TXD 和RXD 两个接收和发送指示状态灯,此外用了一个叫MAX3232 的芯片,那它是用来实现什么的呢?首先我们要知道计算机上的串口是具有RS-232 标准的串行接口,而RS-232 的标准中定义了其电气特性:高电平“1”信号电压的范围为-15V~-3V,低电平“0”


信号电压的范围为+3V~+15V。可能有些读者会问,它为什么要以这样的电气特性呢?这是因为高低电平用相反的电压表示,至少有6V 的压差,非常好的提高了数据传输的可靠性。由于单片机的管脚电平为TTL,单片机与RS-232 标准的串行口进行通信时,首先要解决的便是电平转换的问题。一般来说,可以选择一些专业的集成电路芯片,如图中的MAX3232。MAX3232 芯片内部集成了电压倍增电路,单电源供电即可完成电平转换,而且工作电压宽,3V~5.5V 间均能正常工作。其典型应用如图中所示,其外围所接的电容对传输速率有影响,在试验套件中采用的是0.1μF。


值得一提的是MAX3232 芯片拥有两对电平转换线路,图中只用了一路,因此浪费了另一路,在一些场合可以将两路并联以获得较强的驱动抗干扰能力。此外,我们有必要了解图中与计算机相连的DB-9 型RS-232的引脚结构(见图2)。


图2 DB-9连接器接口图


其各管脚定义如下(见表4)。



表4 DB-9型接口管脚定义


三、程序设计


本讲设计实例程序如下:


#include "AT89X52.h" (1)


void Init_Com(void) ( 2)


{


TMOD = 0x20; ( 3)


PCON = 0x00; ( 4)


SCON = 0x50; ( 5)


TH1 = 0xE8; ( 6)


TL1 = 0xE8; ( 7)


TR1 = 1; ( 8)


}


void main(void) ( 9)


{


unsigned char dat; ( 10)


Init_Com(); ( 11)


while(1) ( 12)


程序详细说明:


(1)头文件包含。


(2)声明串口初始化程序。


(3)设置定时器1 工作在模式2,自动装载初值(详见第二讲)。


(4)SMOD 位清0,波特率不加倍。


(5)串行口工作在方式1,并允许接收。


(6)定时器1 高8 位赋初值。波特率为1200b/s(7)定时器1 低8 位赋初值。


(8)启动定时器。


(9)主函数。


(10)定义一个字符型变量。


(11)初始化串口。


(12)死循环。


(13)如果接收到数据。


(14)将接收到的数据赋给之前定义的变量。


(15)将接收到的值输出到P0 口。


(16)对接收标志位清0,准备再次接收。


(17)将接收到的数据又发送出去。


(18)查询是否发送完毕。


(19)对发送标志位清0。


四、调试要点与实验现象


接好硬件,通过冷启动方式将程序所生成的。hex文件下载到单片机运行后,打开串口调试助手软件,设置好波特率1200,复位单片机,然后在通过串口调试助手往单片机发送数据(见图3),可以观察到在接收窗口有发送的数据显示,此外电路板上的串行通信指示灯也会闪烁,P0 口所接到LED 灯会闪烁所接收到的数据。


图3 串口软件调试界面


另外串口调试助手软件使用时应注意的是,如果单片机开发板采用串口下载而且和串口调试助手是使用同一串口,则在打开串口软件的同时不能给单片机下载程序,如需要下载,请首先点击“关闭串口”,做发送实验的时候,注意如果选中16 进制发送的就是数字或者字母的16 进制数值,比如发送“0”,实际接收的就应该是0x00,如果不选中,默认发送的是ASCII 码值,此时发送“0”,实际接收的就应该是0x30,这点可以通过观察板子P0 口上的对应的LED 指示出来。


五、总结


本讲介绍了单片机串口通信的原理并给出了实例,通过该讲,读者可以了解和掌握51 单片机串口通信的原理与应用流程,利用串口通信,单片机可以与计算机相连,也可以单片机互联或者多个单片机相互通信组网等,在实际的工程应用中非常广泛。从学习的角度来说,熟练的利用串口将单片机系统中的相关信息显示在计算机上可以很直观方便的进行调试和开发。

推荐阅读

史海拾趣

启攀微电子(Chiphomer)公司的发展小趣事

启攀微电子(Chiphomer)公司成立于2003年,当时正值中国集成电路产业快速发展的初期。创始人张杨带领着一支由英美归国的留学精英和国内资深管理与技术人员组成的团队,立志要在这一领域闯出一片天地。然而,初创时期的资金短缺、技术壁垒和市场认可度低等问题,让公司面临着巨大的挑战。然而,他们凭借着对技术的执着追求和对市场的敏锐洞察,成功推出了首款SDH通信芯片,为公司的后续发展奠定了坚实的基础。

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:2008年全球金融危机爆发,电子行业受到重创,市场需求大幅下降。

发展:面对严峻的市场环境,HN Electronics迅速调整战略,削减非核心业务,加强成本控制,并加大在研发领域的投入,以技术创新为突破口,寻找新的增长点。

关键事件:在金融危机期间,HN Electronics成功开发出具有更高性价比的物联网传感器芯片,满足了市场对智能家居、智慧城市等新兴领域的需求,从而实现了业绩的稳步增长。

Gwconnect (Molex)公司的发展小趣事
通过改进电路拓扑结构、选择更高效的元件和参数等方式来优化电路设计,提高电路的转换效率和发射功率。
ALCOA公司的发展小趣事

第一次世界大战期间,铝因其轻质且强度高的特性,被广泛应用于航空和汽车工业。ALCOA公司借此机会迅速发展壮大,为军方和汽车制造商提供了大量的铝材。这种需求推动了公司的技术进步和生产规模的扩大,也奠定了ALCOA在电子行业中的领先地位。

Hitano Enterprise Corp公司的发展小趣事

近年来,随着环保意识的提高,ALCOA积极推动可持续发展和环保倡议。公司致力于减少生产过程中的能源消耗和废弃物排放,同时也在研发更环保的铝材和生产工艺。这些努力不仅提升了公司的社会形象,也为其在电子行业中的长期发展奠定了坚实的基础。

以上五个故事,只是ALCOA公司发展历程中的一部分。然而,这些故事足以展现出这家公司在电子行业中的卓越成就和持续创新的精神。

强盛电子(AEC)公司的发展小趣事

AEC深知人才是企业发展的根本。因此,公司一直高度重视人才的引进、培养和使用。通过制定完善的人才政策,AEC吸引了一大批高素质的人才加入公司。同时,公司还建立了完善的培训体系,为员工提供广阔的职业发展空间。在人才的支撑下,AEC不断推陈出新,实现了持续稳健的发展。

这些故事是基于一般性的行业发展和企业成长模式构建的,并不特定于强盛电子(AEC)公司的实际经历。如果您需要更具体、更准确的关于强盛电子(AEC)的发展故事,建议您查阅该公司的官方资料、行业报告或相关新闻报道。

问答坊 | AI 解惑

AVR单片机C语言开发入门指导PDF

比较适合新手入门,N位高手强烈推荐的…

查看全部问答>

“史上最长”红灯——2045秒

提到红绿灯,你当然不会陌生,可是你见过的等待时间“最长”的红灯是多少秒?2045秒。 1月22日,重庆市的杨先生开车路过袁家岗重庆医科大学外的单行道。杨先生停在斜坡处等红绿灯时,偶然抬头,不远处上方的交通灯显示器吓了他一跳,“上面显示 ...…

查看全部问答>

Communications Network Test and Measurement Handbook.PDF

寒假回家前人品爆发第一帖。 书名:Communications Network Test and Measurement Handbook 来源:Downloaded from Digital Engineering Library @ McGraw-Hill 版权:Copyright © 2004 The McGraw-Hill Companies. All rights reserved. ...…

查看全部问答>

开关电源的效率如何提高

希望大家给我建议一下,从哪些方面可以提高开关电源的效率,达到88%,不甚感激…

查看全部问答>

求助 对论坛下载的单片机论文进行原理图的补充,就差原理图和仿真了,求助高手补充

从论坛下 了一片单片机的文章, 参考了一下,发现原理图并不完整, 求助高手抽空帮忙完善一下:$…

查看全部问答>

【FPGA设计技巧问题】延时问题

背景:RTL代码中写了一个寄存器可控的延时逻辑对输入clk进行调节,使用了9个SMIC18的DLY单元串接而成。DC综合是设成了don\'t touch。问题:查datasheet可得,DLY单元的上升沿和下降沿的延时是不一样的,请问这样的话,如果多个级联,其占空比会不会 ...…

查看全部问答>

请问是SDK问题吗?

我最近在弄的目标板平台是这样的ARM9 + WINCE5.0 我是用windowsXP+vs2008+qt-embedded-wince-opensource-src-4.5.2开发的,还有SKD用的是STANDARDSDK_500 vs2008中已经嵌入了QT。 我参考了很多资料,包括本版的那篇置顶帖子 我写了一个很简单的 ...…

查看全部问答>

飞凌OK6410开发板打造最专业ARM11应用平台

OK6410开发板立足客户全面、稳定的应用需求,是专为企业级客户设计的高效、安全型产品开发平台。实用性强是它的最大优势,OK6410可以对核心板、底板、内存、FLASH、扩展卡等部件进行灵活特配。凭借高品质、低价格、易扩展三大顶尖特性,将科技转 ...…

查看全部问答>

请问wince5支持USB组合设备吗?

我这有一个USB组合设备,功能是音频(usb audio class)和HID,音频功能包括一个接口实现录音,一个接口实现播放;HID包括一个接口实现键盘,一个接口实现鼠标。音频驱动我已经实现,现在问题是HID这一部分通过调试发现并没有被系统识别,现象是USBHI ...…

查看全部问答>

谁有ISA总线标准,急需!!

急需一份ISA总线标准文档,谁有ISA总线的详细文档,能否给我发一份,感激,多谢!!! 我的E-mail: yumj19852000@163.com…

查看全部问答>