版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章单片机串行口及应用7.1串行口的结构与工作原理
7.2工作方式与波特率的设置
7.3I²C总线及应用7.4串行口应用举例7.5RS-232C与USB简介
思考练习题
7.1串行口的结构与工作原理
80C51单片机中的串行口是一个全双工通信接口,能同时进行发送和接收。它可以作UART(通用异步接收和发送器)用,也可以作同步移位寄存器用。其帧格式和波特率可通过软件编程设置,在使用上非常方便灵活。
7.1.1串行口的结构
80C51单片机的串行口主要由两个数据缓冲器、一个输入移位寄存器、一个串行控制寄存器SCON和一个波特率发生器T1等组成,其结构见图7-1。图7-1串行口结构串行口数据缓冲器SBUF是可以直接寻址的专用寄存器,在80C51中,一个作为发送缓冲器,一个作为接收缓冲器,两个缓冲器共用一个地址99H,由读/写信号区分。CPU写SBUF时为发送缓冲器,读SBUF时为接收缓冲器。接收缓冲器是双缓冲的,可以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,把上帧数据取走,而产生两帧数据重叠的问题。对于发送缓冲器,为了保持最大传输速率,一般不需要双缓冲,这是因为发送时CPU是主动的,不会产生写重叠的问题。
特殊功能寄存器SCON用来存放串行口的控制和状态信息。T1作为串行口的波特率发生器,其波特率是否增倍可由特殊功能寄存器PCON的最高位控制。7.1.2串行通信过程
串行通信的过程如下。
(1)接收数据的过程:在进行通信时,当CPU允许接收时(即SCON的REN位置1),外界数据通过引脚RXD(P3.0)串行输入,数据的最低位首先进入输入移位寄存器;一帧接收完毕再并行送入缓冲器SBUF中,同时将接收中断标志位RI置位,向CPU发出中断请求。CPU响应中断后,用软件将RI位清除,同时读取输入的数据。接着又开始下一帧的输入过程,重复直至所有数据接收完毕。
(2)发送数据的过程:CPU要发送数据时,将数据并行写入发送缓冲器SBUF中,同时启动数据由TXD(P3.1)引脚串行发送。当一帧数据发送完即发送缓冲器空时,由硬件自动将发送中断标志位TI置位,向CPU发出中断请求。CPU响应中断后,用软件将TI位清除,同时将下一帧数据写入SBUF中,重复上述过程直到所有数据发送完毕。
7.1.3串行口工作方式及帧格式
80C51单片机串行口可以通过软件设置四种工作方式,各种工作方式的数据格式均有所不同,四种工作方式及帧格式如下。
1.方式0
这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从RXD端串行输出或输入,同步信号从TXD端输出,波特率固定不变,为振荡频率的1/12。该方式以8位数据为一帧,没有起始位和停止位,先发送或接收最低位。
2.方式1
串行口采用该方式时,特别适合于点对点的异步通信。该方式规定发送或接收一个字符10位为一帧,即1个起始位、8个数据位、1个停止位,波特率可以改变。
3.方式2
采用这种方式可以接收或发送11位数据,以11位为一帧,它比方式1增加了一个数据位,其余相同。第9个数据即D8位具有特别的用途,可以通过软件来控制,再加上特殊功能寄存器SCON中SM2位的配合,可使80C51单片机串行口适用于多机通信。方式2的波特率固定,只有两种选择,为振荡频率的1/64或1/32,可由PCON的最高位选择。
4.方式3
方式3和方式2完全类似,唯一的区别是方式3的波特率是可变的。方式3的帧格式与方式2一样,为11位一帧,所以方式3也适用于多机通信。7.1.4串行口控制
80C51串行口的工作方式选择、中断标志、可编程位的设置、波特率的增倍均是通过两个特殊功能寄存器SCON和PCON来控制的。
1.电源和波特率控制寄存器PCON
PCON的地址为87H,只能进行字节寻址,不能按位寻址。PCON是为在CHMOS结构的51系列单片机上实现电源控制而附加的,而HMOS结构的51系列单片机只用了其最高位,其余位都是虚设的。PCON的最高位D7位作SMOD,是串行口波特率的增倍控制位。当SMOD=1时,波特率加倍。当SMOD=0时,波特率不加倍。系统复位时,SMOD位为0。PCON其它各位定义在第二章已述。
2.串行口控制寄存器SCON
深入理解SCON各位的含义,正确地用软件设定修改SCON各位是运用80C51串行口的关键。该专用寄存器的主要功能是串行通信方式选择,接收和发送控制及串行口的状态标志指示等。其各位的含义如下:
(1) SCON.7和SCON.6为SM0、SM1位——串行工作方式选择位。
(2)SCON.4为REN位——可用软件允许/禁止串行接收,REN=1时允许串行口接收数据,REN=0时禁止串行口接收数据。
(3)SCON.5、SCON.3和SCON.2为SM2和TB8、RB8位——实现多机通信的控制位。
在方式0下,SM2应设置为0,不用TB8和RB8位。在方式1下,当SM2=0时,RB8是接收到的停止位;当SM2=1时,则只有收到有效的停止位才会激活RI使之置1,否则RI不置位。
在方式2和方式3下,TB8是发送的第9位(D8)数据,可用软件置1和置0;RB8是接收到的第9位(D8)数据。这两位也可以作为奇偶校验位。当单片机在方式2或方式3下处于接收状态时,若SM2=1,且接收到的第9位RB8为0,则RI不置1;若SM2=1,且RB8也为1,则RI置1。
当单片机在方式2或方式3下处于多机通信状态时,TB8和RB8位可作为地址数据帧标志位。一般约定地址帧为“1”,数据帧为“0”。
(4) SCON.1为TI位——作发送中断标志。
在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初,由硬件置位。TI置位后可向CPU申请中断。任何方式下都必须由软件来清除TI。
(5) SCON.0为RI位——作接收中断标志。
在方式0下,接收完8位数据后,RI位由硬件置位;在其它方式下,在接收停止位的一半时由硬件将RI置位(还应考虑SM2的设定)。RI被置位后可允许CPU申请中断,任何方式都必须由软件来清除RI。
7.2工作方式与波特率的设置
7.2.1各方式波特率的设置
在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。串行口的工作方式可以通过编程选择4种工作方式中的一种。各种方式下其波特率的设置均有所不同,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可变的,由定时器T1的溢出率控制。下面分别予以说明。
1.方式0和方式2
在方式0时,每个机器周期发送或接收一位数据,因此波特率固定为振荡频率的1/12,且不受SMOD位的控制。
方式2的波特率要受PCON中SMOD位的控制,当SMOD设置为0时,波特率为振荡频率的1/64即等于fosc/64;若SMOD设置为1时,则波特率等于fosc/32。方式2的波特率可用下式表示:
2.方式1和方式3
80C51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD位同时控制。其波特率可以用以下方式表示:
其中,N=32或16,取决于PCON的SMOD位的值。SMOD=0时,N=32;SMOD=1时,N=16。因此波特率也可用下式来表示:T1的溢出周期为
溢出率为溢出周期之倒数,所以
定时器T1方式2的计数初值由上式可得:
例7-1
选用定时器T1,工作方式2,作波特率发生器,波特率为2400波特/秒。已知fosc = 11.0592 MHz,求计数初值X。
解设波特率控制位SMOD=0,不增倍时:
所以 TH1 = TL1 = F4H
如果串行通信选用很低的波特率,设置定时器T1为方式0或方式1定时,当T1产生溢出时需要重装计数初值,故对波特率会产生一定的误差。7.2.2串行口各工作方式的应用
通过对串行口的SCON控制寄存器编程可以选择4种工作方式,各方式使用方法分述如下。
1.方式0用法
80C51串行口的方式0用于同步移位寄存器式的输入输出,8位数据从RXD(P3.0)引脚输入输出,由TXD(P3.1)引脚输出移位时钟使系统同步,波特率固定为fosc/12,即每一个机器周期输出或输入一位数据。
(1)方式0发送。以图7-2为例说明串行口方式0发送的基本连线方法、工作时序(只画出了RXD、TXD的波形)以及基本软件的编程方法。图7-2方式0发送连线及时序图7-2中采用一个74HC164串入并出移位寄存器,串行口的数据通过RXD引脚加到74HC164的输入端,串行口输出移位时钟通过TXD引脚加到74HC164的时钟端。使用另一条I/O线P1.0控制164的CLR选通端(也可以将74HC164的选通端直接接高电平)。
根据以上硬件连接方法,对串行口方式0发送数据过程编程如下:
SCON=0x00; //选通方式0
P1.0=1; //选通74HC164
SBUF=data; //数据写入SBUF并启动发送
while(TI==0); //等待一个字节发送完成
P1.0=0; //关闭164选通
TI=0; //清除TI中断标志
…
若还需要继续发送新的数据,只要使程序返回到第二条指令处即可。
(2)方式0接收。以图7-3为例说明串行口方式0的基本连线方法、工作时序及编程方法。图7-3方式0接收连线及时序
2.方式1用法
当串行口定义为方式1时,可作为异步通信接口,一帧为10位:1个起始位、8个数据位、1个停止位;波特率可以改变,由SMOD位和T1的溢出率决定。串行口方式1的发送和接收时序如图7-4所示。图7-4串行口方式1的发送和接收时序
(1)发送时序。任何一条写入SBUF指令,都可启动一次发送,使发送控制器的SEND(发送)端有效(即SEND=0),同时自动添加一个起始位向TXD端输出。首先发送一个起始位0,此后每经过一个时钟周期产生一个移位脉冲,并且由TXD端输出一个数据位。当8位数据全部送完后,使TI置1,可申请中断,置TXD=1作为停止位,再经一个时钟周期撤消SEND信号。
(2)接收时序。方式1是靠检测RXD来判断接收过程的开始的。CPU不断采样RXD,采样速率为波特率的16倍。一旦采样到RXD由1至0的负跳变,16分频器立刻复位,启动一次接收,同时接收控制器把1FFH(9个1)写入移位寄存器(9位)。计数器复位的目的是使计数器满度翻转的时刻恰好与输入位的边沿对准。
计数器的16个状态把每一位的时间分为16份,在第7、8、9状态时,位监测器对RXD端采样,这3个状态理论上对应于每一位的中央段,若发送端与接收端的波特率有差异,就会发生偏移,只要这种差异在允许范围内,就不至于产生错位或漏码。在上述3个状态下,取得3个采样值,用3取2的表决方法,即3个采样值中至少有2个值是一致的,这种一致的值才被接收。如果所接收的第一位不是0,说明它不是一帧数据的起始位,接收电路被复位,再重新对RXD进行上述采样过程。若起始位有效C=0,则被移入输入移位寄存器,并接收这一帧中的其它位。当数据位逐一由右边移入时,原先装在移位寄存器内的9个1逐位由左边移出。当起始位0移到最左边时,就通知接收控制器进行最后一次移位,并把移位寄存器9位内容中的8位数据并行装入SBUF(8位),第9位则置入RB8(SCON.2)位,并将RI置1,向CPU申请中断。在串行移位方式下接收到一帧数据时,装入SBUF和RB8位以及RI置位的信号,在最后一个移位脉冲并同时满足以下两个条件时才会产生中断:
①RI=0,即上一帧数据接收完成后发出的中断请求已被响应,SBUF中的数据已被取走。
②SM2=0或接收到的停止位为1。
这两个条件任一个不满足,所接收的数据帧就会丢失,不再恢复。两者都满足,停止位进入RB8位,8位数据进入SBUF,RI置1。此后,接收控制器又将重新采样测试RXD出现的负跳变,以接收下一帧数据。
(3)方式1用法。串行口方式1适用于点对点的异步通信,若假定通信双方都使用80C51的串行口,硬件连接如图7-5所示。图7-5点对点的异步通信连接要实现双方的通信还必须编写双方的通信程序,编写程序应遵守双方的约定。
通信双方的软件约定如下:发送方应知道什么时候发送消息,消息的内容,对方是否收到,对方收到的内容是否有误,要不要重发,怎样通知对方发送结束等。接收方必须知道对方是否发送了消息,发送的是什么,收到的信息是否有错,如果有错怎样通知对方,怎样判断发送结束等。
这些约定必须在编程之前确定下来,这种约定叫做“规程”或“协议”。发送和接收方的数据帧格式、波特率等必须一致。按这些协议可以编写出程序。
3.方式2、方式3的用法
串行口方式2和方式3除了波特率规定不同之外,其它的性能完全一样,都是11位的帧格式。方式2的波特率只有fosc/32和fosc/64两种,而方式3的波特率是可变的,前面已述。
串行口方式2和方式3的发送和接收时序见图7-6。图7-6方式2、方式3的发送和接收时序方式2、方式3的发送和接收时序与方式1相比,主要区别在第9个位数据位上。
(1)发送时序。任何一条“写入SBUF”指令,都可启动一次发送,并把TB8的内容装入发送寄存器的第9位,使SEND信号有效,发送开始。在发送过程中,先自动添加一起始位放入TXD,然后每经过一个TX时钟(由波特率决定)产生一个移位脉冲,并由TXD输出一个数据位。当最后一个数据位(附加位)送完后,撤消SEND,并使TI置1,置TXD=1作为停止位,使TXD输出一个完整的异步通信字符格式。
(2)接收时序。接收部分与方式1类似,在置REN=1之后,硬件自动检测RXD信号,当检测RXD由1至0的跳变时,就开始一个接收过程。首先,判断是否为一个有效的起始位。对RXD的检测是以波特率的16倍速率采样,并在每个时钟周期的中间(第7、8、9计数状态)对RXD连续采样3次,取两次相同的值进行判断。若不是起始位,则此次接收无效,重新检测RXD;若是有效起始位,就在每一个RX时钟周期里接收一位数据。在9位数据收齐后,如果下列两个条件成立:
① RI=0;
② SM2=0或接收到的第9位数据为1;
则把已收到的数据装入SBUF和RB8,并将RI置1。如果不满足上述两个条件,则丢失已收到的一帧信息,不再恢复,也不置位RI。两者都满足时,第9位数据就进入RB8,8位数据进入SBUF。此后,无论哪种情况都将重新检测RXD的负跳变。
注意:与方式1不同,方式2和方式3中进入RB8的是第9位数据,而不是停止位。接收到的停止位的值与SBUF、RB8或RI是无关的。这一特点可用于多处理机通信。
(3)用第9位数据作奇偶校验位。方式2、方式3也可以像方式1一样用于点对点的异步通信。在数据通信中由于传输距离较远,数据信号在传送过程中会产生畸变,从而引起误码。为了保证通信质量,除了改进硬件之外,通常要在通信软件上采取纠错的措施。常用的一种简单方法就是用“检查和”作为第9位数据,称奇偶校验位,将其置入TB8位一同发送。在接收端可以用第9位数据来核对接收的数据是否正确。例如,发送端发送一个数据字节及其奇偶校验位的程序段如下:
SCON=0x80; //选通方式2
TB8=PSW^0; //奇偶标志位置入TB8中
SBUF=DATA; //启动一次发送,数据连同奇偶校验位一同被发送
while(TI==0); //等待发送完成
…
方式2、方式3的发送过程中,将数据和附加的TB8中的奇偶校验位一同发送出去。因此,作为接收的一方应设法取出该奇偶校验位进行核对,相应的接收程序段如下:接收到的字符从SBUF转移到A中时会产生接收端的奇偶校验值,而保存在RB8中的值为发送端的奇偶校验值,两个奇偶校验值应相等,否则接收字符有错。发现错误要及时通知对方重发。
(4)用第9位数据作多机通信的联络位。计算机与计算机的通信不仅限于点对点的通信,还会出现一机对多机或多机之间的通信,构成计算机网络。按网络的拓扑结构,计算机网络通常可划分为如下几种:星型网、树型网、环型网、总线型网等。有一种比较特殊的总线型网,即主从式或叫广播式网络。所谓主从式,即多台计算机中有一台是主机,其余的为从机(如图7-7所示),从机要服从主机的调度和支配。80C51单片机的串行口方式2、方式3就适合于这种主从式的通信结构。图7-7主从式多机通信网的结构形式第9位数据可以用于多机通信的关键在于巧妙地利用了SM2和接收到的第9位附加数据(接收后放在RB8中)的配合。例如,通信各方约定如下:
①主机向从机发送地址信息,其第9位数据必须为1,而向从机发送数据信息包括命令时,其第9位数据规定为0。
②从机在建立与主机通信之前,随时处于对通信线路的监听状态。在监听状态下必须使SM2=1,此时只能收到主机发出的地址信息(第9位为1),非地址信息被丢弃。③从机接收到地址后应进行识别,是否主机呼叫本站,如果地址符合,确认呼叫本站,此时从机解除监听状态,使SM2=0,同时把本站地址发回主机作为应答,只有这样才能收到主机发送的有效数据。其它从机由于地址不符,仍处于监听状态,继续保持SM2=1,所以无法接收主机的数据。
④主机收到从机的应答信号,比较收与发的地址是否相符,如果不符,则发出复位信号(例如发任一数据,但TB8=1);如果地址相符,则清除TB8,正式开始发送数据和命令。⑤从机收到复位命令后再次回到监听状态,再置SM2=1,否则正式开始发送数据和命令。
下面举例说明按上述约定编写主机和1号从机的联络过程的程序片断,设主、从机均采用方式2工作(方式3用法与此类似,只是波特率设置不同)。
主机呼叫1号从机的联络程序:
7.3I²C总线及应用
7.3.1I²C总线
总线(InterIntegratedCircuitBUS)是Plilips公司推出的串行扩展总线,为二线制,总线上扩展的外围器件及外设接口通过总线寻址。图7-8为I2C总线外围扩展示意。图7-8I2C总线外围扩展
I2C总线由数据线SDA和时钟线SCL构成。SDA/SCL总线上挂接单片机(MCU)、外围器件(如I/O口、日历时钟、ADC、DAC、存储器等)和外设接口(如键盘、显示器、打印机等)。所有挂接在I²C总线上的器件和接口电路都应具有I²C总线接口,而且所有的SDA/SCL同名端相连。
I2C总线接口电路均为漏极开路,故总线必须有上拉电阻。
所有挂接到总线上的器件及接口都通过总线寻址,故I²C总线具有最简单的电路扩展方式。
I2C总线的驱动能力为400 pF,通过驱动扩展可达4000 pF,原规范中传输速率为100 kb/s,新规范的传输速率可达400kb/s。
1.80C51UART的串行扩展接口
80C51的UART有4种工作方式,其中方式0为移位寄存器工作方式,采用最为常见的移位寄存器工作方式,能方便地扩展串行数据传送接口。目前有许多外围器件选择了移位寄存器的串行扩展接口,图7-9为80C51UART的外围扩展示意。
80C51的UART移位寄存器方式(方式0)用于串行同步数据传送,TXD端为同步脉冲输出端,RXD为数据串行输出/输入端。扩展外围器件时,TXD端与外围器件串行口的时钟端相连,RXD则与数据端相连。图7-980C51UART的外围扩展示意
2.I²C总线的串行扩展技术
I²C总线具有十分完善的总线协议,可构成多主机系统;在协议软件支持下,可自动处理总线上任何可能的运行状态。本节将主要介绍I²C总线的虚拟技术。在单片机应用系统中,这种虚拟技术应用十分广泛。
1) I²C总线的串行外围扩展示意
图7-10为总线外围扩展示意。图中只表示出单片机应用系统中常用的总线外围通用器件、外围设备模块、接口以及其它单片机节点。最常使用的通用外围器件有SRAM、EEPROM、ADC/DAC、RTC、I/O口、DTMF等。图7-10I2C总线外围扩展示意外围设备模块有由LED驱动控制器构成的LED显示器,由各种LCD驱动控制器构成的段式、图形点阵、字符点阵液晶显示器等。
具有I2C总线I/O口的器件可构成许多通用接口,如键盘、码盘、打印机接口和LCD显示器接口等。
I2C总线可构成多主机系统,故I²C总线上可挂接一些带I2C总线接口的单片机,因为带I2C接口的单片机中,有支持多主机功能的SFR。除了图7-10中的通用外围器件外,Philips公司还提供了许多带I2C总线接口的专用外围器件,在通信、视频、音响家电系统中得到了广泛的应用。图7-1180C51I2C总线接口的电气结构
I2C总线上所有的外围器件都有规范的器件地址。器件地址由7位组成,它和1位方向位构成了总线器件的寻址字节SLA。寻址字节格式如下:
(1)器件地址(DA3、DA2、DA1、DA0):总线外围接口器件固有的地址编码,器件出厂时就已给定。例如,I2C总线EEPROMAT24C××的器件地址为1010,4位LED驱动器SAA1064的器件地址为0111。表7-1常用I²C接口通用器件的种类、型号及寻址字节7.3.2EEPROM的读写应用练习
1.硬件电路设计
(1)器件选择。带I²C总线接口的EEPROM有许多型号系列,其中AT24C××系列使用十分普遍,有AT24C01/02/04/08/16等,其容量分别为128×8/256×8/512×8/1024×8/2048×8bit。图7-12(b)是一个AT24C02的EEPROM扩展电路,图7-12(a)是其封装引脚示意。图7-12AT24C02及其外围扩展电路
(2)电路设计。AT24C02的TEST脚为测试端,系统中可接地处理。A2、A1、A0可任接,因此I²C总线上可连接多达8片AT24C02,总容量为8×256×8=2048×8 bit。由于片内子地址采用8位地址指针寻址,超过256×8 地址空间,要占用引脚地址,如果使用AT24C04,则A0作为子地址软件寻址位;使用AT24C08、AT24C16时,A1、A2也分别作为子地址的软件寻址位,这时相应的外部A0、A1、A2无效。
(3)节点地址。AT24C××的器件地址是1010,A2、A1、A0为引脚地址。按照图7-12(b)中的连接方式引脚地址为000,因此AT24C02在系统中的寻址字节SLAW=A0H,SLAR=A1H。
2.AT24C02的结构与应用原理
AT24C02为256×8 bit的EEPROM,图7-13为其内部结构示意,由输入缓冲器和EEPROM阵列组成。由于EEPROM的半导体工艺特性,写入时间为5~10 ms,如果从外部直接写入EEPROM,每写一个字节都要等候5~10 ms,成批数据写入时等候时间很长。在设置SRAM性质的输入缓冲器时,对EEPROM的写入变成对SRAM缓冲器的装载,装载完后启动一个自动写入逻辑将缓冲器中的全部数据一次写入EEPROM阵列中。对数据缓冲器的输入称为页写,缓冲器的容量称为页写字节数。AT24C02的页写字节数为8,占用最低3位地址,只要从最低3位零地址开始写入,不超过页写字节数时,对EEPROM器件的写入操作与对SRAM的操作相同。若超过页写字节数,应等候5~10 ms后再启动一次写操作。
由于缓冲区容量较小,只占据最低3位,且不具溢出进位功能,因而在从非零地址写入8个字节数,或从零地址写入字节数超过8个字节时,会形成地址翻卷,导致写入出错。图7-13AT24C02EEPROM内部结构示意
3.AT24C××的数据操作格式
在I²C总线中,对AT24C02内部存储单元读写时,除了要寻址该器件的节点地址外,还须指定存储器读写的子地址(SUBADR)。按照AT24C02的器件手册,读写N个字节的数据操作格式如下:
写N个字节的数据操作格式
读N个字节的数据操作格式在读操作中,除了发送寻址字节外,还要发送子地址SUBADR。因此,在读N个字节操作前,要进行一个字节(SUBADR)的写操作,然后重新启动读操作。
例7-2
在图7-12(b)的扩展电路中,写入一个字节到AT24C02中。
按图7-12(b)的扩展连接,AT24C02的寻址字节(写)为A0H,子地址SUBADR为50H。
程序清单如下:
7.4串行口应用举例
本节介绍串行口作I/O扩展口及在一般异步通信和多机通信中应用的几个实例。
7.4.1用串行口扩展并行I/O
用串行口工作于方式0扩展并行I/O的方法在上一节中已述,此处将给出原理图和简单的控制程序。
1.用并行输入8位移位寄存器74HC165扩展输入口
图7-14是利用3根口线扩展16位输入口线的实用电路。从理论上讲,利用这种方法可以扩展更多的输入口,但扩展的输入口越多,口的操作速度会越低。图7-14利用串行口扩展输入口
2.用8位并行输出串行移位寄存器74HC164扩展输出口
图7-15是利用74HC164扩展16位输出口线的实用电路。由于74HC164无并行输出控制端,在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,应在74HC164与输出装置之间加上输出可控制的缓冲器级(74HC244等),以便串行输入完成后再控制输出。图7-15利用串行口扩展输出口图7-15中的输出装置是两位共阳极七段LED显示器,采用静态显示方式。由于74HC164在低电平输出时,允许通过的电流可达8 mA,故不需要再加驱动电路。与动态扫描显示比较起来,静态显示方式的优点是CPU不必频繁地为显示服务,软件设计比较简单,很容易做到显示不闪烁。
编程把存放在dat_tab中的数据5和8取出,由串行口输出显示,程序如下:7.4.2用串行口作异步通信接口
1.用串行口发送带奇偶校验位的数据块
例7-4编程把存放在data中的32个ASCII码数据在最高位上加奇偶校验后,由串行口发送,采用8位数据异步通信,串行口采用方式1发送,用T1做波特率发生器,设波特率为1200波特/秒,fosc=11.0592MHz。
解用定时器T1模式2做波特率发生器,设波特率不增倍(SMOD=0),其计数初值X为
即TH1=TL1=0E8H。程序如下:7.4.3用串行口作多机通信接口
80C51串行口的方式2和方式3有一个专门的应用领域,即多机通信。这一功能使它可以方便地应用于集散式分布系统中。多机通信的连接方法见图7-7。这里仍以主从式的多机通信结构为例说明多机通信的应用。对于不同的应用场合,人们制定了各种通信协议,本节采用如下几条简单的协议:
(1)系统中允许接有255台从机,它们的地址分别为00H~FFH。
(2)地址FFH是对所有从机都起作用的一条控制命令:命令各个从机恢复SM2=1的状态。
(3)主机发送的控制命令代码为:
00H——要求从机接收数据块;
01H——要求从机发送数据块;
其它——非法命令。
(4)数据块长度:16字节。
(5)从机状态字格式如下:
其中:若ERR=1,表示从机接收到非法指令;若TRDY=1,表示从机发送准备就绪。下面给出串行口通信程序,主程序部分是以子程序的方式给出的,要进行串行通信时,可以直接调用这个子程序。主机在接收或发送完一个数据块后可返回主程序,完成其它任务。从机部分以串行口中断服务程序的方式给出,若从机未做好接收或发送数据的准备,就从中断程序中返回,在主程序中做好准备。故主机在这种情况下不能简单地等待从机准备就绪,而要重新与主机联络,使从机再次进入串行口中断。系统可以采用T1作为波特率发生器,也可采用固定的波特率。主机和从机中对T1初始化的程序从略。
下面设计一个1台主机、255台从机的多机通信系统,程序如下:上述简化程序描述了多级串行通信中从机的基本工作过程,实际应用系统中还应考虑更多的因素,如命令的种类可以更多些;若波特率较低且CPU还要完成其它实时任务,发送和接收过程还可能要采用中断控制方式等。 7.5RS-232C与USB简介
7.5.1RS-232C简介
计算机与计算机或计算机与终端之间的数据传送可以采用串行通信和并行通信两种方式。由于串行通信方式具有使用线路少、成本低等优点,特别是在远程传输时可避免多条线路特性的不一致,因而被广泛采用。在串行通信时,要求通信双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通信。RS-232C接口(又称EIARS-232C)是目前最常用的一种串行通信接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标准。它的全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”,该标准规定采用一个25个引脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。
1.接口信号
EIARS-232C是异步串行通信中应用最广泛的标准总线,它包括了按位串行传输的电气和机械方面的规定,适用于数据终端设备(DTE)和数据通信设备(DCE)之间的接口。其中DTE主要包括计算机和各种终端机,而DCE的典型代表是调制解调器(MODEM)。
RS-232C的机械指标规定:RS-232C接口通向外部的连接器(插针插座)是一种“D”型25针插头。在微机通信中,通常被使用的RS-232C接口信号只有9个引脚,见表7-2。表7-2微机通信中常用的RS-232C接口信号图7-16给出了RS-232C的“D”型9针插头引脚定义图。RS-232C的“D”型25针插头引脚定义如图7-17所示。图7-16“D”型9针插头引脚定义图7-17“D”型25针插头引脚定义
2.电气特性
RS-232C采用负逻辑,即逻辑“1”:-3~-15 V;逻辑“0”:+3~+15 V。
表7-3列出了RS-232C接口的主要电气性能。RS-232C标准信号传输的最大电缆长度为30 m;异步方式速率最高为115.2 kb/s,同步方式最高为128 kb/s。表7-3RS-232C电气特性表
3.电平转换
由于TTL电平和RS-232C电平互不兼容,所以两者接口时,必须进行电平转换。RS-232C与TTL的电平转换最常用的芯片是传输线驱动器MC1488和传输线接收器MC1489,其内部结构与管脚配置如图7-18所示。其作用除了电平转换外,还实现正负逻辑电平的转换。图7-18RS-232C电平转换芯片
MCl488内部有三个与非门和一个反相器,供电电压为±15 V或±12 V,输入为TTL电平,输出为RS-232C电平。
MCl489内部有4个反相器,输入为RS-232C电平,输出为TTL电平,供电电压为+5 V。MC1489中每一个反相器都有一个控制端,高电平有效,可作为RS-232C操作的控制端。在控制端可接一滤波电容。TTL与RS-232C的电平接口电路如图7-19所示。图7-19RS-232C接口电平转换电路7.5.2USB接口简介
1.概述
USB是英文UniversalSerialBus的缩写,中文含义是“通用串行总线”。它不是一种新的总线标准,而是应用在PC领域的新型接口技术。早在1995年,就已经有PC机带有USB接口了,但由于缺乏软件及硬件设备的支
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学信息对抗技术(信息对抗)模拟试题
- 苏州市中考试题及答案
- 190亩大蓟深加工可行性研究报告
- 客户服务部新员工入职培训考试题及答案
- 仓储管理全年工作开展总结
- 橡胶制品厂硫化操作细则
- 季节性施工及钢结构工程专项施工措施
- 混合料工岗后竞赛考核试卷及答案
- 货币防伪知识题库及答案
- 护理操作技能理论题目及答案
- 华文版六年级上册书法教案
- 县域精神富有评价指南
- 20CJ88-1 20CS02-1 餐厨废弃物智能处理设备选用与安装图集(一)
- 《光伏发电工程可行性研究报告编制规程》(NB/T32043-201)中文版
- 建设法规与案例分析教案
- 医疗废物和污水管理领导小组及岗位职责
- 第八版妇产科学配套ppt课件-妊娠特有疾病
- PHP+MySQL动态网站开发基础教程全套完整教学课件
- 端点效应(共12张PPT)
- 体育教学团队申请
- GB/T 1216-2004外径千分尺
评论
0/150
提交评论