单片机学习之十八:串行通讯程序:单片机发送
每次按下k0按键,由单片机向电脑发送数据62。
二、实验目的
掌握单片机串行通讯的概念、特点
掌握串行通讯波特率的计算方法
掌握max232接口芯片的连接方法
掌握方式1串口通讯的简单程序编写
三、实验任务分析:
在这个实验里面,我们来学习编写一个单片机和PC机之间的通讯程序。首先我们来学习一些和串行通讯有关的理论知识。
通讯的基本方式分为并行通讯和串行通讯。由于MCS-51系列单片机有一个异步全双工(全双工:指的是数据可以同时进行双向的传送)的串行口,所以我们只研究串行通讯的问题。这里有个新概念-异步,下面我们简单的给大家解释一下。
(一)、异步通讯的概念
由于单片机自带的串行口是异步的,所以我们现在只研究异步通讯问题
在异步传送中,一帧信息是一位一位进行传送的。每一个要传送的字符要用“起始位”和“停止位”作为字符开始和结束的标志,传送的时候每个字符的的组成格式如下:
1帧信号=起始位+数据位(可以是5、6、7、8位数据)+停止位,具体格式由通讯双方约定。
(二)、关于异步通讯需要了解的知识
从异步通讯的特点中我们可以知道,在异步数据传送中,通讯双方事先必须约好两项事宜:
(1)、字符格式:双方要约定两者之间以什么样的格式传递信息,比如字符的编码形式、奇偶校验形式、以及起始位和停止位的规定。在单片机中我们是靠选择串口的工作方式来约定格式的,如何选择稍后介绍。
(2)、波特率:在异步数据传送中,通讯双方传送数据的速率应该相同。我们用“波特率”作为衡量数据传送速率的指标,它定义为“每秒传送的数据位数”。
例如:数据传送的速率是120字符/秒,每一个字符假如是10位,则传送的波特率为:120×10=1200(比特)
一般的,异步传送速率在50~9600比特之间。
可见,在通讯程序中,我们首先应该进行初始化工作,约定双方异步通讯的相关协议。
那么怎样进行初始化呢?这就涉及到串行接口的控制问题,下面我们来谈谈这个问题。
(三)、MCS-51的串行通讯接口
MCS-51单片机内部有一个功能很强的异步全双工串行口,该串行口有四种工作方式,供不同的场合使用(如何选择后面介绍)。通讯的波特率可以由我们编写的软件设置,由片内的定时器/计数器T1或者T0产生。下面我们就来详细的介绍一下。
1、串行口的工作方式
串行口的四种工作方式中,串行通讯只使用方式1、2、3,方式0主要用于扩展I/O口,这种方式我们不做详细说明,大家可参考相关教材。
方式1:
这是串口通讯中最常用的方式,为10位异步通讯接口,一帧信息(10位)=起始位(0)+8位数据(低位在前)+停止位(1)。
另外,方式1还有一个特点,波特率可变,我们能够灵活进行设置(如何设置我们稍后介绍),因此这种方式在串行通讯中应用的十分广泛,我们在该试验中,就选择这个工作方式。
方式2和3:
一般用于主-从式多机通讯的情况下,本试验采用的是方式1,所以我们暂时也不介绍拉!
2、串行口工作方式的选择
既然决定采用方式1,那么就要对控制寄存器初始化了。串行口的四种通讯方式,使用哪种由特殊功能寄存器SCON决定(也在特殊功能寄存器区,地址是98H,可位寻址,它的各位在单片机复位的时候被清零)。SCON各位说明如下:图
00-方式0;01-方式1;10-方式2;11-方式3。由于在该试验中我们选择方式1,所以应该把SM0和SM1置为01。
SM2:允许方式2和方式3进行多机通讯的控制位,所以如果我们使用方式2、3进行多机通讯时,将该位置1;但是在本实验中我们采用方式1,所以SM2置0即可。
再来看看TI:串行口发送中断标志。
当一帧信息发送完成时,发送中断标志TI置1,向CPU申请中断。所以在有串口中断程序的时候,我们初始化的时候应该把这一位置0,免得还没有开始发送就申请中断啦!(我们先这样简单的解释一下,说多了大家可能会晕哦,如果想了解的更加详细,自己参考相关教材吧!^_^)。
RI:串行口接受中断标志。
当串口接受完一帧信息后,接受中断标志RI置1,向CPU申请中断,如果CPU允许中断,就进入串行中断服务程序。同样,在有串口中断程序的时候,初始化的时候也应该把RI清0,免得还没有开始接受就申请中断啦!
但是这里需要说明一点:CPU事先不能分辩是TI还是RI的中断请求,所以必须在中断服务程序中加以判断,然后在程序中用软件清零。
REN:允许串行口接受控制位。当REN=1时为允许串行口接受数据;当REN=0时为禁止接受状态。在这个实验里面,由于我们用单片
单片机串行通讯单片机发 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)