51单片机的串行接口
- 格式:doc
- 大小:64.50 KB
- 文档页数:4
51单片机基本结构详解51单片机(也称为8051单片机)是一种8位微控制器,由Intel公司于1980年代推出。
它是目前市场上最广泛使用的低成本单片机之一,被广泛应用于各个领域,包括家电、工业控制、仪器仪表等。
本文将详细介绍51单片机的基本结构。
一、51单片机的总体结构51单片机的总体结构主要分为五个部分,包括中央处理器(CPU)、存储器、IO口、定时器/计数器以及串行通信接口。
1. 中央处理器(CPU)51单片机中心的核心是一个8位的CPU,负责执行指令集中的操作。
它包括一个累加器(Accumulator)用于存放运算结果,以及一组寄存器用于存放操作数和地址。
2. 存储器51单片机的存储器主要包括内部RAM和内部ROM。
内部RAM用于存放程序和数据,容量通常较小,而内部ROM则用于存储不变的程序指令。
3. IO口51单片机提供了多个通用IO口,用于与外部设备进行数据交互。
这些IO口既可以作为输入口用于接收外部信号,也可以作为输出口用于发送信号控制外部设备。
4. 定时器/计数器51单片机内置的定时器/计数器模块可用于产生精确的时间延时和计数应用。
它能够协助实现各种时间相关的功能,如PWM输出、测速和脉冲计数等。
5. 串行通信接口51单片机的串行通信接口可用于与其他设备进行数据的串行传输。
常见的串行通信协议包括UART、SPI和I2C等。
二、51单片机的工作原理51单片机的工作原理可以概括为以下几个步骤:1. 程序存储器中的指令被复制到内部RAM中。
2. CPU从内部RAM中取出指令并执行。
3. 根据指令的要求,CPU可能会与IO口、定时器/计数器或串行通信接口进行数据交互。
4. 执行完指令后,CPU将结果存回内部RAM或IO口。
三、51单片机的应用领域51单片机由于其成本低、技术成熟、易于开发和应用广泛等优点,被广泛应用于各个领域。
1. 家电控制51单片机可以用于家电控制,如空调、洗衣机、电视机等。
AT89C51单片机与PC机串行通信的接口实现[摘要] 本文介绍了AT89C51单片机与PC机采用RS232C标准进行串行通信的接口实现。
在接口中采用MAX232作电平转换电路,简单的通信协议,PC 机用VB编程,AT89C51单片机采用中断收发方式。
文章给出了相应通信接口电路与程序。
[关键词] 通信协议RS232C 通信接口电路通信接口程序AT89C51是一种带4K字节可编程可擦除只读存储器(FLASH FPEROM)和128字节的存取数据存储器(RAM)的低电压,高性能CMOS8位微处理器。
采用了ATMEL公司的高密度、不容易丢失存储技术,与MCS-51系列的单片机兼容。
具有集成程度高、系统结构简单、价格低廉等优点被广泛应用到控制领域中。
但是在复杂的数据处理、良好的人机交互等方面不能满足需要,常采用PC 机与AT89C51单片机进行通信,AT89C51单片机(下位机)实时采集数据传送给PC机(上位机)处理,然后接收PC机处理的结果,并进行相应的控制的方式来弥补。
本文介绍单片机与PC机进行串行通信的一种接口实现。
一、接口电路的设计(一)接口逻辑电平的转换在PC机系统大都装有异步通信适配器,为标准的RS-232C接口。
RS-232C 为负逻辑,用+3V~+15V表示逻辑“0”, 用-3V~-15V表示逻辑“1”。
AT89C51单片机采用正逻辑TTL电平0和+5V.所以AT89C51与PC机通信时必须进行电平转换。
转换的方法有多种。
常采用MAXIM公司生产的专用的双向电平转换集成电路MAX232。
MAX232引脚排列与外围电路如图1所示。
图1MAX引脚及外围接口图(二)通信接口电路本文采用可靠性高的MAX232作电平转换芯片,选择其中一对发送器与接收器,PC机的串行口与MAX232的电平端口相连,MAX232的逻辑电平端口与单片机的串行口相连,接口电路如图2所示。
图2PC机与AT89C51通信接口图二、通信接口程序(一)通信协议PC机与AT89C51进行通信必须有一定的通信协议,本文采用简单的通信协议。
实验四 串行通信实验一、实验目的1.了解51单片机串行口的结构、串行通讯的原理。
2.掌握51单片机与PC 机之间通讯的方法。
3. 学习系统应用程序的设计和调试二、实验设备PC 机一台 、 实验教学板一块。
三、实验原理51单片机的串行接口是全双工的,它能做异步接收器/发送器(UART ),也能做同步移位寄存器使用。
在做UART 使用时,相关的寄存器有SBUF 、SCON 、和PCON 中的波特率倍增位SMOD 。
SBUF 是数据发送缓冲器和接收缓冲器,逻辑上用同一个地址,物理上是分开的,用读写操作来选择。
SCON 是串行口控制寄存器,用于设定串行口的工作方式;保存方式2和方式3的第9位数据;存放发送、接收的中断标志。
在串行通讯的方式1和方式3中,通信的波特率是可以设置的,满足下式:2/132SMOD=⨯波特率(定时器计数器的溢出率)PC 机的串行通讯口是借助通用异步接收发送器8250(或16C550等)实现的,可使用comdebug.exe 等提供了有关串行口的收、发操作窗口的软件实现通讯。
PC 机的串行通讯采用RS232电平,因此要求单片机的实验板也要配置RS232接口,解决逻辑电平的配接。
如果通讯距离较远,则要配接调制解调器。
四、实验内容1, 自发自收用一根短路线,将实验板中RS232插口的RXD 和TXD 两个插孔短路。
然后编程设定串行口为工作方式1,传送55H 和0AAH 两个数据。
实验要求:程序采用查询方式。
每传送、接收一个数据,做一次检查,看是否正确,若两次都正确,则在显示器上显示“GOOD”,若不正确,则不显示,并要重新传送。
2, 单片机与PC 机的通信先使用通讯电缆将单片机的RS232接口与PC 机的COM1口连接,PC 机起动并运行comdebug.exe 软件,窗口上设置波特率为1200,8位数据、一个停止位。
单片机端也采用工作方式1,波特率为1200,完成单片机与PC 机的通信。
51单片机的2个串口资源分别通信的方法当使用51单片机的2个串口资源进行通信时,比如用一个串口与PLC的串口使用RS485协议通信,一个串口通过蓝牙模块和另一个单片机无线通信时,该如何处理呢?传统的51单片机只有1个串口资源,只能采用分时复用的方法。
STC的15系列增强版51单片机具有多个串口资源,本文将描述如何使用IAP15W4K58S单片机用一个串口资源与PLC的RS485有线通信,另一个串口资源与Arduino单片机通过蓝牙模块无线通信,该通讯连接过程中PLC作为主机,IAP15W4K58S作为中间机,Arduino单片机作为最低层级。
工作过程是按下启动按键,PLC发信息给IAP15W4K58S单片机发高速脉冲控制步进电机驱动的机械臂运动取走货物,当货物取走后,IAP15W4K58S单片机通过蓝牙模块通知Arduino单片机控制的小车将新货物运送过来。
连接结构示意图如下图所示。
本例程使用的单片机型号为:IAP15W4K58S,该单片机有4个采用UART 工作方式的全双工异步串行通信接口(分别为串口1、串口2、串口3和串口4),每个串行口由2个数据缓冲器、1个移位寄存器、1个串行控制寄存器和1个波特率发生器等组成。
本项目使用串行口1和串行口2。
串行口1的两个缓冲器共用寄存器SBUF (99H),串行口2的两个缓冲器共用寄存器S2BUF(9BH)。
10位(1起始位,8位数据位,1停止位)可变波特率(9600)。
串口1对应的硬件部分是TxD和RxD,串行口2对应硬件部分是TxD2和RxD2。
串口1选择引脚P3.0(RxD)和P3.1(TxD),串口2选择引脚P1.0(RxD)和P1.1(TxD)。
串口1既可以选择T1作为波特率发生器,也可以选择T2作为波特率发生器。
本文串口1提供2个选择(T1和T2),串口2只能选择T2作波特率发生器。
但是当串口1和串口2的波特率相同时,可以共用T2作为波特率发器,当T2工作在1T模式时,串行口1的波特率=SYSclk/(65536-[RL_TH2,RL_TL2])/4,SYSclk表示系统时钟频率,[RL_TH2,RL_TL2]表示T2H,T2L的定时初值设置值。
51单片机串行通信原理串行通信是指在信息传输时,数据位逐个进行传输的方式。
51单片机串行通信是指在51单片机中,使用串行通信协议进行数据传输。
1.串行传输方式:串行通信中,数据位按照顺序逐个传输。
每个数据位传输结束后,发送端或接收端会发送一个时钟信号来同步数据的传输。
2.通信协议:串行通信需要定义一种通信协议,用于规定数据传输的格式和规则。
常用的串行通信协议包括UART(通用异步收发传输)协议、SPI(串行外设接口)协议和I2C(串行双线制)协议等。
3.UART串行通信协议:UART协议是一种异步串行通信协议,常用于单片机与外部设备(如计算机、模块等)之间的通信。
UART使用一对传输线(分别为传输线和接收线)进行数据的传输,通过起始位、数据位、校验位和停止位等进行数据的解析和传输。
4.SPI串行通信协议:SPI协议是一种同步串行通信协议,常用于单片机与外部设备之间的通信。
SPI使用四根传输线(分别为传输线、接收线、时钟线和片选线)进行数据的传输,通过时钟信号同步数据的传输。
SPI协议具有母-从的结构,单片机可以作为主设备控制从设备的操作。
5.I2C串行通信协议:I2C协议是一种双线制串行通信协议,常用于单片机与外部设备之间的通信。
I2C使用两条传输线(分别为传输线和接收线)进行数据的传输,通过时钟信号同步数据的传输。
I2C协议具有多主-多从的结构,多个设备可以共享同一条数据线。
6.数据传输流程:在串行通信过程中,发送端会将数据位逐个传输到接收端。
接收端接收到数据位后,对数据进行解析和处理。
在UART协议中,通信开始时发送端会发送起始位,然后发送数据位,接收端解析数据位后,可以进行校验,最后发送停止位。
在SPI和I2C协议中,发送端通过时钟信号同步数据的传输,并通过片选线或地址来选择接收端。
以上就是51单片机串行通信的原理,通过串行通信可以有效地进行数据传输和设备间的通信。
51单片机期末复习题库一、选择题1. 51单片机的内部总线宽度是多少位?A. 4位B. 8位C. 16位D. 32位答案:B2. 51单片机的外部数据存储器空间有多大?A. 64KBB. 128KBC. 256KBD. 512KB答案:A3. 51单片机的定时器/计数器有几个?A. 1个B. 2个C. 3个D. 4个答案:B4. 51单片机的中断源有几个?A. 4个B. 5个C. 6个D. 7个答案:B5. 51单片机的串行通信接口是哪种类型?A. SPIB. I2CC. UARTD. USB答案:C二、填空题6. 51单片机的CPU主要由______、______、______和______组成。
答案:指令寄存器、程序计数器、累加器、状态寄存器7. 51单片机的I/O口具有______功能。
答案:双向数据传输8. 51单片机的定时器/计数器可以用于______和______。
答案:定时、计数9. 51单片机的中断系统可以提高______的响应速度。
答案:系统10. 51单片机的串行通信接口可以实现______通信。
答案:异步三、简答题11. 简述51单片机的中断优先级是如何设置的?答案:51单片机的中断优先级是通过设置IP寄存器中的优先级位来实现的。
IP寄存器的高四位用于设置外部中断的优先级,低四位用于设置定时器中断的优先级。
优先级位的设置决定了中断响应的先后顺序。
12. 描述51单片机的外部中断是如何触发的?答案:51单片机的外部中断是通过外部信号触发的。
当外部中断引脚接收到一个下降沿或上升沿信号时(取决于设置),如果外部中断允许位被设置,中断就会触发。
中断服务程序将被执行,处理中断请求。
四、计算题13. 如果51单片机的系统时钟频率为12MHz,计算定时器0的定时周期。
答案:定时器0的定时周期为12MHz / 12 = 1MHz。
如果定时器0被设置为16位定时器,那么它的定时周期为1MHz * 2^16 = 1s。
MCS-51单⽚机的串⾏⼝及串⾏通信技术数据通信的基本概念串⾏通信有单⼯通信、半双⼯通信和全双⼯通信3种⽅式。
单⼯通信:数据只能单⽅向地从⼀端向另⼀端传送。
例如,⽬前的有线电视节⽬,只能单⽅向传送。
半双⼯通信:数据可以双向传送,但任⼀时刻只能向⼀个⽅向传送。
也就是说,半双⼯通信可以分时双向传送数据。
例如,⽬前的某些对讲机,任⼀时刻只能⼀⽅讲,另⼀⽅听。
全双⼯通信:数据可同时向两个⽅向传送。
全双⼯通信效率最⾼,适⽤于计算机之间的通信。
此外,通信双⽅要正确地进⾏数据传输,需要解决何时开始传输,何时结束传输,以及数据传输速率等问题,即解决数据同步问题。
实现数据同步,通常有两种⽅式,⼀种是异步通信,另⼀种是同步通信。
异步通信在异步通信中,数据⼀帧⼀帧地传送。
每⼀帧由⼀个字符代码组成,⼀个字符代码由起始位、数据位、奇偶校验位和停⽌位4部分组成。
每⼀帧的数据格式如图7-1所⽰。
⼀个串⾏帧的开始是⼀个起始位“0”,然后是5〜8位数据(规定低位数据在前,⾼位数据在后),接着是奇偶校验位(此位可省略),最后是停⽌位“1”。
起始位起始位"0”占⽤⼀位,⽤来通知接收设备,开始接收字符。
通信线在不传送字符时,⼀直保持为“1”。
接收端不断检测线路状态,当测到⼀个“0”电平时,就知道发来⼀个新字符,马上进⾏接收。
起始位还被⽤作同步接收端的时钟,以保证以后的接收能正确进⾏。
数据位数据位是要传送的数据,可以是5位、6位或更多。
当数据位是5位时,数据位为D0〜D4;当数据位是6位时,数据位为D0〜D5;当数据位是8位时,数据位为D0〜D7。
奇偶校验位奇偶校验位只占⼀位,其数据位为D8。
当传送数据不进⾏奇偶校验时,可以省略此位。
此位也可⽤于确定该帧字符所代表的信息类型,“1"表明传送的是地址帧,“0”表明传送的是数据帧。
停⽌位停⽌位⽤来表⽰字符的结束,停⽌位可以是1位、1.5位或2位。
停⽌位必须是⾼电平。
接收端接收到停⽌位后,就知道此字符传送完毕。
51单片机的串行接口
串行接口的一般概念
单片机与外界进行信息交换称之为通讯。
8051单片机的通讯方式有两种:
并行通讯:数据的各位同时发送或接收。
串行通讯:数据一位一位顺序发送或接收。
参看下图:
串行通讯的方式
异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。
其每帧的格式如下:
在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。
用这种格式表示字符,则字符可以一个接一个地传送。
在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。
字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。
原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。
波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。
例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。
同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。
由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。
在双工传送方式中又分为半双工传送和全双工传送。
半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。
2.8051单片机的串行接口结构
8051串行接口是一个可编程的全双工串行通讯接口。
它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS 移位寄存器来扩充I/O口。
8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。
SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。
它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。
串行口的控制与状态寄存器
串行口控制寄存器SCON
它用于定义串行口的工作方式及实施接收和发送控制。
字节地址为98H,其各位定义如下表:
SM0、SM1:串行口工作方式选择位,其定义如下:
其中fosc 为晶振频率
SM2:多机通讯控制位。
在方式0时,SM2一定要等于0。
在方式1中,当(SM2)=1则只有接收到有效停止位时,RI 才置1。
在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI 才置1。
REN :接收允许控制位。
由软件置位以允许接收,又由软件清0来禁止接收。
TB8: 是要发送数据的第9位。
在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。
例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。
RB8:接收到的数据的第9位。
在方式0中不使用RB8。
在方式1中,若(SM2)=0,RB8为接收到的停止位。
在方式2或方式3中,RB8为接收到的第9位数据。
TI : 发送中断标志。
在方式0中,第8位发送结束时,由硬件置位。
在其它方式的发送停止位前,由硬件置位。
TI 置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。
TI 必须用软件清0。
RI : 接收中断标志位。
在方式0,当接收完第8位数据后,由硬件置位。
在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。
RI 置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。
RI 也必须用软件清0。
特殊功能寄存器PCON
PCON 是为了在CHMOS 的80C51单片机上实现电源控制而附加的。
其中最高位是SMOD 。
串行口的工作方式
8051单片机的全双工串行口可编程为4种工作方式,现分述如下:
方式0为移位寄存器输入/输出方式。
可外接移位寄存器以扩展I/O 口,也可以外接同步输入/输出设备。
8位串行数据者是从RXD 输入或输出,TXD 用来输出同步脉冲。
输出串行数据从RXD 引脚输出,TXD 引脚输出移位脉冲。
CPU 将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD 输出,低位在前,高位在后。
发送完一帧数据后,发送中断标志
TI 由硬件置位。
输入 当串行口以方式0接收时,先置位允许接收控制位REN 。
此时,RXD 为串行数据输入端,TXD 仍为同步脉冲移位输出端。
当(RI )=0和(REN )=1同时满足时,开始接收。
当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI 。
下面两图分别是方式0扩展输出和输入的接线图。
方式1
为波特率可变的10位异步通讯接口方式。
发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。
输出当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。
串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。
输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。
只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。
所以在方式1接收时,应先用软件清零RI和SM2标志。
方式2
方式月为固定波特率的11位UART方式。
它比方式1增加了一位可程控为1或0的第9位数据。
输出: 发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。
它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。
当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。
发送一帧信息后,置位中断标志TI。
输入: 在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。
在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。
且不置位RI。
再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。
工作方式3
方式3为波特率可变的11位UART方式。
除波特率外,其余与方式2相同。
波特率选择
如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。
在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。
方式0
方式0的波特率固定为主振频率的1/12。
方式2
方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:
波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc
3.方式1和方式3
定时器T1作为波特率发生器,其公式如下:
波特率=定时器T1溢出率
T1溢出率= T1计数率/产生溢出所需的周期数
式中T1计数率取决于它工作在定时器状态还是计数器状态。
当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。
产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。
定时器T1工作于方式0:溢出所需周期数=8192-x
定时器T1工作于方式1:溢出所需周期数=65536-x
定时器T1工作于方式2:溢出所需周期数=256-x
因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。
当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。
下表列出了定时器T1工作于方式2常用波特率及初值。