单片机与PC机串行通信系统设计解析.docx
《单片机与PC机串行通信系统设计解析.docx》由会员分享,可在线阅读,更多相关《单片机与PC机串行通信系统设计解析.docx(34页珍藏版)》请在冰豆网上搜索。
单片机与PC机串行通信系统设计解析
河南农业大学
本科生毕业论文(设计题目单片机与PC机串行通信系统设计
学院机电工程学院
专业班级电子信息工程07级3班
学生姓名王卫亮、高岚
指导教师胡建东
撰写日期:
2011年5月17日
摘要
随着计算机技术尤其是单片微型机技术的发展,单片机被广泛应用在工业控制系统中。
单片机具有体积小、价格低廉、开发应用方便、可应用于恶劣工业环境的特点,在分布式控制系统中多采用单片机进行数据采集和现场控制。
由于单片机的计算能力有限,难以进行复杂的数据处理,因此在功能复杂的控制系统中常采上位机下位机系统,单片机用作下位机进行数据采集和设备控制,而PC机用做上位机进行复杂的数据处理和对单片机的控制。
因此如何实现PC机与单片机之间的通信具有重要的现实意义。
论文详细介绍了单片机与PC机通信的软硬件实现。
在硬件设计中,单片机系统与PC机系统通过RS-232串行通信端口进行互连,单片机系统将由PC机传输过来的数据信息动态的显示在LED数码管上。
在软件设计中,采用VisualBasic6.0中的MSComm通信控件设计PC上的串口通信程序,在单片机编程上采用接近硬件系统的汇编语言编写通信程序及数据处理程序。
关键词:
单片机;串行通信;VB6.0;RS-232;LED数码管
DesignofaserialCommunicationsystembetweenMCUandpersonal
computer
Abstract
Alongwiththedevelopmentofcomputer,especiallythetechnologyofMCU,MCUarewidelyusedinthesystemofindustrycontrol.Smallsize,lowprice,theconvenienceofdevelopmentandapplicationandhighadaptabilityareitspeculiarities,respectiviely.Itisusuallyusedindistributedsystemtocollectdataandcontrolonthescene.Owingtothelimitofcalculation,itisdifficulttoprocesscomplexdata.Therefore,PClowerlevelcomputersystemisoftenappliedinfunctionallycomplexsystem.MCUcollectsdataandcontrolequipmentsasDownsidemachine,whilePCmakescomplexdataprocessingandthecontrolofMCU.SOhowtorealizethecommunicationbetweenPCandMCUispracticallymeaningful.
TheessayintroducesthecommunicationbetweenPCandMCUrealizedbysoftandhardwareindetails.INdesignofhardware,MCUisconnectedwithPCbytheserialportofRS-232anddisplaythedatapassedbyPContheLEDdynamically.Indesignofsoftware,programofserialportaredesignedbyMSCommcommunicationcontrolinthelanguageofVisualBasic6.0,ontheotherhand,theprogramofcommunicationanddataprocessingareprogrammedbythelanguageofassembly,whichismoreclosetothehardsystemusedbytheMCU.
KeyWords:
MCU;SerialCommunication;VB6.0;RS-232;LED
1引言(1
1.1单片机与PC机串行通信研究背景(1
1.2单片机与PC机串行通信研究目的和意义(1
1.3论文研究内容(1
2串口通信基础理论(2
2.1两种常用接口方式(2
2.1.1并行接口(2
2.1.2串行接口(2
2.2RS-232串行接口标准(2
2.3MSComm控件(3
2.3.1MSComm控件处理通信的方式(3
2.3.2MSComm控件的主要属性(4
3系统总体设计(5
3.1系统指标设计(5
3.1.1通信协议设?
(5
3.1.2系统功能设计(5
3.2总体方案设计(5
4硬件jiekoudianlu设计(6
4.1主要芯片(6
4.1.1AT89C51简介(6
4.1.2单电源转换芯片MAX232(8
4.1.374LS245LED驱动芯片(8
4.2LED显示器(9
4.2.1LED显示器工作原理(9
4.2.2LED显示器接口(9
4.3系统设计(10
5软件设计(11
5.1PC机程序设计(11
5.1.1应用界面设计流程(11
5.1.2代码实现(13
5.2单片机软件设计(13
6仿真调试及结果分析(15
6.1Protues仿真软件简介(15
6.2仿真结果分析(15
6.2.1PC界面运行结果(15
6.2.2单片仿真测试及结果分析(15
7结语(17
参考文献(18
致谢(19
附录1:
PC机事件过程及编程(20
附录2:
单片机源程序(23
1引言
1.1单片机与PC机串行通信研究背景
近年来,随着科学技术的发展,PC机以其优越的性价比和丰富的软件资源成为计算机应用的主流机种。
在工业控制中单片机得到广泛的应用,现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。
由于单片机的计算能力有限,难以进行复杂的数据处理。
因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制,二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。
1.2单片机与PC机串行通信研究目的和意义
现代信息网络技术的一个突出特点,就是使工业控制系统中的所有设备连接成网,从而在一个核心软件管理下工作,形成一个有机的整体。
这种整体网络方式在现代工业控制系统具有传统独立控制系统所无法比拟的先进性,不仅能极大地提高工业设备的生产效率,还可以大大提高系统的安全性和可靠性。
单片机自诞生以来以其性能稳定、价格低廉、功能强大,在智能仪器、工业装备以及日用电子消费品中得到了广泛的应用。
在单片机的输入输出控制中,除直接接上小键盘和LCD显示屏等方法外,一般都通过串口和上位机PC进行通信。
这样不仅能够实现远程控制,而且能够利用PC机强大的数据处理功能以及友好的控制界面。
在一般的利用PC机对单片机进行控制的场合,都是采用Windows作为上位机的平台,其优点是界面友好,编程和操作都比较容易。
因此研究PC机与单片机串行通信具有重要的现实及工业意义。
1.3论文研究内容
论文首先介绍单片机与PC机间的的通信方式及RS-232串行通信协议,其次介绍实现单片机与PC机串行通信的软件和硬件设计,再次介绍利用LED数码管进行数据显示的原理及驱动设计,最后利用Proteus7.7Professional单片机仿真软件对单片机系统的显示模块进行仿真调试。
2串口通信基础理论
一般来说,计算机都有一个或多个串行端口,它们依次为Com1、Com2、Com3等。
这些串口提供了外部设备与计算机进行数据传输和通信的通道。
串行口通信是指外设和计算机间使用3根信号线进行数据传送的一种通信方式,这三根信号分别是数据信号线、地线及控制线。
2.1两种常用接口方式
2.1.1并行接口
并行接口是指8位数据同时通过并行线进行传送,这样数据的传输率能得到极大的提高。
但在并行传输中,干扰会随线路长度的增加而增加,产生传输错误。
因此,并行传输主要应用在近距离数据传输中,如连接打印机端口。
并行接口主要使用36针接头和25针D形接头,目前以25针D形接头为主。
2.1.2串行接口
串行口也是计算机的一种标准接口,PC机一般至少有两个串行口Com1和Com2。
串行口不同于并行口,它的数据和控制信息是一位接一位在一根传输线上传送的,这样串行口较并行口能够进行远距离传送信息。
串行口通常使用9针D形连接器,有些老式则使用25针D形连接器。
由于CPU与接口间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,要由接收移位寄存器把串行方式转换成并行方式,由发送移位寄存器把并行方式转换成串行方式。
完成这种转换功能的电路叫做通用异步收发机UART。
2.2RS-232串行接口标准
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准[3-7]。
RS-232采用不平衡传输方式,收发端的数据信号是相对信号地。
9针串口引脚和25针串口引脚定义如表1-1所示。
表2-19针串口引脚个25针串口引脚定义
续表2-1
电平在5V~15V,负电平在-5V~-15V;在接收数据时,接收器的典型工作电平是3V~12V和-3V~-12V。
串口传输数据只要有接收数据针脚和发送数据针脚就能实现,其连接方式如表2-2所示。
表2-2串口通信连接方式
定。
2.3MSComm控件
MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的简化Windows下串行通行编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
通过对此控件的属性和事件进行相应编程操作,就可以轻松实现串口通信。
2.3.1MSComm控件处理通信的方式
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
MSComm控件提供两种处理通信的方式:
事件驱动方式和查询方式。
1事件驱动方式
事件驱动通信是处理串行端口交互作用的一种非常有效地方法。
这种方式下,在
事件发生时,如在串口接收缓冲区有字符等,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件,OnComm事件还可以检查和处理通信错误。
在编程过程中,可以在OnComm事件处理函数中加入自己的代码。
这种方法的优点使程序响应及时、可靠。
2查询方式
查询方式实质上还是事件驱动,在有些情况下,这种方式显得更为便捷。
在程序的关键功能后,可以通过检查CommEvent属性的值来查询事件和错误,编写自己的程序代码。
2.3.2MSComm控件的主要属性
MSComm控件很多重要的属性,常用属性的功能如下:
CommPort属性:
设置并返回通信端口号;
Input属性:
返回并删除接收缓冲区中的数据流;
Output属性:
往传输缓冲区中写数据流;
PortOpen属性:
设置并返回通信端口的状态(开或关;
Settings属性:
设置并返回波特率、奇偶校验、数据位和停止位参数;
InputLen属性:
确定被Input属性读取的字符数,设置InputLen为0时,则Input属性读取缓冲区中的全部数据;
InputMode属性:
确定用Input属性读取的数据类型,设置InputMode为comInputModeText时,Input属性通过一个Variant返回文本数据,设置为comInputModeBinary时,Input属性通过一个Variant返回一个二进制数据数组。
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所示。
jiantou
图3-1系统框图
VisualBasic(简称VB是Windows操作系统下简单、易学、高效的应用软件开发工具。
因其具有面向对象的设计方法,友好的用户界面、编程高效、数据处理及驱动底层硬件功能强等优点而受到广泛的使用。
系统设计时,PC机的通信程序使用VisualBasic编写,单片机的程序用汇编语言编写。
4硬件设计
4.1主要芯片
4.1.1AT89C51
在系统设计中使用AT89C51单片机作为下位机,与PC机进行串口通信,接收数据并控制数据在LED数码管上动态显示。
AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片,内置4Kbytes的可反复擦写的只读程序存储器(PEROM和128bytes的随机存储器(RAM,器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU和Flash存储单元,功能强大。
AT89C51单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。
1AT89C51性能参数
AT89C51有如下性能参数:
·与MCS-51产品指令系统的全兼容;
·4k字节可重擦写Flash闪速存储器;128×8字节内部RAM;
·1000次可擦写周期;
·全静态操作:
0Hz-24MHz;
·三级加密程序存储器;
·32个可编程I/O口线;
·2个16位定时/计数器;1个全双工异步串行口;
·6个中断源,2个中断优先级;
·低功耗空闲和掉电模式。
2AT89C51内部结构及管脚图
AT89C51包含中央处理器、程序存储器(ROM、数据存储器(RAM、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其功能框图如图4-1所示。
图4-1AT89C51功能框图
AT89C51单片机采用40Pin封装的双列直接DIP结构,其引脚配置如图4-2所示。
图4-2AT89C51引脚配置
3AT89C51串行口结构
(1数据缓冲器SBUF
串行口是一个可寻址的专用寄存器,有两个物理空间上各自独立的发送缓冲器和接受缓冲器,可以实现全双工通信,这两个寄存器具有同一地址(99H。
单片机的串行数据传输很简单,只要向缓冲器写入数据就可发送数据,从接收缓冲器读出数据既可接收数据。
(2串行口控制寄存器SCON
它是一个可寻址的专用寄存器,用于串行通信的控制,单元地址是98H,其结构格式如表4-1所示。
(
其字节地址为87H,没有位寻址功能,与串行口有关只有PCON的最高位,其
(b典型电路
(
a
引脚图
结构如表4-2所示。
表4-2特殊功能寄存器PCON
4.1.2单电源转换芯片MAX232
MAX232是MAXIM公司生产的、包含两路接收/驱动器的芯片。
芯片内部有一个电源电压变换器,可以将输入的+5V电源电压变换成为RS-232输出电平。
硬件接口简单,被广泛使用。
芯片的引脚配置及典型工作电路如图4-3所示。
图4-3MAX232芯片引脚配置和典型工作电路
4.1.374LS245LED驱动芯片
74LS245是常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端CE低电平有效时,DIR=“0”,信号由B向A传输;DIR=“1”,信号由A向B传输;当CE为高电平时,A、B均为高阻态,其引脚配置如图4-4所示。
图4-474LS245引脚配置
4.2LED显示器
4.2.1LED显示器工作原理
LED(lightemittingdiode显示是用发光二极管显示字段的显示器件,也称数码管,其外形结构如图4-5所示,由图可知它由8个发光二极管构成,通过不同的组合可用来显示0~9、A~F及小数点。
图4-5“8
”字形数码管
LED显示器一般分为共阴极和共阳极两种,共阴极是将
8个发光二极管的阴极连接在一起作为公共端,而共阳极则是将8个发光二极管的阳极连在一起作为公共端,其构成如图4-5所示。
4.2.2LED显示器接口
在单片机系统中,LED显示接口一般采用静态驱动和动态扫描两种驱动方式。
静态驱动方式工作原理是每一个LED显示器有一个I/O端口驱动,亮度大,占用I/O
(b共阴极
(c共阳极
(a管脚配置
端口多,显示位数多时很少采用;动态扫描驱动方式的工作原理是将多个显示器的段码同名端连接在一起,位码分别控制,利用眼睛的余晖暂留效应,分别显示。
动态扫描驱动方式下,只要保证一定的显示频率,看起来的效果和一直显示是一样的。
4.3系统设计
系统中采用AT89C51单片机作为下位机,PC机作为上位机,两者通过RS-232串行口收发数据。
RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换,系统中使用集成电平转换芯片MAX232实现RS-232/TTL电平转换。
单片机系统总体电路如图4-6所示。
图4-6单片机系统总体电路
5软件设计
5.1PC机程序设计
5.1.1应用界面设计流程
1创建项目文件
(1单击“开始”按钮,选择“程序|MicrosoftVisualBasic6.0”进入VB6.0窗口。
VB6.0启动后,会弹出“NewProjiect”对话框,如图5-1所示。
图5-1新建工程
(2在“NewProject”对话框中选择“New”选项卡。
(3单击“StandardEXE”项,再单击“打开”按钮,或直接双击“StandardEXE”建立程序开发窗口。
(4选择“File|SaveProject”命令,保存文件。
2加入串口通信控件
(1默认的控件工具栏中没有MSComm控件,因此要先把它加入到控件工具栏上。
在控件工具栏上单击鼠标右键,在弹出的对话框中选择“Components”,弹出“Components”对话框,如图5-2所示。
图5-2添加MSComm控件
(2选择“Controls”选项卡中的“MicrosoftCommControl6.0”项,单击“确定”按钮把它加入到控件工具栏中。
3设计窗体界面
窗体主要完成如下功能:
对整个程序初始化、串行端口设置、输入发送数据、对各个按钮响应、显示当前通信端口及端口信息,。
在窗体中添加需要的控件,调整控件的大小及在窗体中的位置,得到如图5-3所示的窗体界面,其控件属性及功能如表5-1所示。
图5-3添加控件后的窗体
表5-1主要控件属性
单片机与PC机串口通信应用界面程序流程图如图5-4所示,事件过程及编程见附录1。
图5-4应用界面代码程序流程图
5.2单片机软件设计
单片机程序主要完成与PC机的通信及数据动态显示,包括三个主要的模块:
显示模块、通信模块、数据格式转换模块和数据动态显示模块。
主程序完成数据的显示和监视通信端口,其程序流程如图5-5所示;定时中断实现动态显示数据处理,其程序流程如图5-5所示。
单片机系统源程序见附录2。
(a主程序流程图(b定时中断流程图
图5-5主程序及定时中断子程序流程图
6仿真调试及结果分析
6.1Protues仿真软件简介
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。
Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
6.2仿真结果分析
6.2.1PC界面运行结果
点击“Start”按钮,出现设计的PC机串行通行界面,在“发送数据”文本框中输入要发送的数字字符串(字符串长度不超过16,点击“发送”按钮,出现如图6-1所示的运行结果。
图6-1PC机通信程序运行结果
点击“退出”按钮时,退出应用程序。
有此可知PC机通行程序基本可以工作。
6.2.2单片仿真测试及结果分析
单片机采用Protues仿真软件进行仿真测试,由于进行软件仿真无法实现PC机程序与单片机系统通信测试,此次仿真只做单片机显示结果测试。
为了仿真单片机系
统的显示是否正常,在显示缓冲区初始化后、显示前加上如下测试程序:
mov30h,#3fhmov31h,#06hmov32h,#5bhmov33h,#4fhmov34h,#66hmov35h,#6dhmov36h,#7dhmov37h,#07hmov38h,#7fhmov39h,#6fhmov3ah,#77hmov3bh,#7chmov3ch,#58hmov3dh,#5ehmov3eh,#7bhmov3fh,#71hmov08h,#dataaddmovdatanum,#3mov0ah,datanumsetbf0
可以通过修改movdatanum,#3中3处的数值(1~16之间的数值来观察不同个数数据显示结果,此处以3个数据为例进行仿真测试。
原程序用wave进行编辑、编译,编译之前勾选“仿真器设置”对话框“目标文件”选项卡中的“生成.Hex文件”。
编