- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编辑课件 串行通信接口总线标准 计算机通信主要采用异步串行通信方式,常用的异步总线标准有三种: ●RS-232(RS-232A RS-232B RS-232C) ●RS-449 (RS422 RS423 RS485) ●20mA电流环 这里重点介绍RS-232 RS-232C:速率:20Kbit/S, 最大通信距离 : 15m RS422: 10Mbit/s, : 300m 90Kbit/s, :1200m RS-232C 美国电子工业协会(EIA)公布的一种异步通信标准。 RS232C标准是:P135 ●设备之间通信的距离不大于15米 ●最大传输速率20Kb/S ●采用负逻辑:“1” —— ―3V ∽ ―15V “0”—— +3V ∽ + 15V ●不带负载时输出电平:―25V ∽ +25V ●输出短路电流: 0.5A ●最大负载电容: 2500pF 当计算机采用RS232标准时必须通过电平转换,MAX232 是EIA和TTL电平转换芯片。内部具有电压提升电路,并有两路接收器和发送器。其连线和引脚如图 T1IN T2IN R1OUT R2OUT V+ V- T1OUT T2OUT R1IN R2IN +5V 1.0 1.0 1.0 1.0 1.0 +10V -10V TTL/CMOS TTL/CMOS RS-232 RS-232 VCC V+ V- T2OUT T1OUT R2IN VCC R1IN R1OUT T1IN T2IN R2OUT GND MAX232 MAX232 连线图 MAX232 引脚图 VCC RST XTAL1 XTAL2 TXD RXD 89C51 C1 C2 T1IN R1OUT R1IN T1OUT V- V+ VCC C3 C4 C5 GND GND C1=C2=C3=C4=C5=1 MAX232 1 5 PC机 COM1 或 COM2 1 2 3 4 6 7 8 9 +5V +5V 电路图 实物图 6.MCS-51的串行通信接口 MCS-51单片机内部集成有一个UART,用于全双工 方式的串行通信,可以同时发送、接收数据。它有两个互 相独立的接收、发送缓冲器,这两个缓冲器同名SBUF, 共用一个地址号(99H)。 发送SBUF:只能写,不能读; SBUF = a; 接收SBUF:只能读,不能写。 a = SBUF; 串行接口有四种工作方式,有的工作方式时其波特率 是可变的。用户可以用软件编程的方法在串行控制寄存器 SCON中写入相应的控制字就可改变串行口的工作方式。 例1: 从P1.0输出方波信号,周期为50ms。 采用定时/计数器T0用于定时器,定时间隔为25ms,软件控制,方式1,中断方式。设fosc = 6MHz。 定时计数初值为: a = -0.025*6000000/12= -12500 #include “reg51.h” void main() { TMOD = 0x01; TH0 = -12500 / 256; TL0 = -12500 %256; ET0 = 1;EA = 1; TR0 = 1; While(1); } void T0_srv(void) interrupt 1 using 1 { TL0 = -12500 %256; TH0 = -12500 / 256; P10 = !P10; } 例2: 从P1.0输出方波信号,周期为2s。(同7-2) 实现一:硬件定时+软件计数 采用T0做定时器,方式1,定时间隔为0.1s,中断方 式。另设一全局变量ah1用于计数,每隔0.1秒ah1加1。 定时计数初值为: (设fosc = 6MHz) a = -0.1*6000000/12= -50000 #include “reg51.h” char ah1; void main() { TMOD = 0x01; TH0 = -50000 / 256; TL0 = -50000 %256; ET0 = 1;EA = 1; TR0 = 1; While(1); } void T0_srv(void) interrupt 1 using 1 { TL0 = -50000 %256; TH0
文档评论(0)