武汉理工大学基于C语言的上下位机通信设计.docx
《武汉理工大学基于C语言的上下位机通信设计.docx》由会员分享,可在线阅读,更多相关《武汉理工大学基于C语言的上下位机通信设计.docx(27页珍藏版)》请在冰豆网上搜索。
武汉理工大学基于C语言的上下位机通信设计
任务书
学生姓名:
专业班级:
信息工程1004班
指导教师:
郑林工作单位:
信息工程学院
题目:
基于C语言的上下位机通信设计
初始条件:
1.计算机及WINDOWS7操作系统
2.VC++6.、KeiluVision4、STC_ISP等软件
3.开发语言:
C++/C语言
4.HL—1型综合单片机开发板、DS18B20温度传感器
要求完成的主要任务:
设计一个基于C语言的上下位机通信设计。
功能如下:
(1)上位PC机与下位单片机模块通信
(2)上位机能通过下位机控制板块上的指示灯;
(3)下位机可把温度等信息传给上位机
要求:
1.按《武汉理工大学课程设计工作规范》要求撰写课程设计说明书
2.根据设计任务,能够讲解及显示自己的设计
3.最终完成内容包括设计说明书和交程序备份
时间安排:
2013年6月11号——12号选题及调研
2013年6月13号——19号软件设计及编程调试
2013年6月20号——21号撰写设计说明书
2013年6月22号答辩
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
附录
摘要
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。
加之单片机的计算能力有限,难以进行复杂的数据处理。
因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。
本文主要描述了利用PC机与STC89C52单片机之间的通信程序设计实现温度显示。
并详述了在VC6.0环境下,上位机利用串口调试程序与单片机之间串口通信实现温度显示。
由单片机采集一个温度信号,将采集到的温度信号传送给PC机显示,PC机用VC6.0编写程序,单片机程序用C语言编写。
通常PC机和单片机之间的通信是通过串行总线RS-232实现的。
因此采用一种以MAX232为核心的通信接口电路。
该接口电路适用于由一台PC机与多个STC89C52单片机串行通信的设计,其原理和方法同样适用于PC机与其它单片机之间的串行数据通信。
关键词:
单片机串口通信VC6.0STC89C52温度显示DS18B20
1.设计任务
在当今的工业控制系统中,各种数据的采集和执行机构的控制都是由下位机或探测站来完成。
由于单片机具有体积小、价格低廉、可应用于恶劣工业环境的特点,在分布式控制系统中大多采用单片机作为下位机来进行数据采集和现场控制。
在这些应用中,单片机只是直接面向被控对象底层。
而对采集到的数据进行进一步分析和处理的工作是由功能强大的主控PC机来完成的。
因此,PC机和单片机之间就有着大量的数据交换。
51单片机与PC机之间的通信协议
在许多场合的测控系统中,约定PC机和8051单片机的通信协议为:
Number+Command+Length+Data+Check
Number:
下位机的机号,若设计中有3台下位机,即Number取01H,02H,03H,分别代表:
#1,#2,#3号下位机;
Command:
本次命令的代码;Length:
本次发送数据段的字节数;
Data:
要发送的数据段;
Check:
1字节的校验码。
本设计只考虑一个8051单片机,故可对上述通信协议进行简化。
具体任务要求:
基于C语言的上下位机通信设计
主要功能:
(1)上位PC机与下位单片机模块通信
(2)上位机能通过下位机控制板块上的指示灯;
(3)下位机可把温度等信息传给上位机
系统环境:
Windowsxp/windows7
软件:
VC++6.0、KeiluVision4、STC官方烧录工具(STC-ISP)
2方案选择
2.1硬件方案选择
本设计采用的是STC89C52单片机,STC89C52是一种带8K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
STC89C52使用经典的MCS-51内核,它是一种高效微控制器,因为它更经济实惠,用起来灵活方便,而且习惯了用这种型号的单片机,所以选择STC89C52单片机。
本设计采用MAX232芯片进行电平转换,MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5V单电源供电,它的作用就是完成TTL电平与RS-232电平的转换。
PC机的串行口采用的是标准的RS-232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS-232的电气特性不匹配,因此为了使单片机的串行口能与RS-232接口通信,必须将串行口的输入/输出电平进行转换。
通常用MAX232芯片来完成电平转换。
MCS-51单片机有一个全双工的串行通讯口UART。
利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。
所以单片机和PC机之间可以方便地进行串口通讯。
单片机串口有3条引线:
TXD(发送数据)、RXD(接收数据)和GND(信号地)。
因此在通信距离较短时可采用零MODEM方式,简单三连线结构。
IBM—PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51机之间能可靠地进行串行通信,需要用电平转换芯片,我们采用了MAXIM公司生产的专用芯片MAX232进行转换。
2.2软件方案选择
2.2.1上位机编程方案选择
本设计采用VC6.0++来实现编程,上位机与单片机进行通信的程序编写可用VB、VC等软件。
由于VB作为面向对象的编程工具不够完全,效率比VC低,提供的命令语言环境较弱,通过串口设备一次最多只能交换16B的数据,对较大数据量的传输存在很大的局限性,很难实现较为复杂的数据处理,VC6.0++是一种功能强大的面向对象的Windows编程开发平台。
VC6.0的优点是界面简洁,占用资源少,操作方便。
所以本设计采用VC作为串口编程工具。
2.2.2单片机编程方案选择
本设计单片机的编程选择C语言编写,因为它简洁紧凑、灵活方便、运算符丰富、数据结构丰富、C是结构式语言、C语法限制不太严格,程序设计自由度大、C语言允许直接访问物理地址,可以直接对硬件进行操作、C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10へ20%、C语言适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
所以我选用C语言来编写此程序。
2.3总体方案选择
温度传感器测量出来的温度值由单片机采集出来,然后单片机再将采集出的温度数据处理后,通过串行口发送给上位机。
STC89C52
RS-232接口
电路
PC上位机
图2.3—1总体设计方案流程图
自习观察上图可发现,该框图中起着重要作用的是RS-232C通信接口电路。
它是上位机和下位机之间信息传递的枢纽,一切数据的传输必需由它完成,上位机直接利用它的RS-232串行口,为此,采用了RS-232串行通信来接收或上传数据和指令。
但RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。
在此电路中,采用MAX232实现TTL逻辑电平和RS-232电平之间的相互转换。
MAX232由单一的+5V电源供电,只需配接5个高精度10μF/50V的钽电容即可完成电平转换。
因此,避免了用1488和1489时必需两路电源的麻烦。
转换后的串行信号TXD、RXD直接与PC机的串行口连接。
如此设计,既可发挥出PC机强大的计算和显示功能,又可以体现出单片机灵活的控制功能,有利于对现场信号的实时采集、处理和监控。
3详细设计
通过综合分析,本系统至少应具备如下功能:
(1)PC机与单片机51单片机都可发送和接收数据,进行可以异步串行通信;
(2)PC机键盘输入发送给单片机51单片机,单片机接收PC机发来的数据并送LED显示;
(3)单片机51单片机每次采集的温度数据送给单片机的LED显示,单片机发送的数据即实时温度信号的二进制码组,发送时作为一个队列发送,PC机接收单片机发送来的数据并送窗口显示;
(4)上位机程序即PC端程序采用VC++6.0制作,人机界面友好,界面简洁,功能完善,下位机程序即单片机端采用C语言进行开发。
综上所述,本次设计主要分为两个部分:
单片机部分和PC机部分,单片亦称为下位机,PC机为上位机。
二者之间的通信通过RS-232接口电路连接串口来实现。
其中,单片机部分主要完成:
温度的采集与显示、接收上位机所发来的相应信号并同步点亮相应指示灯、通过串口将温度信息传给上位机。
上位机(PC)则主要完成向下位单片机发送指令,并实时显示单片机说传送过来的温度信息,并显示在相应的界面显示区内,还要承担串口的选择,及传送信号数制的选择。
3.1单片机部分
单片机即下位机,其主要完成的工作为:
温度的采集与转换;
温度的数码显示;
响应响应上位机给出的中断;
将温度信息传送给上位机等。
3.1.1下位机硬件设计
下位机主要完成的是温度的采集、处理与显示,同时负责显示采集自上位机的亮灯信号。
其核心部件为STC89C52单片机,它是整个下位机的核心控制、运算器件。
承担着处理温度传感器DS18B20所采集来得温度数据,传送到七段数码管予以显示,同时又要处理来自于上位机的相关命令信号。
但此次设计是以上下位机的通信为重点,且单片机的相关特性也已熟悉,故在此不再冗述。
关于温度传感器DS18B20在这里做一下简单的介绍:
温度采集模块主要有DS18B20温度传感器构成,DS18B20的数字温度计提供9至12位(可编程设备温度读数)。
信息被发送到/从DS18B20通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
同时DS18B20因为自身带有存储和AD转换功能,故不需任何外接辅助芯片即可完成温度的采集与AD转换。
DS18B20的相关技术参数为:
温度传感器DS18B20
温度灵敏度:
0.0625
测温范围:
-55℃~+125℃
测温误差:
±0.5℃
工作电压:
3~5V/DC
特点:
测量结果以9~12位数字量方式串行传送,不需要任何外文扩展器件。
图3.1.1-1DS18B2内部结构图
图3.1.1—2DS18B20实物图
3.1.2下位机程序设计
下位机流程图
温度采集与处理
温度显示
串行口初始化
串行口通信
3.2PC机部分
上位机程序即PC端程序采用VC++6.0制作,人机界面友好,界面简洁,功能完善,下位机程序即单片机端采用C语言进行开发。
最终界面图如下所示:
图3.2—1PC端用户界面
上位机程序流程图
串口打开/发送按钮:
此该部分的功能为,打开串口使得PC端开始接收来自于下位单片机的温度信息等,也可以通