




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章单片机的串口通信
5.1单片机串行口通信知识1.并口通信和串口通信(数据通信的两种常用形式)并行传送特点:传送速度快,但因需要多根传输线,故一般只在近距离(3米、5米、7米)通信中使用。否则,相互干扰大,无法快速传送(1)并口方式——数据的各位同时发送或同时接收。一、串口工作原理(2)串行方式——数据的各位依次逐位发送或接收。串行传送特点:传输速度慢,但因只需较少传输线,抗干扰强,故适合于远距离通信。RXD(P3.0)和TXD(P3.1)用于串行信号或时钟信号的传入或传出。计算机串行接口按照传输数据流向,串行通信具有3种传输形式:在单工制式下,通信线的一端为发送器(TXD),一端为接收器(RXD),数据只能按照一个固定的方向传送。在半双工制式下,系统由一个TXD和一个RXD组成,但不能同时在两个方向上传送,收发开关由软件方式切换。在全双工制式下,通信系统每端都有TXD和RXD,可以同时发送和接收,即数据可以在两个方向上同时传送。实际应用中,尽管多数串行通信接口电路具有全双工功能,但仍以半双工为主(简单实用)。2.同步通信同步传输方式中发送方和接收方的时钟是统一的、字符与字符间的传输是同步无间隔的。
——以字符为单位组成字符帧进行的数据传送。3.异步通信一帧数据由起始位、数据位、[可编程位]和停止位构成异步传输方式并不要求发送方和接收方的时钟完全一样,字符与字符间的传输是异步的。起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据。数据位:要传输的数据信息,可以是字符或数据,一般为5~8位,由低位到高位依次传送。可编程位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的联络信息。停止位:位于数据位末尾,占1位,始终为高电平,用于向接收端表示1帧数据已发送完毕。异步通信特点:对收发双方的时钟精度要求较低(收发双方不同步时,能依靠在每帧开始时的不断对齐,自行纠正偏差);传送速度较低(每个字节都要建立一次同步)。波特率:每秒发送二进制数码的位数,即bps(bitpersecond)(位/秒)4.波特率国际推荐波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等。串行通信的收发双方必须采用相同的波特率。在串行通信的数据是按位进行传送的,数据传输速率用波特率指标衡量。5.串行数据缓冲器,SBUF在物理上有两个SBUF:一个用于发送,另一个用于接收。在逻辑上只有一个SBUF(99H)。可根据用法区分功能:ucharcounter;
待发送存放变量…SBUF=counter;完成一次数据发送…counter=SBUF;完成一次数据接收CPU(1)串口控制寄存器,SCON(98H)SM2、TB8、RB8主要用于多机通讯二、串行口工作方式SM0和SM1:串行工作方式定义位。通过SM0和SM1不同的取值,可定义4种串行通信工作方式。串行口工作方式SM0SM1工作方式功能说明波特率00方式0同步移位寄存器,用于I/O扩展fosc/1201方式110位异步收发器由定时器T1溢出率控制10方式211位异步收发器fosc/32或fosc/6411方式311位异步收发器由定时器T1溢出率控制(2)电源控制寄存器,PCON(87H)SMOD可使由定时器产生的通信时钟速率加倍(3)波特率的计算在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)·fosc方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。
T1溢出率=fosc/{12×32[256-(TH1)]}
在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。串口工作方式波特率晶振foscSMOD定时器初值TH1方式1或方式31920011.059MHz1FDH960011.059MHz0FDH480011.059MHz0FAH240011.059MHz0F4H串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:确定T1的工作方式(编程TMOD寄存器);计算T1的初值,装载TH1、TL1;启动T1(编程TCON中的TR1位);确定串行口控制(编程SCON寄存器);串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。
5.2单片机与单片机的串口通信项目项目单片机与单片机之间交换信息,常称为双机通信。对于双机通信常采用查询方式和中断方式设计应用程序。中断方式实现接收数据提高了单片机的工作效率。动手做——画出硬件电路图
单片机A的P1口的P1.0和P1.7连接按键开关K1和K2,按键开关控制了P1口的输入数据,该数据通过串行口送到B单片机的P1口,控制了D1和D2二个红色LED灯的亮暗。同样,单片机B的P2口的P2.0和P2.3连接按键开关K3和K4,按键开关控制了P2口的输入数据,该数据通过串行口送到B单片机的P2口,控制了D3和D4二个红色LED灯的亮暗。单片机与单片机的串口通信项目可以采用查询方式和中断方式二种。1.查询方式串口程序设计单片机A的程序设计如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定时器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//串口方式3,接收允许,发送数据
TR1=1;//开定时器1 while(1) { SBUF=P1;//将单片机A按键形成的P1口数据送串口
while(!TI);//等待数据送完
TI=0;//数据送完,软件清零
while(!RI);//等待接收单片机B的数据
RI=0;//数据接收完,软件清零
P2=SBUF;//将接收B的数据,从AP2口送出
}} 单片机B的程序设计如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定时器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//设置串行口方式3:接收允许,发送数据 TR1=1;//开定时器1 P1=0xff;//关闭LED while(1) { while(!RI);//串口等待接收单片机A按键形成的数据
RI=0;//接收完数据后,软件清零
P1=SBUF;//将接收A数据送B的P1口输出
SBUF=P2;//将单片机B的P2口的数据送串口
while(!TI);//等待送完数据
TI=0;//送完数据,软件清零
}} 单片机B的程序设计如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定时器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//设置串行口方式3:接收允许,发送数据 TR1=1;//开定时器1 P1=0xff;//关闭LED while(1) { while(!RI);//串口等待接收单片机A按键形成的数据
RI=0;//接收完数据后,软件清零
P1=SBUF;//将接收A数据送B的P1口输出
SBUF=P2;//将单片机B的P2口的数据送串口
while(!TI);//等待送完数据
TI=0;//送完数据,软件清零
}} 2.中断方式串口程序设计单片机A的程序设计如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定时器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//设置串行口方式3:接收允许,发送数据
ES=1;//允许串口
EA=1;//允许中断
TR1=1;//开定时器1 while(1) { SBUF=P1;//将A按键形成的P1口数据送串口
while(!TI);//等待数据送完
TI=0;//数据送完,软件清零
}} voidS_receive()interrupt4{ EA=0; RI=0;//数据接收完,软件清零
P2=SBUF;//将接收到的B数据,从A的P2口输出
EA=1;//开中断}单片机B的程序设计如下。#include<reg51.h>/*************主程序***************/voidmain(){ TMOD=0x20;//定时器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//设置串行口方式3:接收允许,发送数据
P1=0xff;//关闭LED ES=1;//允许串口
EA=1;//允许中断
TR1=1;//开定时器1 while(1) { SBUF=P2;//将单片机B的P2口的数据送串口
while(!TI);//等待送完数据
TI=0;//送完数据,软件清零
}} voidS_receive1()interrupt4{ EA=0; RI=0;//接收完数据后,软件清零
P1=SBUF;//将接收到的A的数据送B的P1口输出
EA=1;}仿真运行图
5.3单片机与PC之间的通信项目设计项目单片机与PC电脑之间的通信是串口通信,需采用RS-232C或USB串行接口,单片机与电脑的串行接口不能直接相连,需要转换。动手做——画出硬件电路图
RS-232C串行通信总线标准及其接口
。
1.单片机串口RXD/TXD电平为TTL电路
逻辑“1”:+5V逻辑“0”:0V2.计算机RS-232C的电气标准采用负逻辑,即:逻辑“0”:+5V~+15V
逻辑“1”:-5V~-15V
因此,RS-232C不能和TTL电平直接相连,否则将使TTL电路烧坏,实际应用时必须注意。RS-232C和TTL电平之间必须进行电平转换,常用的电平转换集成电路MAX232。
MAX232引脚图。
RS-232C标准总线为25根,可采用标准的DB-25和DB-9的D型插头。目前计算机上只保留了两个DB-9插头,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。引脚名称功能引脚名称功能1DCD载波检测6DSR数据准备完成2RXD发送数据7RTS发送请求3TXD接收数据8CTS发送清除4DTR数据终端准备完成9RI振铃指示5SG(GND)信号地线在简单的RS232-C标准穿性通信中,仅连接发送数据(2)、接收数据(3)和信号地(5)三个引脚即可。实现TTL电平、S-232C电平转换,常用MAX232芯片。单片机TXD(P3.1)RXD(P3.2)
与RS232串口连接硬件的器件极化电容CAP-POL232串口COMPIMMAX232仿真中的虚拟终端
电脑USB接口随着技术的发展,工业上还有RS232串口通信的大量使用,但是商业技术的应用上,已经慢慢的使用USB取代了RS232串口,绝大多数笔记本电脑已经没有RS232串口,需要在电路上添加一个USB转串口芯片,就可以成功实现USB通信协议和标准串行口通信协议的转换,常使用的转换器件是CH340芯片。CH340驱动的安装为了CH340系列芯片能够正常工作,需要在PC电脑上安装CH340系列的USB转串口驱动,如CH340驱动、CH341SER等,兼容Win10等操作系统。首先,下载CH340的USB转串口驱动程序,下载好以后,双击运行“CH341SE”应用程序,如图所示。
成功安装单片机PC电脑端下载软件的使用各个单片机的制造公司都有响应的PC电脑端下载编程烧录软件。STC-ISP是一款单片机下载编程烧录软件,是STC公司的单片机ISP下载编程软件,是针对STC系列单片机而设计的,可下载STC8951等系列的STC单片机,使用简便,现已被广泛使用。在下载软件以前,先要完成单片机程序的编译,。但对STC公司的芯片,还需要先打开STC-ISP程序中的Keil仿真设置,如图所示。仿真设置将“STC”单片机型号添加到Keil安装目录中,如c:\Keil弹出STCMCU型号添加成功!按确定完成。打开Keil软件,新建一个工程文件后,就可以通过下拉箭头选择STCMCUDatabase,确定后就中以选择对应单片机型号了,如图所示。将USB线的一端插入电脑的USB口,另一端插入51单片机开发板的USB口,开始下载烧录程序。烧录程序的使用方法如下。打开的STC-ISP烧录软件操作界面,选择该COM的端口号,一般,软件会自动扫描确认,如图。根据开发系统使用的单片机芯片的型号,选择正确的51单片机型号,如STC89C52RC,如图所示。设置串口的波特率最高为115200最低为2400打开事先编译好的程序.HEX可执行文件的波特率最高为115200最低为2400先点击“Download/下载”按钮,下载程序然后再给开发板上电,程序烧录成功
烧录程序常见故障为:一直检测单片机,可按以下步骤排查。TXD和RXD接错了,下载器TXD接单片机RXD,RXD接单片机TXD。单片机型号选择错了,如果是STC89C52RC就要选后面加RC的,STC89C52就不行。单片机芯片损坏了,需要更换。需要冷启动,就是给单片机断一次电,有的直接按电源开关就可以了。该项目的工程中,设计了串口通信和LCD显示二个程序。串口通信程序如下。#include<reg51.h>#defineucharunsignedcharucharPCtoMCS[16]="";//电脑传送到单片机的字符数组ucharMCStoPC[]="**receiveddatafromMCS51**";//单片机传送给电脑的字符voidLCD_write_command(uchar);//LCD写命令函数声明voidLCD_write_data(uchar);//LCD写数据函数声明voidLCD_init();//LCD初始化函数声明voiddelay(uchar);/*************主程序***************/voidmain(void){ unsignedchari,n; TMOD=0x20;//定时器1工作方式2 TL1=0xfd;TH1=0xfd;//初值,波特率9600 SCON=0xd0;PCON=0x00;//设置串行口方式3:接收允许,发送数据
TR1=1;//开定时器1 while(1) { i=0;
while(MCStoPC[i]!='\0')//单片机发送给电脑字符串
{ SBUF=MCStoPC[i];//发送字符
while(TI==0);//TI发送中断标记等待发送完成TI=1 TI=0;//软件清0 i++;//下一个字符
} i=0;//i清0,为接收作准备
while(RI==0);//等待接收完成RI=1 RI=0;//软件清0 PCtoMCS[i]=SBUF;//启动接收
while(PCtoMCS[i]!='#')//传完后,应答A机并显示收到的字符串
{ i++; while(RI==0);//接收应答
RI=0;//软件清0 PCtoMCS[i]=SBUF;//一个一个接收字符
} PCtoMCS[i]='\0';//置数组结束符\0 LCD_init(); n=0;
LCD_write_command(0x80); while(PCtoMCS[n]!='\0') { LCD_write_data(PCtoMCS[n]); n++; delay(1); } }}
液晶显示程序如下。#include<reg51.h>#defineucharunsignedcharsbitLCD_RS=P2^0;//将P2.0取名为LCD_RS,控制寄存器选择sbitLCD_E=P2^2;//将P2.2取名为LCD_E,使能端sbitLCD_RW=P2^1;//将P2.1取名为LCD_RW,控制读写选择/*************延时ms**************/voiddelay(uchart){ ucharj,k;
for(j=0;j<t;j++) { for(k=0;k<255;k++){} }}/*************忙检测函数**************/bitLCD_Busy(){ bitLCD_Busy; LCD_RS=0; LCD_RW=1; LCD_E=1; delay(1); LCD_Busy=(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 展览场地租赁合同
- 租赁小区场地合同
- 停薪留职合同协议
- 美术作品展览权责免除合同
- 股份制企业合同签署流程规范
- 环境咨询服务合同
- 淘宝店装修服务合同
- 养老服务合同发布
- 建筑工程质量保证和监理服务合同
- 南京师范大学中北学院《现代电力生产技术》2023-2024学年第二学期期末试卷
- 月度安全生产例会汇报材料
- 2025年春季学期学校团委工作计划(附团委工作安排表)
- 2025公文写作考试题库(含参考答案)
- 2025年湖南科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年安徽省高校分类考试对口招生语文试卷真题(含答案)
- 2025年南京信息职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 如何管理好一家公寓
- 2025年零售业员工职业发展规划与培训
- 2025年八省联考高考语文试题真题解读及答案详解课件
- 《复合材料电缆沟盖板》团体标准
- 2025年中国中车集团招聘笔试参考题库含答案解析
评论
0/150
提交评论