单片机与PC机串行通信中波特率的确定
- 格式:doc
- 大小:5.80 KB
- 文档页数:2
PC机与单片机间串行通信优化控制方法现如今,随着信息与通信技术的飞速发展,计算机已经成为人们日常生活和工作中不可或缺的工具之一。
而在计算机的应用中,PC机与单片机之间的串行通信显得尤为重要。
本文将探讨PC机与单片机之间串行通信的优化控制方法,旨在提高通信的效率与稳定性。
一、概述串行通信是指数据在两个设备之间的传输通过一个信道以位的形式进行,其中最常见的串行通信协议是UART (Universal Asynchronous Receiver Transmitter)。
在PC机与单片机之间的串行通信中,UART协议常用于数据的发送与接收。
本文将针对UART协议展开优化控制方法的讨论。
二、波特率设置波特率是指在串行通信中每秒钟传送的比特数,波特率的设置直接影响着通信的速度。
为了提高通信的效率,PC机与单片机之间的波特率设置应合理选择。
通常情况下,波特率越高,传输速度越快,但也存在着传输错误率高的问题。
因此,在实际应用中人们需要在速度和准确性之间做出权衡。
可以通过对比不同波特率下的传输速度和错误率,选择一个合适的波特率。
三、帧结构优化帧结构是指在串行通信中,数据传输的最小单元。
为了保证数据的可靠传输和正确解析,帧结构的优化非常重要。
在PC机与单片机的串行通信中,帧结构主要包括起始位、数据位、校验位和停止位。
可以采用以下方式对帧结构进行优化:1. 起始位:通过设置适当的起始位,可以使接收端正确接收到数据的开始位置。
2. 数据位:根据实际通信数据的位数,选择合适数目的数据位。
不要超过通信协议规定的最大位数,也不要过少。
3. 校验位:校验位的设置有助于检验数据传输的准确性。
常见的校验方式包括奇偶校验、奇校验和偶校验等。
可以根据实际需求选择合适的校验位。
4. 停止位:停止位的设置用于标识数据传输的结束位置。
在确定起始位和数据位之后,需要明确停止位的个数。
通过对帧结构的优化设置,可以提高串行通信的可靠性和稳定性。
简述单片机串行通信的波特率摘要:一、单片机串行通信的基本概念二、波特率的定义及意义三、波特率的计算方法四、波特率与通信距离、数据速率的关系五、如何选择合适的波特率六、结论正文:一、单片机串行通信的基本概念单片机串行通信是指单片机通过串行接口与其他设备进行数据传输的过程。
在这个过程中,数据是一位一位地按照一定的时间间隔依次传输,从而实现数据的远程传输和控制。
串行通信在电子设备、计算机网络等领域有着广泛的应用。
二、波特率的定义及意义波特率(Baud Rate)是衡量串行通信数据传输速率的重要指标,它表示每秒钟传输的比特数。
波特率越高,数据传输速率越快。
在实际应用中,波特率决定了通信的稳定性和可靠性,因此选择合适的波特率至关重要。
三、波特率的计算方法波特率的计算公式为:波特率= 数据速率/ 传输位数。
其中,数据速率指的是单位时间内传输的比特数,传输位数指的是每个数据帧中数据的位数。
四、波特率与通信距离、数据速率的关系波特率与通信距离和数据速率之间存在一定的关系。
通信距离较远时,信号衰减较大,可能导致数据传输错误,此时应降低波特率以提高通信的可靠性。
而数据速率较高时,传输时间较短,可以适当提高波特率以提高传输效率。
五、如何选择合适的波特率选择波特率时,应综合考虑通信距离、数据速率、传输可靠性等因素。
在保证通信可靠性的前提下,尽量选择较高的波特率以提高传输效率。
此外,还需注意波特率与通信协议的兼容性,确保不同设备之间的顺畅通信。
六、结论单片机串行通信的波特率是衡量数据传输速率的重要指标,选择合适的波特率对保证通信的稳定性和可靠性具有重要意义。
串行通信中波特率的设置问题
波特率设置:
1.什么是波特率
波特率是指串行数据通信过程中,数据比特传输速率,是指每秒钟传输比特(bit/s)的数量。
2.波特率的设置
要设置波特率,首先要确定所选择的硬件设备类型,例如RS232通信接口的写入器,然后依据设备的硬件说明书。
选择合适的波特率,比如110,300,600,1200,2400,4800,9600,14400,19200,38400,57600,115200等等。
3.波特率的选择
要尽可能选择一个稳定的波特率,因为此参数改变后,会影响到数据传输的速率和数据传输的稳定性。
如果采用太高的波特率,可能会影响到电路工作,破坏器件寿命和通信质量;而如果太低,也可能出现数据传输速度降低、画面卡死或断流等隐患。
4.波特率的变换
波特率变换是指计算机内部对传输速率的改变,相当于计算机内部“调速”,这是实现高速数据传输的一种技术。
可以在一定程度上提高传输速度,并改变可能存在的故障。
5.设置波特率的注意事项
(1)调试设置时应检查设备、缆纤是否连接稳定,有无拔插等不正常情况;
(2)对单端口设备,应检查设备的波特率是否一致,有无偏差;
(3)对于多端口设备,应注意各个端口之间是否可以彼此通信,没有三方口,即通信机设置是否正确;
(4)应注意检查设备是否工作正常,有无额外的信号输入,且设备及接口是否
正常工作;
(5)对于需要调节的波特率,设置时应采用相关的软件或数据库生成指令,而不是手工设置。
波特率的设置一般不会涉及太复杂的问题,但应根据实际使用的设备的特点综合考虑,调节合适的值来设置,以保证设备的正常使用。
一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。
由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。
串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。
MSC-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。
则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。
列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
2、通信协议的使用通信协议是通信设备在通信前的约定。
单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。
假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。
单片机与PC机通信实验实验报告一、实验目的进一步学习使用Keil C51集成环境和硬件实验箱。
(1)学习UART的初始化和波特率设置;(2)学习接收程序的设计;(3)学习发送程序的设计。
二、实验环境准备1.、本计算机系统已经安装Keil C51 开发环境。
2、以“MCU+各自的学号”为文件夹名建立自己的单片机实验目录。
再在该文件夹下建立实验目录“EX??”,“??”为实验序号。
三、要求完成的实验内容1、定时器0,设置为2ms定时中断;定时器1,设置为波特率发生器,定时方式,允许不中断;使用11.0592MHz晶振,请计算2400波特率的时间常数,_____0CH______,T1的计数初值__ F4H____。
TMOD______22H______ SMOD=02、UART设置为中断允许,8为数据,一个起始位置,一个停止位,即M0 M1=01H ,M2=1,REN = 1 , SCON _______77H___________;PCON中的SMOD=03、在当前实验文件夹中,建立ExPrj07.uv2,将上一次实验的源文件Ex06.c,复制到当前文件夹,改名为“EX07.C”,存放在实验文件夹中。
将EXP07.C添加到工程中。
4、如果8051MCU与PC通信,则将51的TXD=>PC的RXD,51的RXD<= PC的TXD。
请理解和掌握8051的P3.0输出的电平是经过哪些芯片转换至RS232电平的?由于本实验仿真系统占用了PC机仅有的一个串口,所以,无法进行MCU与PC间的通信,本实验需将实验箱上8051连接的RS232端口的2、3脚短接,进行8051自发自收的串行通信实验。
5、在主程序中初始化定时器0、SCON、PCON、IE、IP,请参考以往实验;6、串行中断服务程序具体见下面的程序。
单片机与PC机串行通信中波特率的确定
唐德礼
【期刊名称】《现代电子技术》
【年(卷),期】2004(027)014
【摘要】详细论述了单片机与PC机串行通信中波特率的确定原则和方法,特别给出了PC机与单片机串行通信中非标准波特率的计算方法及不同环境下实现的实例.【总页数】2页(P91-92)
【作者】唐德礼
【作者单位】十堰职业技术学院电子工程系,湖北十堰,442000
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.LED汉字显示系统中PC机与单片机串行通信的设计 [J], 郭柯娓
2.绝缘材料电气强度测试系统中的PC机与单片机串行通信 [J], 陈铭
3.集散控制系统中实现PC机与单片机的串行通信 [J], 陈启友
4.PC机与MCS-51单片机的串行通信在数据采集系统中应用 [J], 向科;马琳达;文方
5.用Delphi实现大气电场仪系统中PC机与MSP430单片机的串行通信 [J], 程丽丹;肖稳安;行鸿彦;周欣;唐海
因版权原因,仅展示原文概要,查看原文内容请购买。
单片机串行口几种工作方式的波特率单片机串行口是单片机与外部设备进行通信的重要接口之一。
在串行口通信中,波特率是一个关键参数。
波特率是指每秒钟传送的波特数量,用于衡量数据的传输速率。
单片机串行口的波特率通常选择常见的标准波特率,例如9600、19200、38400等。
单片机串行口的工作方式有多种,下面将详细介绍几种不同的工作方式下的波特率设置。
1. 同步串行口同步串行口是指在传输数据时,发送端和接收端通过一个时钟信号来同步数据的传输。
在同步串行口中,波特率的设置是固定的,因为发送端和接收端需要以相同的波特率来同步数据传输。
常见的同步串行口波特率包括115200、230400等。
2. 异步串行口异步串行口是指在传输数据时,发送端和接收端通过起始位、停止位来进行数据的同步。
在异步串行口中,波特率的设置是非常重要的,因为发送端和接收端需要以相同的波特率来正确解析数据。
常见的异步串行口波特率包括9600、19200、38400等。
3. 高速串行口随着单片机技术的进步和应用的广泛,对串行口的传输速率要求也越来越高。
高速串行口通常指的是波特率在1Mbps及以上的串行口。
高速串行口通常应用于需要大量数据传输的场景,例如高速数据采集、图像传输等。
4. 自适应波特率有些情况下,单片机需要与多种速率不同的设备通信,这就需要单片机具备自适应波特率的能力。
自适应波特率指的是单片机可以根据外部设备的对应波特率来自动调整自身的波特率。
这种方式可以极大地提高单片机的通信灵活性和适用性。
在实际应用中,程序员需要根据具体的通信需求选择合适的波特率,并在程序中进行相应的设置和配置。
还需要注意波特率的选取要与外部设备相匹配,以确保数据的正确传输和解析。
通过上述对单片机串行口几种工作方式的波特率的介绍,我们可以更好地理解单片机串行口通信中波特率的重要性以及不同工作方式下的波特率设置方法。
在实际应用中,合理选择和设置波特率将有利于提高通信的可靠性和稳定性。
简述单片机串行口传输的波特率设置的方法。
单片机串行口传输是很常见的一种通信方式,它可以用来和其他外设进行数据的交换。
这篇文章将会简述单片机串行口传输的波特率设置方法,以帮助初学者快速掌握这一基础知识。
一、什么是串行口传输串行口传输是指通过一个或多个数据线,按照一定的数据传输标准(例如UART)来传输数据的方式。
与之相对的是并行传输,它需要多个数据线同时传输数据。
串口通信的优势在于它所需的连线数量少,传输距离较长,无需定时同步机制,易于控制等。
二、什么是波特率波特率是串行通信的合流速率(Baud rate),它指的是每秒钟传输到接收端的比特位数。
如果以 9600bps 的波特率传输,每秒钟就会传送9600 比特。
波特率越高,则数据传输速率越快,但是误码率也会相应地增加,传输的距离也会受限制。
因此,在设置波特率的时候需要根据实际情况做出合理选择。
三、波特率的设置方法单片机串口通信时,需要设置合适的波特率以保证正确的数据传输。
下面是串行口传输的波特率设置方法。
3.1 计算波特率波特率可以通过计算得出,通过以下公式可以计算出波特率:波特率 = 系统时钟频率(CPU_Frequency)/ (16 * 波特率预分频值* (波特率分频值 + 1))其中,波特率预分频值和波特率分频值是用来调节波特率的两个寄存器。
3.2 设置波特率的寄存器不同型号的单片机,设置波特率的方法可能有所差异。
下面以ATmega8为例,介绍如何设置波特率。
ATmega8的波特率控制寄存器是UBRRH和UBRRL,这两个寄存器共16位。
如果使用一个8位寄存器来控制波特率,最大的波特率只能到达255(因为8位的寄存器最大只能存储255),这将非常不方便。
因此,ATmega8使用了两个8位的寄存器,可以设置的最大波特率可达到65535。
对于ATmega8来说,先用公式计算出UBRRH和UBRRL需要的值,然后把这两个寄存器分别设置为对应的值就可以了。
51单片机与PC串口间通讯设计与分析一、串口通讯原理串口通讯是指通过串口来进行数据的收发传输的一种通讯方式。
串口通讯分为同步串行通讯和异步串行通讯两种方式,而51单片机与PC之间的串口通讯采用的是异步串行通讯方式。
异步串行通信是指每个数据字节之间可以有可变长度的停止位和起始位。
串口通讯一般由以下几个部分组成:1.传输数据线:用于传输数据的信号线,包括发送数据线(TXD)和接收数据线(RXD)。
2.时钟线:用于提供通讯双方的时钟信号。
3.控制线:用于控制串口通讯的流程,包括数据准备好(DSR)、数据就绪(DTR)等。
二、串口通讯协议串口通讯协议是约定通讯双方数据传输的格式和规则,常见的串口通讯协议有RS-232、RS-485等。
在51单片机与PC之间的串口通讯中,一般使用的是RS-232协议。
RS-232协议规定了数据的起始位、数据位数、校验位和停止位等。
起始位用于标识数据的传输开始,通常为一个逻辑低电平;数据位数指定了每个数据字节的位数,常见的值有5位、6位、7位和8位等;校验位用于校验数据的正确性,一般有无校验、奇校验和偶校验等选项;停止位用于表示数据的传输结束,通常为一个逻辑高电平。
三、51单片机串口的程序设计#include <reg52.h>#define UART_BAUDRATE 9600 // 波特率设置#define UART_DIV 256- UART_BAUDRATE/300void UART_Init( //串口初始化TMOD=0x20;SCON=0x50;PCON=0x00;TH1=UART_DIV;TL1=UART_DIV;TR1=1;EA=1;ES=1;void UART_SendByte(unsigned char ch) //串口发送字节TI=0;SBUF = ch;while(TI == 0);TI=0;void UART_Interrupt( interrupt 4 //串口中断处理if(RI)unsigned char ch;ch = SBUF;RI=0;//处理接收到的数据}if(TI)TI=0;//发送下一个字节}void mainUART_Init(;while(1)//主循环}在上述程序中,首先通过UART_Init(函数进行串口初始化,其中设置了波特率为9600;然后使用UART_SendByte(函数发送数据,调用该函数时会把数据放入SBUF寄存器,并等待TI标志位变为1;最后,在UART_Interrupt(函数中,使用RI标志位判断是否收到数据,然后对数据进行处理,TI标志位判断是否发送完当前字节。
单片机与PLC之间的串行通信实现单片机和PLC是现代工业生产、家用电器等广泛使用的两种技术,通过它们之间的串行通信,可以形成一种小型的控制系统,并发挥一定的数据传输能力,从而在各种各样的机械设备控制技术起到了作用,PLC与单片机串行通信是两者结合的关键。
标签:单片机;PLC;串行通信单片机和PLC是现代社会工业生产、家用电器等各方面广泛应用的两种技术,通过两者的串行通信,能够组建一个小型控制系统,并发挥一定的数据传输能力,从而在多种机械设备的控制技术中发挥作用,PLC与单片机的串行通信是两者结合使用的关键。
1单片机与PLC单片机是借助于超大规模的集成电路技术,组建一个微型计算机控制系统以整合各种有数据处理功能的机械设备,这些设备包括中央处理器、I/O接口、数据存储器、中断系统以及定时器等。
PLC是可编程逻辑控制器,是一种有编程功能、内部有存储程序的存储器,可通过数字模式、模拟式等对用户发出的运算、控制、保存、定时等指令进行输入或输出,从而对机械设备或工业生产进行控制。
2 PLC和单片机之间串行通信設置的相关细节分析2.1 PLC单片机之间数据发送的相关初始分析在初始设置中,单片机的波特率是必须和PLC保持高度一致的。
在高速波特率的选择上,我们可以根据公式:SPBRG=F/(16×波特率)-1来计算。
在这个公式中F所代表的量是单片机时钟的频率大小,在整个公式的取值中,要求SPBRG值为整数值。
所以,单片机波特率和PLC之间是必然存在着误差的。
而且根据整个工作流程来看,数据的发送方和接收方在频率上都存在着比较细微的差异,但是这种差异是非常细微的,在整个的分析过程中,并不会因为这种细小的误差而产生收发错位的现象。
但是需要我们特别注意的是,单片机在发送数据初始设置时,其数据位、校验位、停止位要和PLC保持较为高度的一致,以避免大的误差的出现。
2.2 PLC接受数据相关功能的设置在一般情况下,PLC接受数据往往有着比较高的要求,如果选择了自由端口的模式,那么必须要求在CPU和RUN模式的运行下才能这样选择。
第16卷第2期河南教育学院学报(自然科学版)Vol .16No .22007年6月Journa l of Henan Institute of Educa tion (Natura l Sc i ence)Jun .2007收稿日期:2006-12-22基金项目河南省科技攻关项目(536)作者简介朱涛(6—),男,河南周口人,周口师范学院物理系教师单片机串行通信中的几个问题讨论朱 涛1,李铁盘2(1.周口师范学院物理系,河南周口466001;2.河南教育学院信息技术系,河南郑州450014) 摘要:从两个方面说明了如何判断硬件、软件存在的问题,分析了调准双机波特率的方法,特别讨论了在晶振不准的情况下处理双机波特率的技巧.关键词:串行接口;定时器;R S -232C 接口;波特率;晶振中图分类号:TP368.1 文献标识码:B 文章编号:1007-0834(2007)02-0048-03 通常,串行通信至少涉及两台机器,在两台机器的硬件及软件中,任何一个环节出问题,都会使通信失败.由于这种通信涉及的部分和环节多,就需要一些简单易行的方法来准确地判断故障和排除故障,保证通信的正常进行.为此,通过理论分析和实验研究,我们总结出了一些处理故障方法,下边主要以MCS -51系列单片机为例讨论.1 用自发自收来判断硬件及软件问题这种方法主要是检查一台单机的硬件及软件是否工作良好.由于MCS -51单片机的串行接口是一个全双工的通信口,串行口缓冲寄存器S BUF 对应两个寄存器,一个是发送寄存器,一个是接收寄收器,这就给我们做自发自收实验提供了良好的基础.1.1 软件设计在串行通信格式的选取上[1],我们采用8位数据通信,波特率为1200,并设晶振f o cs =6MHz .为了实现这种通信,我们把串行口置为模式1,采用定时器1工作于模式2作波特率发生器,经过计算,在S MOD =0的情况下,应有[T H1]=F3H,根据以上情况,可以作出自发自收通信流程图,如图1所示:1.2 硬件讨论若采用RS -232C 标准进行串行通信,则一台机器的硬件电路如图2所示,单片机需要配上电平变换器件,把TTL 电平变成R S -232C 电平,最常用的器件是1488和1489.图1 自发自收通信流程图 在实际应用中,为了完成自发自收,短路点可以选择两个地方.8:0244400:199.4图2 硬件电路图①选择P3.1及P3.0短路,这样可以检查8051串行口是否正常工作,当然可以同时检查软件存在的问题.②选择Tx D及R x D短路,这样可以检查1488和1489电路是否正常.1.3 测试步骤在具体测试中,可以用PC机、仿真器和单片机联合测试.利用仿真器的调试程序,采用断点运动方式,借助于PC机屏幕显示调试结果.第一步,把断点设在清除TI标志处,运行程序,正常情况下,程序可以运行到断点,且TI=1,如若不能运行到此,则应检查前边的程序及8051的串行口.第二步,若第一步运行顺利,则让程序继续运行到清除R I处,这时若运行顺利,且R I=1,说明接收正常,否则应检查1488、1489和串行口接收部分.2 调准通信双方波特率一般地说,若单片机能顺利地完成自发自收,则双机适当连接后,即可进行串行通信,但会出现二机波特率有差值,接收数据与发送数据有误差情况,这时就需要调整波特率,使得二波特率差值小于某一范围,从而实现数据的完整传送,下面说明这一方法.首先要正确选择波特率及定时器1的计数初值.确定波特率方法很多,这里主要说明,只有正确选择波特率,才能使收、发双方都能正确产生出来,并加以利用.我们用PC机和单片机作串行通信,PC 机的波特率计算公式为[2]:B=1.8432M16×因子(1)其中因子即为波特率因子.对于单片机,仍采用让串行口工作于模式1,让定时器1工作于模式2作波特率发生器,波特率计算公式为:B=SMOD3×计数速率56[T]取S MOD=0,并由于计数速率为fO S C/12,且令X=256-[TH],代入上式可得 B=fOSC32×12×X(2)令(1)、(2)两式右边相等,得 1.8432M16×因子=f OSC32×12×X因此得 因子=44.2MfOSCX令比例因子为K,则 K=因子X=44.2MfOSC即因子=KX实际上二机通信时,由于二波特率允许有一定误差(±5%),所以K也允许有±5%偏差.例如,取f oc s=6M,则 K=44.2MfO SC≈7.4加上±5%偏差,K的范围是7~7.7.若采用1200波特率通信,由PC机波特率因子公式,可得 因子=60H=96则单片机初值 X=因子K=13考虑到允许偏差,其范围为12.4~13.7.若采用2400波特率,因子=30H=48,初始值 X=因子K=6.2考虑到允许偏差,其范围为5.9~6.5.对于1200波特率,初始值只有13可用.对于2400波特率,只有6可用,处在边缘,通信中容易出错.为了解决这一类边缘问题,下边我们这样来选择波特率,就不容易出错.因为因子=KX=7.4X,取初值X=10,则因子为74,可求得波特率为1556,这样就不会出现边缘问题.当然,为了加大波特率,初值可加大.3 当单片机晶振频率不准时,波特率的调整在实际工作中,会因为晶振频率不准,计算不准或其他原因,造成两通信机波特率不准,我们可以采用下述方法来修正波特率.把单片机中的S M2置为0,这是为了不丢失数据帧.按照计算的波特率让PC机与单片机通信,机发送一个数据,单片机接收,从二数据的差别判断晶振的误差在实验中,让222-H1PC.PC94机和单片机都设成10位数据帧格式,即1位起始位,8位数据位,1位停止位,然后让PC 机发送一个常数55H ,如果在单片机中收到了一个D5H,二者数据格式如图3所示,其中(a )图是PC 机发送数据格式,(b )图是单片机接收数据格式.可以看出,从D7位后,接收出现问题,实际上,接收到的D7位是在D6位采样结果,由于正常采样应在发送来的数据D7图3 数据格式位中间,而实际采样可以认为是发送来数据D6位右边缘,故单片机采样周期T 比PC 机数据周期T 小,二者关系为:8T 0=8.5T 或1/8f 0=1/8.5f即单片机晶振频率是标称值8.5/8倍,故再计算波特率时,只需要用修正过的晶振频率即可.例如标称频率6MHz,计算中应取6.375MHz .参考文献[1] 李华.单片机实用接口技术[M ].北京:北京航空航天大学出版社,1993:34-35.[2] 杨素行.微型计算机系统原理及应用[M ].北京:清华大学出版社,1998:289-290.D iscussi on about Severa l Pr oblem s i n Ser i a l Comm un i ca ti on of Si n gleC h i p M i cr oco m pu terZ HU Tao a,L I Tiepanb(a.D epa rt m ent of Phy sics,Zhouk ou N or m a l U niv ersity ,Z houkou 466001,China;b .D epa rt ment of Infor m a tion Technology,H ena n Institute of Educa ti on,Z hengzho u 450014,China )Abstrac t:Fr om t wo aspec ts,illustrates how t o deter m ine the p r oble m s in s oft wa r e or har dware,analyse s the m ethod of adjusting B aud rate in double m icr ocomputers,and especially discusse s the technique of dealing with Baud r a te in double m icr ocomputers when the cr ystal vibrati on is not accurate .Key wor ds:serial interf ace;ti m er;R S -232C interface;B aud rate;crystal vibr ation50。
51单片机串口通信及波特率设置MCS-51单片机具有一个全双工的串行通信接口,能同时进行发送和接收。
它可以作为UART(通用异步接收和发送器)使用,也可以作为同步的移位寄存器使用。
1. 数据缓冲寄存器SBUFSBUF是可以直接寻址的专用寄存器。
物理上,它对应着两个寄存器,即一个发送寄存器一个接收寄存器,CPU写SBUF就是修改发送寄存器;读SBUF就是读接收寄存器。
接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时的响应接收器的中断,没有把上一帧的数据读走而产生两帧数据重叠的问题。
对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生重叠问题。
2. 状态控制寄存器SCONSCON是一个逐位定义的8位寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态,SCON即可以字节寻址也可以位寻址,字节地址98H,地址位为98H~9FH。
它的各个位定义如下:MSB LSBSM0 SM1 SM2 REN TB8 RB8 TI RI SM0和SM1是串口的工作方式选择位,2个选择位对应4种工作方式,如下表,其中Fosc是振荡器的频率。
SM0 SM1 工作方式功能波特率0 0 0 8位同步移位寄存器Fosc/120 1 1 10位UART 可变1 02 11位UART Fosc/64或Fosc/321 1 3 11位UART 可变SM2在工作方式2和3中是多机通信的使能位。
在工作方式0中,SM2必须为0。
在工作方式1中,若SM2=1且没有接收到有效的停止位,则接收中断标志位RI不会被激活。
在工作方式2和3中若SM2=1且接收到的第9位数据(RB8)为0,则接收中断标志RB8不会被激活,若接收到的第9位数据(RB8)为1,则RI置位。
此功能可用于多处理机通信。
REN为允许串行接收位,由软件置位或清除。
置位时允许串行接收,清除时禁止串行接收。
TB8是工作方式2和3要发送的第9位数据。
实验单片机与PC机串口通信(C51编程)实验要求:1、掌握串行口的控制与状态寄存器SCON2、掌握特殊功能寄存器PCON3、掌握串行口的工作方式及其设置4、掌握串行口的波特率(bond rate)选择任务:1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。
要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。
采用软件仿真的方式完成,用串口调试助手和KEIL C,或串口调试助手和PROTEUS分别仿真。
需要用到以下软件:KEIL,VSPD XP5(virtual serial ports driver xp5.1虚拟串口软件),串口调试助手,Proteus。
(1)虚拟串口软件、串口调试助手和KEIL C的联调首先在KEIL里编译写好的程序。
打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。
在其网站上可以下载,但使用期为2周)。
左边栏最上面的是电脑自带的物理串口。
点右边的add pair,可以添加成对的串口。
一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。
接下来的一步很关键。
把KEIL和虚拟出来的串口绑定。
现在把COM3和KEIL绑定。
在KEIL 中进入DEBUG模式。
在最下面的COMMAND命令行,输入(以上参数设置注意要和所编程序中设置一致!)打开串口调试助手可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。
打开COM4。
现在就可以开始调试串口发送接收程序了。
可以通过KEIL发送数据,在串口调试助手中就可以显示出来。
也可以通过串口调试助手发送数据,在KEIL中接收。
实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。
51单片机与PC机通信随着嵌入式系统和物联网技术的发展,51单片机在许多应用中扮演着重要的角色。
这些单片机具有低功耗、高性能和易于编程等优点,使其在各种嵌入式设备中得到广泛应用。
在这些应用中,与PC机的通信是一个关键的需求。
本文将探讨51单片机与PC机通信的方法和协议。
串口通信是51单片机与PC机进行通信的最常用方式之一。
串口通信使用一个或多个串行数据线来传输数据,通常使用RS232或TTL电平标准。
在硬件连接方面,需要将51单片机的串口与PC机的串口进行连接。
通常使用DB9或USB转TTL电路来实现这一连接。
在软件编程方面,需要使用51单片机的UART控制器来进行数据的发送和接收。
具体实现可以使用Keil C51或IAR Embedded Workbench 等集成开发环境进行编程。
USB通信是一种比较新的通信方式,它具有传输速度快、支持热插拔等优点。
在51单片机中,可以使用USB接口芯片来实现与PC机的通信。
在硬件连接方面,需要将51单片机的USB接口芯片与PC机的USB接口进行连接。
通常使用CH340G或FT232等USB转串口芯片来实现这一连接。
在软件编程方面,需要使用51单片机的USB接口芯片来进行数据的发送和接收。
具体实现可以使用相应的USB库来进行编程。
网络通信是一种更加灵活和高效的通信方式。
在51单片机中,可以使用以太网控制器来实现与PC机的网络通信。
在硬件连接方面,需要将51单片机的以太网控制器与PC机的网络接口进行连接。
通常使用ENC28J60等以太网控制器来实现这一连接。
在软件编程方面,需要使用51单片机的以太网控制器来进行数据的发送和接收。
具体实现可以使用相应的网络库来进行编程。
需要注意的是,网络编程涉及到更多的协议和数据格式,需要有一定的网络基础知识。
本文介绍了51单片机与PC机通信的三种常用方式:串口通信、USB 通信和网络通信。
每种方式都有其各自的优缺点和适用场景。
STM32单片机的串口通信波特率计算方法串口通信的波特率计算方法是根据串口通信协议来确定的,对于STM32单片机来说,常用的串口通信协议是RS232和UART。
1.RS232协议:对于STM32单片机的串口通信,可以通过设置UART的波特率寄存器来实现波特率的设置。
STM32单片机的UART波特率寄存器是一个16位的寄存器,可以设置的波特率范围为300bps到3Mbps。
以下是计算方法:波特率=时钟频率/(16×(USARTDIV+1))其中,时钟频率为STM32单片机的时钟频率,USARTDIV为波特率除以时钟频率再减1得到的值。
例如,如果我们需要设置波特率为9600bps,而STM32单片机的时钟频率为72MHz,则计算方法如下:USARTDIV=(72MHz/(16×9600))-1=468.75因为USARTDIV是一个整数,所以需要取整数部分,即USARTDIV=468所以,设置STM32单片机的UART波特率寄存器为468,即可实现波特率为9600bps的串口通信。
2.UART协议:对于STM32单片机的UART通信,同样可以通过设置UART的波特率寄存器来实现波特率的设置。
STM32单片机的UART波特率寄存器计算方法同RS232协议一样。
例如,如果我们需要设置波特率为9600bps,而STM32单片机的时钟频率为72MHz,则计算方法如下:USARTDIV=(72MHz/(16×9600))-1=468.75因为USARTDIV是一个整数,所以需要取整数部分,即USARTDIV=468所以,设置STM32单片机的UART波特率寄存器为468,即可实现波特率为9600bps的串口通信。
需要注意的是,计算的结果应该是整数,如果计算得到的结果是小数,则需要取整数部分。
同时,波特率的准确性也受到系统时钟的精度和误差的影响,因此在实际应用中,可以通过示波器或者其他工具进行波特率的频率测量和校准。
单片机与PC机串行通信中波特率的确定
关键字:单片机 PC机串行通信波特率
1 单片机异步通信口的特点及波特率的选定
MSC51系列单片机有一个全双工的异步通信口,他利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。
异步串行通信发送和接收数据的速率与移位脉冲同步。
一般用51系列的T1定时器作为波特率发生器,T1的溢出率经二分频(或不分频)后又经十六分频作为串行发送或接收的移位脉冲,移位脉冲的速率即波特率。
单片机的异步通信波特率与串行口的工作方式、主振频率Fosc及定时器T1的工作方式有关。
一般通信中使T1工作于方式2(可重装时间常数方式),若Fosc取6 MHz,则波特率的计算公式如下:
其中:SMOD是可编程的(即PCON的第8位),由此公式计算出的波特率是不标准的波特率。
?
2 PC机异步通信口及其波特率的设置
由于UART(通用异步接收/发送器)的产品型号很多,PC机和XT机都采用的是INS8250芯片, AT机采用的是NSI16450芯片,他们二者是兼容的。
因此这里以8250芯片为例来说明PC机异步通信波特率的设定方法。
PC机中有2个异步通信口,一个是COM1,其端口地址范围是3F8H~3 FFH,另一个是COM2,其端口地址是2F8H~2FFH。
其与MODEM配合可以实现远距离通信。
其波特率是标准波特率50~9 600 b/s。
8250内部有10个寄存器端口,其中有一个除数锁存器,可以通过编程除数的大小来确定异步通信的波特率。
8250使用的频率是1843 2 MHz的基准时钟输入信号,所以必须用分频的方法产生所需要的波特率(移位脉冲)。
除数锁存器的值必须在8250初始化时设置,即把通信线路控制器的最高位(DLAB)置1,然后分两次把除数锁存器的高8位和低8位分别写入端口地址3F8H和3F9H(COM1),8250传送或接收串行数据时使用的时钟信号的频率是数据传输波特率的16倍,即波特率=16×除数/1 843 200。
由此公式可以计算出几种标准波特率与除数的对应值如下:对应于波特率为1 200 b/s的除数锁存器的低8位值为60H;对应于波特率为2 400 b/s的除数锁存器低8位的值为30H;对应于波特率为4 800 b/s的除数锁存器低8位的值为18H;对应于波特率为9 600 b/s的除数锁存器低8位的值为0CH。
3 用PC机的汇编语言设计的串行通信程序中波特率的设定
PC机的ROM BIOS串行通信管理程序为14H号中断处理程序,他可支持DTE与DCE间的通信,也能支持两个DTE间用MODEM连接方式的RS232C接口通信。
BIOS串行通信管理程序的功能是:串行口初始化、发送数据字符、接收数据字符和取串行口状态。
他是利用查询方式来实现数据字符的接收和发送,但当查询超时一定时间后就不再继续查询,而认为是线路故障或对方未准备好,并通过返回参数中的超时标志来表示操作失败。
BIOS INT 14H的中断功能调用的入口和出口参数如下:
例如要设计用COM1来发送字符,波特率为1200 b/s,8 个数据位,1个停止位,采用查询方式无效验位,则初始化程序如下:
4 利用Turbo C编写的PC机通信程序中波特率的设定
Turbo C函数库中提供了专门的调用BIOS串行软中断的函数Bioscom(int cmd,char byte,int pure),其中:参数cmd用来设置通信类型,cmd=0,初始化串行口pure;cmd=1,发送一个字符;cmd=2,接收一个字符;cmd=3返回串口当前状态。
参数byte用来确定串行口的异步
通信格式及波特率,其最高3位确定波特率的大小,3位
编码与波特率关系如下:
100对应波特率为 1 200 b/s;101对应波特率为 2 400 b/s;110对应波特率为 4 800 b/s;111对应波特率为9 600 b/s。
假若要把串口设置为2 400 b/s,无奇偶校验位,使用1位停止位和8位数据位,这时对应的b yte值是10100011B=0xa3H。
对串口初始化可写成bioscom(0,0xa3,0)。
当调用函数bioscom(2,0,0)时,其低8位返回的值是串口接收的字符,当调用函数biosc om(1,0,0)时其低8位返回的是发送的字符,当调用函数bioscom(3,0,0)时返回串行口的状态。
5 PC机中非标准波特率的设定
PC机中的标准波特率有时候不能完全兼容单片机的波特率,例如,单片机使用6 MHz的晶振作为主频,用定时器1方式2产生波特率,则用式(1)产生的波特率基本上没有一个是标准的。
当然可以用改变晶振的方法改变波特率,但这不是可行的方法。
因此可以对8250的除数锁存器编程,才能取得与单片机相近似非标准的波特率。
根据分析两者异步通信的波特率误差最大不能超过5%,若超过则就不能实现正常通信。
对于常用的8位、9位和11位一帧的串行传送,其最大的波特率允许误差值分别为6.25%,5.56%和4.5%。
51系列单片机一般情况下都采用6 MHz晶振,当定时器1工作于方式2时,其波特率由其内部定时器TH1决定,计算公式为:
其中:SMOD可取0或1。
根据上式可计算出,当SMOD=0时,对应于波特率为1 953 b/s的TH1的值为248,而与之对应的PC机的除数锁存器的值为59(3BH);当SMOD=1时,对应于波特率为10 417 b/s的TH1为253,而与之对应的PC机除数锁存器的值是11(0BH)。
6结语
在串行异步通信中波特率的确定是一个至关重要的问题,由于单片机的波特率的计算值不符合标准的波特率,因此可以通过改变PC机除数锁存器的除数来与之相适应。