【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“(最新)RS-232接口与单片机串行通信程序设计 - 毕业设计”一文,供大家参考学习!
RS-232接口与单片机串行通信程序设计 作者:mcu110 来源:51hei 点击数6267 更新时间2007年08月07日 【字体大 中 小】 单片机的串行口是非常有用的通过他我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作下面我就给大家介绍上一下电脑的RS-232接口与单片机串行通信程序设计方法www.51hei.com上还有很多这样的文章大家去
搜索下。
RS-232简介 在串行通讯时要求通讯双方都采用一个标准接口使不同的设备可以方便地连接起来进行通讯.RS-232-C接口又称EIA RS-232-C是目前最
常用的一种串行通讯接口. RS-232-C中的-C只不过表示RS-232的版本所以与RS-232简称是一样的它是在1970年由美国电子工业协会EIA联合贝尔系统调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准.它的全名是数据终端设备DTE和数据通讯设备DCE之间串行二进制数据交换接口技术标准该标准规定采用一个25个脚的DB-25连接器对连接器的每个引脚的信号内容加以规定还对各种信号的电平加以规定.后来IBM的PC机将RS232简化成了DB-9连接器从而成为事实标准.而工业控制的RS-232口一般只使用RXDTXDGND三条线. 下面让我们使用S51增强型单片机实验板来开发一个简单的串口通信实验程序这是一个串口通信综合实验需要
全套餐客户的相关配件配合才能完成。
通过该实验程序我们可以检测实验板串口的状态接收计算机发送来的数据然后再发送回计算机如果程序中发送和接收窗中显示的字符相同则说明实验板的串口是良好的能够正常收发数据另外单片机接收计算机的控制指令根据控制指令来控制实验板上的继电器动作。
首先让我们来看看我们做的通讯软件的实际效果。
。
。
RS-232接口与单片机串行通信程序设计的界面 图 1 注当前按键“K”按键的ASC码“75”按键的16进制码“4BH” S51增强型单片机实验板与电脑串口实现RS232通信运行效果图 图 2 注按压PC键盘的按键“K”单片机将串口接收到按键实时显示在液晶模块上锁定了大小键。
1、液晶模块第一行显示“PS2-KEY K ” 表示接收到PS2键盘的按键“K” 2、液晶模块第二行显示“HEX4Bh ASC75 ”表示K的HEX码为“4BH”ASC码为“75” 图 3 注按压PC键盘的按键“2”单片机将串口接收到按键实时显示在液晶模块上 1、液晶模块第二行显示“HEX32h ASC50 ”表示K的HEX码为“32H”ASC码为“50” 2、液晶模块第一行显示“PS2-KEY 2 ” 表示接收到PS2键盘的按键“2” 从上面两幅图中可以看到我们实现主要目标如下 1、在计算机上
VB6.0编写的通信测试程序检测的键盘操作将我们的按压PS2键盘PC键盘按键显示在数据发送窗中显示按键当前按键、按键的ASC码、按键的16进制码。
同时将键值通过电脑的RS-232串口发送到S51单片机实验板上实验板上的AT89S51单片机接收到数据后以二进制方式显示在实验板的8位高亮度LED上然后把接收到的数据重新发送回电脑的RS232串口电脑接收到后显示在程序的接收数据窗中。
2、单片机检测识别计算机发送过来的键盘键值将按键值以二进制形式显示在P1口的8位高亮度LED上同时将当前按键、按键的HEX码、ASC码实时显示在1602液晶模块上面。
3、单片机接收计算机对单片机的控制指令当计算机发送“继电器ON指令”时则单片机驱动实验板上的继电器吸合相反如果
计算机发送“继电器OFF指令”时单片机驱动继电器释放我们可以
学习掌握计算机智能控制的原理只要掌握了这种方法我们要在电脑上轻轻点击鼠标就可以控制家里的电气开关了就不难了操作方法点击软件的“继电器”按钮实验板的继电器吸合再次点击按钮继电器释放。
4、单片机接收到数据后发出一时短声提示。
同时将数据重新发送回电脑串口供电脑程序接收显示电脑软件接收到单片机发送过来的数据后显示在软件的接收数据窗中。
【RS-232接口与单片机串行通信程序设计】 该系统程序由单片机通信程序和电脑通信程序构成。
在微机测控系统中一般称计算机为上位机、而前端采集控制的单片机系统称为下位机。
上位机主要负责所有测控数据的综合管理与下位机的调度控制而下位机由单片机构成前端的测控
系统进行原始数据的采集及设备的控制下位机受上位机的管理控制。
一、单片机程序开发 51单片机有一个全双工的串行通信口非常适合与电脑进行通信51单片机的串口开发在各种教科书上都有详细的介绍我们这里不在重复大家可以参考一下书籍。
单片机程序功能主要如下初始化串口、打开串口中断、接收电脑发送的数据、在1602液晶模块上显示数据、将数据发送回电脑RS-232串口、接收继电器控制命令、控制继电器动作等。
单片机通信参考程序如下 ORG 0000H AJMP START 转到初始化程序 ORG 0023H AJMP PGUART 转到串行中断服务子程序 START: MOV SP60H 堆栈指针初始化 MOV P00FFH P0端口初始化 MOV P10FFH P1端口初始化 MOV P20FFH P2端口初始化 MOV P30FFH P3端口初始化 MOV TMOD20H 定时器T1工作于模式2自动重装载 MOV TH10FDH TH1初值为0FDH9600bps MOV TL10FDH TL1初值为0FDH9600bps MOV SCON50H 串行口
工作于方式1允许接收 SETB TR1 启动定时器T1 SETB ES 允许串行口中断 SETB EA 开总中断 CLR UABIT ----------------------RS-232接口与单片机串行通信程序
设计------------------------------- MAIN: ...... 主程序处理其他任务等待串口中断 AJMP MAIN PGUART: ...... 串口中断服务子
程序接收处理数据 RETI END 二、RS-232串行通信测试软件开发 计算机RS-232串行通信测试软件采用
VB6.0开发VisualBasic 6.0简称
VB6.0以其简单易学
VB6.0为可视化编程开发软件开发程序简单易学
VB程序开发主要分为两步第一步、使用
VB控件设计出软件界面第二步、给各种控件编写相应的执行程序
代码代码编写完成后可以运行查看结果了。
VB6提供了多种控件其中MSCOMM.OCX是用于串行通信的控件我们可将该控件添加到工具箱Toolbox内这样就可以利用该控件进行串行
通信程序的设计了。
下面介绍Mscomm控件的主要属性和方法: 1 CommPort设置或返回串行端口号
VB6的取值范围为116表示打开或返回通信端口号COM1COM16 2 Setting设置或返回串行端口的波特率、奇偶校验位、数据位数、停止位。
如Mscomm1.Setting“9600N81” 3 PortOpen打开或关闭串行端口格式为:Mscomm1.PortOpen『True/False』 4 InBufferSize设置或返回接收缓冲区的大小缺省为1024字节 5 InBufferCount返回接收缓冲区内的等待读取的字节个数可通过设置该属性为0来清除接收缓冲区 6 RThreshold该属性为一阀值当接收缓冲区内字节个数达到或超过该值后就产生OnComm事件 7 InputLen设置或返回接收缓冲区内用Input读入的个数。
若取0则Input将读取整个缓冲区的所有内容 8 Input该属性表示从接收缓冲区InputLen个字符 9 OutBufferSize设置或返回发送缓冲区大小缺省为512字节 10 OutBufferCounter返回发送缓冲区内等待发送的字符数可用来清空缓冲区 11 Output向发送缓冲区传送一字符串即向串口发送数据 第一步开发程序界面 打开
VB6.0 - 新建“标准 EXE”建立一个新的工程。
在工程窗口Form1中添加我们要使用的各种按钮和控件其中一个图标如电话一样的控件就是MSCOMM串行通信控件了该控件在界面设计时候可见在程序运行时候不可见。
最后放置好了各种控件后程序的界面界面就出来了是不是很简单呀如下图4所示 RS-232串口通信测试软件界面开发 图 4 第二步
VB软件编写 当软件的界面设计完成后我们就可以给程序添加
代码了在程序中实现的主要功能如下RS-232端口初始化、检测PC键盘按压的按键、发送按键编码、在数据发送窗显示当前按键编码、在接收数据窗中接收显示单片机发送来的数据检测继电器控制按钮的操作发送继电器控制命令。
。
。
如下图5所示 RS-232串口通信测试
软件程序
代码编写 图 5 【串行通信实验操作】 完成了单片机通信程序及PC上我
VB程序开发后我们编译工程得到单片机芯片烧写的HEX格式目标文件rs232test.hex和串口测试程序可以执行文件RS232test.exe然后我们就可以拿出实验板马上进行串口通信实验了检测一下我们的实际通信效果。
1、使用ISP编程器将目标文件rs232test.hex烧写到AT89S51单片机中见下图6 2、如前面的图2所示我们将烧写好了通信程序的AT89S51芯片锁紧到S51单片机实验板上然后把1602字符型液晶模块插到实验板的1602接口上用RS232串口通信电缆和USB电缆将实验板和电脑连接好按压实验板的电源开关开启电源此时实验板上的电源指示灯亮起来实验板准备就绪随时可以接收电脑发送的数据了。
3、双击我们编写的串口测试程序RS232test.exe启动RS-232串行通信测试软件在软件上设置好和实验板连接的通信端口然后点击“PC发送数据发送窗”即可激活输入窗口然后我们按压电脑键盘上的按键按压PS2键盘的按键将会被显示在软件中同时发送到单片机上通过1602液晶模块进行显示当接收到正确数据时候实验板上的蜂鸣器也会发出短促的声音使你按压键盘的感觉从声音上体现出来。
从单片机发送回来的数据被软件接收后会还原显示在发送数据窗中如果我们在电脑上按压的键盘上的按键在软件的发送窗、接收窗及实验板上1602液晶模块上显示的按键都相同则说明我们电脑的RS-232串口良好单片机的串口也是良好的通信正常。
然后我们可以点击软件中的“继电器”按钮实验板上的单片机接收到电脑的控制指令后就会控制继电器产生相应的开关动作实现电脑软件对实验板上继电器的控制。
通过实验加深对51单片机串口的认识: 下面我们通过这套串口测试程序来做个额外实验。
理论上当我们按压键盘上的按键所有按键都会发送到单片机然后再返回计算机上的在串口测试软件上的PC发送数据窗和接收数据窗中显示的字符数目、字符应该是完全相同的如上面图1中显示。
但是当我们连续快速按压PC键盘注意连续速度要足够快哦才能看到实验现象时会发现接收数据窗中有时候会漏掉字符累积下来接收窗中的字符就会比发送窗中的字符少了。
发生这种现象的原因是什么 其实这是由于计算机发送过来的数据太快而单片机的串口中断一次只能接收处理一个数据前一个数据还没有处理完后面又有数据发送过来单片机来不及处理漏掉了。
这是由51单片机的串口特性决定的AT89S51单片机的串口只有一个字节的发送和接收缓冲区SBUF也就是说每次只能发送或接收一个字节数据如果在接收的数据没有及时处理完而又有新的数据进来会造成数据丢失不像计算机中
VB6的MSCOMM串行通信控件默认的接收缓冲区为1024字节而默认的发送缓冲区也有512字节而且还可以改变缓冲区大小计算机有了收发数据缓冲区通信当中就不容易出现缓冲区溢出而通信错误的现象。
在测控系统中如果出现这种错误的话则有可能系统失控数据出错误报警等。
当然我们在通信中也可以加入校验机制来检查错误但这种现象也使系统稳定性降低出现莫名其妙的故障而且这种属于软件故障我们往往不容易想到会走弯路。
为了减少这种问题的出现在这里站长提醒大家在开发的单片机串口中断服务子程序中要尽量加快数据处理速度在接收完成数据后要及时打开串口中断以便接收新的数据而其他占用时间的运算程序尽量不要在串口中断里面处理这是每一个单片机开发人员值得注意的
问题希望大家能够从我们这个实验中得到启发开发出更完美的程序来少走弯路。
好了这个实验到此结束了希望大家通过对这个软件的学习掌握单片机实时温度监控的开发、串口通信程序的开发及计算机串口实时控制开发原理及PC监控软件的开发为开发其他功能更加完善的单片机综合应用系统打好基础。