51单片机和PC串口异步通信

发布者:bobojrt最新更新时间:2016-05-20 来源: eefocus关键字:51单片机和  PC串口  异步通信 手机看文章 扫描二维码
随时随地手机看文章
单片机和PC机间的通信有很多方式,下面的程序主要用到的是51单片机的异步串行通信。

  一.51单片机的串行通信管脚 

 P3.1为单片机的TXD管脚(Transfer Data),P3.2为单片机的RXD管脚(Receive Data)。

通过TXD管脚可以将CPU要发送的数据输出,RXD管脚可以将串行数据线传来的数据读入。

 二.51单片机的串行通信控制寄存器SCON,电源控制寄存器PCON

SCON:

51单片机和PC串口异步通信
 

其中,SM0,SM1控制着串行通信的工作方式。

 

SM0 SM1 工作方式 说明 波特率
0 0 0 移位寄存器 fosc/12
0 1 1 10位异步收发器(8位数据) 可变
1 0 2 11位异步收发器(9位数据) fosc/64或fosc/32
1 1 3 11位异步收发器(9位数据) 可变

 

其中工作方式1在使用当中比较多。

SM2为多机通信控制位,SM2=1,允许多机通信,=0不允许,实现点对点通信。这里先不讨论。

TB8用于储存发送数据的第9位。在方式2和方式3中,发送数据除了起始位,数据位,停止位外,还有一位校验位,存储在TB8中。

RB8用于存储接收数据的第9位。接收到传来的代码后,数据位存储在SBUF中,而校验位就存储在RB8中。通过分析,可以判别接受的数据是否正确。

TI为发送中断请求标志。当发送数据缓冲区为空的时候,TI通过硬件置1,通知CPU数据发送完毕,需要有软件清零。

RI为接收中断请求标志。总线上的数据通过RXD引脚串行送入单片机内,通过移位寄存器将串行数据变成并行数据,送入SBUF中。若接收的SBUF已经满,通过硬件置1,通知CPU一帧数据已经接收完毕,可以进行读取。同样需要软件清零。

PCON中只有最高位SMOD与串行通信有关。

SMOD=1,波特率在原来的基础上加倍;

否则,不加倍。

三.波特率的计算

对于方式1和方式3,波特率计算公式为:(2^SMOD/32)*(T1的溢出率);

对于方式2,为fosc*(2^SMOD/64);

对于方式1,由晶振决定,为固定值。

T1也就是定时器1,做波特率发生器时,一般典型用法为工作在方式2,也就是自动装载的8位计数模式。TH,TL各8位,但只有TL部分计数,故最大计数值为255。溢出后,TH中的数自动装载到TL中。

所以,T1溢出率=fosc/{12x(256-TH1)};

所以可以列出右边为我们所要波特率的方程。同时网上也有许多波特率的计算工具,也可以拿来使用。

 

最后总结起来,串行通信大致要有这样几步:

1.确定定时器T1工作方式,也就是编程TMOD寄存器;

2.装载T1的初值,也就是给TH1,TL1赋值;

3.确定串行口工作方式,也就是编程SCON和PCON寄存器;

4.启动T1定时器,也就是令TR1=1;

5.如果使用中断查询的话,编写中断服务函数

 

上面这些大概就是串口通信的基本知识了。有了这些知识,就可以编写程序来实践了。

关键字:51单片机和  PC串口  异步通信 引用地址:51单片机和PC串口异步通信

上一篇:51单片机与PC串口通信程序
下一篇:51单片机和PC串口异步通信续

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

【自学51单片机】4---进制转换、C语言变量种类运算符
不同进制之间转换、C语言变量种类和运算符、keil的Debug用法及应用 和 流水灯的实现 1、二进制、十进制、十六进制转换 1.1 进制介绍 十进制:逢十进位,一个为有十个值:0~~9。 二进制:逢二进位,它的一个位只有两个值:0 和 1,是实现计算机系统的最基本的理论基础,计算机(包括单片机)芯片是基于成万上亿个的开关管组合而成的,他们每一个都只能有开和关两种状态,对应于二进制的 1 和 0 两个值,书写二进制数据时需加前缀 0b,每一位的值只能是 0 或 1。八位二进制称为一个字节。 十六进制:把 4 个二进制位组合为一位来表示,用 0~9 再加上 A~F(或 a~f)表示,逢十六进位,是二进制的一种缩写形式,也是我
[单片机]
【自学<font color='red'>51单片机</font>】4---进制转换、C语言变量种类<font color='red'>和</font>运算符
51单片机入门—中断系统外部中断的基本使用
中断系统的基本概念 五个中断源及其基本结构 51单片机一共有五个中断源 按优先级从上到下 中断系统的结构 中断向量就是中断号,就是下图最左边的标号(在写中断服务函数的时候有用) 中断的处理函数 一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数。 中断服务函数的结构: 中断相关的4个寄存器 写程序的时候会用到 分为两个控制寄存器和两个中断请求标志 一个例题 代码如下: 方式一: #include reg52,h sbit L1=P0^0; sbit L2=P0^7; //中断系统的基本使用 void Delay(unsigned int t)//延时函数 { w
[单片机]
<font color='red'>51单片机</font>入门—中断系统<font color='red'>和</font>外部中断的基本使用
16-基于51单片机的烟雾温湿度检测控制系统仿真
具体实现功能 由STC89C52单片机+LCD1602液晶显示屏+ADC0832模块+蜂鸣器+DHT11温湿度传感器 +烟雾传感器+LED+按键构成。 具体功能: 1、LCD1602液晶第一行显示当前的烟雾值,第二行显示当前的温度和湿度值; 2、可以设置烟雾、温湿度上下限报警值。共4个按键:复位按键、减键、加键、设置键;设定的参数具有掉电保存,保存在STC单片机的内部,上电无需重新设置; 3、当烟雾值高于设定的报警值或温度湿度超出上下限范围,蜂鸣器和指示灯会发出声光报警; 4、当温湿度值低于或高于设定的范围时,相应的指示灯亮,蜂鸣器报警; 5、当同时满足烟雾过高、温度过高、湿度过低三个条件时,控制继电器吸合
[单片机]
16-基于<font color='red'>51单片机</font>的烟雾<font color='red'>和</font>温湿度检测控制系统仿真
51单片机特别功用存放器位界说
接下来的几节,我们会带着人人编写第一个单片机程序。在此之前,我们先来理解一些 51 单片机特有的程序语法以及 Keil 软件的根本操作步调,请人人必定要有耐烦。 我们次要是用 C 言语来对单片机编程,而有的单片机有那么几条很特别的独有的编程语句,51 单片机就有,先引见 2 条。 第一条语句是:sfr P0 = 0x80; sfr 这个症结字,是 51 单片机特有的,他的感化是界说一个单片机特别功用存放器(special function register)。51 单片机外部有许多个小模块,每一个模块寓居在具有独一房间号的房间内,同时每一个模块都有 8 个掌握开关。P0 就是一个功用模块,就住在了 0x80 这个房间里,我们就
[单片机]
<font color='red'>51单片机</font>特别功用存放器<font color='red'>和</font>位界说
51单片机PC串口异步通信
上一篇文章主要罗列了一些编写串口通信必要的知识点。在具体的编程中,还有很多要注意的地方。 下面的程序的主要功能为:通过串口调试助手向51单片机发送一个字母,单片机接收后,在数码管上显示这个字母,并将这个字母反向显示到串口调试助手的界面里。 51单片机的头文件中已经定义了串口缓冲区等一系列特殊功能寄存器,打开头文件就可以找到下面这样的定义: sfr SCON = 0x98; sfr SBUF = 0x99; 等等。 首先新建立一个头文件,将程序中要用到的变量和函数声明写进去: #include reg52.h #include ctype.h #define uchar unsigned char sbit dula=P2
[单片机]
51单片机之IO口输入的内部工作原理 ;IO内部电路分析;独立按键实现消抖
(一)IO口驱动能力:(注意:1的时候是驱动电流,0是驱动灌电流) 灌电流:在P0口为0V时,支持外接的电源流入的电流为12mA. 灌电流 如上图所示,当单片机输出低电平时,允许电路向单片机引脚内灌入电流,这个电流就叫做“灌电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“灌电流负载”。 拉电流 如上图所示,当单片机输出高电平时,允许电路从单片机的引脚拉出电流,这个电流就叫做“拉电流”,从而发光二极管被点亮,发光二极管所在的电路可以叫做“拉电流负载” 上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。用单片机输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到VCC,影响电
[单片机]
<font color='red'>51单片机</font>之IO口输入的内部工作原理 ;IO内部电路分析;独立按键实现<font color='red'>和</font>消抖
基于AT89C51单片机DDS器件实现频率特征测试仪的设计
1、 引 言 频率特性是一个系统(或元件)对不同频率正弦输入信号的响应特性。如图1所示,被测系统输入幅值为Ar、角频率为ω的正弦信号,如果该系统是线性的,则其稳态输出也是正弦信号,频率ω不变,幅值为Ac,相角差为φ。改变ω可以得到一系列输入和输出数据。输出对输入的幅值比A(ω)=Ac/Ar与ω的关系曲线称为该系统的幅频特性,通常取20 lg A(ω)称为对数幅频特性。输出对输入的相角差φ(ω)与ω的关系曲线称为该系统的相频特性。幅频特性和相频特性综合称为频率特性,常用的是系统的开环频率特性即波特图。 一个系统的频率特征可通过频率特征测试仪来测定。频率特性测试仪也称扫频仪,用于测试被测网络的幅频特性。他可以测量被测网络的谐振频
[单片机]
基于AT89C<font color='red'>51单片机</font><font color='red'>和</font>DDS器件实现频率特征测试仪的设计
基于LabVIEW的PC机与变频器的串口通信
1 引言   近年来,随着电力电子技术、微电子技术及大规模集成电路的发展,生产工艺的改进及功率半导体器件价格的降低,变频器调速越来越被工业上所采用。在摩擦学测试系统中,用变频器控制电机实现试验设备的速度调节已经成为一种非常重要和有效的控制手段。   由于摩擦学试验机和摩擦学测试的特殊性,摩擦学试验中的变频器调速有着不同于一般工业变频控制的特点。一方面,要求变频器调速能够在较大范围内满足摩擦学测试的要求,使得试验结果具有可比性;另一方面,摩擦磨损试验过程中,对控制有一些特殊的要求,例如需要特殊的速度、运动的非周期性以及设备的快速启动和停止等。在一些疲劳试验中,甚至要求电机进行寸动或者往复运动以检测材料的性能,有的试验现场对人体的
[测试测量]
基于LabVIEW的<font color='red'>PC</font>机与变频器的<font color='red'>串口</font>通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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