

已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学能力拓展训练说明书摘要随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。本次能力拓展训练做的题目是:基于串口通信的单片机仿真和c语言开发。要求设计一种基于串口的数据收发模块,并学习使用proteus中的virtual terminal。要求进行电路仿真实验,并使用c语言进行程序的开发。我设计的是单片机与电脑之间的串口通信,主要涉及两部分功能。一是通过按键扫描,当不同的按键按下时单片机会像电脑传输不同的信息,这些信息都是通过事先编程的;另一功能是有电脑向单片机发送数据,单片机收到数据以后会向电脑发送相关验证信息。通过软硬件仿真,以上功能皆得到很好的验证。关键词:串口通信,protues,单片20目录摘要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 绪论通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。串行通信(serial communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如ieee488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。串行通信相关概念:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。 b,数据位:这是衡量通信中实际数据位的参数。c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。 d,奇偶校验位:在串口通信中一种简单的检错方式,有四种检错方式:偶、奇、高和低。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。2 设计原理2.1 stc89c52单片机简介2.1.1 stc89c52单片机时序 stc89c52单片机的一个执器周期由6个状态(s1s6)组成,每个状态又持续2个震荡周期,分为p1和p2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12mhz的晶体振荡器,则每个机器周期为1us,每个状态周期为16us;在一数情况下,算术和逻辑操作发生在n期间,而内部寄存器到寄存器的传输发生在p2期间。对于单周期指令,当指令操作码读人指令寄存器时,使从s1p2开始执行指令。如果是双字节指令,则在同一机器周期的s4读人第二字节。若为单字节指令,则在51期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。在加结束时完成指令操作。多数stc89c52指令周期为12个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。 2.1.2 stc89c52单片机引脚介绍stc89c52单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出i/o引脚。下面按引脚功能分为4个部分叙述个引脚的功能。(1)电源引脚vcc和vssvcc(40脚):接+5v电源正端;vss(20脚):接+5v电源正端。(2)外接晶振引脚xtal1和xtal2xtal1(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(ms52子系列为8kb)。若超出该范围时,自动转去执行外部程序存储器的程序。当ea端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有eprom的单片机,在eprom编程期间,该引脚用于接21v的编程电源vpp。(4)输入/输出(i/o)引脚p0口、p1口、p2口及p3口(a).p0口(39脚22脚):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口接收输入的低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(部中断0请求输入端,低电平有效)p3.3int1(中断1请求输入端,低电平有效)p3.4t0(时器/计数器0计数脉冲端)p3.5t1(时器/计数器1数脉冲端)p3.6wr(部数据存储器写选通信号输出端,低电平有效)p3.7rd(部数据存储器读选通信号输出端,低电平有效)2.2 串口通信概述串口通信(serial communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如ieee488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。2.2.1 串行通信基础(一)异步通信中的字符帧字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可以无空闲位,也可以由若干空闲位,自行定义。图3-1表示每一帧的结构: 8位数据起始位奇偶校验 停止位0d0d1d2d3d4d5d6d70/11 第n字符帧(共11位)图2-1 帧结构(二)波特率定义是每秒传送二进制数码的位数,单位是bps(位/秒),用于表征数据传输的速度,波特率越高,数据传输速度越快。而实际的字符传输速率是以帧/秒来衡量。(三)通信制式1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。 图2-2 通信制式2.2.2 串行接口的基本特点(一)串行端口工作方式mcs-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的io电路;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。 图2-3 串口工作方式串行端口有两个控制寄存器scon、pcon,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率每秒传送的位数以及作为中断标志等。图2-4 scon寄存器位定义串行端口有一个数据寄存器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的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器t1的溢出率来决定。1、方式0的波特率工作方式0时,移位脉冲由机器周期的第6个状态周期s6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的1/12,不受pcon寄存器中smod的影响。用公式表示为:工作方式0的波特率=fosc/122、方式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,以启动定时器)。这时溢出率取决于th1中的计数值。 t1 溢出率 = fosc /12256 (th1)在单片机的应用中,常用的晶振频率为:12mhz和11.0592mhz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。图2-5 波特率与定时器的关系3 系统程序设计3.1 系统的通信协议通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在pc机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xa12:单片机从pc机接收一段控制数据;0xa23:单片机操作成功信息。在系统工作过程中,单片机接收到pc机数据信息后,便查找协议,完成相应的操作。当单片机接收到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 #define 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=0x3f,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; /此时波特率为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 main() /主函数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); /延时去抖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=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电平转换模块为基础的串口通信系统。该通信系统可以实时接受来自上位机发送来的数据,并将数据进行相应处理发回给上位机。其主要包括:电源模块、按键处理模块、数据处理模块、数码管显示模块、串口通讯模块以及单片机最小系统。系统结构框图如图4-1所示。图4-1 硬件系统方框图4.2 系统仿真电路在串口通信系统设计中,控制核心是stc89c52单片机,该单片机为51系列增强型8位单片机,它有32个i/o口,片内含4k flash工艺的程序存储器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度厂房物业管理与产业配套服务合同
- 2025版现代餐饮企业员工晋升与发展合同
- 二零二五年度城市绿化拆迁补偿协议模板
- 2025版泵车租赁与租赁期限及违约责任明确合同
- 二零二五年高端商务区保安保洁全面承包管理合同
- 二零二五年度无人驾驶技术委托研发合同范本
- 二零二五年度珠宝首饰保管与鉴定协议
- 2025版农业科技场铺面租赁合作协议
- 二零二五Oracle人工智能辅助决策系统开发合同模板
- 二零二五版舞台剧编剧作品改编与演出合同
- 2025年小学美术教师招聘考试必考美术学科专业知识汇编(160题)
- DB43-T 2066-2021 河湖管理范围划定技术规程
- 《体重管理年行动》科普指南课件
- 技术经理人考试试题及答案
- uom无人机考试试题及答案
- 误差检测优化策略-全面剖析
- 生态环保培训课件
- 2025年理财师资格考试参考题目试题及答案
- 柔性引进团队协议书
- 2025-2030布比卡因产业发展分析及发展趋势与投资前景预测报告
- 阿托品的临床应用
评论
0/150
提交评论