基于串口通信的单片机仿真开发Word文档下载推荐.docx
《基于串口通信的单片机仿真开发Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于串口通信的单片机仿真开发Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
2.2串口通信概述4
2.2.1串行通信基础4
2.2.2串行接口的基本特点6
3系统程序设计9
3.1系统的通信协议9
3.2编程实现串行通信9
3.2.1程序流程图9
3.2.2完整程序代码10
4仿真及硬件实现16
4.1系统设计的框架16
4.2系统仿真电路16
4.3系统仿真结果17
5心得体会19
参考文献20
1绪论
通信有并行通信和串行通信两种方式。
在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。
串行通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;
而对于串口而言,长度可达1200米。
串行通信相关概念:
a,波特率:
这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
b,数据位:
这是衡量通信中实际数据位的参数。
c,停止位:
用于表示单个包的最后一位。
典型的值为1,1.5和2位。
d,奇偶校验位:
在串口通信中一种简单的检错方式,有四种检错方式:
偶、奇、高和低。
串行通信的特点:
传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
2设计原理
2.1STC89C52单片机简介
2.1.1STC89C52单片机时序
STC89C52单片机的一个执器周期由6个状态(s1—s6)组成,每个状态又持续2个震荡周期,分为P1和P2两个节拍。
这样,一个机器周期由12个振荡周期组成。
若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为1/6us;
在一数情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的传输发生在P2期间。
对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。
如果是双字节指令,则在同一机器周期的s4读人第二字节。
若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。
在加结束时完成指令操作。
多数STC89C52指令周期为1—2个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。
2.1.2STC89C52单片机引脚介绍
STC89C52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。
下面按引脚功能分为4个部分叙述个引脚的功能。
(1)电源引脚Vcc和Vss
Vcc(40脚):
接+5V电源正端;
Vss(20脚):
接+5V电源正端。
(2)外接晶振引脚XTAL1和XTAL2
XTAL1(19脚):
接外部石英晶体的一端。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;
对于CHOMS单片机,该引脚作为外部振荡信号的输入端。
XTAL2(18脚):
接外部晶体的另一端。
在单片机内部,接至片内振荡器的反相放大器的输出端。
当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。
对于CHMOS芯片,该引脚悬空不接。
(3)控制信号或与其它电源复用引脚
控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。
(A).RST/VPD(9脚):
RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。
当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。
当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。
(B).ALE/P(30脚):
当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低
(C).PSEN(29脚):
片外程序存储器读选通输出端,低电平有效。
当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。
当访问外部数据存储器期间,PESN信号将不出现。
(D).EA/Vpp(31脚):
EA为访问外部程序储器控制信号,低电平有效。
当EA端保持高电平时,单片机访问片内程序存储器4KB(MS—52子系列为8KB)。
若超出该范围时,自动转去执行外部程序存储器的程序。
当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。
对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。
(4)输入/输出(I/O)引脚P0口、P1口、P2口及P3口
(A).P0口(39脚~22脚):
P0.0~P0.7统称为P0口。
当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。
当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。
它分时提供8位双向数据总线。
对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。
(B).P1口(1脚~8脚):
P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。
对于MCS—52子系列单片机,P1.0和P1.1还有第2功能:
P1.0口用作定时器/计数器2的计数脉冲输入端T2;
P1.1用作定时器/计数器2的外部控制端T2EX。
对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。
(C).P2口(21脚~28脚):
P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。
当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。
对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。
(D).P3口(10脚~17脚):
P3.0~P3.7统称为P3口。
它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。
P3口的第2功能见下表:
引脚
第2功能
P3.0
RXD(串行口输入端0)
P3.1
TXD(串行口输出端)
P3.2
INT0(部中断0请求输入端,低电平有效)
P3.3
INT1(中断1请求输入端,低电平有效)
P3.4
T0(时器/计数器0计数脉冲端)
P3.5
T1(时器/计数器1数脉冲端)
P3.6
WR(部数据存储器写选通信号输出端,低电平有效)
P3.7
RD(部数据存储器读选通信号输出端,低电平有效)
2.2串口通信概述
串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节。
2.2.1串行通信基础
(一)异步通信中的字符帧
字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。
在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。
两相邻字符帧之间可以无空闲位,也可以由若干空闲位,自行定义。
图3-1表示每一帧的结构:
8位数据
起始位奇偶校验停止位
D0
D1
D2
D3
D4
D5
D6
D7
0/1
1
第n字符帧(共11位)
图2-1帧结构
(二)波特率
定义是每秒传送二进制数码的位数,单位是bps(位/秒),用于表征数据传输的速度,波特率越高,数据传输速度越快。
而实际的字符传输速率是以帧/秒来衡量。
(三)通信制式
1、单工
单工是指数据传输仅能沿一个方向,不能实现反向传输。
2、半双工
半双工是指数据传输可以沿两个方向,但需要分时进行。
3、全双工
全双工是指数据可以同时进行双向传输。
图2-2通信制式
2.2.2串行接口的基本特点
(一)串行端口工作方式
MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。
其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;
工作方式1多用于双机之间或与外设电路的通信;
方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。
图2-3串口工作方式
串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率[每秒传送的位数]以及作为中断标志等。
图2-4SCON寄存器位定义
串行端口有一个数据寄存器SBUF,在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。
串行端口的波特率可以用程序来控制。
在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。
串口控制寄存器输入在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。
只有当8位数据接收完,并检测到高电平停止位后,只有满足①(R1)=0;
②(SM2)=0或接收到的第9位数据为1时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;
否则信息丢失。
所以在方式1接收时,应先用软件清零RI和SM2标志。
一、方式0
方式0时,串行口为同步移位寄存器的输入输出方式。
主要用于扩展并行输入或输出口。
数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。
发送和接收均为8位数据,低位在先,高位在后。
波特率固定为fosc/12。
二、方式1
方式1是10位数据的异步通信口。
TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。
其中1位起始位,8位数据位,1位停止位。
三、方式2和方式3
方式2或方式3时为11位数据的异步通信口。
TXD为数据发送引脚,RXD为数据接收引脚。
(二)串行口的通信波特率
串行口的通信波特率恰好反映串行口传输数据的速率。
通信波特率的选用,不仅和所选通信设备、传输距离有关,还受传输线状况所制约。
通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固