-
FPGA单片机带你领略如何实现多机串行通信网络
2020-08-29 03:00:19本文介绍了在FPGA上集成多个UART的方法,并以此为基础搭建了一个多单片机通信网络。设计中采用FPGA作为串行接口扩展器件与传统器件相比具有功能灵活、扩展性好的特点。通过实验证明,该通信网络相对于传统的总线拓扑... -
PC机如何实现与单片机间串行通信
2012-01-29 09:07:12* PC机与单片机间串行通信的实现 * 设计方案的介绍 * 硬件设计 * 软件设计 解决方案: * 有线传输 * 无线传输 * 采用CCll00收发器通过串口实现PC机与单片机之间的双工无线通信 单片...
中心议题:
* PC机与单片机间串行通信的实现
* 设计方案的介绍
* 硬件设计
* 软件设计
解决方案:
* 有线传输
* 无线传输
* 采用CCll00收发器通过串口实现PC机与单片机之间的双工无线通信单片微型计算机简称单片机,它是将中央处理器(CPU)、存储器(RAM,ROM)、定时/计数器和各种接口电路都集成到一块集成电路芯片上的微型计算机。随着计算机技术尤其是单片机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、湿度等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS 232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的串行通信。
1 设计方案
为了通过串口实现PC机与单片机间的双工通信,可有如下设计方案。
(1)设计方案一:有线传输
此方案是指PC机与单片机之间通过电缆线传输数据。有线传输的优势是性能比较稳定,调试简单,而不足之处在于它的应用范围不够广、性能不够好,而且传输距离受限,这样就大大影响了系统的应用范围。
(2)设计方案二:无线传输
此方案是指PC机与单片机通过无线信道传输数据。无线传输的最大优势是应用范围广,受距离约束较小,在一定范围内可以不用考虑距离问题,还可以应用在一些高温、危险的场合。
因此,本文选用无线传输方案通过串口来实现PC机与单片机之间的双工通信。无线传输可以用不同的方式来实现,常用的有红外方式、蓝牙方式,其他的还有射频收发芯片如CC1100,PT2262/2272芯片等。
红外通信是利用950 nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号。其最大优点是:不易被人发现和截获,保密性强;几乎不会受到电气、天电、人为干扰,抗干扰性强。此外,红外线通信机体积小、重量轻、结构简单、价格低廉。不足之处在于它必须在视距内通信,且传播受天气的影响。
CCll00是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。CCll00构建高性能射频无线数据传输技术方案应用无线通讯模块采用透明模式进行通讯,即所收即所发,具有通讯距离远、低功耗、接口灵活等优点,使用者无需编码和控制。CCll00通信距离(视距)大于300 m,而且能隔墙遥控,操作方便。
综合上述分析,本文介绍的是采用CCll00收发器通过串口来实现PC机与单片机之间的双工无线通信。
2 硬件设计
2.1 总体框图
此双工无线通信系统的总体框图如图1所示。由于此系统可实现双工通信,因此它可分为两个通信过程:PC机(上位机)通过上位机程序界面发送数据给单片机,并送给液晶屏显示相应的数据;键盘输入数据传给单片机,接着发送给PC机,并在PC机上位机程序界面上显示出来。
2.2 实现电路图
对应于上述框图的电路实物图如图2所示。其左右两个电路分别对应上述框图中的左右两个部分。总体来说,它包括电平转换电路、单片机处理部分、无线收发部分(CCll00收发器)、液晶显示模块和键盘输入模块五个部分。
(1)电平转换电路
PC机的串行口采用的是标准的RS 232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS 232的电气特性不匹配,因此为了使单片机的串行口能与RS 232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。
(2)单片机部分
单片机部分包括单片机、复位电路和时钟电路。它将串口送过来的数据传输给CC1100收发器,或者将CCll00收发器传送过来的数据通过串口给PC机。单片机的复位电路和时钟电路是单片机工作所必需的。
(3)无线收发部分
无线收发部分由CC1100收发器组成,它将接收到的数据通过天线发射出去或从天线接收发送过来的数据。
(4)液晶显示模块
此处选用LCDl602液晶模块,其内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码。
(5)键盘输入模块
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4×4=16个按键,比之直接将端口用于键盘多出了一倍。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是比较好的。矩阵式键盘的按键识别方法为行扫描法。此处选用4×4的矩阵键盘来输入O~9的数字和a~f的字母。3 软件设计
本系统的软件设计方面包括上位机程序和单片机程序的设计。上位机程序要实现的功能是在电脑上显示一个操作界面,它可代替串口调试工具。
3.1 上位机程序
上位机程序可以用VB,VC++等语言来编程,但本方案采用比较方便的C#来编程实现,其流程图如图3所示。2.2 实现电路图
对应于上述框图的电路实物图如图2所示。其左右两个电路分别对应上述框图中的左右两个部分。总体来说,它包括电平转换电路、单片机处理部分、无线收发部分(CCll00收发器)、液晶显示模块和键盘输入模块五个部分。
(1)电平转换电路
PC机的串行口采用的是标准的RS 232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS 232的电气特性不匹配,因此为了使单片机的串行口能与RS 232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。
(2)单片机部分
单片机部分包括单片机、复位电路和时钟电路。它将串口送过来的数据传输给CC1100收发器,或者将CCll00收发器传送过来的数据通过串口给PC机。单片机的复位电路和时钟电路是单片机工作所必需的。
(3)无线收发部分
无线收发部分由CC1100收发器组成,它将接收到的数据通过天线发射出去或从天线接收发送过来的数据。
(4)液晶显示模块
此处选用LCDl602液晶模块,其内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码。
(5)键盘输入模块
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4×4=16个按键,比之直接将端口用于键盘多出了一倍。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是比较好的。矩阵式键盘的按键识别方法为行扫描法。此处选用4×4的矩阵键盘来输入O~9的数字和a~f的字母。3 软件设计
本系统的软件设计方面包括上位机程序和单片机程序的设计。上位机程序要实现的功能是在电脑上显示一个操作界面,它可代替串口调试工具。
3.1 上位机程序
上位机程序可以用VB,VC++等语言来编程,但本方案采用比较方便的C#来编程实现,其流程图如图3所示。
3.2 单片机程序
单片机程序主要包括主程序、单片机发送子程序、单片机接收子程序、液晶显示子程序、键盘输入子程序五部分,均采用C语言进行模块化编程。由于篇幅原因,下面只给出了单片机发送子程序和接收子程序,如图4,图5所示。
4 测试结果
测试时,连接好硬件打开串行口COM1,并设波特率为9 600 b/s。单片机发送字符串“675”给PC机,其液晶显示如图6所示,相应的PC机界面显示如图7所示。PC机发送"69asd"给单片机,液晶屏上即可接收到“69asd",如图8,图9所示。测试结果说明:基于串行口的PC机与单片机之间的双工无线通信是切实可行的,而且无线传输的距离至少可达到100 m。
5 结语
采用CCll00收发器通过串口实现了PC机与单片机之间的双工无线通信。此系统可应用到一些远距离控制或者是危险性比较高的数据采集和控制的场合,用于采集温度、湿度等参数,还可扩展到无线传感器网络领域,实现诸如无线抄表、智能家居等系统。 -
python与单片机如何进行串行口通信_如何设置51单片机的串行口来实现与PC机通信...
2020-12-15 12:33:39一、原理简介51单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行...一、原理简介
51单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。
与之前一样,首先我们来了解单片机串口相关的寄存器。
SBUF寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。
串行口控制寄存器SCON(见表1) 。
表1 SCON寄存器
表中各位(从左至右为从高位到低位)含义如下。
SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。
表2 串行口工作方式控制位
其中,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)又可写为:
二、电路详解
如何设置51单片机的串行口来实现与PC机通信
3
图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)。
如何设置51单片机的串行口来实现与PC机通信
图2 DB-9连接器接口图
其各管脚定义如下(见表4)。
如何设置51单片机的串行口来实现与PC机通信
表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 单片机串口通信的原理与应用流程,利用串口通信,单片机可以与计算机相连,也可以单片机互联或者多个单片机相互通信组网等,在实际的工程应用中非常广泛。从学习的角度来说,熟练的利用串口将单片机系统中的相关信息显示在计算机上可以很直观方便的进行调试和开发。
为了方便大家更好的学习,您还可以关注畅学电子和EDA的公众号,每天推送相关知识,希望能对你的学习有所帮助!
-
利用EPP接口协议实现高速数据通信
2020-12-10 11:00:47摘要:如何实现PC与单片机系统间的高速数据通信,是测量控制系统中经常遇到的难题。本文系统地介绍利用EPP接口协议实现高速数据通信的原理,并从硬件、软件两方面给出一个应用EPP接口协议的设计实例。 关键词:... -
单片机与DSP中的PC机与单片机间串行通信的实现
2020-11-04 21:17:57单片微型计算机简称单片机,它是...因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的 -
如何设置51单片机的串行口来实现与PC机通信
2020-07-13 12:33:31一、原理简介51单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行... -
如何实现单片机用一个I/O采集多个按键信号
2020-07-14 12:57:01如何实现单片机用一个I/O采集多个按键信号 使用模数转换(ADC)的特点就可以实现单片机用一个I/O采集多个按键信号。 一、单片机的I/O口检测按键简说 我们知道,一般情况下单片机的一个I/O口作为普通I/O口的话,只能... -
通信与网络中的8位单片机与以太网控制器RTL8029接口的VHDL设计
2020-12-13 15:43:46由于5 1系列单片机没有集成以太网接口,因此,如何将51系列单片机系统接入网路是一个值得探讨的课题,其关键就是在硬件上如何实现单片机与以太网控制器的接口。本文将讨论这一课题。 1 以太网控制器 台湾Realtek... -
51单片机串口通信模板_51单片机串口通信
2020-12-27 13:53:12物联网STM32入门 - 直播课程 - 创客学院www.makeru.com.cn本文我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。一、原理简介51 单片机内部有一个全双工...物联网STM32入门 - 直播课程 - 创客学院www.makeru.com.cn本文我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。
一、原理简介
51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。
与之前一样,首先我们来了解单片机串口相关的寄存器。
SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。
串行口控制寄存器SCON(见表1) 。
表1 SCON寄存器
表中各位(从左至右为从高位到低位)含义如下。
SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。
表2 串行口工作方式控制位
其中,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 单片机串口通信的原理与应用流程,利用串口通信,单片机可以与计算机相连,也可以单片机互联或者多个单片机相互通信组网等,在实际的工程应用中非常广泛。从学习的角度来说,熟练的利用串口将单片机系统中的相关信息显示在计算机上可以很直观方便的进行调试和开发。
-
单片机与DSP中的DSP控制的电力线通信模拟前端接口设计
2020-11-18 22:06:29如何利用电力网的资源潜力,在不影响传输电能的前提下,将电力输送网和通信网合二为一,使之成为继电信、电话、无线通信、卫星通信之后的又一通信网,是多年来国内外科技人员技术攻关的一个热点。电力线载波通信就是... -
51单片机串口通信
2020-01-13 10:28:25这节我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能...这节我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。
一、原理简介
51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。
与之前一样,首先我们来了解单片机串口相关的寄存器。
SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。
串行口控制寄存器SCON(见表1) 。
表1 SCON寄存器表中各位(从左至右为从高位到低位)含义如下。
SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。
表2 串行口工作方式控制位其中,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 单片机串口通信的原理与应用流程,利用串口通信,单片机可以与计算机相连,也可以单片机互联或者多个单片机相互通信组网等,在实际的工程应用中非常广泛。从学习的角度来说,熟练的利用串口将单片机系统中的相关信息显示在计算机上可以很直观方便的进行调试和开发。
-
单片机与DSP中的跟我学51单片机(三):单片机串口通信实例
2020-10-23 06:27:02通过该讲,读者可以掌握单片机上串口的工作原理和如何通过程序来对串口进行设置,并根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能... -
通信与网络中的PC机与单片机串行通信设计方案
2020-10-20 14:43:23单片微型计算机简称单片机,它是...因此如何实现PC机与单片机之间的通信具有非常重要的现实意义。针对一些远距离控制或者是危险性比较高的数据采集和控制的应用情况,本文主要介绍一种用双工方式实现PC机与单片机之间的 -
单片机串口通信实例
2016-06-24 23:53:27通过该讲,读者可以掌握单片机上串口的工作原理和如何通过程序来对串口进行设置,并根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,... -
单片机与DSP中的51单片机串口通信原理与应用
2020-10-16 08:35:03这节我们主要讲单片机上串口的工作原理和如何通过程序来对串口进行设置,以及根据所给出的实例实现与PC 机通信。 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能... -
串口转以太网如何进行通信
2020-11-25 17:11:01串口转以太网模块是嵌入式设备、单片机和物联网采集系统基于TCP/IP协议接入网络的一...串口服务器提供串口转网络功能,可以将RS232/485/422串口转换成TCP/IP网络接口,实现RS232/485/422串口与TCP/IP网络接口之间的双向 -
通信与网络中的CAN-RS232通信转换模块的设计与实现
2020-12-09 01:32:21因此,如何以最简单的方式实现CAN节点与RS232串行口的通信就成为工程实践中一个不可回避的问题。 本文采用典型的不具备CAN通信能力的AT89C51单片机作为微处理器,设计了一个简单、实用的通信转换模块。该通信转换... -
iic jy901 单片机_JY-901的IIC通信协议,时钟无法读取数据
2020-12-19 12:31:02本人做毕业设计时,用到了JY-901这个模块用来测量姿态信息,参照IIC写了IIC...使用use Simulator,或者ST-LINK哪个才能实现在线的硬件仿真,如何才能看到读取的IIC数据呢?STM32F103的IIC接口电路IIC连接.jpg (19.1... -
单片机与DSP中的DSP与PC机串行通信在减摇水舱试验台架控制系统中的应用
2020-11-05 11:25:17摘 要:针对TI公司的TMS320LF2407,在详细描述其串行通信接口和模块的基础上,结合减摇水舱试验台架控制系统,... 在减摇水舱试验台架控制系统工作过程中,需要实时修改DSP中控制器参数等变量,因此如何实现PC机与DSP -
mcgs通过串口与单片机通信_像风一样自由———MCGS自由口通讯(通讯驱动文件下载)...
2020-12-04 20:54:31可能会碰到一些行业专用仪器仪表,并不支持常用规范接口,没有现成的通讯驱动,这时就需要使用PLC或者其他网关的自由口通讯功能,今天也给大家介绍下McgsPro软件下,自由口通讯如何快捷地实现,上次因为大概讲过使用... -
单片机与DSP中的基于单片机的嵌入式系统网络设计方案
2020-10-20 20:59:55如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载TCP/IP协议连接到互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,... -
单片机与DSP中的基于单片机的嵌入式系统网络接入方案
2020-12-08 19:42:33如何利用廉价的51单片机来控制网卡芯片进行数据传输,加载TCP/IP协议连接到互联网,实现网络通信成了众多设计者的目标。但由于指令及资源的限制,实施过程会有许多困难。我们在设计方案中舍弃了耗费资源的高级协议,... -
串行接口
2019-07-27 10:50:37只需要一对传输线就可以实现双向通信,并可以利用电话线(大大降低了成本,特别适用于远距离通信,但传送速度较慢)。 特点 1.数据一位一位地顺序传送 2.通信线路简单 3.支持远距离通信(从几米到几千米),但传送... -
单片机与DSP中的用51内核网络单片机构成的远程监控系统
2020-12-13 16:30:49引 言 在工业控制、信息家电等应用领域,存在大量的嵌入式设备,而这些设备很多只有串口、CAN总线等简单的网络接口,通信能力有限,有的甚至处于孤立运行状态。如何让这些以单片机为核心的嵌入式系统接入以太网,并... -
新概念51单片机C语言教程 PDF电子书
2018-05-05 08:01:19第18章 VC、VB(MSCOMM控件)与单片机通信实现温度显示 18.1 VC MSCOMM控件与单片机通信实现温度显示 18.2 VB MSCOMM控件与单片机通信实现温度显示 第5篇 拓展篇 第19章 使用Protell 99绘制电路图全过程 19.1 绘制... -
单片机应用技术选编(3).(北航出版.何立民)
2016-06-08 23:41:581.18 8259A可编程中断控制器与8031单片机接口电路及编程 1.19 NSC810及其在各种微处理机中的应用 1.20 MC146818在使用中的几个问题 1.21 交流伺服系统中采用8155兼作双口信箱存储器的双微机结构 1.22 实用汉字库芯片... -
单片机应用技术选编(10).(北航出版.何立民)
2016-06-09 11:38:579.5 用CPLD实现单片机与ISA总线接口的并行通信(674) 9.6 FPGA实现PCI总线接口技术(679) 9.7 用FPGS实现DES算法的密钥简化算法(685) 9.8 可编程模拟器件原理与开发(690) 9.9 数字/模拟ISP技术及其EDA工具(695) 9.10 ... -
单片机期末考试题目及答案详解
2009-06-23 10:30:30下列功能中不是由I/O接口实现的是 A.数据缓冲和锁存 B.数据暂存 C.速度协调 D.数据转换 18.为给扫描法工作的键盘提供接口电路,在接口电路中需要 A.一个输入口 B.一个输出口 C.一个输入口和一个输出口 D... -
单片机应用技术选编(7).(北航出版.何立民)
2016-06-09 10:51:327.6 逻辑加密IC卡与单片机接口软硬件设计 7.7 MCU电话语音报警器设计 7.8 智能一氧化碳报警器原理与设计 7.9 单片机ST6265在远程抄表系统中的应用 7.10 一种用电力网连接的子母钟 ...
-
[临时日记]关于我最近在做3D打印机的这档子事
-
浙大版《数据结构(第2版)》题目集习题3.8 符号配对 (20分) 易理解版。
-
Kotlin协程极简入门与解密
-
2021-01-19
-
(新)备战2021软考网络工程师历年真题培训套餐
-
数量遗传与动植物分子育种:理论、技术和平台-报告19徐云碧.pdf
-
ununtu安装教程.pdf
-
(无序数组使用二分)162. 寻找峰值
-
T+V15专属云库存核算数据流
-
【数据分析-随到随学】Hadoop数据分析
-
2021-01-19
-
基于STM32F03ZET6移植RT-Thread
-
php使用Qrcode生成二维码
-
DedeCms标签生成器(2.6).exe
-
(新)备战2021软考信息安全工程师通关套餐
-
蓝桥杯 入门训练 BEGIN-4 Fibonacci数列
-
【数据分析-随到随学】Mysql数据库
-
PHP笔记
-
US Domain Center建站神器 7: 更改页脚
-
2021-01-19