为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

串口通信

2011-07-13 14页 doc 135KB 194阅读

用户头像

is_053295

暂无简介

举报
串口通信目 录 TOC \o "1-3" \h \z \u 三、设计内容提要及说明 1 1 设计内容 1 4 波特率(Baud Rate) 2 5、线制RS-232C串行通信接线方法 2 四、原理图及元件清单 4 五、元件清单 5 六、单片机各引脚定义 5 七、系统程序流程图 5 八、串口通信设计的系统源程序 7 九、课程设计心得体会 11 参考文献 12 一、摘要 1. 51单片机原理 (1)51单片机的I/O口的使用原理和设置 (2)51单片机的定时/计数器的设置 2. 电平转换芯片的认识和使用 3. 按键的判断和使用 4. 51...
串口通信
目 录 TOC \o "1-3" \h \z \u 三、内容提要及说明 1 1 设计内容 1 4 波特率(Baud Rate) 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机发送字符串‘WELCOME TO CHINA!’, 当接收指令信号为:‘who’,单片机向PC机发送字符串‘MY NAME IS LIMING’, 当接收指令信号为:‘home’,单片机向PC机发送字符串‘YINGYONGKEXUEXUEYUAN’, 这时,串口调试软件就会在窗口显示出相应字符串;如果接送的字符串不正确,单片机不响应。 2 系统设计 根据设计题目的要求分析,系统分成两大部分: (1)单片机的控制部分; (2)串口通信电路部分。 3 RS-232串行接口 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速串行通信中增加通信距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通信。收、发端数据信号相对于信号地。可以分为9针串口和25针串口。 RS232转换芯片介绍 (max232即是实现电平的转换)具体芯片引脚如下图3-1所示。 图 3-1 MAX232 MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。a02e 4 波特率(Baud Rate) 波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,单位是位/秒。假如数据传送的速率每秒为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环境(Windows NT、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 code unsigned char r1[]={"go"}; //定义目标字符串 code unsigned char r2[]={"who"}; code unsigned char r3[]={"home"}; code unsigned char s1[]={"WELCOME TO CHINA!"}; //定义返回字符串 code unsigned char s2[]={"MY NAME IS LIMING"}; code unsigned char s3[]={"YINGYONGKEXUEXUEYUAN"}; unsigned char send_s; unsigned char s_count,s_count2,t_count; unsigned char buf[20]; void service_intt0() interrupt 1 using 2 //定时器中断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; } } else if(s_count==3) //判断接收字符长度为3 { if((buf[0]==r2[0])&&(buf[1]==r2[1])&&(buf[2]==r2[2])) //判断接收数组字符为“who” { send_s=2; } } else if(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; } void service_ints() interrupt 4 using 3 //串口中断程序 { EA=0; //关中断 if(RI==1) { buf[s_count]=SBUF; //接收PC机字符存在数组buf中 s_count++; t_count=0; TH0=0x3c; TL0=0xb0; RI=0; } else if(TI==1); EA=1; } void main() //主数入口 { 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; } else if(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; } else if(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; } else if(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
/
本文档为【串口通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索