串口通信.docx
- 文档编号:17763278
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:16
- 大小:84.82KB
串口通信.docx
《串口通信.docx》由会员分享,可在线阅读,更多相关《串口通信.docx(16页珍藏版)》请在冰点文库上搜索。
串口通信
目录
一、摘要1
1.51单片机原理1
(1)51单片机的I/O口的使用原理和设置1
(2)51单片机的定时/计数器的设置1
2.电平转换芯片的认识和使用1
3.按键的判断和使用1
4.51单片机开发环境的熟悉和使用1
二、课程设计的目的及基本的要求1
三、设计内容提要及说明1
1设计内容1
2系统设计2
3RS-232串行接口标准2
4波特率(BaudRate)2
5、线制RS-232C串行通信接线方法2
四、原理图及元件清单4
五、元件清单5
六、单片机各引脚定义5
七、系统程序流程图5
八、串口通信设计的系统源程序7
九、课程设计心得体会11
参考文献12
一、摘要
1.51单片机原理
(1)51单片机的I/O口的使用原理和设置
(2)51单片机的定时/计数器的设置
2.电平转换芯片的认识和使用
3.按键的判断和使用
4.51单片机开发环境的熟悉和使用
二、课程设计的目的及基本的要求
单片机已经广泛的应用于人们的日常生活中,在各个领域中起到越来越重要的作用。
因此,掌握单片机的基本功能是非常重要的技能。
进行课程设计是加强实践,提高动手能力的重要环节,是将所学理论知识与实际联系起来的桥梁和纽带。
通过课程设计:
同时在软件编程、排错调试、焊接技术及相关仪器设备的使用等各个方面得到全面的提高。
掌握单片机开发过程,为将来的实际工作打下一定得基础。
本课程设计以philipsP89V51RB2单片机为基础,基本要求如下:
1、熟悉单片机的基本机构;
2、电平转换芯片的认识和使用;
3、掌握按键的判断及使用;
4、掌握菲利普P89V51RB2单片机的使用方法;
5、掌握单片机C语言一般的编程技巧;
6、掌握单片机系统调试的一般步骤及方法;
7、熟悉掌握电路板的焊接及排错;
8、掌握程序的下载及调试。
三、设计内容提要及说明
1设计内容
本次设计的题目要求基本内容如下:
通过串口调试助手软件来实现单片机与电脑的通信,单片机接收PC机发来的不同指令信号,完成不同的工作。
本设计程序流程:
在PC机上使用串口调试软件,向单片机发送字符串,
当接收指令信号为:
‘go’,单片机向PC机发送字符串‘WELCOMETOCHINA!
’,
当接收指令信号为:
‘who’,单片机向PC机发送字符串‘MYNAMEISLIMING’,
当接收指令信号为:
‘home’,单片机向PC机发送字符串‘YINGYONGKEXUEXUEYUAN’,
这时,串口调试软件就会在窗口显示出相应字符串;如果接送的字符串不正确,单片机不响应。
2系统设计
根据设计题目的要求分析,系统分成两大部分:
(1)单片机的控制部分;
(2)串口通信电路部分。
3RS-232串行接口标准
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速串行通信中增加通信距离的单端标准。
RS-232采取不平衡传输方式,即所谓单端通信。
收、发端数据信号相对于信号地。
可以分为9针串口和25针串口。
RS232转换芯片介绍(max232即是实现电平的转换)具体芯片引脚如下图3-1所示。
图3-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
3
2
2
3
3
2
2
3
3
2
5
5
7
7
5
7
表是对微机标准串行口而言的,还有许多非标准设备则需要看具体情况而定。
九针串口示意图如下图所示:
图3-2串口DB9
串行端口的本质功能是作为CPU和串行设备间的编码转换器。
当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。
在接收数据时,串行的位被转换为字节数据。
在Windows环境(WindowsNT、Win98、Windows2000)下,串口是系统资源的一部分。
应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。
图3-3电路连接图
四、原理图及元件清单
图4-1串口通信原理
图4-2串口通信仿真图
五、元件清单
表5.1元器件清单
器件名称
数量
最小系统板
1个
ISP下载线
1根
USB电源线
1根
电平转换芯片MAX232
1个
九针串口DB9
1个
六、单片机各引脚定义
单片机控制部分采用菲利普P89V51RB2,各引脚定义如下:
表6.1单片机引脚定义
单片机引脚
各器件引脚
功能描述
XTAL1
接内部时钟电路
晶振反向输入
XTAL2
接内部时钟电路
晶振反向输出
EA
接电源
为单片机供电
P3.0
接R1OUT
串行数据接收端
P3.1
接T1IN
串行数据发送端
RST
接按键K1
复位电路
七、系统程序流程图
本设计程序流程:
程序开始,当启动时,串口首先进行初始化,程序首先对定时计数器送初值
主程序流程图如下:
接通电源,当按下复位键时,输入字符到串口的缓存地址中,然后接收中断,判断接收到的字符是否符合字节数要求,如果符合,则进行比较,待完全符合后,发送预先设计好的字符,由此进行无限循环。
图7.1接收发送程序流程图
图7.2单片机主程序流程图
八、串口通信设计的系统源程序
#include
codeunsignedcharr1[]={"go"};//定义目标字符串
codeunsignedcharr2[]={"who"};
codeunsignedcharr3[]={"home"};
codeunsignedchars1[]={"WELCOMETOCHINA!
"};//定义返回字符串
codeunsignedchars2[]={"MYNAMEISLIMING"};
codeunsignedchars3[]={"YINGYONGKEXUEXUEYUAN"};
unsignedcharsend_s;
unsignedchars_count,s_count2,t_count;
unsignedcharbuf[20];
voidservice_intt0()interrupt1using2//定时器中断0
{
EA=0;
t_count++;
if(t_count>=10)
{
if(s_count==2)//判断接收字符长度为2
{
if((buf[0]==r1[0])&&(buf[1]==r1[1]))//判断接收数组中字符为“go”
{
send_s=1;
}
}
elseif(s_count==3)//判断接收字符长度为3
{
if((buf[0]==r2[0])&&(buf[1]==r2[1])&&(buf[2]==r2[2]))//判断接收数组字符为“who”
{
send_s=2;
}
}
elseif(s_count==4)//判断接收字符长度为4
{
if((buf[0]==r3[0])&&(buf[1]==r3[1])&&(buf[2]==r3[2])&&(buf[3]==r3[3]))//判断接收字符长度为“home”
{
send_s=3;
}
}
s_count=0;
t_count=0;
}
TH0=0x3c;
TL0=0xb0;
EA=1;
}
voidservice_ints()interrupt4using3//串口中断程序
{
EA=0;//关中断
if(RI==1)
{
buf[s_count]=SBUF;//接收PC机字符存在数组buf中
s_count++;
t_count=0;
TH0=0x3c;
TL0=0xb0;
RI=0;
}
elseif(TI==1);
EA=1;
}
voidmain()//主函数入口
{
TMOD=0x21;//设置T1工作方式为2,T0工作方式为1
TH0=0x3c;//送T0初值
TL0=0xb0;
TH1=0xfd;//送T1初值,设置波特率9600
TL1=0xfd;
TR0=1;
TR1=1;
SCON=0x50;//设置串口通讯方式为方式1,允许串口输入
RI=0;
TI=0;
ET0=1;//定时器T0中断允许
ES=1;//允许串口中断
EA=1;//中断允许
while
(1)
{
if(send_s==1)//发送数组S1中字符
{
EA=0;
s_count2=0;
while(s1[s_count2]!
='\0')
{
SBUF=s1[s_count2];
while(TI==0);
TI=0;
s_count2++;
}
send_s=0;
TH0=0x3c;
TL0=0xb0;
EA=1;
}
elseif(send_s==2)//发送数组S2中字符
{
EA=0;
s_count2=0;
while(s2[s_count2]!
='\0')
{
SBUF=s2[s_count2];
while(TI==0);
TI=0;
s_count2++;
}
send_s=0;
TH0=0x3c;
TL0=0xb0;
EA=1;
}
elseif(send_s==3)//发送数组S3中字符
{
EA=0;
s_count2=0;
while(s3[s_count2]!
='\0')
{
SBUF=s3[s_count2];
while(TI==0);
TI=0;
s_count2++;
}
send_s=0;
TH0=0x3c;
TL0=0xb0;
EA=1;
}
elseif(send_s==4)
{
EA=0;
send_s=0;
TH0=0x3c;
TL0=0xb0;
EA=1;
}
}
}
九、课程设计心得体会
此次单片机课程设计,在冯新刚老师、李明辉老师和钟国梁等老师的精心指导下,我们顺利完成了串口通信的课程设计。
通过此次课程设计,收获颇丰,在此真心感谢三位老师的耐心及细心指导。
1、对课程设计的意义有更深的理解
通过此次课程设计,掌握了如何用Keil编译程序,如何用Proteus软件仿真单片机的动作,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解如何编译程序构造工具及其相关的技术对课本上的只是有了更深的理解,课本上的知识是机械的、表面的,关键是如何将所学的知识与实际的应用结合起来。
2、激发了学习的积极性
通过此次课程设计,全面系统的理解了单片机原理及编程的一般原理和基本实现方法。
把死板的课本知识变得生动有趣,激发了学习的积极性。
把学过的单片机原理的知识强化,能够把课堂上的知识通过自己设计的作品表示出来,加深了理论知识的理解。
以前对于单片机控制系统的认识是很模糊的,概念上的、表面上的、肤浅的。
现在通过自己动手做设计,从实践上认识了制作控制系统应该如何来实现,如何运用其他辅助软件帮助程序设计,对Keil软件的操作熟练程度有了一定得提高,但是课程设计中调试和编译比较复杂的程序时,仍然在程序的编写中存在一点问题。
在这次课程设计中,我们就是按照实验指导的思想来完成,培养实践动手能力和程序开发能力的目的。
3、学生在此次课程设计中学会了自己如何解决在实际中的困难
课程设计目的在于加深对MCS-51单片机的理解,掌握单片机应用系统的设计方法;掌握常用接口芯片的正确使用;强化单片机应用电路的设计与分析能力;提高学生在单片机应用方面的实践技能和严谨的科学作风;培养学生综合运用理论知识解决实际问题的能力,力求实现理论结合实际,学以致用的原则。
学生通过查阅资料、接口设计、程序设计、安装调试、整理资料等环节,初步掌握工程设计方法和组织实践的基本技能;熟悉开展科学实践的程序和办法,为今后从事生产技术工作打下必要的基础;学会灵活运用已经学过的知识,并能不断接受新的知识,大胆发明创造的设计理论。
参考文献
[1]潘永雄主编.新编单片机原理与应用.西安电子科大出版社,2009.
[2]张天凡等主编.C51单片机C语言开发详解.电子工业出版社,2006.
[3]周润景等主编.Proteus在MCS-51&AR7系统中应用百例.电子工业出版社,2008.
[4]王军茹等主编.MCS-51单片机原理及应用.2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 通信
![提示](https://static.bingdoc.com/images/bang_tan.gif)