您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第6章80C51单片机的串行口
2020/1/201第6章80C51单片机的串行口计算机串行通信基础6.180C51单片机的串行口6.280C51单片机的串行口应用6.32020/1/2026.1计算机串行通信基础通信:并行通信与串行通信并行通信T0T1T2T3T4T5T6时钟D0D1D5D6D7:::10110T7接收设备发送设备选通状态0110110101101101特点:传送控制简单、速度快,但传输线较多,成本高。2020/1/203串行通信T0T1T2T3T4T5T6时钟D71T71111000D6D5D4D3D2D1D0数据线发送设备接收设备D7D6D5D4D3D2D1D001D0D1D2(1)01101101TXDRXD特点:传送控制复杂、速度慢,传输线少,成本低。2020/1/204异步通信与同步通信收、发设备时钟独立,以字符(帧)为单位传输。6.1.1串行通信的基本概念11100110110100100010100100101110011010以“0”作为起始以“1”作为停止各帧间隔时间任意发送设备接收设备TXDRXD异步通信2020/1/205异步通信帧格式停止位数据位校验位起始位D0D7空闲下一字符起始位空闲一个字符帧起始位(1位);数据位(8位);奇偶校验位(1位,可无校验位);停止位(1位)。特点易于实现效率不高同步通信(发、收时钟直接连接,效率高。板内元件间的SPI接口)2020/1/206串行通信的传输方向单工接收发送半双工时间1时间2发送接收发送接收全双工发送接收发送接收80C51有1个全双工串行口2020/1/207信号的调制与解调DCEDTE电话网DCEDTERS-232CRS-232CDTE:数据终端设备DCE:数据通信设备调制解调器调制解调2020/1/208串行通信的错误校验奇偶校验发送字符:数据位尾随1位奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符:对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。2020/1/209代码和校验发送方将所发数据块求和(或各字节异或),产生的校验和字节附加到数据块的末尾。接收方在接收数据时要对数据块(除校验字节外)求和(或各字节异或),将所得的结果与收到的“校验和”进行比较,相符则无差错,否则就认为传送过程出现了差错。2020/1/2010传输速率与传输距离传输速率比特率:每秒钟传送的信息量。单位:位/秒(bps)波特率:每秒钟传送码元数目,单位:波特(Baud)基带传输(每个码元带有“1”或“0”这1bit信息,传码率与传信率相同),波特率和比特率是相同的。常用波特率为:2400、4800、9600、14.4K、19.2K等传输距离与传输速率的关系传输距离随波特率的增加而减小。2020/1/20116.1.2串行通信接口标准RS-232C定义的是DTE与DCE间的接口标准。机械特性96512514131DB-25连接器DB-9连接器2020/1/2012功能特性插针序号信号名称功能信号方向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←DCE2020/1/2013电气特性RS-232C采用负逻辑电平,规定(-3~-25V)为逻辑“1”,(+3~+25V)为逻辑“0”。-3V~+3V是未定义的过渡区。试比较:+25+3-3-25Vt010101+520.80Vt101010RS232电平TTL电平电平转换电路(如MAX232)2020/1/2014过程特性远程通信,需要调制解调器计算机MODEMMODEMTXDRXDRTSTXDRTSDSR电话线DSRRXD计算机2020/1/2015近程通信,不需要调制解调器计算机乙计算机甲TXDTXDRXDRXD计算机乙计算机甲TXDTXDRXDRXD4562045620无联络线方式联络线短接(伪连接)方式2020/1/2016RS-232C电平与TTL电平转换驱动电路早期常用MC1488、MC1489近期常用MAXM232:片内带有自升压电路仅需+5V电源内含2个发送器,2个接收器2020/1/2017采用RS-232C接口存在的问题传输距离短、速率低通常不超过15米,速率20Kbps有电平偏移RS-232收发共地,地电流会使电平偏移出现逻辑错误。抗干扰能力差RS-232常用单端输入,易混入干扰。(故用大摆幅)新标准RS-485改善了传输特性,应用广泛!2020/1/20186.280C51单片机的串行口6.2.180C51串行口的结构1个全双工串口:通信或接口扩展≥1SBUF发送控制器接收控制器移位寄存器控制门TIRITXDRXD去中断逻辑SMOD01TH1TL1÷2÷16SBUFT1溢出率写SBUF读SBUF99H99H接收发送缓冲器逻辑同名、物理分开;接收双缓冲。2020/1/20196.2.280C51串行口的控制寄存器串行口控制寄存器SCONSM0和SM1:工作方式选择位76543210SCONSM0SM1SM2RENTB8RB8TIRI字节地址:98HSM0SM1方式说明波特率000移位寄存器fosc/1201110位UART(8位数据)可变10211位UART(9位数据)fosc/64或fosc/3211311位UART(9位数据)可变2020/1/2020SM2:多机通信控制位SM2=1时,接收机处于地址帧筛选状态。若RB8=1,该地址帧信息可进入SBUF,并使RI为1,进而在中断服务中再进行地址号比较;若RB8=0,该帧不是地址帧,应丢掉,且保持RI=0。SM2=0时,接收机处于地址帧筛选被禁止状态。不论收到的RB8为0或1,均可以使收到的信息进入SBUF,并使RI=1。此时的RB8通常为校验位。REN:串行接收使能位,软件置1时,启动接收过程2020/1/2021TB8:多机方式发送的第9位多机方式的地址/数据帧标志。也可作为奇偶校验位。RB8:多机方式接收的第9位多机方式的地址/数据帧标志。也可作为奇偶校验位。TI:发送中断标志位,要由软件清0RI:接收中断标志位,要由软件清02020/1/2022电源控制寄存器PCONSMOD:波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。76543210PCONSMOD字节地址:97H2020/1/20236.2.380C51串行口的工作方式方式0:同步移位寄存器,用于扩展并行口RXD:输入或输出引脚TXD:移位脉冲输出接收和发送都为8位波特率固定为:fosc/122020/1/2024D0D1D2D3D4D5D6D7写入SBUFRXD(数据)TXD(移位脉冲)TI(中断标志)TCY数据输出:74LS164RXDTXDP1.080C51CRCPABGNDCLR用于对74LS164清02020/1/2025数据输入:REN=1RXD(数据输入)TXD(移位脉冲)RI=0D0D1D2D3D4D5D6D774LS165RXDTXDP1.080C51S/LCPQGNDINHS/L负脉冲将并行数据装入,高电平时启动单片机进行数据输入。2020/1/2026方式1:10位帧,用于双机通信停止位数据位8位起始位LSBMSB空闲空闲D0D71帧共10位起始位:1位数据位:8位停止位:1位2020/1/2027串行发送:(写SBUF启动发送过程)D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始串行接收:(置REN=1启动接收过程)D0D1D2D3D4D5D6D7停止位RXDRI(中断标志)起始位采样脉冲2020/1/2028方式2和方式3:11位帧,用于多机通信起始位:1位数据位:9位停止位:1位停止位数据位9位起始位LSBMSB空闲空闲D0D71帧共11位RB8/TB82020/1/2029串行发送:(写SBUF启动发送过程)串行接收:(置REN=1启动接收过程)D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始TB8RI(中断标志)位采样脉冲D0D1D2D3D4D5D6D7停止位RXD起始RB82020/1/20306.2.480C51波特率确定与初始化步骤波特率的确定波特率的计算固定波特率:方式0波特率=fosc/12方式2波特率=(2SMOD/64)*fosc可变波特率:方式1波特率=(2SMOD/32)*(T1溢出率)方式3波特率=(2SMOD/32)*(T1溢出率)T1溢出率=fosc/{12×[256-(TH1)]}2020/1/2031波特率的选择波特率要选择标称值,由于TH1的初值是整数,为了减小波特率计算误差,晶振频率要选为11.0592MHz。方式1和方式3波特率与TH1初值的对应关系:波特率/(b/s)19.2k9600480024001200TH1初值FDHFDHFAHF4HE8HSMOD100002020/1/2032串行口初始化步骤确定T1的工作方式(TMOD)计算T1的初值,装载TH1、TL1启动T1(置位TR1)确定串行口工作方式(SCON)串口中断设置(IE、IP)2020/1/20336.380C51单片机的串行口应用6.3.1利用单片机串口的并行I/O扩展80C51RXD74LS164&QAQBQCQDQEQFQGQHA+5VabcdefgdpabcdefgdpTXDBCP74LS164QAQBQCQDQEQFQGQHABCPABCP74LS164P1.2P1.1P1.001234567FEDCBA98300Ω×2QAQBQCQDQEQFQGQH串口无通信需求时!2020/1/2034显示子程序:DIR:SETBP3.3;允许同步移位脉冲输出MOVR7,#02H;送出的段码个数MOVR0,#79H;显示数据缓冲区DL0:MOVA,@R0;待显示数据送AADDA,#0DH;加偏移量MOVCA,@A+PC;获得段码值MOVSBUF,A;将段码送SBUFDL1:JNBTI,DL1;输出段码,查询TI状态CLRTI;1个字节的段码输出完,清TI标志DECR0;指向下一个显示数据单元DJNZR7,DL0;判断2个段码显示完CLRP3.3;2个段码显示完,关闭显示输出RET;返回SEGTAB:DB共阳极七段码表2020/1/2035键盘扫描子程序:KEYI:MOVA,#00H;判断有无键按下,使所有列线为0的编码送AMOVSBUF,A;扫描键盘输出为00H,使所有列线为0KL0:JNBTI,KL0;串行输出完?CLRTI;串行输出完,清TIKL1:JNBP3.4,PK1;第一行有闭合键吗,如有,转PK1JBP3.5,PL1;第二行有闭合键吗,无闭合键跳KL1PK1:ACALLDL10;调10ms延时子程序,放抖动JNBP3.4,PK2;判断是否抖动,否转PK2JBP3.5,KL1;PK2:MOVR7,#08H;MOVR6,#0FEH;判断是哪一个键按下MOVR3,#00H;R3为列号寄存器MOVA,R6;KL5:MOVSBUF,A;列扫描码从串行口输出2020/1/2036KL2:JNBTI,KL2;等待串行口输出CLRTI;串行口发送完,清TIJNBP3.4,PKONE;读第一行线状态,有闭合,转PKONEJBP3.5,NEXT;读第二行线状态,是第二行键?MOVR4,#08H;第二行有键按下,行首键号08H送R4AJMPPK3PKONE:MOVR4,#00H;第一行键中键按下,行首键号00H送R4PK3:MOVSBUF,#00H;等按键释放,发送00H使
本文标题:第6章80C51单片机的串行口
链接地址:https://www.777doc.com/doc-3198769 .html