1、项目5单片机的串口通信设计模块模块5 5单片机的串口通信设计单片机的串口通信设计5.1 项目描述项目描述5.2 项目目的与要求项目目的与要求5.3 项目支撑知识链接项目支撑知识链接 5.4 项目实施项目实施 项目小结项目小结项目拓展技能与练习项目拓展技能与练习 项目5单片机的串口通信设计【项目导入】由项目1可知,单片机的I/O端口中有一个可编程、全双工的串行口,它就是单片机与外界进行交换信息的端口,本项目将学习单片机串行通信的相关知识和串口的结构及应用。项目5单片机的串口通信设计【项目目标】1.知识目标(1)了解单片机串行通信的一些概念;(2)掌握单片机串行口的结构和工作原理;(3)理解单片机
2、串行口的工作方式;(4)掌握串行通信的硬件设计。项目5单片机的串口通信设计2.能力目标(1)能根据系统的功能要求,对串口进行设置;(2)能根据功能模块要求,对串口通信进行设计;(3)学会串行口的初始化编程。项目5单片机的串口通信设计5.1 项项 目目 描描 述述单片机与外界进行信息的交换必然要用到通信协议,比如单片机与单片机的通信、单片机与PC的通信等。本项目通过设计一个由甲单片机(简称甲机)通过串口通信去控制乙单片机(简称乙机)LED灯的闪烁,来让大家熟悉并掌握单片机的通信设计。项目5单片机的串口通信设计5.2 项目目的与要求项目目的与要求本项目的设计目的是通过甲单片机的端口控制乙单片机I/
3、O端口LED灯的闪烁。具体要求:通过按下甲单片机的开关次数来完成发送控制命令字符,乙单片机根据接收来自甲机传送的信息来完成LED1闪烁、LED2闪烁、双闪烁或停止闪烁等。项目5单片机的串口通信设计在实施项目过程中,要掌握以下基本知识点:(1)串行通信的基本概念和工作原理;(2)单片机的串行口结构;(3)串口寄存器的功能及串口的工作方式;(4)串口通信的应用。项目5单片机的串口通信设计5.3 项目支撑知识链接项目支撑知识链接5.3.1 串行通信串行通信1概述在实际应用中,计算机与外部设备之间,计算机与计算机之间常常要进行信息交换,所有这些信息的交换均称为“通信”。通信的基本方式分为并行通信和串行
4、通信两种。并行通信是构成数据信息的各位同时进行传送的通信方式,例如8位数据或16位数据并行传送。项目5单片机的串口通信设计图5-1(a)为并行通信方式的示意图,其特点是传输速度快,缺点是需要多条传输线,当距离较远、位数又多时,通信线路复杂且成本高。串行通信是数据一位接一位地顺序传送。图5-1(b)为串行通信方式的示意图。其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),从而大大降低了成本,特别适用于远距离通信,缺点是传送速度慢。项目5单片机的串口通信设计图5-1 通信的两种基本方式项目5单片机的串口通信设计由图5-1可知,假设并行传送N位数据所需时间为T,那么串行传送的时间至少为
5、NT,实际上总是大于NT。在串行通信中一个方向只有一根通信线,这根线既传输数据信息,又传输控制信息。为了加以区分,要对信息的格式进行约定。信息格式有异步信息和同步信息两种,与此对应,串行通信就分为异步通信和同步通信两种方式。项目5单片机的串口通信设计1)异步通信方式异步通信方式是一种常用的通信方式,以帧为发送单位。帧由四个部分组成:起始位、数据位、奇偶校验位、停止位。起始位占1位,数据位占58位,奇偶校验位占1位(也可以没有奇偶校验位),停止位占1或2位,如图5-2所示。图5-2中给出的是有8位数据位的帧格式,帧中有1位起始位、8位数据位、1位奇偶校验位、1位停止位,共11位。项目5单片机的串
6、口通信设计其中,起始位标识数据发送开始,接下来是数据位和奇偶校验位,停止位标识数据发送结束。数据传送的基本过程是:传送开始后,接收设备不断检测传输线,若在接收到一系列的“1”之后,检测到一个“0”,说明接到一个帧的起始位,接着接收数据位和奇偶校验位,当接收到停止位时,说明帧传送结束。将数据位拼成一个字节,进行奇偶校验,验证无误后表明正确收到一个字符。项目5单片机的串口通信设计图5-2 异步通信原理示意图项目5单片机的串口通信设计由上述过程可见,异步通信是按字符传输的。异步通信的特点是不需要传送同步脉冲,字符帧长度也不受限制,故硬件结构比同步通信方式简单;但因此种传送方式中包含有起始位和停止位,
7、故而降低了有效数据的传输速率。2)同步通信方式同步通信是一种比特同步的通信方式,要求发收双方具有同频同相的同步时钟信号,用同步起始位作为发送或接收数据的开始,如图5-3所示。项目5单片机的串口通信设计图5-3 同步通信示意图项目5单片机的串口通信设计图5-3中给出的是同步通信方式的一帧数据。数据传送的基本过程为:发送方先发送一个或两个特殊字符,该字符称为同步字符,当发送方和接收方达到同步后,就一个接一个地发送一大块数据。使用同步通信方式可以实现高速度、大容量的数据传送,其缺点是要求发送时钟和接收时钟保持严格同步。故发送时钟除应和发送比特率保持一致外,还应把它同时传送到接收端。项目5单片机的串口
8、通信设计2串行通信方式与波特率1)串行通信方式在串行通信中,数据是在两个站之间进行传送的。按照数据传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种方式。图5-4为三种方式的示意图。项目5单片机的串口通信设计(1)单工:指通信双方只能进行单方向传输。单工通信的通信线是单向的,发送端只有发送器,只能发送数据;接收端只有接收器,只能接收数据,如图5-4(a)所示。(2)半双工:指通信双方都能进行数据传输,双方都设有发送器和接收器,都能发送数据和接收数据,但不能同时进行,即发送时不能接收,接收时不能发送,如图5-4(b)所示。(3)
9、全双工:是指通信双方能同时进行数据传输,双方都设有发送器和接收器,能同时发送数据和接收数据,如图5-4(c)所示。项目5单片机的串口通信设计图5-4 串行通信数据传送方式项目5单片机的串口通信设计2)波特率串行通信的快慢用波特率来表示。51系列单片机串行口有4种工作方式,波特率也随之不同。波特率和帧格式可以通过软件编程来设置。必须正确进行波特率的设置,才能进行可靠的数据通信。项目5单片机的串口通信设计波特率是数据的传送速率,指的是每秒钟传送二进制数码的位数,单位为波特/秒(baud/s),也叫波特数,它是衡量异步通信的一个重要指标。但波特率与字符的实际传送速率不同,字符的实际传送速率(字符帧/
10、秒)是每秒内所传送的字符帧数,和字符帧格式有关。项目5单片机的串口通信设计波特率与字符的传送速率(字符/秒)之间存在如下关系:波特率=位/字符字符/秒=位/秒。每1位二进制位的传送时间Td就是波特率的倒数。例如:假设字符传送速度为360字符/s,每个字符又包含10位,试求此通信中的波特率及一位二进制数的传送时间。波特率为 项目5单片机的串口通信设计一位二进制数传送的时间即为波特率的倒数:异步通信的传送速率在5019 200位/s之间,常用于计算机到CRT终端,以及双机和多机之间的通信。d1T=ms=0.278 ms3600项目5单片机的串口通信设计3信号的调制和解调当异步通信的距离在30 m以
11、内时,计算机之间可以直接通信。而当传输距离较远时,通常用电话线进行传送。电话线的带宽限制以及信号传送中的衰减会使信号发生明显的畸变。所以,在这种情况下,发送时要用调制解调器(Modulator)把数字信号转换为模拟信号,并加以放大再传送,这个过程称为调制。在接收时,用解调器(Demodulator)检测此模拟信号,并把它转换成数字信号再送入计算机,这个过程称为解调。项目5单片机的串口通信设计4RS-232C串行通信协议RS-232C由美国电子工业协会制定,是目前使用最多的一种异步串行通信总线标准。RS-232C定义了数据终端设备(DTE)和数据通信设备(DCE)之间的物理接口规范。采用标准接口
12、后,能方便地把单片机和外设以及测量仪器等有机地连接起来构成一个控制系统。此串口协议适合短距离或调制解调的通信场合。项目5单片机的串口通信设计1)RS-232C的电气特性该标准采用负逻辑,电平值为3 V15 V的低电平表示逻辑“1”;电平值为+3 V+15 V的高电平表示逻辑“0”。RS-232C不能直接与TTL电路连接,使用时必须加上适当的电平转换电路,否则会烧坏。目前较常用的电平转换芯片有MAX232、MC1488和MC1489等。2)RS-232C引脚RS-232C接口采用的是9针连接和25针连接,具体如图5-5所示。RS-232C的引脚定义见表5-1所示。项目5单片机的串口通信设计图5-
13、5 串行口项目5单片机的串口通信设计项目5单片机的串口通信设计3)RS-232C的通信距离和速度RS-232C规定的最大负载电容为2500 pF,这个电容限制了它的传送距离和传送速率。在不使用调制解调器(Modem)时,它的可靠最大通信距离为15米。另外,它的接口最大传输速率为20 k/s,它还提供以下传输速率:1200 b/s、2400 b/s、4800 b/s、9600 b/s和19 200 b/s。在使用RS-232C时要根据情况选择它的传输速率。项目5单片机的串口通信设计5.3.2 单片机的串行口及工作方式单片机的串行口及工作方式51单片机内部含有一个可编程的全双工通信串行接口(简称串
14、行口),该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。该串行口通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。由三个特殊功能寄存器对串行口的接收和发送进行控制,它们分别是串行口缓冲寄存器SBUF、串行口控制寄存器SCON和电源控制寄存器PCON。51系列单片机串行口内部简化结构示意图如图5-6所示。项目5单片机的串口通信设计图5-6 串行口简化结构项目5单片机的串口通信设计串行发送和接收的速率与移位时钟同步,定时器T1作为串行通信的波特率发生器,T1溢出率经2分频(或不分频)后又经16分频作为串行发送或接收的移位时钟
15、。移位时钟的速率即波特率。(1)发送数据过程:CPU通过内部总线将并行数据写入发送SBUF。在发送控制电路的控制下,按设定好的波特率,每来一次移位脉冲,通过引脚TXD向外输出一位。一帧数据发送结束后,向CPU发出中断请求,TI位置1;CPU响应中断后,开始准备发送下一帧数据。项目5单片机的串口通信设计(2)接收数据过程:CPU不停检测引脚RXD上的信号,当信号中出现低电平时,在接收控制电路的控制下,按设定好的波特率,每来一次移位脉冲,读取外部设备发送的一位数据到移位寄存器。一帧数据传输结束后,数据被存入接收SBUF,同时向CPU发出中断请求,RI位置1。CPU响应中断后,开始接收下一帧数据。项
16、目5单片机的串口通信设计1与串行口有关的寄存器51系列单片机中有关串行通信的特殊功能寄存器有串行数据缓冲寄存器SBUF、串行控制寄存器SCON和电源控制寄存器PCON。项目5单片机的串口通信设计1)串行数据缓冲寄存器SBUF串行数据缓冲寄存器SBUF是一个字节地址为99H的特殊功能寄存器,用来存放将要发送或接收到的数据。在物理结构上,它对应着发送缓冲寄存器和接收缓冲寄存器,它们共用同一个地址。CPU通过读或写来区别究竟对哪一个缓冲寄存器进行操作,即发送缓冲寄存器只能写入不能读出,接收缓冲寄存器只能读出而不能写入。当CPU向SBUF发出“写”命令时,表示将A中数据写入发送缓冲寄存器,同时也启动数
17、据按一定的波特率发送;而当执行读SBUF的命令时,则表示将接收到的数据从接收缓冲寄存器读出并送入A中。项目5单片机的串口通信设计2)串行控制寄存器SCON串行控制寄存器SCON用于设置串行口的工作方式,监视串行口的工作状态、发送与接收的状态控制等。它是一个既可进行字节寻址又可进行位寻址的特殊功能寄存器。串行控制寄存器SCON的结构和各位名称、位地址如表5-2所示。项目5单片机的串口通信设计项目5单片机的串口通信设计各位功能说明如下:(1)SM0、SM1串行口工作方式选择位:串行口的工作方式及功能选择由这两位确定,具体如表5-3所示。项目5单片机的串口通信设计(2)SM2多机通信控制位:在方式2
18、和方式3中,若SM2=1,且RB8(接收到的第九位数据)=1时,将接收到的前8位数据送入SBUF,并置位RI产生中断请求,否则将接收到的8位数据丢弃;若SM2=0,则不论第九位数据为0还是为1,都将前8位数据装入SBUF中,并产生中断请求。在方式0中,SM2必须为0。(3)REN允许接收控制位:REN位用于对串行数据的接收进行控制:REN=0,禁止接收;REN=1,允许接收。该位由软件置位或复位。项目5单片机的串口通信设计(4)TB8方式2和方式3中要发送的第9位数据:在方式2和方式3时,TB8是发送的第9位数据。该位由软件置位或复位。TB8还可用作奇偶校验位,也可在多机通信中作为地址帧或数据
19、帧的标志位使用。(5)RB8在方式2或方式3中,RB8存放已接收到的第9位数据,作为奇偶校验位或地址帧/数据帧的标志位;在方式1中,若SM2=0,则RB8是接收到的停止位。项目5单片机的串口通信设计(6)TI发送中断标志位:当采用方式0时,发送完第8位数据后,该位由硬件置位;在其他方式下,遇发送停止位时,该位由硬件置位。因此TI=1,表示帧发送结束,可用软件查询TI位标志,也可以请示中断。TI位必须由软件清0。(7)RI接收中断标志位:当采用方式0时,接收完第8位数据后,该位由硬件置位;在其他方式下,当接收到停止位时,该位由硬件置位。因此RI=1,表示帧接收结束,可用软件查询RI位标志,也可以
20、请示中断。RI位也必须由软件清0。项目5单片机的串口通信设计3)电源控制寄存器PCONPCON主要是为CHMOS型单片机电源控制而设置的专用寄存器。其中,最高位SMOD是串行口波特率的倍增位,在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时串行口波特率加倍。系统复位时,SMOD=0。PCON寄存器不能进行位寻址,其各位名称如表5-4所示。项目5单片机的串口通信设计2串行口的工作方式89C51单片机串行通信共有4种工作方式,可有8位、10位、11位帧格式,是由串行控制寄存器SCON中SM0SM1来决定的,如表5-3所示。项目5单片机的串口通信设计1)串行工作方式0在方式0
21、下,串行口作为同步移位寄存器使用。这时以RXD端作为数据移位的输入/输出端,而由TXD端输出移位脉冲。移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。其帧格式如下:项目5单片机的串口通信设计在移位时钟脉冲(TXD)的控制下,将发送数据缓冲器的数据串行移到外接的移位寄存器,通过引脚RXD输出;8位数据以fosc/12的固定频率输出,发送完一帧数据后,发送中断标志TI由硬件置位;接收数据时,复位接收请求标志RI=0,置位允许接收控制位REN=1,外接移位寄存器中的内容首先移入内部的输入寄存器,然后写入接收数据缓冲寄存器,此后RI置1。项目5单片机的串口通信
22、设计在方式0下,移位操作的波特率是固定的,为单片机晶振频率的1/12。以fosc表示晶振频率,则波特率=fosc/12,也就是一个机器周期进行一次移位。若fosc=6 MHz,则波特率为500 kb/s,即2 s移位一次;若fosc=12 MHz,则波特率为1 Mb/s,即1 s移位一次。项目5单片机的串口通信设计2)串行工作方式1方式1是一帧10位的异步串行通信方式,包括1个起始位、8个数据位和1个停止位,其帧格式如下:项目5单片机的串口通信设计数据发送是由一条写串行数据缓冲寄存器SBUF指令开始的。在串行口硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由TXD端
23、串行输出。一个字符帧发送完后,使TXD输出线维持在“1”(space)状态下,并将串行控制寄存器SCON中的TI置1,表示一帧数据发送完毕;接收数据时,SCON中的REN位应处于允许接收状态(REN=1)。在此前提下,串行口采样RXD端,当采样到从1向0状态的跳变时,就认定为已接收到起始位,随后在移位脉冲的控制下,接收数据位和停止位。项目5单片机的串口通信设计【小提示】(1)若RI=0,SM2=0,则8位数据装入SBUF,停止位装入RB8,置RI=1。(2)若RI=0,SM2=1,且停止位为1,则结果与A相同。(3)若RI=0,SM2=1,且停止位为0,则所接收数据丢失。(4)若RI=1,则所
24、接收数据丢失。项目5单片机的串口通信设计上述不论出现哪种情况,检测器都会重新检测RXD端的负跳变,以便接收下一帧。方式1的波特率是可变的,其波特率由定时器/计数器T1的计数溢出率来决定,其公式为:波特率=2SMOD(T1溢出率)/32。其中,SMOD为PCON中最高位的值,SMOD=1表示波特率倍增。项目5单片机的串口通信设计当定时器/计数器T1用作波特率发生器时,通常选用定时初值自动重装的工作方式2(注意:不要把定时器/计数器的工作方式与串行口的工作方式搞混淆),从而避免了通过程序反复装入计数初值而引起的定时误差,使得波特率更加稳定。若T1不中断,则T0可设置为方式3,借用T1的部分资源,拆
25、成两个独立的8位定时器/计数器,以弥补T1被用作波特率发生器而少一个定时器/计数器的缺憾。若时钟频率为fosc,定时计数初值为T1初值,则波特率为波特率=)1T256(12f322oscSMOD初值项目5单片机的串口通信设计在实际应用中,通常是先确定波特率,后根据波特率求T1定时初值,因此上式又可写为T1的时间常数=例如,89C51单片机控制系统,晶振为12 MHz,要求串口发送数据为8位,波特率为1200 b/s,设SMOD=1,则T1的时间常数的计算如下:T1的时间常数=25652.08=203.920CCH波特率12f322256oscSMOD12003841012225612f3222
26、566oscSMOD波特率项目5单片机的串口通信设计3)串行工作方式2和方式3方式2是一帧11位的串行通信方式,即1个起始位、8个数据位、1个可编程位TB8/RB8和1个停止位,其帧格式如下:其中,可编程位TB8/RB8既可用作奇偶校验位,也可用作控制位(多机通信)用,其功能由用户确定。项目5单片机的串口通信设计发送数据时,向SBUF写入一个数据就启动串口发送,同时将TB8写入输出移位寄存器的第9位。开始时,SEND和DATA都是低电平,把起始位输出到TXD。以后每次移位,左边移入0。当TB8移到输出位时,其左边是一个1和全0。检测到此条件,再进行最后一次移位,SEND=1,DATA=0,输出
27、停止位,置TI=1。项目5单片机的串口通信设计接收数据时,置REN=1。与方式1类似,起始位0移到输入寄存器的最左边时,进行最后一次移位。在RI=0,SM2=0或接收到的第9位为1时,收到的一字节数据装入SBUF,第9位进入RB8,置RI=1,然后又开始检测RXD端负跳变。项目5单片机的串口通信设计方式3同样是一帧11位的串行通信方式,其通信过程与方式2完全相同,所不同的仅在于波特率。方式2的波特率只有固定的两种,而方式3的波特率则与方式1相同,即通过设置TI的初值来设定波特率。项目5单片机的串口通信设计3串行口的工作方式应用单片机串口初始化需完成单片机串口工作方式选择、波特率设置、波特率发生
28、器设置等基本设置。例如,设置单片机晶振为11.0592 MHz,串口波特率为9600 baud/s,串口选择工作方式1,定时器配置为工作方式2。初始化程序如下:项目5单片机的串口通信设计void Uart Init(void)TMOD=(TMOD&0X0F)|0X20;/设置定时器T1为定时方式2 TH1=110592001/12/32/9600;/求波特率为9600 baud/s时定时器初值 TL1=TH1;/启动T1计数器 TR1=1;SCON=0 x70;/设置串行工作方式1,允许接收 PCON=0 x80;项目5单片机的串口通信设计【例5-1】用89C51的串行口外接一片CD4094扩
29、展8位并行输出,并行口每位接一发光二极管,要求发光二极管循环轮流亮,工作电路如图5-7所示,请编写程序。图5-7 CD4094扩展输出接口项目5单片机的串口通信设计分析:CD4094是一片8位串行输入/并行输出的同步移位寄存器,CLK为同步脉冲输入端,STB为选通控制端。STB=0时,8位数据Q1Q8关闭,允许数据输入;STB=1时,8位数据Q1Q8输出。系统采用方式0通信,以中断方式工作。项目5单片机的串口通信设计C51源程序如下:#include#include /包含头文件#define unit unsigned char#define unit unsigned intsbit P1
30、_0=P10;uchar SendData void DelayMs(uchar);/延时1毫秒程序void serial_ISR(void)interrupt 4 /串行中断处理程序项目5单片机的串口通信设计 P1_0=1;DelayMs(200);/延时 TI=0;P1_0=0;/允许接收 SendData=_crol_(SendData,1);/待发送的数据左移1位 SBUF=SendData;/发送数据void main(void)/主程序项目5单片机的串口通信设计 TMOD=0 x00;/设串行口为方式0 EA=1;/开总中断 ES=1;/开串行中断 SendData=0 x01;/
31、发送数据初值 P1_0=0;SBUF=SendData;/发送数据 While(1);/等待一次数据发送完毕项目5单片机的串口通信设计void DelayMs(uchar no)/延时毫秒程序 uchar i,j;for(i=0;ino;i+)for(j=0;j164;j+);for(j=0;j164;j+);项目5单片机的串口通信设计【例5-2】89C51单片机按全双工方式收发数据。要求将内部RAM的30H单元开始的20个数据发送出去,同时接收到的20个数据保存到以50H单元为初始地址的内部RAM数据缓冲区。时钟振荡频率为6 MHz,数据传送的波特率为2400 baud/s,试编写通信程序。
32、分析:全双工通信要求能同时接收和发送数据,通过检测RI位还是TI位为1来判断是选择接收操作还是选择发送操作,系统采用串行方式2通信,以中断方式工作。项目5单片机的串口通信设计C51程序如下:#include#includeunsigned char data sdata20_at_0 x30;unsigned char data rdata20_at_0 x50;/定义变量绝对地址main()TMOD=0 x20;/T1工作于方式2 TH1=0 xfa;TL1=0 xfa;/波特率时间常数项目5单片机的串口通信设计 TR1=1;/启动T1 SCON=0 x50;/设定串行口方式1 ES=1;/
33、开串口中断 EA=1;/开中断 While(1);/等待串行中断void sbsi()interrupt 4;/中断处理程序项目5单片机的串口通信设计 if(RI=1)send();/RI=1,调用接收子程序 else rces();/TI=1,调用发送子程序/发送接收子程序void rces()项目5单片机的串口通信设计 unsigned char I;RI=0;/清RI rdatai=SBUF;/存入到指定数据缓冲区 i+;/指向下一数据存储单元 if(i=20)i=0;void send()项目5单片机的串口通信设计 unsigned char i;if(i=20);/判断数据是否发送完
34、毕 else TI=0;/清TI SBUF=sdatai;/启动发送 i+;/指向下一数据项目5单片机的串口通信设计5.4 项项 目目 实实 施施5.4.1 项目硬件设计项目硬件设计本项目的设计要求是:单片机甲发送信息,单片机乙接收发来的信息。通过甲的按键来控制发送的字符信息,乙单片机根据所接收到的信息完成LED1闪烁、LED2闪烁、LED1和LED2双闪烁或同时停止闪烁,硬件设计如图5-8所示。项目5单片机的串口通信设计图5-8 甲机控制乙机的通信设计T1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS
35、-6U2MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD1
36、7P3.6/WR16P3.5/T115U180C51(甲机)CLOCK=11.0592MHzC41FC31F162738495J1CONN-D9FC51nFC11nFT1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U3MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1
37、/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U480C51(乙机)CLOCK=11.0592MHzC21FC61FC71nFC81nFS1D2R1220R2220D1甲机按键控制乙机LED闪烁162738495J2CONN-D9MR3220D3D4R4220项目5单片机的串口通信设计5.4.2 项
38、目软件设计项目软件设计根据甲单片机通过按键S1向乙单片机发送不同字符的控制信息,乙单片机再根据接收到的甲的字符信息来完成点亮LED,其程序设计的思想见程序控制流程图5-9。根据流程图的功能可写出C51的源程序。项目5单片机的串口通信设计图5-9 甲机和乙机通信流程图项目5单片机的串口通信设计C51源程序:/*甲机通过按键向乙机发送不同字符*/#include#define uchar unsigned char#define uint unsigned intsbit LED1=P00;sbit LED2=P03;sbit S1=P10;void DelayMS(uint ms)/延时项目5单
39、片机的串口通信设计uchar i;while(ms-)for(i=0;i120;i+);/*向串口发送字符*/void Putc_to_SerialPort(uchar c)SBUF=c;while(TI=0);TI=0;void main()/主程序项目5单片机的串口通信设计uchar Operation_No=0;SCON=0 x40;/串口模式1TMOD=0 x20;/T1工作模式2PCON=0 x00;/波特率不倍增TH1=0 xfd;TL1=0 xfd;TI=0;TR1=1;while(1)项目5单片机的串口通信设计if(K1=0)/按下S1时选择操作代码0,1,2,3while(S
40、1=0);Operation_No=(Operation_No+1)%4;switch(Operation_No)/根据操作代码发送 A、B、C或停止发送项目5单片机的串口通信设计项目5单片机的串口通信设计/*乙机程序接收甲机发送字符并完成相应动作,根据相应信号控制LED完成不同闪烁动作*/#include#define uchar unsigned char#define uint unsigned intsbit LED1=P00;sbit LED2=P03;/延时void DelayMS(uint ms)项目5单片机的串口通信设计项目5单片机的串口通信设计项目5单片机的串口通信设计5.4
41、.3 项目综合仿真与调试项目综合仿真与调试1使用Keil C51编译源程序Keil C51是51系列单片机的开发系统,利用它可以编辑、编译、汇编、连接C程序和汇编程序,从而可以生成在单片机中进行烧录的.hex文件。项目1已经详细介绍了程序的编译过程,本项目编写的程序最终生成的烧录文件如图5-10所示。项目5单片机的串口通信设计图5-10 编辑成功后生成的烧录文件项目5单片机的串口通信设计2使用Proteus系统仿真软件调试并验证系统运行的结果Proteus是一款优秀的EDA软件,使用它可以绘制电路原理图、PCB图,进行交互式电路仿真。在单片机开发中可以使用此软件检查系统仿真运行的结果。在Pro
42、teus下把原理图按照图5-8画好后,点击单片机芯片在里面加载“.hex”文件,并点击下面仿真控制按钮的第一个“三角形”箭头后,系统就能对系统进行仿真,此时可以看到仿真结果,如图5-11所示。项目5单片机的串口通信设计图5-11 甲机通过通信控制乙机的仿真结果T1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U2MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/A
43、D534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51(甲机)CLOCK=11.0592MHzC41FC31F162738495J1CONN-D9FC51nFC11nFT1IN11R1OUT12T2I
44、N10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U3MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0
45、/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U480C51(乙机)CLOCK=11.0592MHzC21FC61FC71nFC81nFS1D2R1220R2220D1甲机按键控制乙机LED闪烁162738495J2CONN-D9MR3220D3D4R4220项目5单片机的串口通信设计【拓展技能训练】设计:单片机与PC通信。要求:单片机可接收PC发送的数字字符,按下单片机的S1键后,单片机可向PC发送字符串。在Proteus环境下完成本实验时,需要安装Virtual Serial Port D
46、river和串口调试助手。本例缓冲100个数字字符,缓冲满后新数字从前面开始存放(环形缓冲)。硬件设计原理图如图5-12所示。项目5单片机的串口通信设计图5-12 单片机与主机的通信硬件电路T1IN11R1OUT12T2IN10R2OUT9T1OUT14R1IN13T2OUT7R2IN8C2+4C2-5C1+1C1-3VS+2VS-6U2MAX232XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P
47、2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51C41FC31FC11FC21FRXDRTSTXDCTSVT1BAUDRATE=9600DATABITS=8PARITY=NONESTOPBITS=1ERRORTXD3RXD2CTS8RTS7DSR6DTR4DCD1
48、RI9P1COMPIMP_PORT=COM4V_BAUDRATE=9600V_DATABITS=8V_PARITY=NONEINPUT_BUFFER_SIZE=1024OUTPUT_BUFFER_SIZE=1024234567891RP1220S1向PC机发送字符串数码管显示PC发送的数字字符项目5单片机的串口通信设计C51源程序如下:#include#define uchar unsigned char#define uint unsigned intuchar Receive_Buffer101;/接收缓冲uchar Buf_Index=0;/缓冲空间索引/数码管编码uchar code
49、DSY_CODE=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00;/延时 项目5单片机的串口通信设计void DelayMS(uint ms)uchar i;while(ms-)for(i=0;i120;i+);/主程序void main()uchar i;P0=0 x00;Receive_Buffer0=-1;SCON=0 x50;/串口模式1,允许接收项目5单片机的串口通信设计TMOD=0 x20;/T1工作模式2TH1=0 xfd;/波特率为9600TL1=0 xfd;PCON=0 x00;/波特率不倍增
50、EA=1;EX0=1;IT0=1;ES=1;IP=0 x01;TR1=1;while(1)项目5单片机的串口通信设计for(i=0;i=0&c=9)项目5单片机的串口通信设计/缓存新接收的每个字符,并在其后放-1为结束标志Receive_BufferBuf_Index=c-0;Receive_BufferBuf_Index+1=-1;Buf_Index=(Buf_Index+1)%100;ES=1;void EX_INT0()interrupt 0/外部中断0项目5单片机的串口通信设计uchar*s=这是由8051发送的字符串!rn;uchar i=0;while(si!=0)SBUF=si;
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。