历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2018年08月12日 | 单片机控制串口通信

2018-08-12 来源:eefocus

串口通信的内容比较重要,大家一定要掌握,工业上应用非常多,其中232总线、485总线以及以它们为基础建成的ModBus网络工业通信系统都需要用到串口,下面我来为大家一步步介绍串口通信的相关知识。

一、通信数据的发送方式简介

通信是机器与机器之间数据交换的桥梁,按数据发送方式分为串口通信和并口通信也可以叫串行通信和并行通信。

串行通信:

串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。


注意:
串口用于ASCII码字符的传输,通信使用3根线完成,分别是地线、发送、接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通信的端口,这些参数必须匹配。


并行通信:
并行通信指一组数据的各数据位在多条线上同时被传输的通信方式,并行通信控制简单,传输速度快;
由于传输线较多,长距离传送时成本高且接收方的各位同时接受存在困难。本章节主要讨论串行通信
并行不论述,大家知道概念即可


二、什么是同步通信,什么是异步通信?
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。
为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有位间隔的整数倍的关系,但同一个字符内的各位之间的距离均为"位间隔"的整数倍。

同步也分为外同步和自同步

同步通信指通信时要建立发送方时钟对接受方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为"位间隔"的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。

外同步比较好理解,即在发送端和接收端之间提供单独的时钟线路,接收端按这个频率进行接收采样,原理就是触发器的原理。如下图



自同步比较难理解,它是在传输的信号中嵌入时钟的信息,接收端从接收的信号波形提取时钟信息的一种方法,如果你有学习过收音机的工作原理你就比较容易理解,它提取信息的方式如同调谐回路和本机振荡混频后输出的中频信号。如下图


三、通信工作方式的简要说明
1、单工
单工是指数据传输仅能沿着一个方向,不能实现反向传输。
经典产品:收音机
2、半双工
半双工是指数据传输可以沿两个方向传输,但不能实现同时传输。
经典产品:对讲机
3、全双工
全双工是指数据可以同时进行双向传输。
经典产品:手机


总结:由上面的结论可以得出单片机的串口通信是异步全双工的


四、通信参数说明

波特率:波特率是指每秒传输的符号数。1波特(B)= 1比特(bit)= 1位/秒(1bps)[在此不提供计算公式,因为本人从来都没有用到过这个公式计算]
起始位:起始位必须是持续一个比特时间的逻辑"0"电平,标志传送一个字符的开始。
数据位:数据位为5-8位,它紧跟在起始位之后,是被传送字符的有效数据位。传送时先传送字符的低位,后传送字符的高位。数据位究竟是几位,可由硬件或软件来设定。
奇偶位:奇偶校验位仅占一位,用于进行奇校验或偶校验,也可以不设奇偶位。
停止位:停止位为1位、1.5位或2位,可有软件设定。它一定是逻辑“1”电平,标志着传送一个字符的结束。
空闲位:空闲位表示线路处于空闲状态,此时线路上为逻辑“1”电平。空闲位可以没有,此时异步传送的效率为最高。

单片机串口传输格式



五、单片机通信结构图

两个SBUF,单片机内部自动区分发和收不用管,只要赋值和读值就行。


六、寄存器说明




TMOD前面的单片机定时器控制已经讲过就不讲了,至于为什么要设置定时器,看上面的通信结构图就能看出来
IE中串口用到两个
EA:1打开总中断,0关闭总中断;
ES:1打开串口中断,0关闭串口中断;

REN:接收使能


七、硬件设计与通信检测说明
1>测试串口的外围电路一般采用232电平转换电路,232信号电平与TTL信号电平并不兼容,
232标准电平为(0:+5V~+15V,1:-5V~-15V)TTL标准电平为(0:0.3V~1.0V,1:2.5V~5V)
2>单片机串口通信必须共地
3>与单排机通信时先进行PC串口自检测试,确保硬件没有问题。
4>外部晶振一定要选择好,最好用11.0592MHZ,为什么,看看下面的表中误差就清楚了。


八、软件程序设计

设计程序完成串口自检功能,即串口调试助手发送什么就接收什么。

#include

 

unsigned char a;

unsigned char flag;

 

void main()

{

 TMOD=0x20;   //设置定时器1为方式2

 TH1=0xfd;    //装入初值11.0592MHz,9600

 TL1=0xfa;

 TR1=1;       //启动定时器1

 SM0=0;

 SM1=1;       //设置串口为方式1

 REN=1;       //接受使能

 EA=1;        //打开总中断开关

 ES=1;        //打开串口中断开关

 while(1)

 {

  if(flag==1) //若有数据接收

  {

   ES=0;

   flag=0;

   SBUF=a; //把接收的数据再次赋值到SBUF

   while(!TI);   //等待数据发送结束

   TI=0;

   ES=1;

  }

   

 }

}

 

void serial() interrupt 4

{

 a=SBUF;  //把接收的数据存储到a

 RI=0;

 flag=1;  //标志位

}


推荐阅读

史海拾趣

Able Systems公司的发展小趣事

Able Systems公司成立于1982年,初创时期面临着资金短缺、市场竞争激烈等诸多挑战。然而,公司凭借对微型打印机技术的深刻理解和独特见解,成功开发出了具有竞争力的产品。通过不懈的努力和持续的技术创新,Able Systems逐渐在市场中站稳了脚跟,并赢得了客户的信任。

First Silicon Co., Ltd公司的发展小趣事

随着全球电子市场的不断扩张,First Silicon公司意识到单一市场已无法满足其长远发展需求。于是,公司制定了全球化战略,通过设立海外研发中心、生产基地和销售网络,实现了从研发、生产到销售的全球化布局。这一战略不仅有效降低了公司的运营成本,还极大地提升了其品牌影响力和市场份额。在全球化进程中,First Silicon还积极与当地企业开展合作,共同推动电子技术的进步和应用。

ALLTHREAD公司的发展小趣事

ALLTHREAD深知品牌建设的重要性。他们注重提升品牌形象和知名度,积极参加各类行业展会和论坛,与业界同仁交流学习。同时,他们还建立了完善的客户服务体系,为客户提供及时、专业的技术支持和售后服务。这些举措有效提升了ALLTHREAD的品牌影响力和客户满意度。

DDK公司的发展小趣事

DDK公司自创立之初,便以技术创新为核心竞争力。公司投入大量研发资源,不断探索新的电子技术和材料,力求在激烈的市场竞争中脱颖而出。在经历了数次技术突破后,DDK公司成功研发出了一款高性能、低能耗的芯片产品,这一产品迅速在市场上获得了广泛认可,为DDK公司赢得了良好的口碑和市场份额。

ALCOA公司的发展小趣事

在20世纪的后半叶,ALCOA继续在技术上取得重大突破。例如,在40年代,公司采用N-40(Niagara)50kA中心下料预焙阳极电解槽技术为政府建造了铝冶炼厂。此外,公司还不断扩大海外业务,建立了全球性的生产和销售网络。这种全球布局使得ALCOA能够更好地满足不同地区的市场需求,也增强了公司的竞争力。

品赞(G-Switch)公司的发展小趣事
能够准确区分不同类型的故障,避免误动作。

问答坊 | AI 解惑

FPGA系统设计实战经验分享

这个帖子主要和大家介绍一些我们在FPGA硬件系统设计过程中遇到的问题和解决的方法。也欢迎大家一起参与讨论。主要涉及以下几个方面: 1。芯片的选型 包括FPGA芯片的选型原则,外围芯片,比如存储器,电源,接口芯片等等选择的依据。我们会给大 ...…

查看全部问答>

步进电机及其驱动控制系统

步进电机及其驱动控制系统…

查看全部问答>

大哥大姐帮帮吗?

谁有51单片机汇编编辑器和仿真软件啊 ?…

查看全部问答>

崩溃了,上、下、左、右键的困惑

我的应用EVC开发下,dialog为主窗口,窗口中放了个Listctrl(class CMylistCtrl : public CListCtrl) 我在模拟器下跑的时候,通过PC的键盘中的上、下键可以操作item,我写这个应用的时候都是在模拟器上操作的 我的问题是:怎么把模拟器上实现了 ...…

查看全部问答>

短信猫在低压配电监控应用

短信猫在低压配电监控应用 随着电网改造的逐步深入,电力配网技术的高速发展,科学、经济、有效的控制电网运行,必须逐步实现、提高配网自动化水平。城市配电网自动化系统是电力部门改善供电质量,合理配置供电设备,有效实现电力需求侧管理的重要 ...…

查看全部问答>

求救,我刚拿到MC50 ,如何开发?

刚拿到个MC50,要开发Scanner ,我该如何入手?我是做JAVA的 ,J9安装了,SMDK v1.4 for Java我下载了,但不知道怎么入手 …

查看全部问答>

最新的WinCE SDK的版本是多少?在哪里下载?

最新的WinCE SDK的版本是多少?在哪里下载? 先多谢。 …

查看全部问答>

请教关于CE数据库同步的问题

各位神人好:     我想知道CE 数据库能否自动的将CE数据库中保存的数据插入更新到SQL Server中,并且不影响SQL Server数据库中之前保存的数据。               谢谢啦~我一定给分!…

查看全部问答>

刚开始学51,上传俩个刚做的仿真

看了单片机视频,现在上传自己用proteus做的仿真带程序,一个是流水灯,一个是数码管!希望能给提点意见。…

查看全部问答>