《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc

上传人:仙人指路1688 文档编号:2392541 上传时间:2023-02-17 格式:DOC 页数:22 大小:182.50KB
返回 下载 相关 举报
《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc_第1页
第1页 / 共22页
《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc_第2页
第2页 / 共22页
《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc_第3页
第3页 / 共22页
《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc_第4页
第4页 / 共22页
《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc》由会员分享,可在线阅读,更多相关《《能力拓展训练》说明书基于串口通信的单片机仿真开发.doc(22页珍藏版)》请在三一办公上搜索。

1、摘要随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。本次能力拓展训练做的题目是:基于串口通信的单片机仿真和C语言开发。要求设计一种基于串口的数据收发模块,并学习使用Proteus中的Virtual Terminal。要求进行电路仿真实验,并使用C语言进行程序的开发。我设计的是单片机与电脑之间的串口通信,主要涉及两部分功能。一是通过按键扫描,当不同的按键按下时单片机会像电脑传输不同的信息,这些信息都是通过事先编程的;另一功能是有电脑向单片机发送数据,单片机收到数据以后会向电脑发送相关验证信息。通过软硬件

2、仿真,以上功能皆得到很好的验证。关键词:串口通信,protues,单片目录摘要I1 绪论12 设计原理22.1 STC89C52单片机简介22.1.1 STC89C52单片机时序22.1.2 STC89C52单片机引脚介绍22.2 串口通信概述42.2.1 串行通信基础42.2.2 串行接口的基本特点63 系统程序设计93.1 系统的通信协议93.2 编程实现串行通信93.2.1 程序流程图93.2.2 完整程序代码104 仿真及硬件实现164.1 系统设计的框架164.2 系统仿真电路164.3 系统仿真结果175 心得体会19参考文献201 绪论通信有并行通信和串行通信两种方式。在多微机系

3、统以及现代测控系统中信息的交换多采用串行通信方式。串行通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。串行通信相关概念:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。 b,数据位:这是衡量通信中实际数据位的参数。c,停止位:用于表示单个包的最后一位。典

4、型的值为1,1.5和2位。 d,奇偶校验位:在串口通信中一种简单的检错方式,有四种检错方式:偶、奇、高和低。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。2 设计原理2.1 STC89C52单片机简介2.1.1 STC89C52单片机时序 STC89C52单片机的一个执器周期由6个状态(s1s6)组成,每个状态又持续2个震荡周期,分为P1和P2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为16us;在一数情况下,算术和逻辑操作发生在N期间,而内部寄存器到寄存器的

5、传输发生在P2期间。对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2开始执行指令。如果是双字节指令,则在同一机器周期的s4读人第二字节。若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。在加结束时完成指令操作。多数STC89C52指令周期为12个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。 2.1.2 STC89C52单片机引脚介绍STC89C52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。下面按引脚功能分为4个部分叙述个引脚的功能。

6、(1)电源引脚Vcc和VssVcc(40脚):接+5V电源正端;Vss(20脚):接+5V电源正端。(2)外接晶振引脚XTAL1和XTAL2XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接。(3)控制信号或与其它电源复用引脚控制信号或与其它电源复用引

7、脚有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脚):片外程序存储器读选通输出端,低电平有

8、效。当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN信号将不出现。(D)EA/Vpp(31脚):EA为访问外部程序储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片内程序存储器4KB(MS52子系列为8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。(4)输入/输出(I/O)引脚P0口、P1口、P2口及P3口(A).P0口(39脚2

9、2脚):P0.0P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。(B).P1口(1脚8脚):P1.0P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0

10、口接收输入的低8位地址。(C).P2口(21脚28脚):P2.0P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。(D).P3口(10脚17脚):P3.0P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表:引脚第2功能P3.0RXD(串行口输入端0)P3.1TXD(串行口输出端)P3.2INT0(

11、部中断0请求输入端,低电平有效)P3.3INT1(中断1请求输入端,低电平有效)P3.4T0(时器/计数器0计数脉冲端)P3.5T1(时器/计数器1数脉冲端)P3.6WR(部数据存储器写选通信号输出端,低电平有效)P3.7RD(部数据存储器读选通信号输出端,低电平有效)2.2 串口通信概述串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两

12、个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。2.2.1 串行通信基础(一)异步通信中的字符帧字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可以无空闲位,也可以由若干空闲位,自行定义。图3-1表示每一帧的结构: 8位数据起始位奇偶校验 停止位0D0D1D2D3D4D5D6D70/11 第n字符帧(共11位)图2-1 帧结构(二)波特率定义是每秒传送二进制数码的位数,单位是bps(位/秒),用于表征数据传输的速度,波特率越高,数据传输速度越快。而实际的字符传输速率是以帧/秒来衡量

13、。(三)通信制式1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。 图2-2 通信制式2.2.2 串行接口的基本特点(一)串行端口工作方式MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的IO电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。 图2-3 串口工作方式串行端口有两个控制寄存器SCON、PCO

14、N,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率每秒传送的位数以及作为中断标志等。图2-4 SCON寄存器位定义串行端口有一个数据寄存器SBUF,在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。串行端口的波特率可以用程序来控制。在不同工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。 串口控制寄存器输入在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。只有当8位数据接收完,并检测到高电平停止位后,只有满足(R1)=0;(SM2)=0或接收到的第9位数据

15、为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位数据的异步

16、通信口。TXD为数据发送引脚,RXD为数据接收引脚 。(二) 串行口的通信波特率串行口的通信波特率恰好反映串行口传输数据的速率。通信波特率的选用,不仅和所选通信设备、传输距离有关,还受传输线状况所制约。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。1、方式0的波特率工作方式0时,移位脉冲由机器周期的第6个状态周期S6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的1/12,不受PCON寄存器中SMOD的影响。用公式表示为:工作方式0的波特率=fosc/122

17、、方式2的波特率工作方式2时,移位脉冲由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中的SMOD位的值,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,波特率为fosc的1/32,用公式表示为;工作方式2波特率=(2SMOD/64)fosc3、工作方式1和方式3的波特率在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率也是可变的。相应公式为:波特率=(2SMOD/32)*定时器T1溢出率当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时

18、溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /12256 (TH1)在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。图2-5 波特率与定时器的关系3 系统程序设计3.1 系统的通信协议通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA12:单片机从PC机接收一段控制数据;0xA23:单片机操作成功信息。在系统工作过程中,单片机接收到PC机数据

19、信息后,便查找协议,完成相应的操作。当单片机接收到0xA12时,单片机等待从PC机接收一段控制数据;当PC接收到0xA23时,就表明单片机操作已经成功。3.2 编程实现串行通信3.2.1 程序流程图 单片机的通信程序采用C52编程,通信以中断的方式进行。其系统主程序流图如图3-1所示:开始单片机接收中断初始化串口和波特率接收到PC机发送的数据? N N Y 将接收到的数据处理后发送回PC机单片机发送中断结束 图3-1 系统主程序流图单片机接收中断服务流程:中断返回执行中断程序RI=1上位机数据是否发送完ES=1 Y N图3-2 系统中断服务流图3.2.2 完整程序代码#include #def

20、ine uchar unsigned char#define uint unsigned intsbit du=P26;/段选位定义sbit we=P27;/位选位定义sbit beep=P23;/蜂鸣器位定义sbit key0=P34;/按键位定义sbit key1=P35;/按键位定义sbit key2=P36;/按键位定义sbit key3=P37;/按键位定义uchar flag,a,i;uchar code table4= ! ;uchar code table=I get ;/or:uchar code table=I, ,g,e,t, ;uchar code table5=0x3

21、f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code table0=LAO SHI HAO ! ;uchar code table1=WO AI LI GONG ! ;uchar code table2=HAO HAO XUE XI ! ;uchar code table3=TIAN TIAN XIANG SHANG ! ;void init() /初始化函数TMOD=0x20; /设置定时器T1为工作方式2TH1=0xfd; /给定时器装初值TL1=0xfd; /此时波特

22、率为9600bpsTR1=1; /启动定时器SM0=0; /设定串口工作方式1SM1=1;REN=1; /允许串口接收RI=0;EA=1; /开总中断ES=1; /开串口中断void delay(uint m) /延时子函数uint i,j;for(i=m;i0;i-)for(j=110;j0;j-);void react(uint n) /串口数据处理程序du=1;P0=0x00;if(0=n)&(n=9) /发送的是数字时P0=table5n-0x30; /显示if(a=n)&(n0;i-)beep=0; /蜂鸣器响delay(500);beep=1;delay(500);void mai

23、n() /主函数init(); /初始化while(1) /大循环if(key0=0) /按键0被按下delay(10); /延时去抖if(key0=0) /再次扫描ES=0;/关串口中断,否则会进入中断程序for(i=0;i15;i+)SBUF=table0i;while(!TI);TI=0;ES=1; /发送完数据后,开中断if(key1=0) /按键1被按下delay(10); /延时去抖if(key1=0) /再次扫描ES=0;for(i=0;i17;i+)SBUF=table1i;while(!TI);TI=0;ES=1;if(key2=0) /按键2被按下delay(10); /延

24、时去抖if(key2=0) /再次扫描ES=0;for(i=0;i18;i+)SBUF=table2i;while(!TI);TI=0;ES=1;if(key3=0) /按键3被按下delay(10); /延时去抖if(key3=0) /再次扫描ES=0;for(i=0;i25;i+)SBUF=table3i;while(!TI);TI=0;ES=1;if(flag=1) /标志位为1,表明单片机接收到数据ES=0; for(i=0;i6;i+)SBUF=tablei;while(!TI);/等待数据发送完TI=0;/清除数据发送标志SBUF=a;/发送接收到的数据while(!TI);TI=

25、0;for(i=0;i4;i+)SBUF=table4i;while(!TI);TI=0;react(a); /调用数据处理子函数ES=1; /开中断flag=0; /标志位清零void ser() interrupt 4 /串口中断程序RI=0; /必须软件清零a=SBUF; /接收数据flag=1; /置标志位4 仿真及硬件实现4.1 系统设计的框架本课题设计的是一种以STC89C52单片机为主控制单元,以RS232电平转换模块为基础的串口通信系统。该通信系统可以实时接受来自上位机发送来的数据,并将数据进行相应处理发回给上位机。其主要包括:电源模块、按键处理模块、数据处理模块、数码管显示模

26、块、串口通讯模块以及单片机最小系统。系统结构框图如图4-1所示。图4-1 硬件系统方框图4.2 系统仿真电路在串口通信系统设计中,控制核心是STC89C52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4K FLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1S。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择)。此外电路还有一些相应的外设模块共同完成串口通信任务。总电路如下图4-2所示。图4-2 系统仿真电路4.3 系统仿真结果在protues中

27、将电路按照图4-2连接好后,双击电路中的单片机模块,在弹出的对话框中将完整程序代码生成的hex文件加载到单片机中。加载完成后,点击开始按钮便可进行电路仿真。得到的仿真结果如图4-3所示。图4-3 protues仿真结果 5 心得体会本次能力拓展训练做的题目是:基于串口通信的单片机仿真和C语言开发。要求设计一种基于串口的数据收发模块,并学习使用Proteus中的Virtual Terminal。要求进行电路仿真实验,并使用C语言进行程序的开发。串口通信应该算是单片机的重难点知识了,所以此次能力训练不敢有半点马虎,开始前查阅了大量的资料。确定了具体要做什么以后,就开始编写实验代码,以及搭建仿真电路

28、,其中最麻烦的要算写程序了。单片机各引脚的功能,串口通信相关寄存器的设置,串口中断程序的编写以及各种时序关系都需要弄懂,才能顺利的编写出来。虽然此次能力拓展训练花费的时间和精力都很多,但是收获也很大,对串口通信有了更加深刻的认识和研究。同时也意识到,虽然平时在课堂上感觉学的还行,但真正到用的时候还是会感觉很吃力。只有经常进行相关的实际训练,才能真正的学以致用。参考文献1 李群芳 张士军 黄建 单片微型计算机 电子工业出版社 20092 郭天祥 51单片机C语言教程 电子工业出版社 20093 胡汉才 单片机原理及系统设计 清华大学出版社 20014 晁阳 单片机MCS-51原理及应用开发教程 清华大学出版社 20075 李朝青 单片机原理及接口技术 北京航空航天大学出版社 20076 余锡存 单片机原理与接口技术 西安电子科技大学出版社 2003

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号