单片机与PC机串行通信系统硬件及上位机程序设计.docx
- 文档编号:25587732
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:22
- 大小:353.11KB
单片机与PC机串行通信系统硬件及上位机程序设计.docx
《单片机与PC机串行通信系统硬件及上位机程序设计.docx》由会员分享,可在线阅读,更多相关《单片机与PC机串行通信系统硬件及上位机程序设计.docx(22页珍藏版)》请在冰豆网上搜索。
单片机与PC机串行通信系统硬件及上位机程序设计
随着计算机技术尤其是单片微型机技术的发展,单片机被广泛应用在工业控制系统中。
单片机具有体积小、价格低廉、开发应用方便、可应用于恶劣工业环境的特点,在分布式控制系统中多采用单片机进行数据采集和现场控制。
由于单片机的计算能力有限,难以进行复杂的数据处理,因此在功能复杂的控制系统中常采上位机下位机系统,单片机用作下位机进行数据采集和设备控制,而PC机用做上位机进行复杂的数据处理和对单片机的控制。
因此如何实现PC机与单片机之间的通信具有重要的现实意义。
论文详细介绍了单片机与PC机通信的软硬件实现。
在硬件设计中,单片机系统与PC机系统通过RS-232串行通信端口进行互连,单片机系统将由PC机传输过来的数据信息动态的显示在LED数码管上。
在软件设计中,采用VisualBasic6.0中的MSComm通信控件设计PC上的串口通信程序。
关键词:
单片机;串行通信;VB6.0;RS-232;LED数码管
DesignofaserialCommunicationsystembetweenMCUandpersonalcomputer
Abstract
Alongwiththedevelopmentofcomputer,especiallythetechnologyofMCU,MCUarewidelyusedinthesystemofindustrycontrol.Smallsize,lowprice,theconvenienceofdevelopmentandapplicationandhighadaptabilityareitspeculiarities,respectiviely.Itisusuallyusedindistributedsystemtocollectdataandcontrolonthescene.Owingtothelimitofcalculation,itisdifficulttoprocesscomplexdata.Therefore,PClowerlevelcomputersystemisoftenappliedinfunctionallycomplexsystem.MCUcollectsdataandcontrolequipmentsasDownsidemachine,whilePCmakescomplexdataprocessingandthecontrolofMCU.SOhowtorealizethecommunicationbetweenPCandMCUispracticallymeaningful.
TheessayintroducesthecommunicationbetweenPCandMCUrealizedbysoftandhardwareindetails.INdesignofhardware,MCUisconnectedwithPCbytheserialportofRS-232anddisplaythedatapassedbyPContheLEDdynamically.Indesignofsoftware,programofserialportaredesignedbyMSCommcommunicationcontrolinthelanguageofVisualBasic6.0.
KeyWords:
MCU;SerialCommunication;VB6.0;RS-232;LED
1引言
1.1单片机与PC机串行通信研究背景
近年来,随着科学技术的发展,PC机以其优越的性价比和丰富的软件资源成为计算机应用的主流机种。
在工业控制中单片机得到广泛的应用,现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。
由于单片机的计算能力有限,难以进行复杂的数据处理。
因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制,二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势[1]。
1.2单片机与PC机串行通信研究目的和意义
现代信息网络技术的一个突出特点,就是使工业控制系统中的所有设备连接成网,从而在一个核心软件管理下工作,形成一个有机的整体[2]。
这种整体网络方式在现代工业控制系统具有传统独立控制系统所无法比拟的先进性,不仅能极大地提高工业设备的生产效率,还可以大大提高系统的安全性和可靠性。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
单片机自诞生以来以其性能稳定、价格低廉、功能强大,在智能仪器、工业装备以及日用电子消费品中得到了广泛的应用。
在单片机的输入输出控制中,除直接接上小键盘和LCD显示屏等方法外,一般都通过串口和上位机PC进行通信。
这样不仅能够实现远程控制,而且能够利用PC机强大的数据处理功能以及友好的控制界面。
在一般的利用PC机对单片机进行控制的场合,都是采用Windows作为上位机的平台,其优点是界面友好,编程和操作都比较容易。
因此研究PC机与单片机串行通信具有重要的现实及工业意义。
2串口通信基础
一般来说,计算机都有一个或多个串行端口,它们依次为Com1、Com2、Com3等。
这些串口提供了外部设备与计算机进行数据传输和通信的通道[3]。
串行口通信是指外设和计算机间使用3根信号线进行数据传送的一种通信方式,这三根信号分别是数据信号线、地线及控制线。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
2.1两种常用接口方式
2.1.1并行接口
并行接口是指8位数据同时通过并行线进行传送,这样数据的传输率能得到极大的提高。
但在并行传输中,干扰会随线路长度的增加而增加,产生传输错误。
因此,并行传输主要应用在近距离数据传输中,如连接打印机端口。
并行接口主要使用36针接头和25针D形接头,目前以25针D形接头为主[4]。
2.1.2串行接口
串行口也是计算机的一种标准接口,PC机一般至少有两个串行口Com1和Com2。
串行口不同于并行口,它的数据和控制信息是一位接一位在一根传输线上传送的,这样串行口较并行口能够进行远距离传送信息。
串行口通常使用9针D形连接器,有些老式则使用25针D形连接器。
由于CPU与接口间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,要由接收移位寄存器把串行方式转换成并行方式,由发送移位寄存器把并行方式转换成串行方式。
完成这种转换功能的电路叫做通用异步收发机UART[4]。
2.2RS-232串行接口标准
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。
RS-232采用不平衡传输方式,收发端的数据信号,是相对信号地。
9针串口引脚和25针串口引脚定义如表2-1所示。
表2-19针串口引脚和25针串口引脚定义
9针串口(DB9)
25针串口(DB25)
针号
功能说明
缩写
针号
功能说明
缩写
1
数据载波检测
DCD
8
数据载波检测
DCD
2
接收数据
RXD
3
接收数据
RXD
3
发送数据
TXD
2
发送数据
TXD
4
数据终端准备
DTR
20
数据终端准备
DTR
5
信号地
GND
7
信号地
GND
6
数据设备准备好
DSR
6
数据设备准备好
DSR
7
请求发送
RTS
4
请求发送
RTS
8
清除发送
CTS
5
清除发送
CTS
9
振铃指示
DELL
22
振铃指示
DELL
典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在5V~15V,负电平在-5V~-15V;在接收数据时,接收器的典型工作电平是3V~12V和-3V~-12V。
串口传输数据只要有接收数据针脚和发送数据针脚就能实现,其连接方式如表2-2所示。
表2-2串口通信连接方式
9针—9针
25针—25针
9针—25针
2
3
3
2
2
2
3
2
2
3
3
3
5
5
7
7
5
7
表2-2是对微机标准串行口而言的,还有许多非标准设备则需要根据具体情况而定。
3系统总体设计
3.1系统指标设计
3.1.1通信协议设定
硬件接口:
单片机输出的TTL电平经电平转换芯片转换成为RS-232信号,然后与PC机互连。
字符格式:
1位起始位,8位数据位,1位停止位。
通信波特率:
9600bps。
差错校验:
无奇偶校验。
3.1.2系统实现描述
下位机可以脱机单独工作,并用存储器存储由PC机传送来的数据,通信时由上位机发出通信请求,要求下位机给出回应。
当单片机无应答时,PC机将重发通信请求直到下位机给出响应。
传送数据前先发数据数目,接下来发送数据,下位机接收数据并动态显示在LED数码管上。
3.2总体方案设计
单片机内部有一个全双工的收发缓冲器(SBUF),这两个在物理上独立的接收发射器,即可以接收也可以发射数据,它们共用同一个地址99H。
在串行口的输入输出引脚上加上电平转换器,就可以方便的设计成标准的RS-232接口。
在设计中以PC机为主机,单片机为从机,通过串行接口构成主从系统,设计其串行通信的基本功能,其系统框图如图3-1所示。
4硬件接口电路设计
4.1主要芯片
4.1.1AT89C51
在系统设计中使用AT89C51单片机作为下位机,与PC机进行串口通信,接收数据并控制数据在LED数码管上动态显示。
AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片,内置4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大[5]。
AT89C51单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。
1)AT89C51性能参数
AT89C51有如下性能参数:
·与MCS-51产品指令系统的全兼容;
·4k字节可重擦写Flash闪速存储器;128×8字节内部RAM;
·1000次可擦写周期;
·全静态操作:
0Hz-24MHz;
·三级加密程序存储器;
·32个可编程I/O口线;
·2个16位定时/计数器;1个全双工异步串行口;
·6个中断源,2个中断优先级;
·低功耗空闲和掉电模式。
2)AT89C51内部结构及管脚图
AT89C51包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线[7],其方框图如图4-1所示。
图4-1AT89C51方框图
AT89C51单片机采用40Pin封装的双列直接DIP结构,其引脚配置如图4-2所示。
图4-2AT89C51引脚配置
(1)RESET/Vpd(9脚)复位信号
当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
其复位电路如图4-3所示。
图4-3AT89C51复位电路
(2)
(30脚)地址锁存信号
当访问外部程序存储器时,ALE的输出用于锁存地址的低位字节,而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
(3)
(29脚)片外程序存储器读选通
当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
(4)EA/Vpp(31脚)内部和外部程序存储器选择信号
程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
3)AT89C51串行口结构
(1)数据缓冲器SBUF
串行口是一个可寻址的专用寄存器,有两个物理空间上各自独立的发送缓冲器和接受缓冲器,可以实现全双工通信,这两个寄存器具有同一地址(99H)。
单片机的串行数据传输很简单,只要向缓冲器写入数据就可发送数据,从接收缓冲器读出数据既可接收数据。
(2)串行口控制寄存器SCON
它是一个可寻址的专用寄存器,用于串行通信的控制,单元地址是98H,其结构格式如表4-1所示。
表4-1 SCON寄存器结构
SCON
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
位地址
9FH
9EH
8DH
9CH
9BH
9AH
99H
98H
(3)特殊功能寄存器PCON可
其字节地址为87H,没有位寻址功能,与串行口有关只有PCON的最高位,其结构如表4-2所示。
表4-2特殊功能寄存器PCON
PCON
D7
D6
D5
D4
D3
D2
D1
D0
位符号
SMOD
GF1
GF0
PD
IDL
SMOD:
波特率选择位。
当SMOD=1时,波特率加倍。
4.1.2单电源转换芯片MAX232
MAX232是MAXIM公司生产的、包含两路接收/驱动器的芯片。
芯片内部有一个电源电压变换器,可以将输入的+5V电源电压变换成为RS-232输出电平。
硬件接口简单,被广泛使用。
芯片的引脚配置及典型就工作电路如图4-4所示。
(a)引脚图(b)典型电路图
图4-4MAX232芯片引脚配置和典型工作电路
4.1.374LS245LED驱动芯片
74LS245是常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端
低电平有效时,DIR=“0”,信号由B向A传输;DIR=“1”,信号由A向B传输;当
为高电平时,A、B均为高阻态,其引脚配置如图4-5所示。
图4-574LS245引脚配置
4.2LED显示器
4.2.1LED显示器工作原理
LED(lightemittingdiode)显示是用发光二极管显示字段的显示器件,也称数码管,其外形结构如图4-6所示,由图可知它由8个发光二极管构成,通过不同的组合可用来显示0~9、A~F及小数点。
图4-6“8”字形数码管
LED显示器一般分为共阴极和共阳极两种,共阴极是将8个发光二极管的阴极连接在一起作为公共端,而共阳极则是将8个发光二极管的阳极连在一起作为公共端[8],其构成如图4-6所示。
4.2.2LED显示器接口
在单片机系统中,LED显示接口一般采用静态驱动和动态扫描两种驱动方式。
静态驱动方式工作原理是每一个LED显示器有一个I/O端口驱动,亮度大,占用I/O端口多,显示位数多时很少采用;动态扫描驱动方式的工作原理是将多个显示器的段码同名端连接在一起,位码分别控制,利用眼睛的余晖暂留效应,分别显示。
动态扫描驱动方式下,只要保证一定的显示频率,看起来的效果和一直显示是一样的。
4.3系统设计
系统中采用AT89C51单片机作为下位机,PC机作为上位机,两者通过RS-232串行口收发数据。
RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换,系统中使用集成电平转换芯片MAX232实现RS-232/TTL电平转换。
单片机系统总体电路如图4-7所示。
图4-7单片机系统总体电路
5PC机程序设计
VisualBasic(简称VB)是Windows操作系统下简单、易学、高效的应用软件开发工具。
因其具有面向对象的设计方法,友好的用户界面、编程高效、数据处理及驱动底层硬件功能强等优点而受到广泛的使用。
在设计PC机程序时,使用面向对象的编程方法。
5.1MSComm控件
MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的简化Windows下串行通行编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
通过对此控件的属性和事件进行相应编程操作,就可以轻松实现串口通信。
5.1.1MSComm控件处理通信的方式
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
MSComm控件提供两种处理通信的方式:
事件驱动方式和查询方式。
1)事件驱动方式
事件驱动通信是处理串行端口交互作用的一种非常有效地方法。
这种方式下,在事件发生时,如在串口接收缓冲区有字符等,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件,OnComm事件还可以检查和处理通信错误。
在编程过程中,可以在OnComm事件处理函数中加入自己的代码。
这种方法的优点使程序响应及时、可靠。
2)查询方式
查询方式实质上还是事件驱动,在有些情况下,这种方式显得更为便捷。
在程序的关键功能后,可以通过检查CommEvent属性的值来查询事件和错误,编写自己的程序代码。
5.1.2MSComm控件的主要属性
MSComm控件很多重要的属性,常用属性的功能如下:
CommPort属性:
设置并返回通信端口号;
Input属性:
返回并删除接收缓冲区中的数据流;
Output属性:
往传输缓冲区中写数据流;
PortOpen属性:
设置并返回通信端口的状态(开或关);
Settings属性:
设置并返回波特率、奇偶校验、数据位和停止位参数;
InputLen属性:
确定被Input属性读取的字符数,设置InputLen为0时,则Input属性读取缓冲区中的全部数据;
InputMode属性:
确定用Input属性读取的数据类型,设置InputMode为comInputModeText时,Input属性通过一个Variant返回文本数据,设置为comInputModeBinary时,Input属性通过一个Variant返回一个二进制数据数组。
5.2应用界面设计流程
5.2.1创建项目文件
(1)单击“开始”按钮,选择“程序|MicrosoftVisualBasic6.0”进入VB6.0窗口。
VB6.0启动后,会弹出“NewProjiect”对话框,如图5-1所示。
图5-1新建工程
(2)在“NewProject”对话框中选择“New”选项卡。
(3)单击“StandardEXE”项,再单击“打开”按钮,或直接双击“StandardEXE”建立程序开发窗口。
(4)选择“File|SaveProject”命令,保存文件。
5.2.2加入串口通信控件
(1)默认的控件工具栏中没有MSComm控件,因此要先把它加入到控件工具栏上。
在控件工具栏上单击鼠标右键,在弹出的对话框中选择“Components”,弹出“Components”对话框,如图5-2所示。
图5-2添加MSComm控件
(2)选择“Controls”选项卡中的“MicrosoftCommControl6.0”项,单击“确定”按钮把它加入到控件工具栏中。
5.2.3设计窗体界面
窗体主要完成如下功能:
对整个程序初始化、串行端口设置、输入发送数据、对各个按钮响应、显示当前通信端口及端口信息,。
在窗体中添加需要的控件,调整控件的大小及在窗体中的位置,得到如图5-3所示的窗体界面,其控件属性及功能如表5-1所示。
图5-3添加控件后的窗体
表5-1主要控件属性
类型
名称
属性
功能
Form
Form1
Caption=上位机串口通信
Commandbutton
Send
Caption=发送
数据发送
Cancel
Caption=退出
结束数据发送
Label
Label1
Caption=发送数据:
Label2
Caption=串口选择:
Label3
Caption=状态
TextBox
Txtsend
Text=请输入要发送
的数字字符串!
输入发送数据
Txtport
显示串行通信端口
Txtmsg
显示端口的状态
Mscomm
Mscomm
默认
串口通信
Timer
Timer
Eaable=false
Interval=250
应答超时控制
5.3代码实现
单片机与PC机串口通信应用界面程序流程图如图5-4所示。
图5-4PC机程序流程图
源程序代码如下:
DimhandAsBoolean
'等待回应时间到标志位,为FALSE时时间没有到,TRUE时时间到
PrivateSubcancel_Click()
UnloadMe
End
EndSub
PrivateSubsend_Click()
'变量定义
Dimstrsend$,strbit$
Dimintsend%'发送的字符长度
DimwritebuffAsVariant'写输出缓冲区
Dimreadbuff$'读输入缓冲区数据
strsend=txtsend.Text
intsend=Len(strsend)
Ifintsend=0Then
MsgBox"请输入数字字符!
",,"错误"
ExitSub
EndIf
'数据完整性验证
Fori=1TointsendStep1
strbit=Mid(strsend,i,1)
SelectCasestrbit
CaseIs<"0",Is>"9"
MsgBox"输入的数据中存在非数字字符!
"&vbCrLf&"请重新输入!
",vbRetryCancel,"错误"
txtsend.Text=""
ExitSub
EndSelect
Nexti
OnErrorGoTocomrserror
'串行通信口参数设置
MSComm.CommP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 PC 串行 通信 系统 硬件 上位 程序设计