如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第7章单片机的串行通信技术常用的数据通信包括两种形式:并行通信和串行通信。7.1串行通信概述7.1.1数据通信7.1.2异步通信和同步通信7.1.3波特率的概念和串行通信的传输方向7.2串行口的结构组成及控制寄存器7.3串行通信工作方式及应用举例7.4串行通信设计应用举例(1)发送数据过程(中断法)内部数据并行写入SBUF发→数据串行送出→中断标志位TI硬件置1→CPU响应中断→软件清零TI,写入下一数据→(2)接收数据的过程(中断法)外界数据串行送入移位寄存器→数据并行送入SBUF收→标志位RI硬件置1→CPU响应中断→RI软件清零,读走数据→同步时钟和传送数据的关系:发送数据时,发送时钟的下降沿将数据串行移位输出;(1)串行数据缓冲器,SBUF(2)串口控制寄存器,SCON(98H)(3)电源控制寄存器,PCON(87H)八位同步移位寄存器方式——用于扩展并行I/O接口74LS164为8位串并转换移位寄存器DIP14能将串行输入数据转为并行输出74LS164真值表实例1利用74LS164扩展并行输出口,并实现发光二极管循环控制功能接线原理:数据发送端A(B)——RXD;同步时钟端CLK——TXD;数据清除端CLR——P1.0#include<reg51.h>sbitMR=P1^0;voiddelay(){unsignedinti;//延时for(i=0;i<20000;i++){}}voidmain(){unsignedcharindex,LED;//定义LED指针和显示字模SCON=0;//设置串行模块工作在方式0MR=1;//CLEAR端=1,允许输入数据while(1){LED=0xFE;for(index=0;index<8;index++){SBUF=LED;//控制L0灯点亮do{}while(!TI);//通过TI查询判别数据是否输出结束LED=((LED<<1)|1);//左移1位,末位置1if(LED==0xff)LED=0xfe;//若已循环一遍,准备重新开始delay();}}}实例1运行效果10位数据异步通讯方式——用于双机通信发送条件:由SBUF=counter即可启动发送过程发送完成:硬件TI置1通常,指定T1为波特率时钟发生器(波特率时钟可变)一般初始化过程实验程序:编写一段程序,利用单片机的串行口向PC机发送字符串。使用串口方式1双机通信协议通行方式:例如异步串行通信波特率:例如2400b/s发机要求发送的呼叫信号:例如10H收机同意接收的应答信号:例如20H收机不同意接收的应答信号:例如30H告知数据正确的应答信号:例如0FH通信结束标志信号:例如0AH……实例2:要求设计一个双机通信方案,甲机发送数据,乙机接收数据。两机的振荡频率为12MHz,波特率设置为2.4k,工作在串口方式1。甲机循环发送0-15的数字,乙机接收后返回接收值。若发送值与返回值相等,继续发送下一数字,否则重复发送当前数字。发送值和接收值应显示在LED数码管上;采用查询法检查收发是否完成。实例2电路原理图实例2程序流程图实例2参考程序实例2参考程序实例2运行效果方式2和方式3的数据帧都是11位——用于多机通信格式为:一个起始位,8个数据位,一个可编程位和一个停止位可编程位可以由软件置1或清0;发送时第9位在TB8中,连同八位数据通过串口发出。收到数据后,数据存入接收SBUF内,可编程位存入RB8中。可编程位还可用作为对接收到的数据进行校验使用;常用校验方法:在可编程位装入发送数据的奇偶校验位。例如,欲发送数据45H(01000101B),发送数据包含二进制数1的个数为奇数,因此奇偶校验位P=1,在发送数据45H时,将P=1赋值到可编程位TB8,连同数据共同发出。对方接收后,只要将实际数据的奇偶关系与RB8进行对比,即可知道收发过程是否有误。方式2的波特率为固定数值:实验程序:编写一段程序,利用单片机的串行口向PC机发送字符串。要求:使用串口方式2,TB8为发送数据的奇偶校验位。使用串口方式2本章小结