课题十一-单片机与计算机通信课件_第1页
课题十一-单片机与计算机通信课件_第2页
课题十一-单片机与计算机通信课件_第3页
课题十一-单片机与计算机通信课件_第4页
课题十一-单片机与计算机通信课件_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题十一单片机串口通信任务一PC机与单片机串行通信任务二单片机与单片机串行通信课题十一单片机串口通信任务一PC机与单片机串行通信单片机系统接收电脑PC机串口发过来的ASCII码,并在液晶LCD1602上显示出来;同时把收到的ASCII码回传给PC机串口,以验证串口接收、发送数据的正确性。单片机LCD显示电路复位电路时钟电路电源电路串行口通信电路图7.1单片机串行通信控制系统组成方框图计算机串行通信基础通信:并行通信与串行通信

并行通信特点:传送控制简单、速度快,但传输线较多,成本高。

串行通信特点:传送控制复杂、速度慢,传输线少,成本低异步通信与同步通信收、发设备时钟独立,以字符(帧)为单位传输

1.1串行通信的基本概念异步通信

异步通信帧格式起始位(1位);数据位(8位);奇偶校验位(1位,可无校验位);停止位(1位)。

特点易于实现效率不高同步通信(发、收时钟直接连接,效率高。板内元件间的SPI接口)

串行通信的传输方向单工

半双工

全双工80C51有1个全双工串行口

信号的调制与解调DTE:数据终端设备DCE:数据通信设备调制解调器调制解调串行通信的错误校验奇偶校验

发送字符时,数据位尾随1位奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。

代码和校验

发送方将所发数据块求和(或各字节异或),产生的校验和字节附加到数据块的末尾。接收方在接收数据时要对数据块(除校验字节外)求和(或各字节异或),将所得的结果与收到的“校验和”进行比较,相符则无差错,否则就认为传送过程出现了差错。传输速率与传输距离传输速率比特率:每秒钟传送的信息量。单位:位/秒(bps)波特率:每秒钟传送码元数目,单位:波特(Baud)

基带传输(每个码元带有“1”或“0”这1bit信息,传码率与传信率相同),波特率和比特率是相同的。

常用波特率为:2400、4800、9600、14.4K、19.2K等

传输距离与传输速率的关系传输距离随波特率的增加而减小。1.2串行通信接口标准RS-232C定义的是DTE与DCE间的接口标准。机械特性DB-25(阳头)连接器DB-9(阳头)连接器阳头通常用于计算机侧,阴头用于连接线侧

功能特性插针序号信号名称功能信号方向1PGND保护接地2(3)TXD发送数据(串行输出)DTE→DCE3(2)RXD接收数据(串行输入)DTE←DCE4(7)RTS请求发送DTE→DCE5(8)CTS允许发送DTE←DCE6(6)DSRDCE就绪(数据建立就绪)DTE←DCE7(5)SGND信号接地8(1)DCD载波检测DTE←DCE20(4)DTRDTE就绪(数据终端准备就绪)DTE→DCE22(9)RI振铃指示DTE←DCE电气特性RS-232C采用负逻辑电平,规定(-3~-25V)为逻辑“1”,(+3~+25V)为逻辑“0”。-3V~+3V是未定义的过渡区。试比较:电平转换电路(如MAX232)。

过程特性远程通信,需要调制解调器近程通信,不需要调制解调器无联络线方式联络线短接(伪连接)方式

RS-232C电平与TTL电平转换驱动电路早期常用MC1488、MC1489近期常用MAXM232:

片内带有自升压电路仅需+5V电源内含2个发送器,2个接收器

采用RS-232C接口存在的问题传输距离短、速率低

通常不超过15米,速率20Kbps有电平偏移

RS-232收发共地,地电流会使电平偏移出现逻辑错误。抗干扰能力差

RS-232常用单端输入,易混入干扰。(故用大摆幅)新标准RS-485改善了传输特性,应用广泛!

1.280C51单片机的串行口1.2.180C51串行口的结构1个全双工串口:通信或接口扩展

接收发送缓冲器逻辑同名、物理分开;接收双缓冲。

1.2.280C51串行口的控制寄存器串行口控制寄存器SCONSM0和SM1:工作方式选择位76543210SCONSM0SM1SM2RENTB8RB8TIRI字节地址:98HSM0SM1方式说明波特率000移位寄存器fosc/1201110位UART(8位数据)可变10211位UART(9位数据)fosc/64或fosc/3211311位UART(9位数据)可变SM2:多机通信控制位SM2=1时,接收机处于地址帧筛选状态。若RB8=1,该地址帧信息可进入SBUF,并使RI为1,进而在中断服务中再进行地址号比较;若RB8=0,该帧不是地址帧,应丢掉,且保持RI=0。SM2=0时,接收机处于地址帧筛选被禁止状态。不论收到的RB8为0或1,均可以使收到的信息进入SBUF,并使RI=1。此时的RB8通常为校验位。REN:串行接收使能位,软件置1时,启动接收过程。TB8:多机方式发送的第9位多机方式的地址/数据帧标志。也可作为奇偶校验位。

RB8:多机方式接收的第9位多机方式的地址/数据帧标志。也可作为奇偶校验位。

TI:发送中断标志位,要由软件清0RI:接收中断标志位,要由软件清0电源控制寄存器PCONSMOD:波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。

76543210PCONSMOD字节地址:97H1.2.380C51串行口的工作方式方式0:同步移位寄存器,用于扩展并行口RXD:输入或输出引脚TXD:移位脉冲输出接收和方式都是8位波特率固定为:fosc/12数据输出:

CLR用于对74LS164清0

74LS164串口转并口程序Led左移:#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharvoidDelay(uintx){ uchari; while(x--) { for(i=0;i<120;i++); }}voidmain(){ ucharc=0x80; SCON=0x00; TI=1; while(1) { c=_crol_(c,1); SBUF=c; while(TI==0); TI=0; Delay(400); }}数据输入:

S/L负脉冲将并行数据装入,高电平时启动单片机进行数据输入。

74LS165并口转串口开关模拟#include<reg52.h>#include<intrins.h>#include<stdio.h>#defineuintunsignedint#defineucharunsignedcharsbitSPL=P2^5;voidDelay(uintx){ uchari; while(x--) { for(i=0;i<120;i++); }}voidmain(){ SCON=0x10; while(1) { SPL=0; SPL=1; while(RI==0); RI=0; P0=SBUF; Delay(20); }}方式1:10位帧,用于双机通信起始位:1位数据位:8位停止位:1位串行发送:(写SBUF启动发送过程)

串行接收:(置REN=1启动接收过程)

方式2和方式3:11位帧,用于多机通信起始位:1位数据位:9位停止位:1位串行发送:(写SBUF启动发送过程)

串行接收:(置REN=1启动接收过程)

1.2.480C51波特率确定与初始化步骤波特率的确定波特率的计算固定波特率:

方式0波特率=fosc/12

方式2波特率=(2SMOD/64)*

fosc可变波特率:

方式1波特率=(2SMOD/32)*(T1溢出率)

方式3波特率=(2SMOD/32)*(T1溢出率)

T1溢出率=fosc/{12×[256-(TH1)]}波特率的选择波特率要选择标称值,由于TH1的初值是整数,为了减小波特率计算误差,晶振频率要选为11.0592MHz。

方式1和方式3波特率与TH1初值的对应关系:

波特率/(b/s)19.2k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD10000串行口初始化步骤确定T1的工作方式(TMOD)计算T1的初值,装载TH1、TL1启动T1(置位TR1)确定串行口工作方式(SCON)串口中断设置(IE、IP)1.3单片机与PC机间的通信硬件连接

直接连接交叉连接图7.7串行通信模块与单片机的接口电路原理图【项目实践】图7.5MAX232芯片引脚图图7.5MAX232芯片内部框图1.算法设计编写单片机异步通信程序步骤如下:(1)设置串口工作方式。此时需对串行控制器SCON中的SM0、SM1进行设置。PC机与单片机的通信中一般选择串口工作在方式1下。串行控制器SCON(98H)的格式如下所示:SM0SMlSM2RENTB8RB8TIRI(2)选择波特率发生器。选择定时器l或定时器2做为其波特率发生器。

【活动三】软件设计(3)设置定时器工作方式。当选择定时器1做为波特率发生器时,需设置其方式寄存器TMOD为计数方式并选择相应的工作方式(一般选择方式2以避免重装定时器初值);当选择定时器2做为波特率发生器时,需将T2CON设置为波特率发生器工作方式。(4)设置波特率参数。影响波特率的参数有二,一是特殊寄存器PCON的SMOD位,另一个是相应定时器初值。(5)允许串行中断。因在程序中我们一般采有中断接收方式,故应设EA=l、ES=1。(6)允许接收数据。设置SCON中的REN为1。表示允许串行口接收数据。(7)允许定时/计数器工作。此时开启定时/计数器,使其产生波特率。(8)编写串行中断服务程序。当有数据到达串口时,系统将自动执行所编写的中断服务程序。(9)收/发相应数据。注意的是发送操作完成需将T1清零,接收工作完成后需将R1清零。串口发送数据用单片机接收:#include<reg51.h>voidmain(){REN=1;SM0=0;SM1=1;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;if(RI==1){P1=SBUF;RI=0;}}

2.程序设计(1)主程序设计主程序主要完成硬件初始化、子程序调用等功能。①初始化首先调用LCD子程序,设置LCD的DDRAM地址。②串口收发数据当串口接收到数据,则继续等待串口接收数据;若RI为1,表明串口成功接收数据,进入串口中断服务子程序,单片机接收数据。并将串口成功接收数据标志位RI清零,调用LCD显示接收数据子程序,在LCD上显示单片机从串口接收到的数据。主程序设计流程图如图7.5所示。【项目实践】主程序设计流程图如图7.5所示。【项目实践】图6.5主程序设计流程图【项目实践】(2)串口接收发送数据中断服务子程序设计TI为0,把串口接收缓冲器SBUF中的数据写入串口接收数据单元RECDATA,再把该数据送到串口发送缓冲器SBUF中,传给PC机,置串口成功接收数据标志位TI为1,表明串口成功接收发送数据,最后中断子程序返回。串口收发数据。【项目实践】#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitlcden=P2^2;sbitlcdrs=P2^0;sbitlcdrw=P2^1;ucharnum,shu,recdata;ucharcodetable[]="recdata";voiddelay(uintz){uintx,y;for(x=z;x>0;x--) for(y=110;y>0;y--);}voidwrite_com(ucharcom){lcdrs=0;P1=com; delay(5); lcden=1; delay(5); lcden=0;}

voidinit(){lcden=0; write_com(0x38);write_com(0x0c);write_com(0x0f);write_com(0x06);write_com(0x01);}

voidwrite_data(uchardate){lcdrs=1; P1=date; delay(5); lcden=1; delay(5); lcden=0;}voidmain(){lcdrw=0;init();REN=1;SM0=0;SM1=1;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;EA=1;ES=1;while(1){write_com(0x80);for(num=0;num<8;num++) {write_data(table[num]);}write_com(0x80+0x40);write_data(shu);}}voidck()interrupt4{RI=0;shu=SBUF;SBUF=shu;}硬件连接近程连接(直连)任务二单片机与单片机间的通信远程连接(电平转换)电平转换器件与接线单片机双机通信甲机控制乙机LED闪烁,乙机控制甲机数码管甲机:#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitLED1=P1^0;sbitLED2=P1^3;sbitK1=P1^7;ucharOperation_NO=0;ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voidDelay(uintx){ uchari; while(x--) { for(i=0;i<120;i++); }}voidputc_to_SerialPort(ucharc){ SBUF=c; while(TI==0); TI=0;}voidmain(){ LED1=LED2=1; P0=0x00; SCON=0x50;//方式1,REN=1 TMOD=0x20;//T1方式2 PCON=0x00;//SMOD=0 TH1=0xfd; TL1=0xfd; TI=0; RI=0; TR1=1; IE=0x90;//EA=1,ES=1 while(1) { Delay(100); if(K1==0) { while(K1==0); Operation_NO=(Operation_NO+1)%4; switch(Operation_NO) { case0: putc_to_SerialPort('X'); LED1=LED2=1;break; case1: putc_to_SerialPort('A'); LED1=0;LED2=1;break; case2: putc_to_SerialPort('B'); LED2=0;LED1=1;break; case3: putc_to_SerialPort('C'); LED1=0;LED2=0;break;} }}}void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论