单片机第8章 AT89S51单片机串行通信技术
- 格式:ppt
- 大小:953.00 KB
- 文档页数:50
2007年12月11日星期二 08:45AT89C2051是精简版的51单片机,精简掉了P0口和P2口,只有20引脚,但其内部集成了一个很实用的模拟比较器,特别适合开发精简的51应用系统,毕竟很多时候我们开发简单的产品时用不了全部32个I/O口,用AT89C2051更合适,芯片体积更小,而且AT89C2051的工作电压最低为2.7V,因此可以用来开发两节5号电池供电的便携式产品。
本文以ATMEL公司生产的51系列家族的AT89S51和AT89C2051两种单片机来讲解,两种单片机是目前最常用的单片机,其中AT89S51为标准51单片机,当然其功能比早期的51单片机更强大,支持ISP在系统编程技术,内置硬件看门狗。
一、AT89S51单片机引脚介绍AT89S51有PDIP、PLCC、TQFP三种封装方式,其中最常见的就是采用40Pin封装的双列直接PDIP封装,外形结构下图。
芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见右图)左边那列引脚逆时针数起,依次为1、2、3、4。
40,其中芯片的1脚顶上有个凹点(见右图)。
在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。
1、主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源GND(Pin20):接地线2、外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端3、控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
4、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
AT89S51系列单片机的特点(AT89S51引脚功能及应用电路)AT89S51概述AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
AT89S51性能参数1、4k Bytes Flash片内程序存储器;
2、128 bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、2个中断优先级、2层中断嵌套中断;
5、5个中断源;
6、2个16位可编程定时器/计数器;
7、1个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。
AT89S51引脚及功能VCC:电源电压输入端。
GND:电源地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,。
AT89S51单片机串行口的内部结构及工作原理介绍AT89S51单片机串行口的内部结构如下图所示。
它有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。
发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一个特殊功能寄存器字节地址(99H)。
串行口的控制寄存器共有两个:特殊功能寄存器SCON 和PCON。
下面介绍这两个特殊功能寄存器各位的功能。
1、串行口控制寄存器SCON串行口控制寄存器SCON,字节地址988H,可位寻址,位地址为98H~9FH。
SCON的格式如下图所示。
下面介绍SCON中各位的功能。
(1) SM0、SMl:串行口4种工作方式选择位。
SM0、SM1两位的编码所对应的4种工作方式见下表。
表串行口的4种工作方式(2) SM2:多机通信控制位。
因为多机通信是在方式2和方式3下进行的,因此SM2位主要用于方式2或方式3中。
当串行口以方式2或方式3接收时,如果SM2=1,则只有当接收到的第9位数据(RB8)为1时,才使RI置l,产生中断请求,并将接收到的前8位数据送人SBUF;当接收到的第9位数据(RB8)为0时,则将接收到的前8位数据丢弃。
而当SM2=0时,则不论第9位数据是l还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求。
在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。
在方式0时,SM2必须为0。
(3)REN:允许串行接收位。
由软件置1或清0。
REN=1,允许串行口接收数据。
REN=O,禁止串行口接收数据。
(4)TB8:发送的第9位数据。
在方式2和方式3时,TB8是要发送的第9位数据,其值由软件置l或清O。
在双机串行通信时,TB8一般作为奇偶校验位使用;在多机串行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。
(5) RB8:接收的第9位数据。
工作在方式2和方式3时,RB8存放接收到的第9位数据。
电脑与AT89S51单片机串口通信的51端程序要求在电脑上运行串口调试助手软件,在发送框输入字符,点击发送后,在下位机51系列单片机上接受并送到液晶1602上显示,求下位机的编程,实现接收PC发来的数据并在让它在1602液晶上显示.#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};uchar data RXDdata[ ] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 };uchar temp,buf,m,count;bit playflag=0;uchar code cdis1[ ] = {" SERILA TRANFER "};uchar code cdis2[ ] = {" "};/**********************************************************延时子程序**********************************************************/void delay1(uint ms){uchar k;while(ms--){for(k = 0; k < 120; k++);}}/******************************************************************//*检查LCD忙状态*//*lcd_busy为1时,忙,等待。
一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。
由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。
串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。
MSC-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。
则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。
列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
2、通信协议的使用通信协议是通信设备在通信前的约定。
单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。
假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。
单片机原理及接口技术AT89S51单片机系统的串行扩展在单片机系统中,为了扩展其功能和使用,需要与其他外部设备进行通信。
串行通信是一种常见的通信方式,它通过将数据逐位地进行传输和接收。
AT89S51单片机具有多种功能引脚,可以用来实现串行扩展。
包括UART串口、SPI接口和I2C总线等。
UART串口是一种常用的串行通信接口,它使用两根引脚(TXD和RXD)进行数据传输。
在AT89S51单片机中,可以使用其内置的UART模块来实现串行扩展。
首先,需要设置串口的波特率、数据位、停止位和校验位等参数。
然后,在程序中通过读写串口数据寄存器来进行数据的传输和接收。
SPI接口是一种全双工的串行通信接口,它使用四根引脚(SCLK、MISO、MOSI和SS)进行数据的传输和接收。
在AT89S51单片机中,可以使用其内置的SPI模块来实现串行扩展。
首先,需要设置SPI的工作模式、数据位、时钟极性和相位等参数。
然后,在程序中通过读写SPI数据寄存器来进行数据的传输和接收。
I2C总线是一种双向的串行通信总线,它使用两根引脚(SDA和SCL)进行数据的传输和接收。
在AT89S51单片机中,可以通过软件实现I2C总线的功能。
首先,需要设置I2C的时钟频率和器件地址等参数。
然后,在程序中通过控制I2C总线的起始、停止、发送和接收来进行数据的传输和接收。
串行扩展可以实现单片机与其他外设的数据交互,包括和PC机的通信、与传感器的连接等。
通过串行扩展,单片机能够实现更复杂的功能和应用。
在编程过程中,需要合理地使用串口、SPI接口和I2C总线等技术,根据具体的应用需求选择合适的通信方式。
总之,单片机原理及接口技术是一种重要的扩展技术,可以极大地增强单片机的功能和使用。
在AT89S51单片机系统中,串行扩展是一种常见的技术。
通过合理地使用UART串口、SPI接口和I2C总线等技术,可以实现单片机与其他外设的数据交互,进而实现更复杂的功能和应用。
第8章思考题及习题8参考答案一、填空1、AT89S51的串行异步通信口为(单工/半双工/全双工).答:全双工。
2。
串行通信波特率的单位是。
答:bit/s3。
AT89S51的串行通信口若传送速率为每秒120帧,每帧10位,则波特率为答:12004.串行口的方式0的波特率为。
答:fosc/125.AT89S51单片机的通讯接口有和两种型式。
在串行通讯中,发送时要把数据转换成数据。
接收时又需把数据转换成数据。
答:并行,串行,并行,串行,串行,并行6.当用串行口进行串行通信时,为减小波特率误差,使用的时钟频率为 MHz.答:11。
05927.AT89S51单片机串行口的4种工作方式中, 和的波特率是可调的,与定时器/计数器T1的溢出率有关,另外两种方式的波特率是固定的.答:方式1,方式38.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式 . 答:方式1.9.在串行通信中,收发双方对波特率的设定应该是的。
答:相同的。
10.串行口工作方式1的波特率是 .答:方式1波特率=(2SMOD/32)×定时器T1的溢出率二、单选1.AT89S51的串行口扩展并行I/O口时,串行接口工作方式选择。
A。
方式0 B。
方式1 C. 方式2 D。
方式3答:A2。
控制串行口工作方式的寄存器是。
A.TCON B。
PCON C。
TMOD D.SCON答:D三、判断对错1.串行口通信的第9数据位的功能可由用户定义.对2.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。
对3.串行通信方式2或方式3发送时,指令把TB8位的状态送入发送SBUF中.错4.串行通信接收到的第9位数据送SCON寄存器的RB8中保存。
对5.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。
对6。
串行口工作方式1的波特率是固定的,为fosc/32。
错7. AT89S51单片机进行串行通信时,一定要占用一个定时器作为波特率发生器.错8。
第8章思考题及习题8参考答案一、填空1、AT89S51的串行异步通信口为(单工/半双工/全双工)。
答:全双工。
2. 串行通信波特率的单位是。
答:bit/s3. AT89S51的串行通信口若传送速率为每秒120帧,每帧10位,则波特率为答:12004.串行口的方式0的波特率为。
答:fosc/125.AT89S51单片机的通讯接口有和两种型式。
在串行通讯中,发送时要把数据转换成数据。
接收时又需把数据转换成数据。
答:并行,串行,并行,串行,串行,并行6.当用串行口进行串行通信时,为减小波特率误差,使用的时钟频率为 MHz。
答:11.05927.AT89S51单片机串行口的4种工作方式中,和的波特率是可调的,与定时器/计数器T1的溢出率有关,另外两种方式的波特率是固定的。
答:方式1,方式38.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式。
答:方式1。
9.在串行通信中,收发双方对波特率的设定应该是的。
答:相同的。
10.串行口工作方式1的波特率是。
答:方式1波特率=(2SMOD/32)×定时器T1的溢出率二、单选1.AT89S51的串行口扩展并行I/O口时,串行接口工作方式选择。
A. 方式0B.方式1C. 方式2D.方式3答:A2. 控制串行口工作方式的寄存器是。
A.TCON B.PCON C. TMOD D.SCON答:D三、判断对错1.串行口通信的第9数据位的功能可由用户定义。
对2.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的。
对3.串行通信方式2或方式3发送时,指令把TB8位的状态送入发送SBUF中。
错4.串行通信接收到的第9位数据送SCON寄存器的RB8中保存。
对5.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。
对6. 串行口工作方式1的波特率是固定的,为fosc/32。
错7. AT89S51单片机进行串行通信时,一定要占用一个定时器作为波特率发生器。