单片机原理及接口技术(C51编程)第8章 AT89S51单片机的串行口
单片机原理及接口技术(C51编程)第8章 AT89S51单片机的串行口

图8-1 串行口的内部结构
3
8.1.1 串行口控制寄存器SCON 串行口控制寄存器SCON,字节地址98H,可位寻址,位地址为98H~9FH,
即SCON的所有位都可用软件来进行位操作清“0”或置“1”。SCON格式见 图8-2。
图8-2 串口控制寄存器SCON格式
4
寄存器SCON各位功能: (1)SM0、SM1—串口4种工作方式选择
//点亮数据是否左移8次?是,重新送点亮数据
SBUF=nSendByte;
// 向74LS164串行发送点亮数据
}
TI=0;
RI=0;
}
19
程序说明: (1)程序中定义了全局变量nSendByte,以便在中断服务程序中能访问 该变量。nSendByte用于存放从串行口发出的点亮数据,在程序中使用左移 1 位 操 作 符 “ <<” 对 nSendByte 变 量 进 行 移 位 , 使 得 从 串 口 发 出 的 数 据 为 0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80,从而流水点亮各个 发光二极管。 (2)程序中if语句的作用是当nSendByte左移1位由0x80变为0x00后, 需对变量nSendByte重新赋值为1。 (3)主程序中SBUF=nSendByte语句必不可少,如果没有该语句,主程序 并不从串行口发送数据,也就不会产生随后的发送完成中断。 (4)两条语句 “while(1){;}”实现反复循环的功能。
(4)TB8—发送的第9位数据 在方式2和方式3时,TB8是要发送的第9位数据,其值由软件置“1”或清
“0”。 在双机串行通信时,TB8一般作为奇偶校验位使用;也可在多机串行通信中
表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。
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单片机系统的串行扩展

单片机原理及接口技术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总线等技术,可以实现单片机与其他外设的数据交互,进而实现更复杂的功能和应用。
单片机原理及应用_黄河科技学院中国大学mooc课后章节答案期末考试题库2023年

单片机原理及应用_黄河科技学院中国大学mooc课后章节答案期末考试题库2023年1.AT89S51单片机的串行口,数据输出端为()。
参考答案:TXD2.AT89S51单片机定时器/计数器T1的中断向量号为()。
参考答案:33.Keil C51的unsigned int数据类型是()。
参考答案:无符号整型变量4.访问片外RAM数据,在C51中该数据的存储类型为()。
参考答案:xdata5.数字温度传感器DS18B20是()总线的器件参考答案:单6.AT89S51单片机有4 组位并行I/O口。
参考答案:87.AT89S51单片机片片外最多可扩展 KB的程序存储器。
参考答案:648.AT89S51有个可编程定时器/计数器参考答案:29.某RAM芯片有12条地址线,可寻址 KB个存储单元参考答案:410.波特率是指串行口每发送或接收的数据参考答案:秒钟11.AT89S51单片机采用并行总线方式外扩器件时,地址总线的高8位由()口提供参考答案:P212.C51中断函数的关键字是()参考答案:interrupt13.AT89S51单片机有( )组工作寄存器参考答案:414.ADC0809是( )位的数模转换器参考答案:815.如果单片机的晶振是6MHz,则其机器周期为()参考答案:2μS16.单片机的I/O端口做通用I/O时,若要读某个引脚,需要先对该端口位写()。
参考答案:117.C51提供了()存储类型类访问ROM。
参考答案:code18.如果需要用到AT89S51单片机的特殊功能寄存器以及一些存储定义,需要加载头文件()。
参考答案:reg51.h19.下面哪一种不属于C51扩展的数据类型参考答案:double20.单片机复位时,系统默认的当前工作寄存器为第()组。
参考答案:21.程序在运行时,当前PC的值是()。
参考答案:当前正在执行的指令的下一条指令的地址22.C51 中以字节形式对xdata区进行寻址,用()宏定义。
单片机原理及接口技术(C51编程)AT89S51单片机系统的串行扩展

▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲
10.1.1 单总线扩展的典型应用-DS18B20的温度测量系统
单总线系统中配置的各种器件,由DALLAS公司提供的 专用芯片实现。每个芯片都有64位ROM,厂家对每一芯片 都用激光烧写编码,其中存有16位十进制编码序列号,它是 器件的地址编号,确保它挂在总线上后,可以唯一被确定。 除了器件的地址编码外,芯片内还包含收发控制和电源存储 电路,见图11-1。这些芯片耗电量都很小(空闲时几µW, 工作时几mW),工作时从总线上馈送电能到大电容中就可 以工作,故一般不需另加电源。
10.1 单总线串行扩展
图10-1 单总线芯片内部结构示意图
10.1.1 单总线扩展的典型应用-DS18B20的温度测量系统
1. 单总线温度传感器DS18B20简介
DS18B20是美国DALLAS公司生产的数字温度传感 器,体积小、低功耗、抗干扰能力强。可直接将温度转 化成数字信号传送给单片机处理,因而可省去传统的信 号放大、A/D转换等外围电路。
10.1.1 单总线扩展的典型应用-DS18B20的温度测量系统 1. 单总线温度传感器DS18B20简介
图10-2 单总线构成的分布式温度监测系统
10.1.1 单总线扩展的典型应用-DS18B20的温度测量系统 1. 单总线温度传感器DS18B20简介
片内有9个字节的高速暂存器RAM单元,9个字节具体 分布如下:
注意,负号则需对采集的温度进行判断后,再予以显示。
单片机第8章 AT89S51单片机串行通信技术

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
单片机原理及接口技术(C51编程)单片机的开关检测、键盘输入 与显示的接口设计

5.2.1 开关检测案例1
图5-3 开关、LED发光二极管与P1口的连接
5.2.1 开关检测案例1
参考程序如下: #include <reg51.h> #define uchar unsigned char void delay( ) {
uchar i,j; for(i=0; i<255; i++) for(j=0; j<255; j++); }
5.1.2 I/O端口的编程举例
03 用循环左、右移位函数实现
OPTION
使用C51提供的库函数,即循环左移n位函数和循环右
移n位函数,控制发光二极管点亮。参考程序:
#include <reg51.h> #include <intrins.h> 函数的头文件 #define uchar unsigned char void delay( ) {
5.1.2 I/O端口的编程举例
#include <reg51.h> #define uchar unsigned char uchar tab[ ]={ 0xfe , 0xfd , 0xfb , 0xf7 , 0xef , 0xdf , 0xbf , 0x7f , 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; /*前8个数据为左移点亮 数据,后8个为右移点亮数据*/ void delay( ) {
// P1口为输入 // 读入P1口的状态,送入state // 屏蔽P1口的高6位
5.2.2 开关检测案例2
switch (state) {
// 判P1口低2位开关状态
单片机原理及接口技术(C51编程)(第2版)-习题答案 - 第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单片机进行串行通信时,一定要占用一个定时器作为波特率发生器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方式0时,串行发送的第8位数据结束时,TI由硬件置“1”,在其他工作 方式中,串行口发送停止位的开始时,置TI为“1”。TI=1,表示1帧数据发 送结束。TI位状态可供软件查询,也可申请中断。CPU响应中断后,在中断服 务程序向SBUF写入要发送的下一帧数据。注意:TI必须由软件清“0”。 (7)RI—接收中断标志位
SM0、SM12位编码对应4种工作方式见表8-1。 表8-1
表8-1 串口4种工作方式
5
(2)SM2—多机通信控制位 多机通信是在方式2和方式3下进行,因此SM2位主要用于方式2或方式3。 当串口以方式2或方式3接收时,如SM2=1,则只有当接收到的第9位数据(
RB8)为“1”时,才使RI置“1”,产生中断请求,并将收到的前8位数据送 入SBUF;当收到的第9位数据(RB8)为“0”时,则将收到的前8位数据丢弃 。
(4)TB8—发送的第9位数据 在方式2和方式3时,TB8是要发送的第9位数据,其值由软件置“1”或清
“0”。 在双机串行通信时,TB8一般作为奇偶校验位使用;也可在多机串行通信中
表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。
7
(5)RB8—接收的第9位数据 在方式2和方式3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,
for(j=0;j<125;j++);
}
main( )
//主程序
{
SCON=0x00;
// 设置串行口为方式0
EA=1;
// 全局中断允许
ES=1;
// 允许串行口中断
nSendByte=1;
// 点亮数据初始为0000 0001送入nSendByte
SBUF=nSendByte;
// 向SBUF写入点亮数据,启动串行发送
8
串口在方式0时,接收完第8位数据时,RI由硬件置“1”。在其他工作方式中 ,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申 请中断,要求CPU从接收SBUF取走数据。该位状态也可供软件查询。
注意:RI必须由软件清“0”。 8.1.2 特殊功能寄存器PCON
字节地址为87H,不能位寻址。格式见图8-3。 仅最高位SMOD与串口有关,低4位功能在第2章中已介绍。
P1.1=1,即SH/LD*置1,74LS165将刚才读入的S0~S7状态通过QH端(RXD脚)
串行发送到单片机的SBUF中,在中断服务程序中把SBUF中的数据读到nRxByte
单元,并送到P2口驱动8个发光二极管。 26
8.2.2 方式1 方式1为双机串行通信方式,如图8-9。
图8-9 方式1双机串行通信的连接电路
当SM2=0时,则不论第9位数据是“1”还是“0”,都将接收的前8位数据 送入SBUF中,并使RI置“1”,产生中断请求。
方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。 方式0时,SM2必须为0。
6
(3)REN—允许串行接收位,由软件置“1”或清“0”。 REN=1,允许串行口接收数据。 REN=0,禁止串行口接收数据。
机间的异步串行通信,而是用于外接移位寄存器,用来扩展并行I/O口。 方式0以8位数据为1帧,没有起始位和停止位,先发送或接收最低位。波特
率是固定的,为fosc/12。帧格式见图8-4。
图8-4 方式0帧格式
12
1.方式0输出 (1)方式0输出的工作原理 当单片机执行将数据写入发送缓冲器SBUF指令时,产生一个正脉冲,串
单片机原理及接口技术(C51编程)第8章 AT89S51单片机的串行口
AT89S51集成一个全双工通用异步收发(UART)串行口。 全双工:两个单片机之间串行数据可同时双向传输。 异步通信 : 收、发双方使用各自时钟控制发送和接收,省去收、发双方 的1条同步时钟信号线,使异步串行通信连接更简单且易实现。 8.1 串行口结构 AT89S51串行口内部结构见图8-1。有两个物理上独立的接收、发送缓冲 器SBUF(特殊功能寄存器),可同时收发数据。发送缓冲器只写不读,接 收缓冲器只读不写,两个缓冲器共用一个特殊功能寄存器字节地址(99H) 。 控制寄存器共有2个:特殊功能寄存器SCON和PCON。下面详细介绍各 位功能。
图8-1 串行口的内部结构
3
8.1.1 串行口控制寄存器SCON 串行口控制寄存器SCON,字节地址98H,可位寻址,位地址为98H~9FH,
即SCON的所有位都可用软件来进行位操作清“0”或置“1”。SCON格式 见 图8-2。
图8-2 串口控制寄存器SCON格式
4
寄存器SCON各位功能: (1)SM0、SM1—串口4种工作方式选择
参考程序:
#include <reg51.h> #include <stdio.h> sbit P1_0=0x90; unsigned char nSendByte;
17
void delay(unsigned int i)
//延时子程序
{
unsigned char j;
for(;i>0;i--)
//变量i由实际参数传入一个值,因此i不能赋初值
RI=0;
//接收中断标志RI清0
nRxByte=SBUF;//接收的开关状态数据从SBUF读入到nRxByte单元中
P2=nRxByte; /开关状态数据送到P2口,驱动发光二极管发光
}
}
程序说明:当P1.0为0,即开关K按下,表示允许并行读入开关S0~S7的
状态数字量,通过P1.1把SH/LD*置0,则并行读入开关S0~S7的状态。再让
口把8位数据以fosc/12固定波特率从RXD脚串行输出,低位在先,TXD脚输出 同步移位脉冲,当8位数据发送完,中断标志位TI置“1”。
方式0的发送时序见图8-5。
13
图8-5 方式0发送时序
(2)方式0输出的应用案例 典型应用是串口外接串行输入/并行输出的同步移位寄存器74LS164,实现
并行端口的扩展。 图8-6为串口方式0,通过74LS164输出控制8个外接LED发光二极管亮灭的
SBUF=nSendByte;
// 向SBUF写入数据,启动串行发送
delay(500);
// 延时,点亮二极管持续一段时间
P1_0=0;
// P1_0=0,允许向74LS164串行写入
nSendByte=nSendByte<<1; // 点亮数据左移1位
if(nSendByte==0)
nSendByte=1;
//延时子程序
{
unsigned char j;
for(;i>0;i--)
//变量i由实际参数传入一个值,因此i不能赋初值
for(j=0;j<125;j++);
}
main()
{
SCON=0x10;
// 串行口初始化为方式0
ES=1;
// 允许串行口中断
EA=1; for(;;);
// 允许全局中断
}
25
void Serial_Port() interrupt 4 using 0 // 串行口中断服务子程序
{
if(P1_0==0) // 如果P1_0=0表示开关K按下,可以读开关S0~S7的状态
{
P1_1=0;
// P1_1=0并行读入开关的状态
delay(1);
P1_1=1;
// P1_1=1将开关的状态串行读入到串口中
当SM0、SM1=01时,串行口设为方式1双机串行通信。TXD脚和RXD脚分别用 于发送和接收数据。
方式1收发一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1 ),先发送或接收最低位。方式1帧格式见图8-10。
27
图8-10 方式1的帧格式 方式1为波特率可变的8位异步通信接口。波特率由下式确定:
P1_0=0;
// 允许串口向74LS164串行发送数据
while(1)
{;}
}
18
void Serial_Port( ) interrupt 4 using 0 //串行口中断服务程序
{
if(TI)
// 如果TI=1,1个字节串行发送完毕
{
P1_0=1;
// P1_0=1,允许74LS164并行输出,流水点亮二极管
SMOD位:波特率选择位。
9
图8-3 特殊功能寄存器PCON的格式
例如,方式1的波特率计算公式为 当SMOD=1时,比SMOD=0时波特率加倍,所以也称SMOD位为波特率倍增位。
11
8.2 串行口的4种工作方式 4种工作方式由特殊功能寄存器SCON中SM0、SM1位定义,编码见表8-1。
8.2.1 方式0 方式0为同步移位寄存器输入/输出方式。该方式并不用于两个AT89S51单片
图8-8 串口方式0外接并行输入、串行输出的同步移位寄存器
24
参考程序如下:
#include <reg51.h>
#include "intrins.h"
#include<stdio.h>
sbit P1_0=0x90;
sbit P1_1=0x91;
unsigned char nRxByte;
ห้องสมุดไป่ตู้
void delay(unsigned int i)
接口电路。当串口设置在方式0输出时,串行数据由RXD端(P3.0)送出,移 位脉冲由TXD端(P3.1)送出。在移位脉冲的作用下,串行口发送缓冲器的数 据逐位地从RXD端串行地移入74LS164中。
15
图8-6 方式0输出外接8个LED发光二极管接口电路