《单片机与PC机串行通信系统硬件与上位机程序的设计说明.doc》由会员分享,可在线阅读,更多相关《单片机与PC机串行通信系统硬件与上位机程序的设计说明.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 .17 / 21随着计算机技术尤其是单片微型机技术的发展,单片机被广泛应用在工业控制系统中。单片机具有体积小、价格低廉、开发应用方便、可应用于恶劣工业环境的特点,在分布式控制系统中多采用单片机进行数据采集和现场控制。由于单片机的计算能力有限,难以进行复杂的数据处理,因此在功能复杂的控制系统中常采上位机下位机系统,单片机用作下位机进行数据采集和设备控制,而PC机用做上位机进行复杂的数据处理和对单片机的控制。因此如何实现PC机与单片机之间的通信具有重要的现实意义。论文详细介绍了单片机与PC机通信的软硬件实现。在硬件设计中,单片机系统与PC机系统通过RS-232串行通信端口进行互连,单片机系统将由
2、PC 机传输过来的数据信息动态的显示在LED数码管上。在软件设计中,采用Visual Basic 6.0中的MSComm通信控件设计PC上的串口通信程序。关键词:单片机;串行通信;VB6.0;RS-232;LED数码管Design of a serial Communication system between MCU and personal computerAbstractAlong with the development of computer,especially the technology of MCU,MCU are widely used in the system of i
3、ndustry control.Small size,low price,the convenience of development and application and high adaptability are its peculiarities, respectiviely. It is usually used in distributed system to collect data and control on the scene. Owing to the limit of calculation,it is difficult to process complex data
4、.Therefore,PC lower level computer system is often applied in functionally complex system.MCU collects data and control equipments as Downside machine,while PC makes complex data processing and the control of MCU. SO how to realize the communication between PC and MCU is practically meaningful.The e
5、ssay introduces the communication between PC and MCU realized by soft and hard ware in details.IN design of hardware, MCU is connected with PC by the serial port of RS-232 and display the data passed by PC on the LED dynamically.In design of software,program of serial port are designed by MSComm com
6、munication control in the language of Visual Basic 6.0.Key Words: MCU; Serial Communication; VB6.0; RS-232; LED目 录1 引言11.1 单片机与PC机串行通信研究背景11.2 单片机与PC机串行通信研究目的和意义12 串口通信基础12.1 两种常用接口方式22.1.1 并行接口22.1.2 串行接口22.2 RS-232串行接口标准23 系统总体设计33.1 系统指标设计33.1.1 通信协议设定33.1.2 系统实现描述33.2 总体方案设计34 硬件接口电路设计44.1 主要芯片4
7、4.1.1 AT89C5144.1.2 单电源转换芯片MAX23264.1.3 74LS245LED驱动芯片74.2 LED显示器74.2.1 LED显示器工作原理84.2.2 LED显示器接口84.3 系统设计85 PC机程序设计95.1 MSComm控件95.1.1 MSComm控件处理通信的方式95.1.2 MSComm控件的主要属性105.2 应用界面设计流程105.2.1 创建项目文件105.2.2 加入串口通信控件115.2.3 设计窗体界面125.3 代码实现126 仿真调试与结果分析157 结语17参考文献18致 191 引言1.1 单片机与PC机串行通信研究背景近年来,随着科
8、学技术的发展,PC机以其优越的性价比和丰富的软件资源成为计算机应用的主流机种。在工业控制中单片机得到广泛的应用,现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。由于单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集与对装置的控制,而由上位机完成各种复杂的数据处理与对单片机的控制,二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势1。1.2 单片机与
9、PC机串行通信研究目的和意义现代信息网络技术的一个突出特点,就是使工业控制系统中的所有设备连接成网,从而在一个核心软件管理下工作,形成一个有机的整体2。这种整体网络方式在现代工业控制系统具有传统独立控制系统所无法比拟的先进性,不仅能极提高工业设备的生产效率,还可以大大提高系统的安全性和可靠性。单片机自诞生以来以其性能稳定、价格低廉、功能强大,在智能仪器、工业装备以与日用电子消费品中得到了广泛的应用。在单片机的输入输出控制中,除直接接上小键盘和LCD显示屏等方法外,一般都通过串口和上位机PC进行通信。这样不仅能够实现远程控制,而且能够利用PC机强大的数据处理功能以与友好的控制界面。在一般的利用P
10、C机对单片机进行控制的场合,都是采用Windows作为上位机的平台,其优点是界面友好,编程和操作都比较容易。因此研究PC机与单片机串行通信具有重要的现实与工业意义。2 串口通信基础一般来说,计算机都有一个或多个串行端口,它们依次为Com1、Com2、Com3等。这些串口提供了外部设备与计算机进行数据传输和通信的通道3。串行口通信是指外设和计算机间使用3根信号线进行数据传送的一种通信方式,这三根信号分别是数据信号线、地线与控制线。2.1 两种常用接口方式2.1.1 并行接口并行接口是指8位数据同时通过并行线进行传送,这样数据的传输率能得到极大的提高。但在并行传输中,干扰会随线路长度的增加而增加,
11、产生传输错误。因此,并行传输主要应用在近距离数据传输中,如连接打印机端口。并行接口主要使用36针接头和25针D形接头,目前以25针D形接头为主4。2.1.2 串行接口串行口也是计算机的一种标准接口,PC机一般至少有两个串行口Com1和Com2。串行口不同于并行口,它的数据和控制信息是一位接一位在一根传输线上传送的,这样串行口较并行口能够进行远距离传送信息。串行口通常使用9针D形连接器,有些老式则使用25针D形连接器。由于CPU与接口间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,要由接收移位寄存器把串行方式转换成并行方式,由发送移位寄存器把并行方式转换成串行方式。完成这种转
12、换功能的电路叫做通用异步收发机UART4。2.2 RS-232串行接口标准目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。RS-232采用不平衡传输方式,收发端的数据信号,是相对信号地。9针串口引脚和25针串口引脚定义如表2-1所示。表2-1 9针串口引脚和25针串口引脚定义9针串口(DB9)25针串口(DB25)针号功能说明缩写针号功能说明缩写1数据载波检测DCD8数据载波检测DCD2接收数据RXD3接收数据RXD3发送数据TXD2发送数据TXD4数据终端准备DTR20数据终端准备DTR5信号地GND7信号地GN
13、D6数据设备准备好DSR6数据设备准备好DSR7请求发送RTS4请求发送RTS8清除发送CTS5清除发送CTS9振铃指示DELL22振铃指示DELL典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在5V15V,负电平在-5V-15V;在接收数据时,接收器的典型工作电平是3V12V和-3V-12V。串口传输数据只要有接收数据针脚和发送数据针脚就能实现,其连接方式如表2-2所示。表2-2 串口通信连接方式9针9针25针25针9针25针233222322333557757表2-2是对微机标准串行口而言的,还有许多非标准设备则需要根据具体情况而定。3 系统总体设计3.1
14、系统指标设计3.1.1 通信协议设定硬件接口:单片机输出的TTL电平经电平转换芯片转换成为RS-232信号,然后与PC机互连。字符格式:1位起始位,8位数据位,1位停止位。通信波特率:9600bps。差错校验:无奇偶校验。3.1.2 系统实现描述下位机可以脱机单独工作,并用存储器存储由PC机传送来的数据,通信时由上位机发出通信请求,要求下位机给出回应。当单片机无应答时,PC机将重发通信请求直到下位机给出响应。传送数据前先发数据数目,接下来发送数据,下位机接收数据并动态显示在LED数码管上。3.2 总体方案设计单片机部有一个全双工的收发缓冲器(SBUF),这两个在物理上独立的接收发射器,即可以接
15、收也可以发射数据,它们共用同一个地址99H。在串行口的输入输出引脚上加上电平转换器,就可以方便的设计成标准的RS-232接口。在设计中以PC机为主机,单片机为从机,通过串行接口构成主从系统,设计其串行通信的基本功能,其系统框图如图3-1所示。单片机LED动态显示时钟电路复位电路MAX232PC机图3-1 系统框图4 硬件接口电路设计4.1 主要芯片4.1.1 AT89C51在系统设计中使用AT89C51单片机作为下位机,与PC机进行串口通信,接收数据并控制数据在LED数码管上动态显示。AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片,置4Kbytes的可反复擦写的只
16、读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器(CPU)和Flash存储单元,功能强大5。AT89C51单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。1)AT89C51性能参数AT89C51有如下性能参数:与MCS-51产品指令系统的全兼容;4k字节可重擦写Flash闪速存储器;1288字节部RAM;1000次可擦写周期;全静态操作:0Hz-24MHz;三级加密程序存储器;32个可编程I/O口线;2个16位定时/计数器;1个全双工异步串行口;6个中断
17、源,2个中断优先级;低功耗空闲和掉电模式。2)AT89C51部结构与管脚图AT89C51包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元与数据总线、地址总线和控制总线等三大总线7,其方框图如图4-1所示。图4-1 AT89C51方框图AT89C51单片机采用40Pin封装的双列直接DIP结构,其引脚配置如图4-2所示。图4-2 AT89C51引脚配置(1)RESET/Vpd(9脚)复位信号当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H。RE
18、SET由高电平下降为低电平后,系统即从0000H地址开始执行程序。其复位电路如图4-3所示。图4-3 AT89C51复位电路(2)(30脚)地址锁存信号当访问外部程序存储器时,ALE的输出用于锁存地址的低位字节,而访问部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。(3)(29脚)片外程序存储器读选通当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。(4) EA
19、/Vpp(31脚)部和外部程序存储器选择信号程序存储器的外部选通线,8051和8751单片机,置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。3)AT89C51串行口结构(1)数据缓冲器SBUF串行口是一个可寻址的专用寄存器,有两个物理空间上各自独立的发送缓冲器和承受缓冲器,可以实现全双工通信,这两个寄存器具有同一地址(99H)。单片机的串行数据传输很简单,只要向缓冲器写入数据就可发送数据,从接收缓冲器读出数据既可接收数据。(2)串行口控制寄存器SCON它是
20、一个可寻址的专用寄存器,用于串行通信的控制,单元地址是98H,其结构格式如表4-1所示。表4-1 SCON寄存器结构SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H(3)特殊功能寄存器PCON可 其字节地址为87H,没有位寻址功能,与串行口有关只有PCON的最高位,其结构如表4-2所示。表4-2 特殊功能寄存器PCONPCOND7D6D5D4D3D2D1D0位符号SMODGF1GF0PDIDLSMOD:波特率选择位。当SMOD=1时,波特率加倍。4.1.2 单电源转换芯片MAX232MAX232是MAXI
21、M公司生产的、包含两路接收/驱动器的芯片。芯片部有一个电源电压变换器,可以将输入的+5V电源电压变换成为RS-232输出电平。硬件接口简单,被广泛使用。芯片的引脚配置与典型就工作电路如图4-4所示。(a) 引脚图 (b) 典型电路图图4-4 MAX232芯片引脚配置和典型工作电路4.1.3 74LS245LED驱动芯片74LS245是常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端低电平有效时,DIR=“0”,信号由B向A传输;DIR=“1”,信号
22、由A向B传输;当为高电平时,A、B均为高阻态,其引脚配置如图4-5所示。图4-5 74LS245引脚配置4.2 LED显示器4.2.1 LED显示器工作原理LED(light emitting diode)显示是用发光二极管显示字段的显示器件,也称数码管,其外形结构如图4-6所示,由图可知它由8个发光二极管构成,通过不同的组合可用来显示09、AF与小数点。(b)共阴极(c)共阳极(a)管脚配置图4-6 “8”字形数码管LED显示器一般分为共阴极和共阳极两种,共阴极是将8个发光二极管的阴极连接在一起作为公共端,而共阳极则是将8个发光二极管的阳极连在一起作为公共端8,其构成如图4-6所示。4.2.
23、2 LED显示器接口在单片机系统中,LED显示接口一般采用静态驱动和动态扫描两种驱动方式。静态驱动方式工作原理是每一个LED显示器有一个I/O端口驱动,亮度大,占用I/O端口多,显示位数多时很少采用;动态扫描驱动方式的工作原理是将多个显示器的段码同名端连接在一起,位码分别控制,利用眼睛的余晖暂留效应,分别显示。动态扫描驱动方式下,只要保证一定的显示频率,看起来的效果和一直显示是一样的。4.3 系统设计系统中采用AT89C51单片机作为下位机,PC机作为上位机,两者通过RS-232串行口收发数据。RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换,系统中使用集成电平转
24、换芯片MAX232实现RS-232/TTL电平转换。单片机系统总体电路如图4-7所示。图4-7 单片机系统总体电路5 PC机程序设计Visual Basic(简称VB)是Windows操作系统下简单、易学、高效的应用软件开发工具。因其具有面向对象的设计方法,友好的用户界面、编程高效、数据处理与驱动底层硬件功能强等优点而受到广泛的使用。在设计PC机程序时,使用面向对象的编程方法。5.1 MSComm控件MSComm控件全称为Microsoft Communications Control,是Microsoft公司提供的简化Windows下串行通行编程的ActiveX控件,它为应用程序提供了通过串
25、行接口收发数据的简便方法。通过对此控件的属性和事件进行相应编程操作,就可以轻松实现串口通信。5.1.1 MSComm控件处理通信的方式MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。MSComm控件提供两种处理通信的方式:事件驱动方式和查询方式。1)事件驱动方式事件驱动通信是处理串行端口交互作用的一种非常有效地方法。这种方式下,在事件发生时,如在串口接收缓冲区有字符等,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件,OnComm事件还可以检查和处理通信错误。在编程过程中,可以在OnComm事件处理函数中加入自己的代码。这种方法的优点使程序响应与时、可靠
26、。2)查询方式查询方式实质上还是事件驱动,在有些情况下,这种方式显得更为便捷。在程序的关键功能后,可以通过检查CommEvent属性的值来查询事件和错误,编写自己的程序代码。5.1.2 MSComm控件的主要属性MSComm控件很多重要的属性,常用属性的功能如下:CommPort属性:设置并返回通信端口号;Input属性:返回并删除接收缓冲区中的数据流;Output属性:往传输缓冲区中写数据流;PortOpen属性:设置并返回通信端口的状态(开或关);Settings属性:设置并返回波特率、奇偶校验、数据位和停止位参数;InputLen属性:确定被Input属性读取的字符数,设置InputLe
27、n为0时,则Input属性读取缓冲区中的全部数据;InputMode属性:确定用Input属性读取的数据类型,设置InputMode为comInputModeText时,Input属性通过一个Variant返回文本数据,设置为comInputModeBinary时,Input属性通过一个Variant返回一个二进制数据数组。5.2 应用界面设计流程5.2.1 创建项目文件(1)单击“开始”按钮,选择“程序|Microsoft Visual Basic 6.0”进入VB6.0窗口。VB6.0启动后,会弹出“New Projiect”对话框,如图5-1所示。图5-1 新建工程(2)在“New Pr
28、oject”对话框中选择“New”选项卡。(3)单击“Standard EXE”项,再单击“打开”按钮,或直接双击“Standard EXE”建立程序开发窗口。(4)选择“File|Save Project”命令,保存文件。5.2.2 加入串口通信控件(1)默认的控件工具栏中没有MSComm控件,因此要先把它加入到控件工具栏上。在控件工具栏上单击鼠标右键,在弹出的对话框中选择“Components”,弹出“Components”对话框,如图5-2所示。图5-2 添加MSComm控件(2)选择“Controls”选项卡中的“Microsoft Comm Control 6.0”项,单击“确定”按
29、钮把它加入到控件工具栏中。5.2.3 设计窗体界面窗体主要完成如下功能:对整个程序初始化、串行端口设置、输入发送数据、对各个按钮响应、显示当前通信端口与端口信息,。在窗体中添加需要的控件,调整控件的大小与在窗体中的位置,得到如图5-3所示的窗体界面,其控件属性与功能如表5-1所示。图5-3 添加控件后的窗体表5-1 主要控件属性类型名称属性功能FormForm1Caption=上位机串口通信CommandbuttonSendCaption=发送数据发送CancelCaption=退出完毕数据发送LabelLabel1Caption=发送数据:Label2Caption=串口选择:Label3C
30、aption=状态TextBoxTxtsendText=请输入要发送的数字字符串!输入发送数据Txtport显示串行通信端口Txtmsg显示端口的状态MscommMscomm默认串口通信TimerTimerEaable=falseInterval=250应答超时控制5.3 代码实现单片机与PC机串口通信应用界面程序流程图如图5-4所示。应答超时开始发送数据准备数据完整性验证设置、打开串行端口应答?发送通信请求发送数据个数和数据通信完毕关闭端口图5-4 PC机程序流程图源程序代码如下:Dim hand As Boolean 等待回应时间到标志位,为FALSE时时间没有到,TRUE时时间到Priv
31、ate Sub cancel_Click() Unload Me EndEnd SubPrivate Sub send_Click() 变量定义 Dim strsend$, strbit$ Dim intsend% 发送的字符长度 Dim writebuff As Variant 写输出缓冲区 Dim readbuff$ 读输入缓冲区数据 strsend = txtsend.Text intsend = Len(strsend) If intsend = 0 Then MsgBox 请输入数字字符!, , 错误 Exit Sub End If 数据完整性验证 For i = 1 To ints
32、end Step 1 strbit = Mid(strsend, i, 1) Select Case strbit Case Is 9 MsgBox 输入的数据中存在非数字字符! & vbCrLf & 请重新输入!, vbRetryCancel, 错误 txtsend.Text = Exit Sub End Select Next i On Error GoTo comrserror 串行通信口参数设置 MSCommmPort = 1 使用Com1做为串行通信口 MSComm.Settings = 9600,n,8,1 串口属性设置 MSComm.InputLen = 1 每次从接收缓冲区读取
33、一个字符 MSComm.InputMode = comInputModeText 以字符形式从缓冲区中承受字符 MSComm.InBufferCount = 0 清除输入缓冲区 MSComm.OutBufferCount = 0 清除输出缓冲区 MSComm.PortOpen = True 打开通行端口 txtport.Text = COM & MSCommmPort txtmsg.Text = 串口COM & MSCommmPort & 打开成功!波特率=9600bps 发送握手信号handle: hand = False 开始发送握手信号时回应标志位为FALSE writebuff = C
34、hr$(&HFF) 准备握手信号&Hffh MSComm.Output = writebuff 发送握手信号 Timer.Enabled = True 启动应答定时器 Do DoEvents If hand Then GoTo handle 定时时间到未收到回应信号重发握手信号 End If Loop Until MSComm.InBufferCount 等待回应 收到对方的回应 Timer.Enabled = False 读取并判断是否为规定的联络信号 readbuff = MSComm.Input If Asc(readbuff) = 255 Then writebuff = Chr$(i
35、ntsend) MSComm.Output = writebuff 收到正确的回应,发送字符个数和数据 writebuff = strsend MSComm.Output = writebuff MSComm.PortOpen = False 发送完数据关闭端口 Exit Sub Else GoTo handle End Ifcomrserror:End SubPrivate Sub Timer_Timer() Timer.Enabled = False hand = True 定时间到关闭定时器,设置标志位End SubPrivate Sub txtsend_Click() txtsend.
36、Text = End Sub6 仿真调试与结果分析点击“Start”按钮,出现设计的PC机串行通行界面,在“发送数据”文本框中输入要发送的数字字符串(字符串长度不超过16),点击“发送”按钮,出现如图6-1所示的运行结果。图6-1 PC机通信程序运行结果点击“退出”按钮时,退出应用程序,有此可知PC机通行程序能够正常打开串行口,并实现向串口传送和接收数据。7 结语经过几个月的毕业设计,因为计时间和任务的性质的关系,没有完全按照上述的测试方法进行测试,但经过一些简单的步骤的测试,证明本设计的串行通信的稳定性与实用性。当然本设计也存在着很大的问题,比如:1功能上相对简单,只是实现了PC机与单片机间的数字的传送,没有设计文字与图片等的传送。2容易出错,且没有提出纠错方案,传送过程中可靠性较差。3只是实现程序仿真,没有进行实际的硬件连接。在连接过程中肯定仍然存在一些新的问题。上述问题我一定会在以后逐步完善的,毕业设计,过程曲折一言难尽,有解决问题后的喜悦也有面对问题茫然不知所措的失落。 毕业设计让我受益匪浅,通过毕业设计,我知道了理论和实践相结合的重要性。加强了动手,思考和解决实际问题的能力。在这个过程中我学会了如何查阅、引用文献,如何写论文,如何收集需要的资料。同时我也意识到自己所学知识的肤浅,遇到的许多困难更激励我不断的学习和汲取知识,争取有更大的进步。