RS232接口与单片机串行通信程序设计_第1页
RS232接口与单片机串行通信程序设计_第2页
RS232接口与单片机串行通信程序设计_第3页
RS232接口与单片机串行通信程序设计_第4页
RS232接口与单片机串行通信程序设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RS232 接口与单片机串行通信程序设计 27457988/2008 单片机的串行口是非常有用的, 通过他我们 可以把单片机系统的数据传回电脑处理或者接受电脑传过 来的数据而进行相应的动作,下面我就给大家介绍上一下电 脑的 RS-232 接口与单片机串行通信程序设计方法, 上还有很多这样的文章大家去搜索下。 RS-232 简介:在串行通讯时 ,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯 .RS-232-C 接口 (又 称 EIA RS-232-C) 是目前最常用的一种串行通讯接口 . (RS-232-C中的-C只不过表示 RS-232的版本,所以与 RS-232 简

2、称是一样的 )它是在 1970 年由美国电子工业协会 (EIA) 联合贝尔系统 ,调制解调器厂家及计算机终端生产厂家 共同制定的用于串行通讯的标准.它的全名是 数据终端设备(DTE) 和数据通讯设备 (DCE) 之间串行二进制数据交换接口 技术标准 该标准规定采用一个 25 个脚的 DB-25 连接器 ,对 连接器的每个引脚的信号内容加以规定, 还对各种信号的电平加以规定 .后来 IBM 的 PC 机将 RS232 简化成了 DB-9 连 接器 ,从而成为事实标准 .而工业控制的 RS-232 口一般只使用 RXD,TXD,GND 三条线 . 下面,让我们使用 S51 增强 型单片机实验板来开

3、发一个简单的串口通信实验程序,这是 一个串口通信综合实验,需要全套餐客户的相关配件配合才 能完成。通过该实验程序,我们可以检测实验板串口的状态, 接收计算机发送来的数据,然后再发送回计算机,如果程序 中发送和接收窗中显示的字符相同,则说明实验板的串口是 良好的,能够正常收发数据,另外单片机接收计算机的控制 指令,根据控制指令来控制实验板上的继电器动作。首先让 我们来看看我们做的通讯软件的实际效果。RS-232接口与单片机串行通信程序设计的界面图 1 注:当前按键:“ K”按键的ASC码:“ 75”按键的16进制码:“ 4BH S51 增强型单片机实验板与电脑串口实现 RS232 通信运行 效果

4、图 图2 注:按压PC键盘的按键“ K”单片机将 串口接收到按键实时显示在液晶模块上(锁定了大小键) 。1、液晶模块第一行显示“ PS-K2EY : K ”,表示接收到 PS2 键盘的按键:“ K”2、 液晶模块第二行显示“ HEX4Bh ASC : 75 ”,表示K 的HEX码为“ 4BH ASC码为:“ 75”图3 注:按压 PC 键盘的按键“ 2”单片机将串口接收到按键实时显 示在液晶模块上1、液晶模块第二行显示“HEX32h ASC : 50 ” 表示K 的 HEX 码为“ 32H”A,SC 码为:“ 50”2、液晶模块第一行显示“ PS-K2EY : 2 ”,表示接收到 PS2 键盘

5、的按键:“ 2”从上面两幅图中可以看到,我们实现主要目标如下:1、在计算机上, VB6.0 编写的通信测试程序检测的键盘操作,将我们的按压 PS2 键盘( PC 键 盘)按键显示在数据发送窗中,显示按键当前按键、按键的 ASC 码、按键的 16 进制码。同时将键值通过电脑的 RS-232 串口发送到 S51 单片机实验板上,实验板上的 AT89S51 单 片机接收到数据后,以二进制方式显示在实验板的 8 位高亮 度LED 上,然后把接收到的数据重新发送回电脑的RS - 232串口,电脑接收到后显示在程序的接收数据窗中。2、单片机检测识别计算机发送过来的键盘键值,将按键值以二 进制形式显示在 P

6、1 口的 8 位高亮度 LED 上,同时,将当前 按键、按键的HEX码、ASC码实时显示在1602液晶模块 上面。 3、单片机接收计算机对单片机的控制指令,当计 算机发送“继电器 ON 指令”时,则单片机驱动实验板上的继 电器吸合;相反,如果计算机发送“继电器 OFF 指令”时,单 片机驱动继电器释放,我们可以学习掌握计算机智能控制的 原理,只要掌握了这种方法,我们要在电脑上轻轻点击鼠标 就可以控制家里的电气开关了就不难了(操作方法,点击软 件的“继电器”按钮,实验板的继电器吸合,再次点击按钮, 继电器释放) 。4、单片机接收到数据后,发出一时短声提示。同时将数据重新发送回电脑串口,供电脑程序

7、接收显示,电脑软件接收到单片机发送过来的数据后,显示在软 件的接收数据窗中。【 RS-232 接口与单片机串行通信程序设计】 该系统程序由单片机通信程序和电脑通信程 序构成。在微机测控系统中,一般称计算机为上位机、而前 端采集控制的单片机系统称为下位机。上位机主要负责所有 测控数据的综合管理与下位机的调度控制,而下位机由单片 机构成前端的测控系统,进行原始数据的采集及设备的控制, 下位机受上位机的管理控制。 一、单片机程序开发 51 单片机有一个全双工的串行通信口, 非常适合与电脑进行 通信,51 单片机的串口开发在各种教科书上都有详细的介绍, 我们这里不在重复,大家可以参考一下书籍。单片机程

8、序功 能主要如下:初始化串口、打开串口中断、接收电脑发送的 数据、在 1602 液晶模块上显示数据、将数据发送回电脑 RS-232 串口、接收继电器控制命令、控制继电器动作等。单片机通信参考程序如下:ORG 0000HAJMPSTART;转到初始化程序ORG0023HAJMPPGUART;转到串行中断服务子程序START:MOV SP,#60H;堆栈指针初始化MOVP0,#0FFH;P0 端口初始化MOVP1,#0FFH;P1 端口初始化MOVP2,#0FFH;P2 端口初始化MOVP3,#0FFH;P3 端口初始化MOVTMOD,#20H;定时器 T1 工作于模式 2, 自动重装载MOVTH

9、1,#0FDH;TH1 初值为0FDH,9600bpsMOVTL1,#0FDH;TL1 初值为0FDH,9600bpsMOVSCON,#50H;串行口工作于方式 1允许接收SETBTR1;启动定时器 T1SETBES; 允许串行口中断SETBEA;开总中断CLRUABIT;RS-232 接口与单片机串行通信程序设计 MAIN: ; 主 程序处理其他任务,等待串口中断AJMP MAIN PGUART: ;串口中断服务子程序,接收处理数据RETI END二、 RS-232 串行通信测试软件开发计算机RS-232串行通信测试软件采用VB6.0开发,VisualBasic 6.0 (简称 VB6.0

10、)以其简单易学, VB6.0 为可视化编程开 发软件,开发程序简单易学, VB 程序开发主要分为两步: 第一步、使用 VB 控件设计出软件界面,第二步、给各种控 件编写相应的执行程序代码,代码编写完成后可以运行查看 结果了。 VB6 提供了多种控件, 其中 MSCOMM.OCX 是用 于串行通信的控件, 我们可将该控件添加到工具箱 ( Toolbox ) 内,这样就可以利用该控件进行串行通信程序的设计了。下面介绍 Mscomm 控件的主要属性和方法 :VB6 的取1)CommPort :设置或返回串行端口号,值范围为116,表示打开或返回通信端口号C0M1COM162)Setting :设置或

11、返回串行端口的波特率、奇偶校验位、数据位数、停止位。如: Mscomm1.Setting= “ 9600, N,8,1”3 ) PortOpen :打开或关闭串行端口,格式为:Mscomm1.PortOpen= True/False4) InBufferSize :设置或返回接收缓冲区的大小,缺 省为 1024 字节5) InBufferCount :返回接收缓冲区内的等待读取的 字节个数,可通过设置该属性为 0 来清除接收缓冲区6) RThreshold :该属性为一阀值,当接收缓冲区内字节个数达到或超过该值后就产生 OnComm 事件7 ) InputLen :设置或返回接收缓冲区内用 I

12、nput 读入 的个数。若取 0,则 Input 将读取整个缓冲区的所有内容8 ) Input :该属性表示从接收缓冲区 InputLen 个字符9 ) OutBufferSize :设置或返回发送缓冲区大小,缺 省为 512 字节10 ) OutBufferCounter :返回发送缓冲区内等待发送 的字符数,可用来清空缓冲区11 ) Output :向发送缓冲区传送一字符串,即向串口 发送数据 第一步:开发程序界面 打开 VB6.0 -> 新建“标准EXE建立一个新的工程。在工程窗口Forml中添加我们要使用的各种按钮和控件,其中一个图标如电话一样的 控件就是 MSCOMM 串行通信

13、控件了, 该控件在界面设计时 候可见,在程序运行时候不可见。最后,放置好了各种控件 后,程序的界面界面就出来了,是不是很简单呀!如下图 4 所示: RS-232 串口通信测试软件界面开发图 4 第二步: VB 软件编写 当软件的界面设计完成后,我们就 可以给程序添加代码了,在程序中实现的主要功能如下: RS-232 端口初始化、检测 PC 键盘按压的按键、发送按键 编码、在数据发送窗显示当前按键编码、在接收数据窗中接 收显示单片机发送来的数据,检测继电器控制按钮的操作, 发送继电器控制命令。 。如下图 5 所示: RS-232 串口通信 测试软件程序代码编写图 5【串行通信实验操作】 完成了单

14、片机通信程序及 PC 上我 VB 程序开发后,我们编译工程,得到单片机芯片 烧写的 HEX 格式目标文件 rs232test.hex 和串口测试程序可 以执行文件 RS232test.exe ,然后我们就可以拿出实验板, 马上进行串口通信实验了,检测一下我们的实际通信效果。 1、使用 ISP 编程器将目标文件 rs232test.hex 烧写到 AT89S51 单片机中 (见下图 6 )2、如前面的图 2 所示:我们将烧写好了通信程序的 AT89S51 芯片锁紧到 S51 单片机实验板上,然后把 1602 字符型液晶模块插到实验板 的 1602 接口上,用 RS232 串口通信电缆和 USB

15、电缆将实 验板和电脑连接好,按压实验板的电源开关,开启电源,此 时实验板上的电源指示灯亮起来,实验板准备就绪,随时可 以接收电脑发送的数据了。3、双击我们编写的串口测试程序 RS232test.exe ,启动 RS-232 串行通信测试软件, 在软件上设置好和实验板连接的通信端口,然后点击“发送数据发送窗”,即可激活输入窗口, 然后我们按压电脑键盘 上的按键, 按压 PS2 键盘的按键将会被显示在软件中, 同时 发送到单片机上通过 1602 液晶模块进行显示,当接收到正 确数据时候,实验板上的蜂鸣器也会发出短促的声音,使你 按压键盘的感觉从声音上体现出来。从单片机发送回来的数 据被软件接收后,

16、会还原显示在发送数据窗中,如果我们在 电脑上按压的键盘上的按键,在软件的发送窗、接收窗及实 验板上 1602 液晶模块上显示的按键都相同,则说明我们电 脑的 RS-232 串口良好,单片机的串口也是良好的,通信正 常。然后,我们可以点击软件中的“继电器”按钮,实验板上 的单片机接收到电脑的控制指令后,就会控制继电器产生相 应的开关动作,实现电脑软件对实验板上继电器的控制。 通过实验加深对 51 单片机串口的认识 : 下面我们通过这 套串口测试程序来做个额外实验。理论上,当我们按压键盘 上的按键,所有按键都会发送到单片机,然后再返回计算机 上的,在串口测试软件上的 PC 发送数据窗和接收数据窗中

17、 显示的字符数目、字符应该是完全相同的,如上面图 1 中显 示。但是,当我们连续快速按压 PC 键盘(注意:连续速度 要足够快哦,才能看到实验现象)时,会发现接收数据窗中 有时候会漏掉字符,累积下来,接收窗中的字符就会比发送 窗中的字符少了。 发生这种现象的原因是什么 ?! 其实这是由于计算机发送过来的数据太快,而单片机的串口 中断一次只能接收处理一个数据,前一个数据还没有处理完, 后面又有数据发送过来,单片机来不及处理漏掉了。这是由 51 单片机的串口特性决定的, AT89S51 单片机的串口只有 一个字节的发送和接收缓冲区 SBUF ,也就是说每次只能发 送或接收一个字节数据,如果在接收的数据没有及时处理完, 而又有新的数据进来,会造成数据丢失,不像计算机中 VB6的 MSCOMM 串行通信控件,默认的接收缓冲区为1024 字 节,而默认的发送缓冲区也有 512 字节,而且还可以改变缓 冲区大小,计算机有了收发数据缓冲区,通信当中就不容易 出现缓冲区溢出而通信错误的现象。 在测控系统中,如 果出现这种错误的话则有可能系统失控,数据出错,误报警 等。当然,我们在通信中也可以加入校验机制来检查错误, 但这种现象也使系统稳定性降低,出现莫名其妙的故障,而 且这种属于软件故障,我们往往不容易想到,会走弯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论