PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx

上传人:b****2 文档编号:920373 上传时间:2023-04-29 格式:DOCX 页数:70 大小:232.65KB
下载 相关 举报
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第1页
第1页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第2页
第2页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第3页
第3页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第4页
第4页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第5页
第5页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第6页
第6页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第7页
第7页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第8页
第8页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第9页
第9页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第10页
第10页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第11页
第11页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第12页
第12页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第13页
第13页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第14页
第14页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第15页
第15页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第16页
第16页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第17页
第17页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第18页
第18页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第19页
第19页 / 共70页
PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx_第20页
第20页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx

《PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx》由会员分享,可在线阅读,更多相关《PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx(70页珍藏版)》请在冰点文库上搜索。

PC机与两片51单片机串行进行通信的集散系统学士学位论文文档格式.docx

涉密论文按学校规定处理。

日期:

导师签名:

日期:

[摘要]该设计是一个基于串行通信的集散控制系统。

该集散控制系统由PC与2个单片机组成,其中PC作为上位机对单片机进行控制和监视,采用VisualBasic编制界面。

两片AT89C52单片机作为下位机,用来接收上位机指令并实现相应功能。

通信基于USB通用串行总线标准,线路由USB-hub中转扩展。

可以实现PC和单片机之间主从式半双工通信。

本文详细讨论了硬件电路的设计方法、主从式通信协议设计方法、主机人机交互界面的设计方法、下位单片机驱动的设计方法以及开发环境keiluVision2、VisualBasic6.0的使用方法,通过以上各种方法,最终实现了PC对多个单片机的集散控制。

[关键词]PC;

单片机;

集散系统;

通信

Abstract:

ThisdistributedcontrolsystembasedonserialcommunicationprotocoliscomposedofaPCandtwoMCUs.PCisusedasmaster,whoseinterfaceisprogramedbyVisualBasic,andMCUsareusedasslavesoastoreceivethesingleorderfromthemaster.ThedesignofcommunicationprotocolandcorrespondingdesignofhardwareandsoftwareofPCandmultipleMCUsisdescribedinthearticle.AllthedesignsmentionedabovegettogethertorealizetheDCSatlast.ThisarticlealsointroduceshowtousetheeditorsoftwaressuchaskeiluVision2andVisualBasic6.0.Somepicturesandchartsaregiveninordertomakethisarticlemorevividlytoreadandmoreeasilytounderstand.

Keywords:

PC;

MCU;

DCS;

serialcommunication

目录

第一章序言1

第二章系统总体设计2

2.1系统概述2

2.2系统概图2

2.3系统总体运行图3

2.4系统功能模块4

2.5系统设计步骤4

第三章系统硬件设计5

3.1硬件结构5

3.2上位机PC与USB集线器5

3.3芯片PL23036

3.4单片机7

第四章系统软件设计7

4.1通信协议7

4.1.1异步串行通信协议7

4.1.2帧8

4.2下位机(单片机)串行通信及程序设计9

4.2.1单片机开发环境uVision2介绍9

4.2.2下位单片机驱动程序9

4.3上位机(PC)串行通信及程序设计12

4.3.1PC界面开发环境VisualBasic6.0介绍12

4.3.2PC上位机界面程序编制12

结束语19

致谢21

参考文献22

附录A下位机程序代码23

附录B上位机程序代码29

第一章序言

随着计算机技术尤其是单片微型机技术的发展,随着多微机系统的应用和微机网络的发展,通信功能越来越显得重要[1]。

这里所说的通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。

由于串行通信是把组成信息的各个码位在同一根传输线上,从低位到高位,逐位地、顺序地进行传送的通信方式,所用的传输线少,一个方向上只须一条传输线,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传送。

对于那些与计算机相距不远的人机交互设备和串行外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式进行近距离交换数据也很普遍。

在实时控制和管理方面,采用多台微处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。

所以串行接口是微机应用系统常用的接口。

单片机正朝着高性能和多品种方向发展,具有低功耗,小体积,大容量,高性能,设计灵活、低价格和外围电路内装化等诸多特点。

而PC具有强大的数据处理功能、监控和管理功能与非常友好的人机交互界面,人们已越来越多地采用PC-单片机系统来对一些工业控制系统中诸如温度、流量和压力等参数进行检测和控制。

DCS能够实现集中管理分散控制的功能,随着工业化的进步,以前传统的采用人工进行数据记录登记已经远远不能满足现在工业化生产的要求,而采用PC上位机-单片机结构实现的数据采集系统具有自动化和无人值守等特点,使得操作人员不必身居生产一线即可得知一线设备状态并且集中控制这些设备,给各领域的生产加工带来极大方便和安全,也使得生产更加合理优化,极大的提高了生产效率和产品质量。

本设计是由PC和单片机组成的集散系统系统,能够通过PC与单片机的串行通信对外部设备进行信息采集和控制,满足以上各种优势,具有很强的实用价值。

第二章系统总体设计

2.1系统概述

本集散控制系统能够实现PC与两个单片机之间的串行通信,进而实现集中管理分散控制的功能。

该系统是由PC与2个单片机组成的主从集散控制系统,其中PC做为上位机对下位单片机实现控制和监视功能,采用VB编制界面,包括通信和控制两个功能模块。

单片机作为下位机在整个系统中属于从属地位,主要用来接收上位机的命令并执行相应功能。

要实现集散控制,首先要解决的是主从机如何通信的问题,RS485标准抗干扰能力强,传输速率高,传送距离远,在当今串行通信领域应用比较广泛。

但是本设计要求是DCS,距离近,下位机仅有2台,功能简单,精度要求不高,又因为购置的单片机集成了USB转串口芯片PL2303,可直接连接PC的USB接口,因此我们改用USB串行通信,若要控制两台单片机需要2个USB口,USB-Hub可将一个COM扩展成另外数个不同COM口,将单片机连接至转换后的COM口,PC就可以通过向不同COM口发送指令来控制不同下位机了,一个简单的集散系统就是这样实现的。

通信无非就两种方向:

(1)PC向单片机发送

(2)单片机向PC发送。

本系统将以上二者分开实现。

前者是PC发送指令,单片机执行。

例如:

在PC上选择某个单片机,点击“点亮LED灯”,然后该单片机就会点亮相应LED灯,通信成功。

后者是单片机向PC发送数据,PC接收。

注意这里单片机是不能主动发数据的,需要PC的控制指令触发。

在PC操作界面上选择单片机,并且点击“采集数据”,被选中的单片机则会采集数据并发送给PC,PC接收单片机采集的数据并显示,通信成功。

2.2系统概图

系统的结构主要由三部分组成:

(1)上位机系统;

(2)下位机系统;

(3)通信系统。

上位机为PC,界面用VB编制,人机交互良好;

下位机为2片AT89C52单片机,驱动程序采用C语言编制;

通信系统采用USB串行通信。

如图2.1所示。

图2.1系统概图

2.3系统总体运行图

本设计有一台主机,两台从机。

各台从机之间不能相互通信。

主机通过改变COM口选择从机,向其发送控制指令和数据指令。

从机处于从属地位,接收到上位机命令后进入串口中断,判断对比,要么执行诸如LED等亮的功能;

要么进行数据采集,向PC发送数据。

这里从机不能主动向主机发送数据,只能等待主机发送“允许从机发送数据指令”后,方可向主机发送数据。

若要实现数据采集功能,主机需采取查询方式,每隔一段时间对从机查询一次。

系统的运行过程是这样的:

单片机一直在执行着自己的主函数,等待PC触发串口中断。

PC在操作员的控制下向单片机发送数据,单片机接收到串行数据,触发串行中断程序,对主机发送的指令数据进行判断对比,执行相应的指令。

这里会有两种不同的功能,一种是单片机自己内部执行,仅对诸如LED灯、数码管、点阵等输出外设进行操作,另一种是单片机采集输入外设的数据,传送给PC上位机。

一切执行结束后,单片机会结束中断回到主程序,继续等待PC触发中断。

运行流程如图2.2所示。

图2.2系统总体运行图

2.4系统功能模块

系统功能共分两个模块,PC控制单片机模和PC采集单片机的键值模块。

前者对应PC发送数据,单片机接收;

后者对应单片机发送数据,PC接收。

(一)PC控制单片机模块

检测:

PC向某单片机发送检测指令,该单片机返回一串字符串至PC。

点亮发光二极管:

PC向某单片机发送该指令,该单片机点亮相应LED灯。

熄灭发光二极管:

PC向某单片机发送该指令,该单片机熄灭所有LED灯。

点亮数码管时钟:

PC向某单片机发送该指令,该单片机点亮数码管,显示PC上设定的相应时间,并且开始走秒。

熄灭数码管时钟:

PC向某单片机发送该指令,该单片机熄灭数码管。

点亮点阵:

PC向某单片机发送该指令,该单片机点阵显示相应的点阵形状。

熄灭点阵:

PC向某单片机发送该指令,该单片机熄灭点阵。

(二)PC采集单片机的键值模块

这里的键值是指单片机按键对应的值。

在数码管上显示,初值为0,手动增减,按+键,则数值开始增加,按-键则数值减小,该键值可以用来模拟温度压力等物理量经过AD转换之后的数值(由于硬件和时间原因,没有用温度传感器进行全真模拟,其实键值模拟采集和它的核心原理是一样的)。

PC定时发送键值采集指令,对两个单片机进行轮换查询。

每一个PC指令都会触发单片机的中断,让其发送键值数据至PC。

PC采集之后进行越限报警和绘制图表等处理。

2.5系统设计步骤

系统设计总共分四个步骤:

1、硬件选择与连接:

设计硬件结构图并且购置相关硬件。

2、通信协议的设计:

统筹上位机与下位机,设计二者兼容的通信协议。

3、单片机下位机的驱动程序C编程与调制:

根据单片机硬件资源及系统需要实现的功能,设计下位片机的驱动。

4、PC上位机的操作界面VB编程与调制:

利用VisualBasic6.0设计一目了然、通俗易懂的操作界面。

第三章系统硬件设计

3.1硬件结构

本系统硬件组成部件有:

PC上位机、USB集线器、2个单片机(这里PL2303集成在了单片机之上),系统硬件结构如图3.1所示。

图3.1硬件结构图

3.2上位机PC与USB集线器

PC就是众所周知的个人电脑,具有强大的数据处理能力,而且有良好的人机交互界面,很适合于做上位机,实现监控功能,本设计主要利用PC机USB通用串行通信接口进行串行通信。

USB-HUB[2]就是一个USB接口扩展工具,能将PC上的一个USB口转换为数个不同USB口,单片机自身集成的USB驱动芯片可以将USB信号转化为单片机可以接收的TTL电平,故单片机可以直接连接至USB-HUB扩展出来的USB接口。

PC通过查询不同USB口即可以控制与该口连接的单片机。

像树的主干一样,HUB是各分枝的汇集点,而根是PC,叶是单片机。

HUB是一个共享设备,其实质是一个中继器,而中继器的主要功能是对接收到的信号进行再生放大,以扩大网络的传输距离。

在网络中,集线器主要用于共享网络的建设,是解决从服务器直接到桌面的最佳、最经济的方案。

在交换式网络中,HUB直接与交换机相联,将交换机端口的数据送到桌面。

使用HUB组网灵活,它处于网络的一个星型结点,对结点相连的工作站进行集中管理,不让出问题的工作站影响到整个网络的正常运行。

由于HUB在网络中的重要作用,所以对于它的选型也是非常重要的。

本设计选用的是一转四的普通USB集线器。

3.3芯片PL2303

图3.2PL2303芯片

PL2303[3]是Prolific公司生产的一种高度集成的RS232-USB接口转换器,可提供一个RS232全双工异步串行通信装置与USB功能接口便利联接的解决方案。

该器件内置USB功能控制器、USB收发器、振荡器和带有全部调制解调器控制信号的UART,只需外接几只电容就可实现USB信号与RS232信号的转换,能够方便嵌入到各种设备;

该器件作为USB/RS232双向转换器,一方面从主机接收USB数据并将其转换为RS232信息流格式发送给外设;

另一方面从RS232外设接收数据转换为USB数据格式传送回主机。

这些工作全部由器件自动完成,十分方便.

PL2303的高兼容驱动可在大多操作系统上模拟成传统COM端口,并允许基于COM端口应用可方便地转换成USB接口应用,通讯波特率高达6Mb/s。

在工作模式和休眠模式时都具有功耗低,是嵌入式系统手持设备的理想选择。

该器件具有以下特征:

完全兼容USB1.1协议;

可调节的3~5V输出电压,满足3V、3.3V和5V不同应用需求;

支持完整的RS232接口,可编程设置的波特率:

75b/s~6Mb/s,并为外部串行接口提供电源;

512字节可调的双向数据缓存;

支持默认的ROM和外部EEPROM存储设备配置信息,具有I2C总线接口,支持从外部MODEM信号远程唤醒;

支持Windows98,Windows2000,WindowsXP等操作系统;

28引脚的SOIC封装,如图3.2所示。

本设计采用PL2303作为USB-RS232转换芯片,省去了原本MAX232芯片转换及相关总线的连接。

而且PL2303可以同时给单片机供电,使系统线路更加简单。

3.4单片机

省略

第四章系统软件设计

4.1通信协议

4.1.1异步串行通信协议

(1)串行通信[7]

串行通信是指所传送数据的各位按顺序一位一位地发送或接收。

其特点是只需一对传输线,适合于长距离传输,但通信速度较并行通信时慢。

随着通信技术的发展,串行通信速度不断提高,使得计算机网络通信普遍采用串行通信方式。

计算机控制系统中各站间的数据传递及与信息管理系统间的数据交换都采用了串行通信方式。

(2)波特率

波特率(BaudRate)是串行通信中的一个重要的指标。

它定义为每秒钟传送二进制数码的位数,单位是位每秒,用bps、bit/s或b/s表示。

在串行异步通信中,波特率为每秒传送的字符数与每个字符位数的乘积。

例如,如果每秒传送的速率为120字符/s,而每个字符包含10位(1个起始位、7个数据位、l位奇偶校验、l位停止位),则波特率为:

120字符/s10b/字符=1200bps

现在异步通信的波特率可达100Mbps,当采用光纤作为传输介质时,传输波特率更高。

(3)通信制式

按通信线路上信息传送方向与时间的关系,可分为三种通信制式:

单工通信、半双工通信和全双工通信。

主要讲述一下半双工制式,因为本设计就是半双工制式。

半双工制式系统中的两个站都由一个发送器和一个接收器组成,通过收发开关接到一根通信线上。

在这种制式下,数据能从甲站传送到乙站,也能从乙站传送到甲站,但是不能同时在两个方向上传送,只能交替的发送和接收。

其收发开关是由软件控制的电子开关,通过半双工协议进行功能切换的。

(4)串行异步通信[8]

串行异步通信ASYNC(AsynchronousDataCommunication)是一个字符一个字符地按帧传送数据的方式。

开头一个起始位“0”,接着是5~8位数据位,且规定低位在前、高位在后,然后是一个奇偶校验位,最后加上一个停止位“1”表示字符的结束。

若数据没有准备好则以空闲字符“1”来填充,直到数据准备好形成下一帧。

一帧信息包含1个起始位、5~8个数据位、1个奇偶校验位、1~2个停止位。

无信号传送时,为停止位(高电平)状态,当出现起始位(低电平)时,表示数据传送开始。

因此停止位到起始位的电平转换,即为同步信息。

进行异步通信时,收发双方必须有两项约定:

一是帧信息格式,即字符的编码形式、奇偶校验形式、起始和停止位的格式等;

二是传送速率。

串行异步通信在向外发送字符时,由于在字符的首尾分别附加了一个起始位和停止位。

因此,传送效率较低,传送速率较慢。

(5)本设计

本设计采用异步串行通信,波特率设为9600bps,一帧数据由1位起始位、8位数据位、无奇偶校验位、1位停止位共10位组成。

半双工通信制式,同一时间信号只能单方向流通,但是主从机双方都可以发送和接收。

单片机串行口按方式1工作,波特率由定时器T1控制。

设置语句为:

TMOD=0x21;

//设置T1为工作方式2,自动循环装入初值

TH1=0xfd;

//初值设置,比特率为9600bps

TL1=0xfd;

  PC串口波特率通过VB通讯控件[9]的Settings属性设置,为保证数据传送的准确性,其与单片机的波特率、数据格式必须一致。

Mscomm1.settings=“9600,n,8,1”

4.1.2帧

该协议有两种帧格式:

指令帧和数据帧。

指令帧用于确定执行何种指令,数据帧为各种功能参数。

本协议中的指令帧为PC发送,数据帧PC和单片机都可以发送。

帧的种类:

开始帧、结束帧、数据开始标志帧、功能帧、数据帧。

前四种是指令帧,最后一种是数据帧。

开始帧:

PC发送的指令开始。

结束帧:

PC发送的指令结束。

数据帧:

PC或者单片机发送的带有各种信息参数的数据。

功能帧:

PC发送的指令帧,让单片机实现各种功能,本系统定义了9种功能帧,分别对应点亮数码管、点亮点阵、点亮LED灯等功能。

数据开始标志帧:

PC将要开始发送数据,让单片机准备接收,注意这里发送完数据标志帧之后紧接着发送的一帧是数据的长度(data_length),单片机接收该长度的数据之后自动停止接收数据,开始接收指令帧。

对应表格如表4-1

  

表4.1各种帧及其相应的功能

PC发送的十六进制指令(帧)

单片机对应的功能

0xFE

指令开始帧

0x10

关键值采集帧

0xFF

指令结束帧

0x03

点亮发光二极管帧

0x01

数据帧开始标志帧

0x04

熄灭发光二极管帧

0x02

熄灭数码管帧

0x05

测试并返回字符串帧

0x06

点亮数码管帧

0x07

点亮点阵帧

0x09

开始键值采集帧

0x08

熄灭点阵帧

4.2下位机(单片机)串行通信及程序设计

4.2.1单片机开发环境uVision2介绍

省略

4.2.2下位单片机驱动程序

下位机驱动程序的主要原理是串口中断接收上位机发送的数据和指令,对上位机发送的数据进行判断比较,采用置标志位变量XXX_flag为1的方法驱动相应功能程序。

下位机在没有主机发送指令的时候,一直在执行dian_zhen()和led_tube()程序。

其中dian_zhen()是点亮点阵用的,开头有一个If语句,判断D_flag标志位变量是否为1,若为1则触发该段程序,点亮点阵。

若不为1,则dian_zhen()相当于空指令。

led_tube()主要是用来点亮LED数码管的,里边有两个If判断语句,一个是判断标志位变量T_flag,用来触发数码管时钟现实程序;

另一个标志位变量是J_flag,主要用来触发采集键值时LED数码管显示键值的程序。

T_flag和J_flag是不能同时为1的,但是可以同时为0,表示led_tube()函数是个空指令。

程序中主要的函数及功能

voidcomm_init();

//初始化

voiddian_zhen();

//点阵显示函数

voidled_tube();

//数码管赋值,其调用display()函数

voiddisplay(unchard0,unchard1,unchard2,unchard3);

//数码管扫描显示

voiddelay(uncharz);

//延迟函数

voidmain()//主函数

{

comm_init();

while

(1)

{

dian_zhen();

led_tube();

}

}

中断有定时器T0中断,为50ms中断一次,主要是数码管时钟准确跑秒所用;

另一个中断是串行中断,每来一个字节数据中断一次。

串口中断尤为重要,是单片机通信系统的核心程序,其主要做的事情就是判断主机来的指令到底是让单片机执行什么功能,利用if-elseif语句进行判断选择,然后置相应功能标识位为1,触发主程序中内置的功能模块,进而实现相应功能。

现展示串口中断程序如下,内部有详细解释。

voidser()interrupt4//串口中断。

{

RI=0;

TI=0;

ES=0;

//注意每次执行串行中断程序时都要先关中断,以免数据丢失。

if((SBUF==0xfe)&

&

(controls_flag==0)&

(data_length==0))//指令开始标志

{ctlstart_flag=1;

L_flag=0;

data_length=0;

elseif((SBUF==0xff)&

(data_length==0))//指令结束标志,清所有flag为0

{ctlstart_flag=0;

controls_flag=0;

ii=0;

}

elseif((SBUF==0x05)&

(ctlstart_flag==1)&

(controls

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2