第一章 系统总体方案
51单片机本身具有一个全双工的串行口,两个单片机之间可以直接进行串口通信,本次的设计是要求通过RS232进行单片机之间的通信,因为51单片机输入、输出电平为TTL电平,但由于单片机的TTL逻辑电平和RS-232的电气特性完全不同,RS-232的逻辑0电平规定为+5~+15V之间,逻辑1电平为-5~-15V之间,因此要选用MAX232电平转换芯片,发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接受方接收后,在数码管上显示接收的信息。为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接收。从机收到16个正确数据后送到一个数码管显示。串行口的工作方式为8位UART,波特率可变(T1溢出率/n)。定时器的工作方式为工作方式2。
图一 RS-232电平信号传输的连接图
2
第二章 硬件电路的设计
2.1 单片机系统
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 标准型89系列单片机是与MCS-51系列单片机兼容的。在内部含有4KB或8KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0~33MHz,有3级程序存储器加密锁定,内含有128~256字节的RAM、32条可编程的I/O端口、2~3个16位定时器/计数器,6~8级中断,此外有通用串行接口、低电压空闲模式及掉电模式。AT89C51相当于将8051中的4KB ROM换成相应数量的Flash存储器,其余结构、供电电压、引脚数量及封装均相同,使用时可直接替换。AT89C51在内部采用40条引脚的双列直插式封装,引脚排列如图2所示
图2 AT89C51芯片引脚图
51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:
(1)串行数据缓冲器(SBUF)
3
接受或发送的数据都要先送到SBUF缓存。SBUF包括缓存寄存器和发送寄存器,以便能以全双工方式进行通信。此外,在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,这样可以避免在数据接收过程中出现帧重叠错误。发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路不需要双重缓冲结构。在逻辑上,SBUF只有一个,它既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H。但在物理结构上,则有两个完全独立的SBUF,一个是发送缓冲寄存器SBUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别访问上述两个不同的寄存器。 (2)串行控制寄存器(PCON)
串行控制寄存器SCON用于设置串行口的工作方式、监视串行口的工作状态、控制发送与接收的状态等。它是一个既可以字节寻址又可以位寻址的8位特殊功能寄存器。其格式如表1所示:
位地址 SCON 9FH SM0 9EH SM1 9DH SM2 9CH 9BH 9AH REN TB8 RB8 99H T1 98H R1 表-1 串行口控制寄存器SCON
SM2:多机通信控制位。
REN:接收允许控制位。软件置1允许接收;软件置0禁止接收。
TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。 RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。
RI:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。
SM0,SM1:串行口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、工作方式1、工作方式2、工作方式3。串行接口工作方式如表2:
4
SM0 0 0 1 1 SM1 0 1 0 1 工作方式 0 1 2 3 功能 8位同步移位寄存器(用于I/O扩展) 10位异步串行通信(UART) 11位异步串行通信(UART) 11位异步串行通信(UART) 表-2 串行工作方式
(3)输入移位寄存器
接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。
(4)波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。波特率是用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
(5)电源控制寄存器PCON
波特率系数控制寄存器PCON的最高位为Smod,仅仅是最高位与串行口有关。在工作方式1~工作方式3时,若SMOD=1,则串行口波特率增加一倍。若SMOD=0,波特率不加倍。系统复位时,SMOD=0。PCON字节地址为87H,不能位寻址。PCON的格式如表3:
PCON 7 6 5 4 3 GF1 2 1 0 波特率 fORC/12 可变(T1溢出率*2SMOD/32) fORC/64或fORC/32 可变(T1溢出率*2SMOD/32) 位名称 SMOD - - - GF0 PD IDL 表-3 特殊功能寄存器PCON的格式
(6)波特率计算
串行口每秒钟发送(或接收)的位数称为波特率。设发送一位所需要的时间为T,则波特率为1/T。对于不同方式,得到的波特率的范围是不一样的,这是由定时器/计数器T1在不同方式下计数位数的不同所决定的。串行口工作在方式1或方式3时,常用定时器T1作为波特率发生器,关系式为:波特率=2SMOD×(T1溢出率)/32。
5
2.2 电平转换电路
用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。此时可利用 RS232标准总线接口,用MAX232芯片完成TTL和RS-232的双向电平转换。
图3电平转换芯片MAX232
在电气特性上RS-232采用负逻辑,要求高、低两信号间有较大的幅度,标准规定为:逻辑‘1’:-5~-15V ,逻辑‘0’:+5~+15V 。而单片机的信号电平与TTL电平兼容,逻辑1大于+2.4V,逻辑0为0.4V以下。很显然,RS-232信号电平与TTL电平不匹配,为了实现两者的连接,必须进行电平转换。MAX232为单一+5V供电,内置自升压电平转换电路,一个芯片能同时完成发送转换和接收转换的双重功能。
(1)有5个外接电容、进行电压匹配和电源去耦。
(2) R1IN,R2IN:两路RS-232C电平信号输入端,可接传输线。
(3) R1OUT,R2OUT:两路转换后的TTL电平输出端,可接单片机的RXD端。 (4) T1OUT,T2OUT:两路转换后的RS-232C电平信号输出端,可接传输线。 (5) T1IN,T2IN:两路TTL电平输入端,可接单片机的TXD端。 (6)Vs+,Vs-:分别经电容接电源和地。
6