单片机第8章 AT89S51单片机串行通信技术
AT89S51单片机介绍

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引脚功能及应用电路)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单片机串行口的内部结构及工作原理介绍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端程序 LCD显示

电脑与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时,忙,等待。
51单片机串口通信

一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。
由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。
串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明: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单片机系统的串行扩展在单片机系统中,为了扩展其功能和使用,需要与其他外部设备进行通信。
串行通信是一种常见的通信方式,它通过将数据逐位地进行传输和接收。
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总线等技术,可以实现单片机与其他外设的数据交互,进而实现更复杂的功能和应用。
51单片机串口通信程序。。含详细例子

{ P3_4=0; P3_3=1;
} void RstPro()//编程器复位 {
pw.fpProOver();//直接编程结束 SendData();//通知上位机,表示编程器就绪,可以直接用此函数因为协议号(ComBuf[0])还没被修改,下同 }
void ReadSign()//读特征字 {
} void serial () interrupt 4 using 3 //串口接收中断函数 {
if (RI) { RI = 0 ; ch=SBUF; read_flag= 1 ; //就置位取数标志 }
} main()
{ init_serialcom(); //初始化串口 while ( 1 ) { if (read_flag) //如果取数标志已置位,就将读到的数从串口发出 { read_flag= 0 ; //取数标志清 0 send_char_com(ch); } }
while(RI == 0); RI = 0; c = SBUF; // 从缓冲区中把接收的字符放入 c 中 SBUF = c; // 要发送的字符放入缓冲区 while(TI == 0); TI = 0; } }
4.//////////////// /////////////////////////////////////////////////////////
SendData(); } else break;//等待回应失败 } pw.fpProOver();//操作结束设置为运行状态 ComBuf[0]=0;//通知上位机编程器进入就绪状态 SendData(); }
void Lock()//写锁定位
{
pw.fpLock();
SendData();
微机原理与接口技术(单片机)试题答案

4)定时时间能完成100us和350us交替定时2分
(未采用中断法,但能实现波形输出的,扣3分)
七、综合设计题(每题10分,共10分)
得分
评阅人
1、设有一个8路模拟量输入的巡回监测系统,如下图所示,试求:
(1)、该系统中所扩展的芯片片选信号采用的方法是线选法,此外还有译码法;(2分)
5、当RS1=1,RS0=0,将寄存器R1中的内容压入堆栈,应使用(A)指令。
A、PUSH 11HB、PUSH @R1
C、PUSH 01HD、PUSH R1
6、定时/计数器T1的工作方式2为(A)位工作方式。
A、8B、10C、13D、16
7、当单片机的振荡频率为12MHz时,则定时器每计一个内部脉冲的时间为(A)。
EX0
SCON
98H
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
得分
评阅人
1、内部RAM低128单元划分为哪3个主要部分?说明各部分的特点。
1)00H~1FH为通用工作寄存器区,共分为4组,每组由8个工作寄存器(R0~R7)组成。(2分)
由RS1、RS0决定当前组。工作时只有1组做当前组。(1分)
2)20H~2FH位地址区
分为128位,位地范围为00H~(2分)
3)30H~7FH用户数据区(2分)
2、指令MOV@Ri,A和指令MOVX@Ri,A的功能是否相同.如果不同区别是什么?
两条指令功能是有区别的。(2分)
1)MOV @Ri, A指令是对片内RAM 00H~7FH的访问(2分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.1.3数据缓冲寄存器SBUF
数据缓冲寄存器SBUF用于保存要发送的数据或 者从串口接收到的数据,在特殊功能寄存器区的 地址是99H。CPU执行写 MOV SBUF,A指令便 开始触发串口数据的发送。SBUF便一位一位地 发送数据,发送完成后置标志TI=1;在CPU允许 接收串行数据的时,外部串行数据经RXD送入 SBUF时,电路便自动启动接收,第9位则装入 SCON寄存器的RB8位,直至完成一帧数据后将 RI置1,当串口接收缓冲器接收到一帧数据时,可 以执行MOV A,SBUF指令进行读取。
第8章 AT89S51单片机串行通信接 口技术
单片机原理、应用与仿真
第8章 AT89S51单片机串行通信接口技术
【知识目标】
1.掌握串行口的工作原理及相关的特殊功能寄存器。 2.熟悉标准串行接口的硬件接口设计。 3.掌握串行通信程序的设计。
【技能目标】
1.掌握串行口的硬件接口电路设计及软件驱动程序设计。 2.掌握基于PROTEUS的串行通信接口电路的仿真调试。
98H
位号 SCON.7 SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0
单片机原理、应用与仿真
8.1.1串行口控制寄存器SCON
SM0 SM1:串行口4种工作方式的选择位。如表 8-1所示。
表8-1串行通信工作方式
SM0
SM1
工作方式
功能简述
0
0
单片机原理、应用与仿真
8.2串行口的工作方式
AT89S51单片机的串行接口有4种工作模式,可 通过对SCON中的SM0、SM1位的设置选择。
1.工作方式0
串行数据通过RXD输入输出,TXD输出时钟。每次发 送或者接收8位数据。波特率为 /12。当以中断方式传 送数据时,CPU响应中断并不会自动清除TI、RI标志, 所以在中断服务程序中必须由指令清0。
RI:接收中断标志位。串行口在工作方式0时,接收完第8 位数据时,RI由硬件置1。在其它工作方式中,串行口接收 到停止位时,该位置1。RI=1,表示一帧数据接收完毕, 并申请中断,要求CPU从接收SBUF取走数据。该位的状 态也可供软件查询。RI必须由软件清0。
单片机原理、应用与仿真
8.1.2电源控制寄存器PCON
单片机原理、应用与仿真
8.1.1串行口控制寄存器SCON
SCON是AT89S51单片机可位寻址的特殊功能寄 存器,主要用于控制串口的串行数据通信。单元 地址是98H,复位后位00H。各位的定义如下:
位名称 SM0
SM1
SM2
REN
TB8
RB8
TI
RI
位地址 9FH
9EH
9DH
9CH
9BH
9AH
99H
单片机原理、应用与仿真
8.1.1串行口控制寄存器SCON
REN:允许串行接收位。由软件置1或清0。若 REN=1,允许串行口接收数据;若REN=0,禁止 串行口接收数据。
TB8:发送的第9位数据。在方式2和3时,TB8是 要发送的第9位数据。其值由软件置1或清0。在 双机通信时,TB8一般作为奇偶校验位使用;在 多机通信中用来表示主机发送的是地址帧还是数 据帧,TB8=1为地址帧,TB8=0为数据帧。
工作方式0
移位寄存器工作方式,波特率为/12
0
1
工作方式1
8位数据异步收发,波特率可变
1
0
工作方式2
9位数据异步收发,波特率为/32或/64
1
1
工作方式3
9位数据异步收发,波特率可变
单片机原理、应用与仿真
8.1.1串行口控制寄存器SCON
SM2:多机级通信控制位。因为多机通信是在方式2和方 式3下进行的,因此,SM2位主要用于方式2和方式3中。 当串行口以方式2或方式3接收时,如果SM2=1,则只有 当接收到的第9位数据(RB8)为1时,才将接收到的前8位 数据送入SBUF,并置1RI,产生中断请求;当接收到的 第9位数据(RB8)为0时,则将接收到的前8位数据丢弃。 而当SM2=0时,则不论第9位数据是1还是0,都将前8位 数据送入SBUF中,并将RI置1,产生中断请求。 在方式1时,如果SM2=1,则只有收到有效的停止位时才 会激活RI。 在方式0时,SM2必须为0。
单片机原理、应用与仿真
8.1 串行口的结构
AT89S51单片机内部有一个功能强大的全双工的异步通信串口。 全双工就是双机之间串行接收、发送数据可同时进行。异步通 信是指通信双方没有同步时钟来控制收、发双方的传送,而是 靠双方各自的时钟来控制数据的异步传送。单片机中使用的数 据都是并行数据,所以在发送端将并行数据转换为串行数据, 而在接收端要将串行数据转换为并行数据。这是由串行接口电 路实现,这种电路也称之为通用异步接收发送器(UART)。
RB8:接收到的第9位数据。在方式2和3时,TB8 存放接收到的第9位数据。在方式1,如果SM2=0, RB8是接收到的停止位。在方式0,不使用RB8。
单片机原理、应用与仿真
8.1.1串行口控制寄存器SCON
TI:发送中断标志位。串行口工作在方式0时,串行发送第 8位数据结束时由硬件置1,在其他工作方式,串行口发送 停止位的开始时置1。TI=1,表示一帧数据发送结束,可供 软件查询,也可申请中断。CPU响应中断后,在中断服务 程序中向SBUF写入要发送的下一帧数据。TI必须由软件清 0。
单片机原理、应用与仿真
2.工作方式1
串行数据通过TXD发送,RXD接收。一帧数据是10位, 包括1位起始位,8位数据为和1位停止位。波特率是可变 的,由定时器1溢出率和SMOD共同决定。方式1的波特率 由下式确定: 方式1波特率= 2SMOD 定时器T1的溢出率
PCON,不能位寻址。地址为87H。各位的定义 如下
位称 SMD IDL
其中,与串行通信相关的位是SMOD。 SMOD:串行口波特率系数控制位。若SMOD=1,
方式1、方式2和方式3的波特率加倍。若 SMOD=0,各工作方式的波特率保持不变。
单片机原理、应用与仿真