1、单片微机原理与接口技术-V1.2-第7章-80C51单片机的串行口及串行总线扩展7.1.1 7.1.1 基本通信方式及特点基本通信方式及特点o 根据根据CPU与外设之间连线结构和数据传送方式的与外设之间连线结构和数据传送方式的不同,将通信方式分为不同,将通信方式分为并行通信并行通信和和串行通信串行通信。o并行通信是指数据的各位同时发送或接收,并行通信是指数据的各位同时发送或接收,每个数据位使用单独的一条导线每个数据位使用单独的一条导线,并行通信并行通信的特点是各数据位同时传送,的特点是各数据位同时传送,传送速度快、效率传送速度快、效率高,但并行数据传送需要较多的数据线。高,但并行数据传送需要较
2、多的数据线。o串行通信是指数据一位接一位顺序发送或串行通信是指数据一位接一位顺序发送或接收。接收。串行通信的特点是数据传送按位顺序进行,串行通信的特点是数据传送按位顺序进行,最少只需一根传输线即可完成,最少只需一根传输线即可完成,成本低但速度慢,成本低但速度慢,一般适用于较长距离传送数据。一般适用于较长距离传送数据。7.1.2 7.1.2 串行通信的数据传送方式串行通信的数据传送方式 1 1单工方式单工方式 两个通信设备之间的数据传送方向是单向两个通信设备之间的数据传送方向是单向的。的。 2 2半双工形式半双工形式 两个通信设备之间的数据传送是双向的,两个通信设备之间的数据传送是双向的,但对一
3、个设备而言,其发送和接收不能同但对一个设备而言,其发送和接收不能同时进行。时进行。 3 3全双工方式全双工方式 两个设备之间的数据传送是双向的,两串两个设备之间的数据传送是双向的,两串行通信设备之间的数据传送可向两个方向传行通信设备之间的数据传送可向两个方向传送,且可同时进行发送和接收数据。送,且可同时进行发送和接收数据。7.1.3 7.1.3 串行通信的分类串行通信的分类 根据数据传送时的编码格式不同,串行通根据数据传送时的编码格式不同,串行通信又分为信又分为异步通信异步通信和和同步通信同步通信两种方式。两种方式。 1.1.同步通信同步通信 所有设备都使用同一个时钟,称为同步时钟所有设备都使
4、用同一个时钟,称为同步时钟。在数据传送时,以若干个数据字符(称为数在数据传送时,以若干个数据字符(称为数据块)为据块)为1帧进行传输,每帧包括同步字符、帧进行传输,每帧包括同步字符、数据块和校验字符数据块和校验字符CRC。 2异步通信异步通信o 异步通信是指在串行通信中,接收设备异步通信是指在串行通信中,接收设备和发送设备和发送设备有各自的时钟信号有各自的时钟信号,异步通异步通信以字符为单位进行数据传送,不过通信以字符为单位进行数据传送,不过通信中这些时钟频率必须保持一致。信中这些时钟频率必须保持一致。7.1.4 串行通信的波特率 衡量串行通信系统中数据传输的快慢程度。衡量串行通信系统中数据传
5、输的快慢程度。o 波特率:波特率:指每秒钟传送信号的数量指每秒钟传送信号的数量,单位,单位为波特(为波特(B,Baud)。)。o 比特率:比特率:每秒钟传送二进制数的信号数每秒钟传送二进制数的信号数(即二进制数的位数),(即二进制数的位数),单位是单位是bps(bit per second)或写成)或写成b/s(位(位/秒)。秒)。o在在单片机单片机串行通信中,传送的信号是二串行通信中,传送的信号是二进制信号,因此进制信号,因此波特率与比特率数值上波特率与比特率数值上相相等,单位采用等,单位采用bps。o 例如,通信双方每秒钟所传送数据的速例如,通信双方每秒钟所传送数据的速率是率是960960
6、字符字符/ /秒,每一字符包含秒,每一字符包含1010位(位(1 1个起始位、个起始位、8 8个数据位、个数据位、1 1个停止位),个停止位),则波特率为则波特率为 960 960 10 =2400b/s=2400B10 =2400b/s=2400B7.2 80C517.2 80C51单片机的串行口单片机的串行口 80C51单片机带有一个全双工的串行通单片机带有一个全双工的串行通信接口,可作:信接口,可作: 通用异步接收通用异步接收/发送器发送器UART 同步移位寄存器同步移位寄存器 网络通信网络通信7.2.1 MCS-517.2.1 MCS-51单片机串行口的结构单片机串行口的结构数据发送、
7、接收使用数据发送、接收使用两个物理上独立两个物理上独立的的同名的同名的接接收收/发送缓冲寄存器发送缓冲寄存器SBUF(字节地址都是(字节地址都是99H)。)。发送缓冲寄存器只能写入数据不可以读出数据,发送缓冲寄存器只能写入数据不可以读出数据,收缓冲寄存器只可以读出数据不可以写入数据,收缓冲寄存器只可以读出数据不可以写入数据,两个缓冲器功能的确定用读、写指令加以区分。两个缓冲器功能的确定用读、写指令加以区分。o 执行执行MOV SBUF,A指令启动一次数据发送指令启动一次数据发送o 执行执行MOV A,SBUF指令完成一次数据接收指令完成一次数据接收o 无论是采用中断方式还是查询方式工作,无论是
8、采用中断方式还是查询方式工作,每接每接收收/ /发送一个数据都必须用指令对发送一个数据都必须用指令对 RI/TI RI/TI 清清0 0,以备下一次收以备下一次收/发。发。 7.2.2 MCS-517.2.2 MCS-51单片机串行口控制单片机串行口控制SCON和和PCON专门用来对串行口进行设置专门用来对串行口进行设置。1串行口控制寄存器串行口控制寄存器SCON 字节地址为字节地址为98H,可按位寻址。可按位寻址。SCONZSCONZ(98H98H)位地址位地址D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0SM0SM0SM1SM1SM2SM2RENRENTB8TB8RB8R
9、B8TITIRIRI9FH9FH9EH9EH9DH9DH9CH9CH9BH9BH9AH9AH99H99H98H98HoSM0SM0,SM1SM1:工作方式控制位。:工作方式控制位。 00时时,串口方式,串口方式0,8位同步移位寄存器,位同步移位寄存器,仅用于扩展仅用于扩展I/O口时使用,其口时使用,其波特率为波特率为fosc/12。 01时时,串口方式,串口方式1,为,为10位位UART,其,其波特率为可变波特率为可变,由定时器控制。,由定时器控制。 10时时,串口方式,串口方式2,为,为1111位位UARTUART,其波特,其波特率为率为f fosc/64osc/64或或f fosc/32o
10、sc/32。 11时时,串口方式,串口方式3,为,为11位位UART,其波,其波特率为可变特率为可变,由定时器控制。,由定时器控制。o 串行口的这串行口的这4种工作方式中,种工作方式中, 方式方式0并不用于通信,并不用于通信,而是通过外接移位而是通过外接移位寄存器芯片实现扩展寄存器芯片实现扩展I/O口的功能,该口的功能,该方式又称为方式又称为移位寄存器方式;移位寄存器方式; 方式方式1、2、3都是异步通信方式都是异步通信方式。 方式方式1 1一帧信息由一帧信息由1010位组成,用于双机通位组成,用于双机通信;信; 方式方式2和和3每帧信息都是每帧信息都是11位,其区别位,其区别仅在于波特率不同
11、。仅在于波特率不同。方式方式2 2和和3 3主要用于主要用于多机通信,也可用于双机通信。多机通信,也可用于双机通信。o RB8: 在方式在方式0 0时,时,RB8RB8不用。不用。 在方式在方式1 1时,时,SM2=0SM2=0,RB8RB8接收的是停止位。接收的是停止位。 在方式在方式2、3中,用于存放收到的中,用于存放收到的第第9位数据位数据;在在双机通信中,作为奇偶校验双机通信中,作为奇偶校验;在;在多机通信多机通信中,用作区别地址帧中,用作区别地址帧/数据帧的标志。数据帧的标志。 TB8: 在方式在方式2、3中,是要发送的第中,是要发送的第9位数据;位数据; 在双机通信中,用于对接收到
12、的数据进行在双机通信中,用于对接收到的数据进行奇偶校验;奇偶校验; 在多机通信中,用作判断地址帧在多机通信中,用作判断地址帧/ /数据帧,数据帧,TB8=0 TB8=0 表示发送的是数据表示发送的是数据 TB8=1 TB8=1 表示发送的是地址。表示发送的是地址。o TI:发送中断标志位,用于指示一帧信息:发送中断标志位,用于指示一帧信息发送是否完成,可位寻址。发送是否完成,可位寻址。 方式方式0 0时发送完第时发送完第8 8位数据后由硬件自动置位数据后由硬件自动置位位TITI。 其他方式下,开始发送停止位时硬件自动其他方式下,开始发送停止位时硬件自动置位置位TITI。 TITI置位表示一帧信
13、息发送完成,同时申请置位表示一帧信息发送完成,同时申请中断。中断。TI在发送数据前必须由软件清零。在发送数据前必须由软件清零。o RI:接收中断标志位,用于指示一帧信:接收中断标志位,用于指示一帧信息是否接收完成,也可位寻址。息是否接收完成,也可位寻址。 在串行接收(不考虑在串行接收(不考虑SM2)时,)时,在方式在方式0 0时接收完第时接收完第8 8位数据后,或在其他方式位数据后,或在其他方式接收到停止位的中间时刻由硬件置位接收到停止位的中间时刻由硬件置位RIRI,RI置位表示一帧信息接收完毕,并发出置位表示一帧信息接收完毕,并发出中断申请。中断申请。 它也必须由软件清零。它也必须由软件清零
14、。 SM2:为多机通信控制位,允许工作在方式:为多机通信控制位,允许工作在方式2和方式和方式3的单片机实现多机通信。的单片机实现多机通信。o 在工作方式在工作方式2 2或方式或方式3 3时:时: 若若SM2=1: 当接收到的第当接收到的第9 9位数据(位数据(RB8RB8)为)为0 0时,不启动时,不启动接收中断标志接收中断标志RIRI,即,即RI=0RI=0,并将接收到的前,并将接收到的前8 8位数据丢弃;位数据丢弃; 当当RB8=1RB8=1时,把接收到的前时,把接收到的前8 8位数据送入位数据送入SBUFSBUF,且置且置RI=1RI=1,发出中断申请,接收数据有效。,发出中断申请,接收
15、数据有效。 当当SM2=0: 不管第不管第9 9位是位是0 0还是还是1 1,都将接收到的前,都将接收到的前8 8位位数据送入数据送入SBUFSBUF,并发出中断申请。,并发出中断申请。o 在工作方式在工作方式1 1时:时: 若若SM2=1SM2=1,当接收有效停止位时,置,当接收有效停止位时,置RI=1RI=1,数据有效;没有接收到有效停止位时,数据有效;没有接收到有效停止位时,RI=0RI=0,数据无效。,数据无效。o 在工作方式在工作方式0 0时:时:SM2SM2不用,应设置为不用,应设置为0 0。o RENREN:接收允许控制位接收允许控制位,用于控制是否允许,用于控制是否允许接收数据
16、。接收数据。REN=0REN=0时,表示禁止接收数据;时,表示禁止接收数据;REN=1REN=1时表示允许接收数据。时表示允许接收数据。该位的置位该位的置位/ /清清零由软件控制。零由软件控制。o 2 2电源控制寄存器电源控制寄存器PCONPCON PCONPCON,地址为,地址为87H87H。SMODSMOD为波特率加倍位,在计算串行方式为波特率加倍位,在计算串行方式1 1、2 2、3 3的波特率时,的波特率时, SMOD0时波特率不加倍;时波特率不加倍;SMOD1时波特时波特率加倍。率加倍。 系统复位时默认为系统复位时默认为SMOD0。PCONPCON(98H98H)D7D7D6D6D5D
17、5D4D4D3D3D2D2D1D1D0D0SMODSMODGF1GF1GF0GF0PDPDIDLIDL3串行通信的工作方式串行通信的工作方式(1 1)工作方式)工作方式0 0n 当当SM0 SM1=00SM0 SM1=00时,串行口工作在方式时,串行口工作在方式0 0。串。串行口在工作方式行口在工作方式0 0下为下为8 8位同步移位寄存器输位同步移位寄存器输入入/ /输出方式,波特率固定为输出方式,波特率固定为f fOSCOSC/12/12。工作。工作方式方式0 0下,串行口的发送条件是下,串行口的发送条件是TI=0TI=0;接收;接收条件是条件是TI=0TI=0且且 REN=1 REN=1
18、(允许接收数据)。(允许接收数据)。o串行数据由串行数据由RxDRxD(P3.0P3.0)逐位移出)逐位移出/ /移入移入(低位在先,高位在后);(低位在先,高位在后);oTxDTxD(P3.1P3.1)输出移位时钟,)输出移位时钟,o频率为系统时钟频率频率为系统时钟频率f foscosc的的1/121/12。o发送发送/ /接收数据时,每送出接收数据时,每送出/ /接收接收8 8位位数据数据 TI/RI TI/RI自动置自动置1 1;需要用软件清零;需要用软件清零 TI/RITI/RI。(2 2)工作方式)工作方式1 1 SM0 SM1=01,波特率可变,波特率可变,10位异步通信方位异步通
19、信方式式 ,RxD为接收端,为接收端,TxD为发送端。为发送端。 波特率由定时波特率由定时/计数器的溢出率及计数器的溢出率及PCON.7决定。决定。 该方式下,该方式下,发送或接收一帧信息包括发送或接收一帧信息包括1 1个起始位个起始位0 0,8 8个数据位和个数据位和1 1个停止位个停止位1 1。o SBUF中的中的串行数据由串行数据由RXD逐位移入;逐位移入;TXD输出输出串行数据。串行数据。o 数据移入数据移入/移出的频率移出的频率=(2SMOD /32) T1(或(或T0)的溢出率。)的溢出率。o 发送发送/接收数据时,接收数据时,每送出每送出/ /接收接收8 8位数据位数据 TI/
20、RI TI/ RI自自动置动置1 1;需要用软件清零;需要用软件清零 TI/ RI TI/ RI。 o工作时,工作时,发送端自动添加一个起始位和一个发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。停止位。方式方式1 1发送工作过程:发送工作过程:CPUCPU执行一条执行一条MOV MOV SBUF,A SBUF,A 指令,则启动了串行口发送,指令,则启动了串行口发送,串行口自串行口自动在动在8 8个串行数据位的前、后分别插入个串行数据位的前、后分别插入1 1位起位起始位(始位(0 0)和)和1 1位停止位(位停止位(1 1),构
21、成),构成10 10位数据位数据帧,帧,然后按设定的波特率依次然后按设定的波特率依次从从TxDTxD上输出起始位、上输出起始位、数据位、停止位,数据从数据位、停止位,数据从TxDTxD输出。输出。一帧信息发送一帧信息发送完毕之后,硬件置发送中断标志完毕之后,硬件置发送中断标志TI=1TI=1,表示发送缓,表示发送缓冲区内容已发送完毕,并向冲区内容已发送完毕,并向CPUCPU申请中断。申请中断。o 方式方式1接收接收工作工作过程:过程:在在RI=0RI=0且且REN=1REN=1条件下条件下启动,此时接收器开始工作。当启动,此时接收器开始工作。当接收电路采样接收电路采样到输入信号从到输入信号从1
22、 1到到0 0的负跳变时,确认是开的负跳变时,确认是开始位始位0 0,就启动接收控制器接收数据。,就启动接收控制器接收数据。控制控制器发出内部移位脉冲将器发出内部移位脉冲将RxDRxD上的数据逐位移入移上的数据逐位移入移位寄存器,当位寄存器,当8 8位数据及停止位全部移入后,再位数据及停止位全部移入后,再进行操作。进行操作。o 为了避免时钟差异的影响,控制器将位的传送时为了避免时钟差异的影响,控制器将位的传送时间分成间分成1616等分,位检测器在等分,位检测器在7 7、8 8、9 9三个状态采三个状态采样样RxD3RxD3次,次,3 3次采样中至少次采样中至少2 2次相同的值被确认为次相同的值
23、被确认为数据。数据。o接收操作时:接收操作时: 若若RI=0RI=0、SM2=0SM2=0,将,将8 8位数据装入接收数据缓冲位数据装入接收数据缓冲器器SBUFSBUF,停止位装入,停止位装入RB8RB8,并置,并置RI=lRI=l,向,向CPUCPU发出发出中断请求信号;中断请求信号; 若若RI=0RI=0、SM2=1SM2=1,则只有在停止位为,则只有在停止位为1 1时才发生时才发生上述操作;上述操作; 若若RI=0RI=0、SM2=1SM2=1,且停止位为,且停止位为0 0,则所接收的数,则所接收的数据不装入据不装入SBUFSBUF,即数据丢失;,即数据丢失; 若若RI=1,则所接收的数
24、据在任何情况下都不,则所接收的数据在任何情况下都不装入装入SBUF,即数据丢失。,即数据丢失。 无论出现哪一种情况,跳变检测器将无论出现哪一种情况,跳变检测器将继续采样继续采样RxDRxD引脚上的负跳变,以便接引脚上的负跳变,以便接收下一帧信息。收下一帧信息。o 移位器采用移位寄存器和移位器采用移位寄存器和SBUFSBUF双缓冲结双缓冲结构,构,以避免在接收后一帧数据之前,以避免在接收后一帧数据之前,CPU尚未及时响应中断而将前一帧数据尚未及时响应中断而将前一帧数据取走,造成取走,造成两帧数据重叠。两帧数据重叠。o 采用双缓冲结构后,采用双缓冲结构后,前、后两帧数据进前、后两帧数据进入入SBU
25、FSBUF的时间间隔至少有的时间间隔至少有1010个机器周期。个机器周期。在后一帧数据送入在后一帧数据送入SBUF之前,之前,CPU有有足够的时间将前一帧数据取走。足够的时间将前一帧数据取走。 (3 3)工作方式)工作方式2 2和工作方式和工作方式3 3 o 都是都是11位异步接收位异步接收/发送方式。发送或接收的一帧发送方式。发送或接收的一帧信息由信息由11位组成。其中,位组成。其中,1位起始位、位起始位、9位数据位位数据位和和1位停止位。位停止位。o 方式方式2的波特率固定为的波特率固定为fosc /64o 方式方式3的波特率为的波特率为=(2SMOD /32) T的溢出率的溢出率o 方式
26、方式2的接收的接收/发送过程类似于方式发送过程类似于方式1,所不同的是,所不同的是,它比方式它比方式1增加了一位增加了一位“第第9位位”数据(数据(TB8/RB8),),用于用于“奇偶校验奇偶校验”。 奇校验规定奇校验规定8 8位有效数据连同位有效数据连同1 1位附加位中,二进制位附加位中,二进制数数“1 1”的个数为奇数;偶校验规定的个数为奇数;偶校验规定8 8位有效数据连同位有效数据连同1 1位附加位中,二进制数位附加位中,二进制数“1 1”的个数为偶数。的个数为偶数。o 奇校验时,奇校验时,若发送的若发送的8 8位有效数据中位有效数据中“1 1”的个数为偶的个数为偶数,则要人为在附加位中
27、添加一个数,则要人为在附加位中添加一个“1 1”一起发送;一起发送;若发送的若发送的8位有效数据中位有效数据中“1”的个数为奇数,则要的个数为奇数,则要人为在附加位中添加一个人为在附加位中添加一个“0”一起发送。一起发送。o 约定接收采用奇校验时,约定接收采用奇校验时,若接收到的若接收到的9位数据中位数据中“1”的个数为奇数,则表明接收正确,的个数为奇数,则表明接收正确,取出取出8位有效数位有效数据即可;若接收到的据即可;若接收到的9位数据中位数据中“1”的个数为偶数,的个数为偶数,则表明接收出错,应当进行出错处理。则表明接收出错,应当进行出错处理。o 采用偶校验时,处理方法与奇校验类似。采用
28、偶校验时,处理方法与奇校验类似。o 奇偶校验并不能保证通信数据的传输一定正奇偶校验并不能保证通信数据的传输一定正确。即如果奇偶校验发生错误,表明数据传确。即如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。不等于数据传输完全正确。4 4串行通信的波特率设置串行通信的波特率设置o 方式方式0的波特率为晶振频率的的波特率为晶振频率的1/12。o 方式方式2的波特率为:的波特率为:波特率波特率= =(2 2SMODSMOD/64/64)foscfosco 方式方式1和方式和方式3的波特率的波特率 波特率波特率= =(2
29、 2SMODSMOD /32 /32)定时器的溢出率)定时器的溢出率 定时器的溢出率定时器的溢出率=1/=1/产生溢出所需的时间产生溢出所需的时间= =(f f OSCOSC/12/12)/ /(2 2N N TCTC) 其中:其中:N为定时器为定时器T1/T0的位数,的位数,TC为定时器为定时器T1/T0的预置初值。的预置初值。o 经验证,经验证,当时钟频率选用当时钟频率选用11.0592MHz时时,容易获得标准的波特率,容易获得标准的波特率,所以很多单片机系,所以很多单片机系统选用这个晶振频率。统选用这个晶振频率。 定时器定时器T1在方式在方式2时的常用波特率及初值时的常用波特率及初值 常
30、用波特率常用波特率/bpsfosc / MHzSMODTH1初值初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4H120011.05920E8H7.3 80C517.3 80C51单片机的串行口应用单片机的串行口应用例例1 应用串行口控制应用串行口控制的键盘和显示的硬的键盘和显示的硬件电路图如图,试件电路图如图,试编写程序。编写程序。串行口控制的键盘和显示的程序流程图串行口控制的键盘和显示的程序流程图 ORG0000HSJMPMAINORG0030HMAIN: NOPCSHX: SETBP3.3;开放显示开放显示MOV
31、R7,#06H;显示位数显示位数MOVR0,#00H;R0初始化初始化MOVDPTR,#CSTAB;字形代码表首地址字形代码表首地址DL0:MOVA,R0;加上偏移量加上偏移量MOVCA,A+DPTR;取出字形表代码取出字形表代码MOVSBUF,A;送出显示送出显示(1 1)初始化显示程序)初始化显示程序DL1:JNBTI,DL1;输出完成否?输出完成否?CLRTI;清中断标志清中断标志INCR0;偏移量加偏移量加 1DJNZR7,DL0;显示输出是否结束?显示输出是否结束?CLRP3.3;关显示关显示SJMPKEY;CSTAB:DB7DH,3FH,07H,40H,76H,7CH;字形表字形表
32、(2 2)键盘和显示程序)键盘和显示程序o KEY:MOV A,#00H;对键盘进行扫描对键盘进行扫描o MOV R0,#58Ho MOV SBUF,Ao KL0:JNB TI,KL0;发送结束否?发送结束否?o CLR TI ;清中断标志清中断标志o KL1:JNB P3.4,PK1;第一排有键闭合吗?第一排有键闭合吗?o JB P3.5,KL1;第二排有键闭合吗?第二排有键闭合吗?o PK1:ACALL D10MS;延时延时o JNB P3.4,PK2 ;是否抖动?是否抖动?o JB P3.5,KL1o PK2:MOV R7,#08H ;不是抖动不是抖动o MOV R6,#0FEH;这一排
33、哪一个键被按下?这一排哪一个键被按下?o MOV R3,#00Ho MOV A,R6;o KL5: MOV SBUF,A;对本排逐行扫描对本排逐行扫描o KL2: JNB TI,KL2;等待等待o CLR TI ;清中断清中断o JNB P3.4,PK0;是第一排某个键?是第一排某个键?o JB P3.5,NEXT;是第二排某个键?是第二排某个键?o MOV R4,#08H;是第二排按下是第二排按下o AJMP PK3 ;o PK0: MOV R4,#00H;是第一排按下是第一排按下o PK3: MOV A,#00H;等待释放等待释放o MOV SBUF,Ao KL3: JNB TI,KL3o
34、 CLR TI;o KL4: JNB P3.4,KL4o JNB P3.5,KL4o MOV A,R4 ;按键释放按键释放,取得键值取得键值o ADD A,R3o o MOV R0,Ao INC R0o AJMP KK o NEXT:MOV A,R6 ;判断下一行是否有键按下判断下一行是否有键按下o RL Ao MOV R6,Ao INC R3o DJNZ R7,KL5o KK: ACALL DISPLAY ;调显示子程序调显示子程序o AJMP KEYDISPLAY: SETB P3.3 ;显示子程序显示子程序o MOV R7,#08Ho MOV R0,#58H ;58H为显示缓冲区首址为显
35、示缓冲区首址o DS0: MOV A,R0 ;取显示数据取显示数据o MOV DPTR,#DTAB ;字形表首址字形表首址o MOVC A,A+DPTR ;取字形数据取字形数据o MOV SBUF,A ;送显示送显示 DS1: JNB TI,DS1o CLR TIo INC R0o DJNZ R7,DS0o CLR P3.3;关显示关显示o RETD10MS:NOP;延时延时10ms子程序子程序 (略)(略)o RET DTAB: DBo 例例: :用用80318031串行口连接串行口连接2 2片片165,165,扩展扩展1 1个个1616位的并行输入口位的并行输入口, ,编程实现从编程实现从
36、1616位并行口位并行口输入输入1010次数据次数据(20(20次次8 8位数据位数据), ),存入到内部存入到内部RAMRAM区区. .o MOV R7,#14Ho MOV R0,#50Ho SETB F0 RCV0:CLR P1.0o SETB P1.0oRCV1:MOV SCON,#10Ho JNB RI,$o CLR RIo MOV A,SBUFo MOV R0,Ao INC R0o CPL F0o JB F0,RCV2o DEC R7o SJMP RCV1oRCV2: DJNZ R7,RCV0o 例例: :用用80318031串行口连接串行口连接2 2片片164,164,扩展扩展1
37、1个个1616位的并行输出口位的并行输出口, ,用查询法编程实现从用查询法编程实现从1616位位并行口输出并行口输出2 2位位7 7段段LEDLED显示器显示器. .设设2 2位数据存位数据存在内部在内部RAM20H,21H.(164RAM20H,21H.(164与显示器之间可与显示器之间可以加上输出锁存器以加上输出锁存器, ,使得输出更加稳定使得输出更加稳定) )o MOV R7,#02Ho MOV R0,#20Ho MOV SCON,#00H DSP1: MOV A ,R0o MOV DPTR,#TABHo MOV A,A+DPTRo MOV SBUF,Ao JNB TI,$o CLR T
38、Io INC R0o DJNZ R7,DSP1o REToTAB: DB C0H,F9H,A4H,B0H,99Ho DB 92H,82H,F8H,80H,98Ho 单片机之间的通信,除了采用相同的波特单片机之间的通信,除了采用相同的波特率,通信双方还必须遵循同一协议,其中率,通信双方还必须遵循同一协议,其中简单的通信协议可以自己设计,并按设计简单的通信协议可以自己设计,并按设计的协议编写通信程序的协议编写通信程序。o 例:双机通信例:双机通信:1号机将内部号机将内部RAM的的40H4FH中的中的16个无符号随机数通过串行个无符号随机数通过串行口发送到口发送到2号机,号机,2号机将接收到的号机将
39、接收到的1号机发送号机发送过来的数据存放在过来的数据存放在RAM的的40H4FH单元,单元,要求采用累加校验。设单片机的晶振频率为要求采用累加校验。设单片机的晶振频率为11.0592MHz,波特率为,波特率为2400bps,采用,采用串口方式串口方式1,试编写程序。,试编写程序。o (1 1)发送程序清单)发送程序清单o ORG 1000Ho ASTART: CLR EAo MOV TMOD,#20H ;定时器1工作于方式2o MOV TH1,#0F4H ;波特率为2400bpso MOV TL1,#0F4H o MOV PCON,#00H ;波特率不加倍o SETB TR1 ;启动定时器T1
40、o MOV SCON,#50H ;串口方式1,允许接收o ALOOP1: MOV SBUF,#0E1H ;发送联络信号o JNB TI,$ ;等待一帧发送完毕o CLR TI ;允许再发送o JNB RI,$ ;等待2号机的应答信号o CLR RI ;允许再接收o MOV A,SBUF ;2号机应答后,读至Ao XRL A,#0E2H ;判断2号机是否准备完毕o JNZ ALOOP1 ;2号机未准备好,继续联络oALOOP2:MOV R0,#40H ;设定数据块地址指针初值oMOV R7,#10H ;设定数据块长度初值oMOV R6,#00H ;清校验和单元oALOOP3:MOV SBUF,R
41、0 ;发送一个数据字节oMOV A,R6 ;检验字送累加器AoADD A,R0 ;求校验和oMOV R6,A ;保存校验和oINC R0 ;地址单元加1oJNB TI,$ ;等待发送完oCLR TI ;清发送标志位oDJNZ R7,ALOOP3 ;整个数据块是否发送完毕oMOV SBUF,R6 ;发送校验和oJNB TI,$ ;等待发送完oCLR TI ;清发送标志oJNB RI,$ ;等待2号机的应答信号oCLR RI ;清接受标志oMOV A,SBUF ;2号机应答,读至AoJNZ ALOOP2 ;2号机应答“错误”,转重新发送oRET ;2号机应答“正确”,返回oENDo (2 2)接收
42、程序清单)接收程序清单oORG 1000HoBSTART: CLR EAoMOV TMOD ,#20H ;设置定时器;设置定时器1工作方式工作方式2oMOV TH1,#0F4H ;设置;设置T1初值初值oMOV TL1,#0 F4HoMOV PCON,#00H ;波特率不加倍;波特率不加倍oSETB TR1 ;启动;启动T1oMOV SCON,#50H ;设定串口工作方式;设定串口工作方式1,且准备接收,且准备接收oBLOOP1: JNB RI ,$ ;等待;等待1号机的联络信号号机的联络信号oCLR RI ;清接收标志位;清接收标志位o MOV A,SBUF ;收到;收到1号机的信号号机的信
43、号o XRL A,#0E1H ;判断是否为;判断是否为1号机联络信号号机联络信号oJNZ BLOOP1 ;不是;不是1号机联络信号,再等待号机联络信号,再等待oMOV SBUF,#0E2H ;是;是1号机联络信号,发应答信号号机联络信号,发应答信号o JNZ TI,$ ;等待发送完毕;等待发送完毕o CLR TI ;清发送标志;清发送标志o MOV R0,#40H ;设定数据块地址指针初值;设定数据块地址指针初值o MOV R7,#10H ;设定数据块长度初值;设定数据块长度初值o MOV R6,#00H ;清校验和单元;清校验和单元BLOOP2:JNZ RI,$ ;等待接收信息;等待接收信息
44、o CLR RI ;清接收标志位;清接收标志位o MOX A,SBUF ;读取接收缓冲区内容;读取接收缓冲区内容o MOX R0,A ;接收数据转储;接收数据转储o INC R0 ;存储单元加;存储单元加1o ADD A,R6 ;求校验和;求校验和o MOV R6,A ;校验和存入;校验和存入R6o DJNZ R7,BLOOP2 ;判断数据块是否接收完毕;判断数据块是否接收完毕o JNB RI,$ ;完毕,接收;完毕,接收1号机发来的校验和号机发来的校验和o CLR RI ;清接收标志位;清接收标志位o MOV A,SBUF ;发送;发送o XRL A,R6 ;比较校验和;比较校验和o JZ
45、EDN1 ;校验和相等,跳至发正确标志;校验和相等,跳至发正确标志o MOV SBUF,#0FFH ;校验和不相等,发错误标志;校验和不相等,发错误标志o JNB TI,$ ;转重新接收;转重新接收o CLR TI ;清发送标志位;清发送标志位 END1:MOV SBUF,#00H ;缓冲区清零;缓冲区清零o RET ;子程序返回;子程序返回o END2. 多机通信多机通信o 主从式多机通信主从式多机通信,即在数个单片机中,只有一,即在数个单片机中,只有一个是主机,其余都是从机。主机发出的信息只个是主机,其余都是从机。主机发出的信息只能传送到所有从机或指定的从机,而从机发出能传送到所有从机或指
46、定的从机,而从机发出的信息只能被主机接收,各从机之间不可以直的信息只能被主机接收,各从机之间不可以直接通信,各从机的之间的通信必须通过主机进接通信,各从机的之间的通信必须通过主机进行。行。o 在由在由MCS-51组成的主从式多机通信系统中,组成的主从式多机通信系统中,主机只有一台,从机最多有主机只有一台,从机最多有256台。台。4单片机与单片机与PC通信通信o 单片机与单片机与PC的通信,一般采用的通信,一般采用RS-232或或RS-485协议,协议,o RS-232接口是接口是由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标用于串行通信的
47、标准。准。o 它的全名是它的全名是“数据终端设备(数据终端设备(DTE)和数据)和数据通信设备(通信设备(DCE)之间串行二进制数据交)之间串行二进制数据交换接口技术标准换接口技术标准”。o RS-232标准定义了电压、阻抗等,但不对软件协议给予定义。目前RS-232C是PC与通信工业中应用最广泛的一种串行接口。oRS-232采取不平衡传输方式,即所谓单端通信,收、发端的数据信号相对于信号地。典型的RS-232信号在正、负电平之间摆动,o 发送时,发送端驱动器输出发送时,发送端驱动器输出: :o 正电平在+5+15Vo 负电平在-5-15Vo 接收器典型的工作电平在工作电平在+3+12V与与-
48、3-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差共模抑制能力差,再加上双绞线上的分布电容,o 其传送距离最大约为15mo最高速率为20kbps。o RS-232是为点对点(即只用一对收、发设备)通信而设计的,o 其驱动器负载为37 ko所以所以RS-232适合本地设备之间的通信。适合本地设备之间的通信。引脚引脚功能功能引脚引脚功能功能1(PGND)地线地线6(DSR)数据装置准备好数据装置准备好2(TxD)发送数据发送数据7(SGND)信号地信号地3(RxD)接收数据接收数据8(DCD)接收线信号检出接收线信号检出4(RTS)请求发送请求发送20(DTR)数据终端
49、准备好数据终端准备好5(CTS)允许发送允许发送22(RI)振铃指示振铃指示DB-25DB-25连接器引脚功能连接器引脚功能 引脚引脚功能功能引脚引脚功能功能1(DCD)接收线信号接收线信号检出检出6(DSR)数据装置准数据装置准备好备好2(RxD)接收数据接收数据7(RTS)请求发送请求发送3(TxD)发送数据发送数据8(CTS)允许发送允许发送4(DTR)数据终端准数据终端准备好备好9(RI)振铃指示振铃指示5(SGND)信号地信号地DB-9DB-9连接器的引脚功能连接器的引脚功能 o 由于由于RS-232C采用负逻辑采用负逻辑,为了能够同计,为了能够同计算机接口或终端的算机接口或终端的T
50、TL器件连接,器件连接,必须在必须在RS-232C与与TTL电路之间进行电平和逻辑电路之间进行电平和逻辑关系的变换。关系的变换。o 常用的转换器件有常用的转换器件有:o MC1488,SN75150(TTL电平到电平到EIA电平的转换)电平的转换)o MC1489,SN75154( EIA电平到电平到TTL电平的转换)电平的转换)o MAX232(完成(完成TTL到到EIA的双向电平转的双向电平转换)换) MAX232MAX232引脚排列与内部功能结构引脚排列与内部功能结构 RS-232CRS-232C与单片机系统接口电路与单片机系统接口电路 单片机与单片机与PCPC机的连接机的连接串口调试助