《无线通信技术与应用教材(测试版).docx》由会员分享,可在线阅读,更多相关《无线通信技术与应用教材(测试版).docx(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、自动化系自编教材主编匡畅无线通信技术与应用(第一版) 目录第一章概述2第二章单片机复习实训4项目一:制作PROTUES单片机仿真板4项目二:单片机串口多机通信1第三章串口通信实训4项目一:制作Visual Basic 串口助手4项目二:单片机温度采集报警系统16第四章红外通信实训23项目一:红外解码遥控风扇23项目二:红外发射仿真通信29第五章无线射频通信实训35项目一:制作单片机无线手柄35项目二:多机无线聊天室?或无线对讲机?37第六章RFID实训39第七章WIFI通信实训41第八章GSM通信实训42第一章 概述一、 本书作者匡畅,广东水利电力职业技术学院自动化系教师。办公室地址:自动化楼
2、A5-402联系电话:邮箱:二、 课程简介课程的设计思路是通过对简单的通信模块应用,让学生在实践中掌握基础通信知识,掌握基本通信接口编程知识,掌握通信设备及网络设计流程,掌握底层硬件的通信开发知识。同时,利用实训实操,培养学生的动手能力,组织能力,思考问题、解决问题的能力。本课程核心控制器件是51系列单片机,所有实训项目都围绕单片机核心控制器,在外围搭建相关通信模块进行各种应用。课程主要介绍了一些主流的无线传感模块的开发与应用(如WIFI、GSM、红外、433MHz无线射频、短距离无线通信RFID等等),主要通过单片机串口与模块进行通信。同时还会进一步加强单片机编程知识,学习电子仿真软件Pro
3、tues,学习通过上位机通信软件编程Visual Basic语言进行单片机串行口通信的编程等。课程的授课方式为讲授和实训相结合的方式,强调实训,淡化理论,让学生们在“做中学”。本课程的项目内容主要来自于实际应用,这样既提高了学生们的学习兴趣,也让学到的知识更容易被理解与接受。本课程的考核方式为实训考核,不设期末考试。总评成绩由每个项目的考核成绩和学生自行制作的额外设计成绩组成。与传统的卷面考试相比,通过长期的、平时的考核,能更好的反映一个学生对知识的接受程度,同时也避免了“考前抱佛脚,考后全忘掉”的情况发生。三、 课程框架图1.1 课程框架本课程共由7大实训组成,分别是:单片机复习实训、串口通
4、讯实训、红外通讯实训、无线射频实训、RFID应用实训、WIFI通讯实训、GSM通讯实训每个实训包含两个小实训项目:基础实训项目和提高实训项目。基础实训项目可以分为3个任务:1级难度任务、2级难度任务和3级难度任务。提高实训项目则分为2个任务:4级难度和5级难度。独立于课程之外的还有一个综合实训。综合实训要求同学们利用自己所学的知识,独立完成一个小作品,它要求大家利用课余时间去完成,并不占用上课时间。我们会在20周之前安排综合实训成品展示,现场打分,作为综合实训成绩。四、 考核安排图1.2 总评成绩分布如图所示:总评成绩由7大实训(70%)和综合实训(30%)组成。由于进度问题,7大实训项目不一
5、定全部完成,因此,70分会平均分配到每一个小任务上去,例如:课程结束时共完成10个小任务,那么每个任务就是7分,如果有同学没有完成其中某一个任务,那么他的总评成绩就少了7分。7大实训成绩会在每次实训结束后打分,完成的打“”(满分),完成但不熟练的打“”(一半分),规定时间没有完成的打“”(零分),补做实训只得1/3的分数。需要强调的是,7大实训的70分只包括1、2、4级难度,也就是说只要完成了课程内所有的1、2、4级难度任务就可以拿满70分。而3、5级难度则作为加分项留给有能力的同学课后完成。每完成一项3级难度加2分,每完成一项5级难度加3分。必须先完成低级难度实训才可以进行高级难度实训,3、
6、5级难度不设补做。五、 请假相关请务必提前请假上课前打电话给我或者给我请假条,否则请为假无效。假条必须留一份在我这里备案,请及时准备。六、 综合实训要求1. 可以独立完成,也可以组队完成(最多两名同学)2. 作品内容与功能相近的作品,只取一个较好作品的分数,其他作品只取30%的分数。例如:同样是红外遥控,一个说遥控风扇,一个说遥控台灯,不行。3. 可以使用任意模块、芯片。这里我们鼓励创新,可以自行添加没有上课没学的东西。4. 设计必须具有一定实用性,必须做出成品。5. 评分标准(100%):模块难易程度(20%)创新程度(10%)成品结构外观(20%)现场演示(10%)基本功能实现(30%)实
7、用程度(10%)6. 打分规则:由于有“现场演示”分数,因此请在演示前做好PPT,准备好资料,调试好作品。演示内容包括以下环节:作品名称、制作人员、作品简介、实物功能演示、作品原理简介、制作过程以及调试过程、制作心得体会、总结。最后,提醒大家注意分配时间,及时完成作品。第二章 单片机复习实训1级难度项目一:制作PROTUES单片机仿真板步骤一:Protues仿真软件界面简介图2.1 Protues主界面图2.2 单片机仿真板示例步骤二:找元件打开元件库图2.3 打开拾取元件对话框图2.4 拾取元件对话框如要向元件列表添加元件,可以选中要添加的元件(如“LED-GREEN”),点击“确定”按钮;
8、也可以直接双击“LED-GREEN”元件。这时,元件清单上就会出现已经选中的元件。步骤三:添加元件到元件栏小任务:将制作单片机板所需要使用的元件添加到仿真器的器件栏,元件清单如右图。值得注意的是,7SEG-MPX4-CC 4位共阴数码管,这里“7SEG”表示7位管脚显示一个数字字符,“MPX4”表示一共有4个数码管组合,“CC”表示这是一个共阴的数码管,即低电平有效。图2.5 仿真板元件所有的外部显示电子元件,都放在“Optoelectronics”类中。而“GND”和“VCC”元件则放在“终端模式”中,其图标在左边侧栏中。选中后,原来器件列表就被终端列表代替了,选择其中的“GND”和“POW
9、ER”在工作区放置即可。表2.1 仿真板器件名称Protues名称对应器件BUTTON按钮COMPIM9针串行接口RESPACK-88位排阻7SEG-MPX4-CC4位共阴数码管LED-REDLED灯步骤四:排列元件放置元件:(这里以放置89C51单片机为例)1. 首先选中“AT89C51”元件如右图1所示。2. 然后在工作区单击一次鼠标左键。这时,工作区会出现89C51单片机元件的轮廓,此时拖动鼠标,轮廓会随着鼠标移动。3. 当选择好位置后,再次点击鼠标左键。此时,元件就被放置在工作区了。 4. 移动元件。想要移动元件,必须先对元件单击一次鼠标左键,这时元件会变成红色,然后拖动元件进行移动。
10、 5. 移动仿真图视角。有两种方法:第一种是点击缩略图区域进行移动;第二种是通过在工作区单击鼠标中间的滚轮进行移动视角。 小任务:将刚刚添加的元件排列到工作区。排列示例如下: 图2.6 器件排列示例步骤五:电气连接使用导线将元件连接起来:将鼠标移动到某个引脚末端,鼠标会变成一个绿色的笔,同时,引脚末端周围会有一个虚线的方框。这时点击一下鼠标,然后移动,就会出现导线。将鼠标移到另一个引脚末端,再次点击鼠标。这时两个引脚就连接在一起了。快速导线连接:(以连接9脚排阻为例)当连接了第一对引脚后,双击下一个引脚的末端,这时导线就自动连接了。这个方法只适用于相同形状的导线连接,因为通过双击鼠标连接的导线
11、,是复制最后一次手动连接导线的形状。我们可以看看下面的例子,如果在右边的引脚末端双击鼠标。可以看出,由于手动导线是从左往右进行连接的,因此双击右边引脚末端会出现上图的情况。导线的标签连接:导线连接对于元件引脚较多的仿真图(例如LED点阵),会出现大量导线,这样会导致仿真图看起来比较混乱复杂,不够简洁;其次,在拖动元件改变仿真图布局时会出现以下情况。 上面左图是排好导线的4位数码管图,右图是移动后的导线连接图。我们不难发现,移动后的数码管导线变得混乱不堪,需要手动调节非常麻烦。因此,为了让仿真器看起来简洁、有序。我们可以使用标签(Label)来代替导线连接各个模块。方法如下:1. 首先我们需要把
12、引脚引出一段导线,具体方法为:先点击引脚末端,然后移动鼠标,将导线引出来一小段,最后双击鼠标,此时导线末端会出现一个小圆点。 2. 点击左边侧栏的“连线标号模式”图标。3. 然后将鼠标移动到那一小段导线上,此时鼠标会变成一个绿笔,笔尖处会有一个交叉“X”。这时,我们点击鼠标左键,会出现一个“Edit Wire Label”的对话框。对话框中的标号就是我们对这段导线命名的标号,标号可以是任意文字。仿真图中,凡是标号相同的导线,都是连接在一起的。我们通常会根据引脚的功能来命名该导线的标号,例如“DATA”表示这段导线传输的是数据,“CLK”表示这段导线传输的是时钟信号。因此我建议,这里的标号名称尽
13、量使用单片机的引脚名称进行标号,这样我们就更加清楚这一段导线是干什么用的。小技巧:快速进行标号当选中“连线标号模式”的情况下,按下键盘“A”字母键,此时会出现一个“属性分配工具”对话框。这里可以使用属性分配工具快速的进行标号,我们先将“字符串”中“PROPERTY=VALUE”改为“NET=P1.#”。首先我们要清楚公式“NET=P1.#”的含义,“NET”表示终端或端口,这是我们要赋值标号的器件类型,然后“P1.#”表示赋值的内容,其中“P1.”是不变的,而“#”则每次赋值后加1,从0开始。点击确定关闭对话框。然后将鼠标移动到需要标号的导线段上(导线上没有标号),这时我们发现,鼠标不再是绿笔
14、形状,而是一个手指点击的形状,右上角还有一个绿色的等号。这时我们点击鼠标左键,发现引脚导线出现了标号,标号为“P1.0”,我们继续点击下一个未标号的导线段,此时又出现了标号,标号为“P1.1”。如果是连接GND或VCC,直接将标号改为“GND”“VCC”“+5V”“+12V”即可。由此可见,这种标号方法更加简单方便。相比于传统的导线连接,在大型复杂的仿真图中,会使设计更加轻松方便,也会令仿真图更加简洁直观。下面是导线连接于标签连接的对比。图2.7 导线连接图2.8 标签连接步骤六:标注功能名称点击左边侧栏-“A”图标(如右),然后点击工作区任意地方,输入文字即可。 图2.9 为模块注明功能图2
15、.10 输入不同样式的文本步骤七:安装VSPD虚拟串口图2.11 VSPD主界面VSPD是一款免费的虚拟串口软件,能在电脑内部建立虚拟串口,其主要功能是可以让仿真器与电脑中的串口调试软件进行虚拟连接。若电脑没有安装VSPD,则进行下面的安装。VSPD的安装步骤:1. 解压VSPD.rar2. 打开解压文件中的vspd.exe,开始安装。3. 选择“English”单击“OK”。4. 点击“Next”,然后选中“I Accept the Agreement”,点击“Next”。5. 之后选择安装位置,一般直接点击下一步,但若电脑有还原,请安装在最后一个盘。6. 安装完毕后点击“Finish”按钮
16、。7. 最后进行破解,打开解压文件中的Cracked文件夹,将里面的两个文件替换安装目录中的文件。 破解后的软件不会有一星期的使用时间限制,而且界面语言会由英文变成中文。8. 为了以后方便调用,可以在电脑桌面创建一个快捷方式,有还原的电脑则忽略此步骤。VSPD的使用界面:左边的窗口中显示了本台电脑中的串口情况,第一个子栏表示物理串口,第二个子栏则表示虚拟串口。见下图:注意,这里的“添加端口”和“重置端口”按钮看不见(我的电脑问题),它们的功能是添加和删除虚拟串口。VSPD的使用方法:1. 首先观察左边的物理串口的串口号,然后设置右边的“端口一”“端口二”的串口号,注意不要与已经存在的串口号号数
17、相同,然后点击右边的“添加端口”按钮即可。新添加的虚拟串口会显示在虚拟串口窗口中。2. 如果要删除虚拟串口,则先选择要删除的串口,然后点击右下方的“重置端口”即可。步骤八:设置仿真单片机板的串口参数双击COMPIM仿真串口后会打开右图编辑对话框,对话框中圈中的参数分别为:物理串口号、物理波特率、物理数据字段长度、物理第九位、虚拟波特率、虚拟数据字段长度、虚拟第九位。 图2.12 COMPIM 图2.13 COMPIM编辑对话框步骤九:打开串口助手,调试串口这里我们以STC下载器中附带的串口助手为例。整个串口助手分为了接收缓冲区、单字符发送区,多字符发送区、打开关闭串口以及串口参数设置,这里我们
18、将COM设置为“3”(根据实际情况调整),波特率设置为“9600”,校验位设置为“None”,数据位设置为“8”,停止位设置为“1”。然后点击“打开串口”按钮。这时我们再去看看VSPD上的变化。图2.14 串口助手波特率设置 图2.15 虚拟串口状态信息当串口助手打开串口后,VSPD上便可以看到相应虚拟串口的信息。例如串口号、波特率等等,还能显示是哪一个应用进程在使用该串口,同时还能为发送和接收计数。步骤十:编写单片机串口程序,与串口助手通信串口程序编写复习:P3.0(10)RXD串行接收口P3.1(11)TXD串行发送口SBUF(8位)串行口缓冲区表2.2 单片机串口字符帧格式起始位D0D1
19、.D7奇偶校验位停止位起始位(1)+数据(8)+奇偶(1)+停止(1) = 共11位表2.3 SCON串行口控制寄存器D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI表2.4 单片机串口工作方式SM0SM1工作方式功能波特率00模式08位同步移位寄存器 晶振频率/1201模式110位异步发送接收 可变,由定时器控制10模式211位异步发送接收 晶振频率/64或晶振频率/32 11模式311位异步发送接收 可变,由定时器控制SM2多单片机通信使能位。SM2 = 1若从机收到的第九位数据为0,则不启动RI中断,并丢弃收到的数据;若从机收到的第九位数据为1,则保存此帧数据
20、至SBUF,并启动中断RI。SM2 = 0从机可以接收所有信息,所有数据都保存至SBUF并启动中断RI。REN接收使能(开关)REN = 1允许接收数据REN = 0禁止接收数据TB8为发送数据的第九位.单机通信时,作为奇偶校验位,但只工作在模式2,3下.多机通信时,作为地址(0)/数据(1)选择位.RB8为接收数据的第九位.模式0下不使用,模式1下作为停止位.单机时作为奇偶检验位,多机时作为地址/数据检验位.TI发送中断标志位RI接收中断标志位串口模式1:字符帧 = 起始位 + 8位数据 + 停止位模式1的波特率由T1和SMOD控制,公式如下:波特率 = (2SMOD) * 晶振频率 / 1
21、2(256 - 定时器初值) / 32定时器初值 = 256 - 晶振频率 * (SMOD + 1) / 384 * 波特率表2.5 常用波特率参数设置波特率晶振频率SMODT1模式初值11060272H137.511.986021DH120011.059202E8H240011.059202F4H480011.059202FAH960011.059202FDH1920011.059212FDH625001212FFH串口中断子程序:void SISR (void) interrupt 4/串行口中断发送及中断过程:当TI=0时,启动串行口,若SBUF有值,系统会自动发送起始位,数据帧在移位脉
22、冲作用下由低位到高位依次从TXD引脚发出,最后系统自动发送停止位。在发送完8位数据后,即插入停止位时,系统自动置TI=1请求中断,表示可以发送下一帧。要注意的是,在SBUF赋值后的一段时间内TI将保持为0,直到8位数据全部发送完毕。如果要连续发送数据时必须等待TI为1后方可清零。表2.6 PCON电源控制寄存器D7D6D5D4D3D2D1D0SMOD-GF1GF0PDIDLSMOD该位与串口通信有关。 SMOD = 0 串口方式1,2,3时,波特率正常。 SMOD = 1 串口方式1,2,3时,波特率加倍。 表2.7 定时/计数器寄存器位D7D6D5D4D3D2D1D0TMODGATEC/T#
23、M11M01GATEC/T#M10M00GATE = 0 TR1控制GATE = 1 INT1控制C/T# = 0为定时器C/T# = 1为计数器表2.8 定时器工作模式M1xM0x模式工作模式00模式013位定时/计数器(THX高8位,TLx低5位)01模式116位定时/计数器10模式28位自动重载入定时/计数器(TLx),在溢出时从THx重载入11模式3T0有此模式,T1没有1级难度任务:编写一个单片机串口程序,参数自定(建议9600,8,N,1),单片机仿真板发送数据到串口助手,串口助手发送数据到单片机仿真板。2级难度2级难度任务:利用串口助手控制单片机实现LED或数码管的显示控制。3级
24、难度步骤一:添加LCD12864、LCD1602模块在“拾取元件”对话框中查找“LCD”点击“Optoelectronics”类,然后在查找结果中选择LCD,注意查看“说明”那一栏,选择“128X64 Graphical LCD with KS0108 controllers”以及“16X2 Alphanumeric LCD”。这里的LCD12864选择的是KS0108控制器的仿真LCD,KS0108控制器不带中文字库,需要通过字模工具自行编写字符,使用并口传输,三级难度将主要以12864为主讲解。表2.8 LCD12864(ks0108)部分引脚功能:引脚名称功能说明DB0DB7数据脚E使能
25、RW读(1)/写(0) 控制RS数据(1)/命令(0)CS1/CS2片选,低电平有效图2.16 LCD12864和LCD16023级难度任务:图2.17 3级难度任务示意图通过LCD12864显示串口数据。自行发挥,没有其他要求,可以在下周上交,逾期不候。4级难度项目二:单片机串口多机通信步骤一:画出硬件仿真图表2.9 器件清单器件名称说明7SEG-BCD-GRNBCD数码管AT89C5189C51单片机BUTTON按键LED-REDLED灯小任务:画出多机控制硬件仿真图1. 从机连接数码管、LED;主机连接LED作为数据/地址指示灯。2. 主机接6个按键,分别对应三台从机选择按键、数据/地址
26、切换按键及数据加减按键。3. 使用3个或以上的单片机,一个作为主模块,其余作为从模块,从模块的RXD引脚都连接到主模块的TXD引脚上。4. 可以使用标签连接法5. 布局自定图2.18 多机通信仿真图步骤二:SCON多机控制位介绍SM2多单片机通信使能位。SM2 = 1若从机收到的第九位数据为0,则不启动RI中断,并丢弃收到的数据;若从机收到的第九位数据为1,则保存此帧数据至SBUF,并启动中断RI。SM2 = 0从机可以接收所有信息,所有数据都保存至SBUF并启动中断RI。思考:如何利用多机控制位进行单片机多机通信?基本思路:1. 将要发送的信息分为:数据 和 地址2. 所有从机都先关闭SM2
27、。3. 给不同的从机分配不同的地址,先发送所选择的从机地址,通知这些从机打开SM2。然后发送数据,此时,没有打开SM2的从机无法接收到数据,而打开SM2的从机则可以。额外思考:可不可以将数据和地址一起发送?也就是说,多机通信的方法不只一种,我们这里介绍的是利用单片机串口硬件编程的第九位来控制多机传输。同学们还可以自行编写协议来达到一传一,一传多,多传一和多传多的目的。步骤三:编写单片机程序这里的程序由四个程序组成,分别是主单片机程序、从1单片机程序、从2单片机程序和从3单片机程序。提示:1. 串口参数需要设置为11位数据帧;2. 波特率自定(建议采用9600);4级难度任务一:(占一半分)主机
28、发送数据给指定从机,主机具有地址数据指示灯,从机被选中时点亮指示灯。4级难度任务二:(占一半分)更换BCD数码管为4位数码管(7SEG-MPX4-CC)更换独立按键为4*4按键矩阵,编写按键扫描程序,实现发送09数字的功能数码管显示数据方式类似于计算器,最新数据从数码管右边进入,将原来的数据推向左边,最旧的数据则从左边推出。图2.19 4级难度任务二示例5级难度任务:利用单片机板硬件实现上述功能,同时让每一台机器都可以实现一对一、一对多通信。(不分主从机)额外加分项(1分):利用单片机与电脑仿真板通信,并添加LCD12864显示。第三章 串口通信实训1级难度项目一:制作Visual Basic
29、 串口助手图3.1 简易串口助手步骤一:Visual Basic 语言简介Visual Basic 是一款由微软开发的易于上手的编程软件。它源自与BASIC语音,但使用起来却非常方便,拥有相当庞大的用户群体。VB可以用于可以开发多媒体、数据库、网络、图形等方面的应用程序。VB简单易学,通用性强,用途广泛。步骤二:新建VB工程打开“Microsoft Visual Basic 6.0”程序,在弹出的新建工程对话框中选择“标准EXE”。 图3.2 新建VB工程步骤三:vb工作界面简介图3.3 VB主界面步骤四:熟悉VB简单操作在工具箱中选择“CommandButton”图标(如右),然后在窗体设计
30、器中拖放。这时会产生一个按钮。当我们选中刚刚放置的按钮,我们可以在属性窗口看到这个按钮的属性。 图3.4 添加CommandButton控件现在我们来改变一下这个按钮的属性,首先将“Caption”的值由“Command1”改为“按钮1”,这时发现窗体上的按钮发生了变化。我们再试试修改“BackColor”属性,将颜色改为红色,但似乎按钮的颜色并没有改变,那是因为还有一个属性没有修改。我们将“Style”属性由“0-Standard”修改为“1-Graphical”,这时按钮的表面变成了红色。提示:1. 属性窗口第一行显示的“Command1 CommandButton”,这里的黑体字是该按钮
31、控件的名称,如果再添加一个新的按钮,则会命名为“Command2”。而后面的“CommandButton”表面了控件的类型是一个按键。2. 当我们在属性窗口选择了某个属性后,在属性窗口的下方会简单的显示其功能和作用,例如选中“Caption”时,下方显示“返回/设置对象的标题栏或图标下面的文本”。因此,我们选中整个窗体时,属性会显示“Form1 Form”,表示这是一个窗口,名字叫“Form1”,这时我们修改窗口的“Caption”属性,将其改为“趣味小程序”。然后我们逐一添加并修改“CommandButton”,直到如图所示。 图3.5 添加Shape控件我们继续添加“Shape”控件(如右
32、),在窗体上拖放,这是一个图形控件。我们修改其“Shape”属性,改为“3-Circle”,这时控件的形状变成了一个圆。我们再将“FillSytle”属性修改为“0-Solid”,这时圆圈变成了黑色,此时我们可以通过“FillColor”修改圆圈的填充色。双击圆圈进入编程界面,这时我们在空白处输入以下代码:Private Sub Command1_Click()Shape1.Top = Shape1.Top - 50End SubPrivate Sub Command2_Click()Shape1.Left = Shape1.Left - 50End SubPrivate Sub Comman
33、d3_Click()Shape1.Left = Shape1.Left + 50End SubPrivate Sub Command4_Click()Shape1.Top = Shape1.Top + 50End SubPrivate Sub Command5_Click()If Not Shape1.FillColor = vbGreen Then Shape1.FillColor = vbGreenElse Shape1.FillColor = vbRedEnd IfEnd Sub图3.6 从菜单栏点击运行程序点击工具栏的“运行”图标(如右),试试编好的程序。步骤五:手动添加串口控制组件M
34、SComm控件在工具栏选择“工程”-“部件”,然后在部件对话框中选择“Microsoft Comm Control 6.0”,将其前面的“”选中,然后单击确定。我们再去看看工具箱栏,这时就可以看到最后一栏出现了一部小电话,那就是MSComm控件。 图3.7 添加MSComm控件在工具栏选中“Microsoft Comm Control 6.0”控件(如右) ,单击这个符号,在窗体设计器中空白处拖放,可以放置MSComm控件。步骤六:MSComm控件参数简介在选中这个控件时,在右边属性栏可以看到它的一些常用属性。我们将会用到的MSComm属性:表3.1 MSComm常用属性属性名称属性说明例子C
35、ommPort端口号(串口号)MSComm1.CommPort = 8InBufferSize设置接收缓存区大小InBufferSize = 2(字节)InputLen每次读取的字符数InputLen = 1(0表示全部读取)Setting设置波特率和字符帧格式MSComm1.Setting = “ 9600 , n , 8 , 1 ” (波特率9600,无第九位,8位数据,1位停止)Rthreshold设置接收字符门限值,大于门限则产生中断(事件)Rthreshold = 1在编程时才调用的属性:InBufferCount:接收缓冲区字符数Input:接收缓存区的数据值PortOpen:打开
36、/关闭串口图3.8 MSComm属性OnComm事件:当串口发生通信事件或错误时,都会产生OnComm事件,就有点类似于中断。表3.2 ComEvReceive参数代码常数含义2ComEvReceive接收到Rthreshold个字符步骤七:设置串口开关按钮添加“打开串口”控件:点击左边工具栏CommandButton图标(右图所示),在窗体设计器中拖放。在属性栏中选择BackColor属性选择一个颜色作为按钮颜色,我选择的是红色。此时按钮颜色还未改变,需要设置一下Style属性原来是0-Standard,改为1-Graphical,按钮颜色就改变为我们所选的颜色了把按钮的Caption属性一
37、栏中 “Command1”改为“打开串口”。可以看到,按钮上的文字变成“打开串口”了。最后的效果如下图:图3.9 “打开串口”按钮双击“打开串口”按钮进入编程区在“Private Sub Command1_Click()”和“End Sub”之间输入以下代码:If MSComm1.PortOpen = False Then判断串口是否已经打开MSComm1.PortOpen = True若无打开,则打开串口Command1.Caption = 关闭串口按键上显示“关闭串口”Command1.BackColor = &H80FF80按键颜色变为绿色ElseMSComm1.PortOpen = F
38、alse若串口已经打开Command1.Caption = 打开串口按键上显示“打开串口”Command1.BackColor = &H8080FF按键颜色变为红色End If运行一下程序看看VSPD上对应串口的属性是否一致,串口是否打开。步骤八:添加串口数据接收区点击工具栏TextBox图标(如右图),在窗体设计器中拖放。点击TextBox属性栏的MultiLine选项,修改False为True。这个属性控制是否可以多行显示点击TextBox属性栏的BorderStyle选项,修改为“0 - None”。这个属性修改的是对象的边框属性。图3.10 TextBox控件点击TextBox属性栏的
39、ScrollBars选项,修改为“2 - Vertical”。这个属性修改的是对象的滚动条。“2 - Vertical”表示竖直滚动条。最后将Text属性内的“Text1”删去。点击工具栏Label图标(如右图),在窗体设计器中拖放。点击Label属性栏的Caption选项,修改为“接收区”。制作完毕后的效果如图。 图3.11 接收区示意图步骤九:设置MSComm控件接收数据双击MSComm控件,在“Private Sub MSComm1_OnComm()”到“End Sub”之间输入以下代码:Dim i As StringDim a() As ByteMSComm1.InputMode =
40、comInputModeBinarySelect Case MSComm1.CommEventCase comEvReceivei = MSComm1.Inputa() = iFor j = 0 To UBound(a)If Len(Hex(a(j) = 1 ThenText1.Text = Text1.Text + 0x0 + a(j) + ElseText1.Text = Text1.Text + 0x + a(j) + End IfNextEnd Select这时我们可以再运行一下程序,看看数据接收区是否能够接收到其他串口助手发来的数据。1级难度任务一:(占一半分)利用之前制作的单片机仿
41、真板向刚刚制作的VB串口助手发送数据并显示在VB上。下面增加串口参数可调的功能步骤十:添加下拉菜单控件点击左边工具栏的ComboBox图标,在窗体设计器中拖放,这里需要拖放5次。再点击左边工具栏的Label图标,在窗体设计器中拖放,这里同样需要拖放5次。让Label控件和ComboBox控件各排成一列,Label控件在ComboBox控件的左边。修改每一个Label的Caption属性,分别改为:“串口号(或端口号)”“波特率”“校验位”“数据位”“停止位”也修改每一个ComboBox的Caption属性,分别改为:“”(端口号留空)“9600”“n”“8” “1” 图3.12 添加下拉菜单步
42、骤十一:为下拉菜单添加数据双击窗口设计器的空白处(即没有控件的地方),进入编程界面。在” Private Sub Form_Load()”和“End Sub”之间输入以下代码:Combo1.AddItem COM1Combo1.AddItem COM2Combo1.AddItem COM3Combo1.AddItem COM4Combo2.AddItem 9600Combo2.AddItem 19200Combo3.AddItem nCombo3.AddItem eCombo3.AddItem oCombo4.AddItem 8Combo5.AddItem 1MSComm1.CommPort
43、= 1MSComm1.Settings = 9600 , n , 8 , 1可见,有多少数据要添加进下拉菜单就需要写多少行代码。有没有简单一点的写法呢?对于有一定规律的数据,是可以利用循环语句来简化的。例如下列语句:For i = 1 To 10Combo1.AddItem COM & iNext iFor j = 1 To 16Combo2.AddItem 2400 * jNext j步骤十二:通过下拉菜单设置串口参数在“打开串口”按钮程序中添加这么一段代码If MSComm1.PortOpen = False ThenMSComm1.Settings = Combo2.List(Combo2.ListIndex) _ & , & Combo3.List(Combo3.ListIndex) & ,8,1MSComm1.PortOpen = TrueElseEnd If1级难度任务二:(占一半分)以不同的波特率和单片机仿真板进行通信。2级难度步骤一:添加数据发送区点击工具栏TextBox图标,在窗体设计器中拖放。在其Text栏输入“请输入16进制数”。点击工具栏CommandButton图标,在窗体设计器中拖放。在其Caption栏输入“发送”。图3.13 发送区整体效果如右图步骤二:编写发送代码双击发送按钮,
限制150内