串口通信Word格式.docx
《串口通信Word格式.docx》由会员分享,可在线阅读,更多相关《串口通信Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
2.1基本要求
(1)接收功能:
在PC机上使用串口调试软件,在其窗口的字符串输入框中输入数字0~9中的人一个数字,单击发送,单片机接收后,在数码管上显示相应的数字。
(2)发送功能:
在单片机上扩展4个按键,当按下任意一个后,由单片机发送给PC机,在PC机的串口调试软件中显示按下的是哪一个按键。
(3)写出详细的设计报告(含操作说明),给出全部电路和源程序。
2.2发挥部分
(1)对RS232通讯方式的通讯速度做一个测试,测试单片机与PC机能够正常传输数据时的最大波特率是多少。
(2)增加数据校验功能,当单片机接收数据出错后能够通过蜂鸣器进行报警。
根据设计题目的要求分析,系统分成两大部分:
(1)单片机的控制部分;
(2)串口通信电路部分。
第三章P89V51RB2单片机
3.1P89V51RB2单片机概述
P89V51RB2是一款80C51微控制器,包含16/32/64kBFlash和1024字节的数据RAM。
P89V51RB2的典型特性是它的X2方式选项。
利用该特性,设计工程师可使应用程序以传统的80C51时钟频率(每个机器周期包含12个时钟)或X2方式(每个机器周期包含6个时钟)的时钟频率运行,选择X2方式可在相同时钟频率下获得2倍的吞吐量。
从该特性获益的另一种方法是将时钟频率减半而保持特性不变,这样可以极大地降低电磁干扰(EMI)。
Flash程序存储器支持并行和串行在系统编程(ISP)。
并行编程方式提供了高速的分组编程(页编程)方式,可节省编程成本和上市时间。
ISP允许在软件控制下对成品中的器件进行重复编程。
应用固件的产生/更新能力实现了ISP的大范围应用。
P89V51RB2也可采用在应用中编程(IAP),允许随时对Flash程序存储器重新配置,即使是应用程序正在运行也不例外。
3.280C51核心处理单元
5V的工作电压,操作频率为0~40MHz;
16/32/64kB的片内Flash程序存储器,具有ISP(在系统编程)和IAP(在应用中编程)功能;
通过软件或ISP选择支持12时钟(默认)或6时钟模式;
SPI(串行外围接口)和增强型UART;
PCA(可编程计数器阵列),具有PWM和捕获/比较功能;
4个8位I/O口,含有3个高电流P1口(每个I/O口的电流为16mA);
3个16位定时器/计数器;
可编程看门狗定时器(WDT);
8个中断源,4个中断优先级;
2个DPTR寄存器;
低EMI方式(ALE禁能);
兼容TTL和CMOS逻辑电平;
掉电检测;
低功耗模式
掉电模式,外部中断唤醒;
空闲模式;
DIP40,PLCC44和TQFP44的封装。
3.3功能框图和管脚
第四章RS-232串行接口标准
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速串行通信中增加通信距离的单端标准。
RS-232采取不平衡传输方式,即所谓单端通信。
收、发端数据信号相对于信号地。
可以分为9针串口和25针串口。
RS232转换芯片介绍(max232即是实现电平的转换)具体芯片引脚如下图4-1所示。
图4-1MAX232
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。
a02e
4波特率(BaudRate)
波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,单位是位/秒。
假如数据传送的速率每秒为120个字符,每个字符包含10个代码位(1个起始位、8个数据位、1个停止位),这时,传送的波特率为:
10×
120位/秒=1200波特(bps)
5、线制RS-232C串行通信接线方法
首先,串口传输数据只要有接收数据针脚和发送针脚就能实现。
同一个串口的接收脚和发送脚相连,两个串口相连或一个串口和多个串口相连。
同一个串口的接收脚和发送脚直接用线连,对9针串口和25针串口,均是2与3直接相连。
其连接方法如下表1所示。
9针—9针
25针—25针
9针—25针
2
3
5
7
表是对微机标准串行口而言的,还有许多非标准设备则需要看具体情况而定。
九针串口示意图如下图所示:
图4-2串口DB9
串行端口的本质功能是作为CPU和串行设备间的编码转换器。
当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。
在接收数据时,串行的位被转换为字节数据。
在Windows环境(WindowsNT、Win98、Windows2000)下,串口是系统资源的一部分。
应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。
图4-3电路连
第五章系统程序流程图
本设计程序流程:
程序开始,当启动时,串口首先进行初始化,程序首先对定时计数器送初值
主程序流程图如下:
接通电源,当按下复位键时,输入字符到串口的缓存地址中,然后接收中断,判断接收到的字符是否符合字节数要求,如果符合,则进行比较,待完全符合后,发送预先设计好的字符,由此进行无限循环。
图5.1接收发送程序流程图
图5.2单片机主程序流程图
图5.3原理图
第六章串口通信设计的系统源程序
#include<
reg52.h>
#defineucharunsignedchar
#defineuintunsignedint
ucharRcv,i,flag=0,flag1;
sbita=P2^3;
sbitb=P2^0;
sbitc=P2^1;
sbitd=P2^2;
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitQ=P0^7;
uchartable[]={0x00,0x08,0x01,0x09,0x02,0x0a,0x03,0x0b,0x04,0x0c};
/*******************************************************
*函数:
voiddelay(void)*
*功能:
延时*
********************************************************/
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
/**************************************************************************
voidUART_Init(void)*
串口初始化函数,在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s*
*说明:
串口接收中断允许,发送中断禁止*
***************************************************************************/
voidUART_Init(void)
SCON=0x50;
//UART工作模式1,REN=1
TMOD|=0x20;
//timer1,工作于模式2
PCON|=0x80;
//SMOD=1;
TH1=0xFA;
//波特9600晶振为11.0592MHz
ES=1;
TR1=1;
//启动timer1
EA=1;
voidUart_SendData(uchardat)*
向串口发送一个字节的数据*
此程序供中断调用*
voidUart_SendData(uchardat)
ES=0;
SBUF=dat;
//写SBUF,开始发送
while(TI==0);
//等待发送
TI=0;
//清发送标志位
voidmain(void)
UART_Init();
//串口初始化
P2=0;
while
(1)
{
if(key1==0)
{
delay(5);
if(key1==0)
{
flag=1;
Q=0;
delay(40);
Q=1;
}
while(!
key1);
}
elseif(key2==0)
if(key2==0)
flag=2;
}
key2);
}
elseif(key3==0)
if(key3==0)
flag=3;
key3);
elseif(key4==0)
if(key4==0)
flag=4;
key4);
switch(flag)
case0:
break;
case1:
{Uart_SendData(0x31);
flag=0;
}break;
case2:
{Uart_SendData(0x32);
case3:
{Uart_SendData(0x33);
case4:
{Uart_SendData(0x34);
if(flag1==1)
{
P2=table[Rcv-0x30];
Q=0;
delay(300);
Q=1;
flag1=0;
}
INT_UartRcv()*
串口接收中断函数*
中断号为4*
voidINT_UartRcv(void)interrupt4
{
RI=0;
Rcv=SBUF;
//读取数据
flag1=1;
//Uart_SendData(Rcv);
//向串口,返回接收数据
第七章元件清单和单片机引脚定义
表7.1元器件清单
器件名称
数量
最小系统板
1个
ISP下载线
1根
USB电源线
电平转换芯片MAX232
九针串口DB9
单片机控制部分采用菲利普P89V51RB2,各引脚定义如下:
表7.2单片机引脚定义
单片机引脚
各器件引脚
功能描述
XTAL1
接内部时钟电路
晶振反向输入
XTAL2
晶振反向输出
EA
接电源
为单片机供电
P3.0
接R1OUT
串行数据接收端
P3.1
接T1IN
串行数据发送端
RST
接按键K1
复位电路
第八章课程设计心得体会
此次单片机课程设计,在冯新刚老师、李明辉老师和钟国梁等老师的精心指导下,我们顺利完成了串口通信的课程设计。
通过此次课程设计,收获颇丰,在此真心感谢三位老师的耐心及细心指导。
1、对课程设计的意义有更深的理解
通过此次课程设计,掌握了如何用Keil编译程序,如何用Proteus软件仿真单片机的动作,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解如何编译程序构造工具及其相关的技术对课本上的只是有了更深的理解,课本上的知识是机械的、表面的,关键是如何将所学的知识与实际的应用结合起来。
2、激发了学习的积极性
通过此次课程设计,全面系统的理解了单片机原理及编程的一般原理和基本实现方法。
把死板的课本知识变得生动有趣,激发了学习的积极性。
把学过的单片机原理的知识强化,能够把课堂上的知识通过自己设计的作品表示出来,加深了理论知识的理解。
以前对于单片机控制系统的认识是很模糊的,概念上的、表面上的、肤浅的。
现在通过自己动手做设计,从实践上认识了制作控制系统应该如何来实现,如何运用其他辅助软件帮助程序设计,对Keil软件的操作熟练程度有了一定得提高,但是课程设计中调试和编译比较复杂的程序时,仍然在程序的编写中存在一点问题。
在这次课程设计中,我们就是按照实验指导的思想来完成,培养实践动手能力和程序开发能力的目的。
3、学生在此次课程设计中学会了自己如何解决在实际中的困难
课程设计目的在于加深对MCS-51单片机的理解,掌握单片机应用系统的设计方法;
掌握常用接口芯片的正确使用;
强化单片机应用电路的设计与分析能力;
提高学生在单片机应用方面的实践技能和严谨的科学作风;
培养学生综合运用理论知识解决实际问题的能力,力求实现理论结合实际,学以致用的原则。
学生通过查阅资料、接口设计、程序设计、安装调试、整理资料等环节,初步掌握工程设计方法和组织实践的基本技能;
熟悉开展科学实践的程序和办法,为今后从事生产技术工作打下必要的基础;
学会灵活运用已经学过的知识,并能不断接受新的知识,大胆发明创造的设计理论。
参考文献
[1]潘永雄主编.新编单片机原理与应用.西安电子科大出版社,2009.
[2]张天凡等主编.C51单片机C语言开发详解.电子工业出版社,2006.
[3]周润景等主编.Proteus在MCS-51&
AR7系统中应用百例.电子工业出版社,2008.
[4]王军茹等主编.MCS-51单片机原理及应用.2008