基于单片机的多功能参数检测系统设计与实现

更新时间:2024-05-09 12:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

本文论述了一种基于单片机的多功能参数检测系统的设计与实现过程。系统采用了单片机STC89C52为主控芯片,设计了电流电压转换电路,能够将现场的温度、压力、流量、液位等物理量所对应的4-20mA电流信号转换成1-5V的直流电压信号,并提供给A/D转换电路。根据系统测量的模拟量较多的特点,使用ADC0809作为A/D转换芯片。使用LCD1602作为显示器件,能够实时显示采集的温度、压力、流量、液位等物理量。同时,系统还设计了参数设置与报警提示等功能电路。

论文共分三部分介绍了基于单片机的多功能参数检测系统设计过程。第一部分,主要介绍了系统的方案设计,明确了系统的功能要求,给出了系统方案框图,并对部分元器件的选择、软硬件开发环境进行了介绍;第二部分,主要介绍了硬件电路的设计过程,包括主要器件的介绍、与单片机接口电路设计思路叙述;第三部分,对软件部分的设计思路做了介绍,并分别数据采集、显示、按键处理等各功能部分设计过程进行了叙述。

关键词:单片机;电流电压转换;A/D转换;LCD1602;声光报警

I

Abstract

This paper discusses a kind of multi-functional parameter detection system based on single chip microcomputer.This design use the single chip microcomputer as the controller STC89C52 chip,using current voltage conversion circuit can change the scene of the physical quantities,such as temperature,pressure,flow,level of 4-20 mA current signal into 1-5 V voltage signal,and provide for A/D conversion circuit.According to the characteristics of the measurement system that there are much more analog quantities,ADC0809 is used as A/D conversion chip,using LCD1602 as a display device,can collect real-time display of temperature,pressure,flow and liquid level.At the same time,the system also designed the circuit for parameter setting and sound and light alarming function.

This paper is divided into three part introduces multi-functional parameter detection system based on single chip microcomputer.The first part,mainly introduced the system design,the functional requirements of system,the system block diagram is given,and the selection of some components,hardware and software development environments are introduced;The second part,mainly introduces the design process of hardware circuit,including the main device,single chip microcomputer interface circuit design ideas of narrative;The third part,the design idea of the software part is presented,and various functions such as data acquisition,display and buttons processing are discusses.

Key words: Single chip microcomputer; Current voltage conversion; A/D conversion;

LCD1602;Sound and light alarm

II

目 录

绪 论 .......................................................................................................................................... 1 1 方案设计 .............................................................................................................................. 2

1.1 总体框架的设计 ........................................................................................................ 2 1.2 单片机开发环境的选择 ............................................................................................ 3

1.2.1 电路图绘制软件 .............................................................................................. 3 1.2.2 Keil_C软件 ...................................................................................................... 4

2 硬件电路设计 ...................................................................................................................... 6

2.1 传感器的选型 ............................................................................................................ 6 2.2 单片机最小系统设计 ................................................................................................ 6

2.2.1 单片机的选型 .................................................................................................. 6 2.2.2 时钟电路与复位电路 ...................................................................................... 8 2.2.3 单片机使用注意事项 .................................................................................... 10 2.3 电流电压转换电路设计 .......................................................................................... 11 2.4 模拟量采集电路设计 .............................................................................................. 13

2.4.1 ADC0809概述 ............................................................................................... 13 2.4.2 ADC0809与单片机接口电路 ....................................................................... 15 2.5 显示电路设计 .......................................................................................................... 16

2.5.1 LCD1602引脚结构 ....................................................................................... 16 2.5.2 LCD1602主要技术参数及特性 ................................................................... 16 2.5.3 LCD1602与单片机的接口电路 ................................................................... 17 2.6 按键接口电路设计 .................................................................................................. 17 2.7 报警电路设计 .......................................................................................................... 18 2.8 串行口功能设计 ...................................................................................................... 19

2.8.1 RS-232串行接口 ........................................................................................... 19 2.8.2 MAX232简介 ................................................................................................ 20

3 软件部分设计 .................................................................................................................... 22

3.1 主程序工作流程 ...................................................................................................... 22 3.2 A/D转换子程序 ...................................................................................................... 23 3.3 数字滤波及标度变换程序设计 .............................................................................. 24

III

3.4 显示程序设计 .......................................................................................................... 25 3.5 按键处理程序设计 .................................................................................................. 27 3.6 报警程序设计 .......................................................................................................... 28 结 论 ........................................................................................................................................ 29 致 谢 ........................................................................................................................................ 30 参考文献 .................................................................................................................................. 31 附录A 硬件原理图 .............................................................................................................. 32 附录B 程序代码 .................................................................................................................. 33 附录C 实物图 ...................................................................................................................... 46

IV

绪 论

随着计算机技术的发展,数据采集系统的应用也日益广泛[1]。数据采集是工业控制系统中至关重要的一个环节,在生产过程中,往往需要随时检测各个环节的温度、液位、流量及压力等参数。同时,还要对某个检测点的任意参数进行随机查询,将所得到的检测结果提取出来以便进行比较做出决策,调整控制方案。此外,在科研过程中,运用数据采集系统可获得大量的动态信息,也是获取科学数据的重要手段之一。数据采集系统直接影响控制系统的决策。

数据采集系统,从某种意义上来说,是用计算机控制的多路数据自动检测或循环检测的、能够对数据实行存储、处理、分析计算以及从检测的数据中提取有用的信息,并能够供显示、记录、打印功能的系统[2]。在过去的几十年里,随着信息领域技术的发展,数据采集方面的技术也取得了很大的进步,采集数据的信息化是目前社会的发展主流方向。许多领域都用到了数据采集,在地质勘探、科学实验、工业生产过程、日常生活等领域已得到应用。

单片机系统在开发过程中,程序设计语言的选择尤为重要。C51提供高效的代码,结构化的编程和丰富的操作符,多被采用。它是一种编译型程序设计语言,兼顾了多种高级语言的特点,并具备汇编语言的功能。C51有功能丰富的函数库、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对硬件的控制。C51是一种结构化程序设计语言,它支持当前程序设计中广泛采用的自顶向下结构化程序设计技术。此外,C51程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C51进行程序设计已成为软件开发的一个主流[3]。用C51来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。

尽管现在以微机为核心的可编程数据采集与处理采集技术的发展方向得到了迅速的发展,而且组成一个数据采集系统只需要一块数据采集卡,把它插在微机的扩展槽内并辅以应用软件,就能实现数据采集功能,但这并不会对基于单片机为核心的数据采集系统产生影响。相较于数据采集板卡成本和功能的限制,单片机具有高性能、低电压、低功耗、低价格等优点,而双单片机又具有精度较高、转换速度快、能够对多点同时进行采集,因此能够开发出能满足实际应用要求的、电路结构简单的、可靠性高的数据采集系统。这就使得以单片机为核心的数据采集系统在许多领域得到了广泛的应用。

1

1 方案设计

该部分主要是针对课题的要求及最终要实现的功能进行总体的方案设计,设计出最佳框架和各个模块,以便于硬件选型、电路设计和软件编程。

1.1 总体框架的设计

该系统以单片机作为主控芯片,现场要测量的温度、压力、流量、液位等物理量均为模拟的非电量信号,因此,需要选用对应的传感变送装置,将上述非电量信号变换为标准电流信号,电流信号抗干扰能力强。单片机只能接收数字信号,又因为要测量的模拟量较多,所以必须有A/D转换器,测量结果需要显示。设置按键对参数的检测方式及报警值进行设置;同时,设置声光报警功能,当采集参数的值超过预设上限值或低于预设下限值时蜂鸣器和报警指示灯发生相应的变化,用于提示。

基于单片机的多功能参数检测系统,其主要实现的功能如下:

⑴温度检测:对水温进行检测并转化为标准电流信号,通过电流电压转换电路、A/D转换电路、单片机最终将温度值显示;

⑵压力检测:对管道压力进行检测并转化为标准电流信号,通过电流电压转换电路、A/D转换电路、经过单片机处理并显示在显示器上;

⑶流量检测:对管道流量进行检测并转化为电流信号,通过电流电压转换电路、A/D转换电路、单片机将管道流量值显示出来;

⑷液位检测:可以对水槽内液位进行检测并转化为电流信号,通过电流电压转换电路、A/D转换电路、单片机最终将水槽内液位值显示;

⑸按键功能:可以通过按键选择对温度、压力、流量、液位四个参数进行单独检测还是循环检测,可以对报警上下限进行设置;

⑹显示功能:单独或轮流显示与刷新温度、压力、流量、液位四个参数的测量值; ⑺报警功能:当实际测量值高于预设上限值或低于预设下限值时,声光报警。 根据课题要求及其所需要实现的功能最终设计出总体框架,系统框图如图1.1所示。

2

温度检测 压力检测 流量检测 液位检测 电流电压转换 AD转换 单片机 显示 声光报警 按键输入

图1.1 系统框图

1.2 单片机开发环境的选择

1.2.1 电路图绘制软件

本设计中电路图的设计使用常用的电路图绘制软件Protel99 SE,该软件功能强大,开发系统具有中文版本,便于使用,其特点介绍如下:

Protel99 SE共分5个模块,分别是对于电路原理图的设计、对于PCB开发板的设计(针对信号完整性能分析包含在内)、对于原理图混合信号部分的仿真、自动布线器以及PLD设计。

以下针对Protel99SE的一些最新功能进行介绍[4] ⑴可以生成多余30种电气连接网络表; ⑵拥有较为强大的编辑全局功能;

⑶某一级器件从原理图中被选择,该器件在PCB图中也将被选择;

⑷可以一起运行PCB和原理图,并允许在打开的PCB图和原理图之间相互搜索元器件、网络、引脚;

⑸原理图至PCB图和PCB图到原理图都可对元器件标号进行注释,以实现PCB图和电气原理图设计上的一致性;

⑹符合国际标准标题栏输出和GB4728国际标准库即国际化设计要求;简单方便使用的数模混合仿真(兼容SPICE 3f5);

⑺对于原理图设计PLD和CUPL语言都支持使用,标准JED下载文件可以被生成;PCB可设计16个电源-地层、32个信号层和16个机加工层;

⑻拥有超强的“规则驱动”设计环境,支持批处理的和在线的设计规则检查;

3

⑼拥有智能覆铜功能,根据具体情况覆铜可实现自动重铺; ⑽提供多种工业中常用的标准电路板作为模版; ⑾拥有放置汉字的功能;

⑿可输入和输出DXF格式文件和DWG格式文件,可以和AUTECAD等软件进行数据之间的交换;

⒀智能封装导航对PGA和BGA封装十分方便;

⒁打印预览功能简便实用,打印结果的控制无需修改PCB文件; ⒂十分独特的3D显示,安装事物后的效果可在压板前看到;

⒃可以轻松实现输出测试点报告、贴片机文件、钻孔文件、材料清单、光绘文件等的CAM处理;

⒄便利的测量工具与反射和串扰仿真的波形显示结果相互结合; ⒅拥有解决信号完整性问题的专家导航[5]。 1.2.2 Keil_C软件

单片机的设计不仅需要硬件,同样也需要软件,有两种方法可使汇编语言源程序变成CPU可执行的机器码:一种方法是机器汇编,另一种方法是手工汇编,手工汇编的方法现今已经很少使用。采用汇编软件将源程序变成机器码的方法为机器汇编方法,A51汇编软件为早期使用于MCS-51的编程软件,随着不断发展的单片机开发技术,编程软件已由汇编软件发展为高级语言,目前普遍应用在开发MCS-51系列单片机的汇编软件为Keil编程软件。Keil软件近年来已纷纷得到了各仿真机厂商的全面支持。Keil编程软件不仅拥有连接器、库管理、C语言编译器、宏汇编的开发环境还拥有强大功能的仿真调试器开发环境,集成的开发环境uVision将以上部分组合一起[6]。Keil编程软件的运行需要Pentium或以上的CPU、16MB或更多RAM、20MB以上硬盘空间的WIN98、NT、WIN2000、WINXP等操作系统。熟练掌握Keil软件的操作对于52系列单片机的使用者来说是十分必要的,如果使用C语言编程,那么Keil软件是我们最应该熟悉的,即使使用汇编语言编程而不使用C语言,其强大的软件仿真调试工具和方便易用的集成环境也将起到事半功倍的效果。

Keil集成开发环境是基于MCS-51系列单片机,能够完成从工程建立、编译、链接、目标代码生成、软件模拟和硬件仿真等完整的开发过程,Keil软件的C语言编译工具产生代码的准确性高、效率高且灵活方便,目前很多仿真器的仿真环境都与Keil兼容。

4

Keil集成开发环境的主要功能有以下几点:

⑴Keil集成开发环境:它将工程管理、源程序编辑和程序调试和仿真集成在一起,完成项目开发;

⑵C51交叉编译器:从C51源代码生成可重定位目标代码; ⑶A51编译器:从51系列的汇编源代码生成可重定位的目标代码;

⑷BL51连接定位器:组合由A51和C51生成的可重定位的目标代码,形成绝对目标模块;

⑸LIB51库管理器:从目标模块生成链接器可以使用的库文件;

⑹OH51目标文件到HEX格式的转换器:从绝对目标模块生成HEX文件; ⑺RTX-51实时操作系统:简化了实时应用软件的开发与调试过程;

设计的软件部分,使用Keil作为编程开发软件,对52单片机进行C语言的编辑与软件仿真;

5

2 硬件电路设计

硬件部分采用传感器件完成对温度、压力、流量、液位四个参数的采集,采用单片机STC89C52作为主控芯片,将采集的数据显示在LCD1602上,其中硬件的设计部分包括:传感器选型、单片机最小系统电路设计、电流电压转换电路设计、模拟量采集电路设计、显示电路设计、按键接口电路设计、报警电路及串行口功能设计,下面将对各个设计部分做详细的介绍。

2.1 传感器的选型

需测量的温度为水的温度,选择温度传感器的测量范围应为0~100℃,且选择传感器要求精度高、转换速度快、简单实用,所以选择Pt100作为温度传感器;需测量的压力测量范围为0~1.4MPa,所选压力传感器BP—801、电源为24VDC、输出为4~20mA电流信号;需测量的流量测量范围为0~0.6立方米/小时,所选流量传感器采用涡轮式传感器LWGY-15A、精度为0.5%、输出为4~20mA电流信号;需测量的液位测量范围为1~1000毫米,所选液位传感器型号为BPY—800、精度为0.5%、供电电源为24VDC、输出为4~20mA电流信号。

2.2 单片机最小系统设计

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,本设计最小系统包括:单片机、时钟电路、复位电路。 2.2.1 单片机的选型

选用的单片机型号是STC89C52。STC89C52引脚如图2.1所示,是一种带8K字节闪烁可擦除可编程的只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低压电、高性能的微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,12时钟/机器周期和6时钟/机器周期可以任意选择。

1、主要特性

⑴工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机); ⑵片上集成512字节RAM;

6

⑶通用I/O口(32个),复位后为:P0/P1/P2/P3是开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;

⑷ISP(在系统可编程)/IAP(在应用可编程),不需要专用编程器,不需要专用仿真器,可通过串口(RXD/P3.0,TXD/3.1)直接下载用户程序,几秒钟即可完成一片,准双向口/弱上拉,P0口是漏极;

⑸具有EEPROM功能; ⑹具有看门狗功能;

⑺共3个16位定时器/计数器,即定时器T0、T1、T2; ⑻工作频率范围:0~40MHZ,实际工作频率可达48MHZ;

⑼外部中断4路,下降沿中断或低电平触发电路,掉电模式可由外部中断低电平触发中断方式唤醒。

此外,STC89C52设计和配置了振荡频率可为0Hz并可通过软件设置节电模式。此模式下,CPU暂时停工作,此时外部中断系统、RAM定时计数器,串行端口可以继续工作,掉电模式使振荡器冻结从而将RAM的数据保存,停止芯片的其它功能直至硬件复位或外中断激活。与此同时STC89C52芯片还具有PLCC、TQFP及PDIP等三种封装模式,可以满足不同产品的需求。

2、单片机管脚说明

其中包括4个8位并行I/O接口线、6条控制信号线和2条电源线

并行口P0(P0.0~P0.7):P0口为一个8位漏极开路双向I/O接口,8TTL门电流可被每个引脚吸收。P0口的管脚第一次写入高电平时,被称为高阻态输入。它可以被定义为地址/数据的低八位,应用外部程序数据存储器进行存取时可使用P0口。应用FIASH编程时,P0口可作为原码输入口,在FIASH进行校验时,P0口可作为输出口输出原码,此时P0口外部必须被拉高。连接外部存储器或扩充外设时,作为低8位地址线和高8位数据线。

并行口P1(P1.0~P1.7):P1口是一个内部提供上拉电阻的8位双向I/O接口,4TTL门电流可被P1口缓冲器接收、输出。P1口管脚写入高电平后,被内部上拉为高,可作为输入,当P1口被外部下拉为低电平时,P1口将输出电流,这是由于内部为上拉状态的原因。当FLASH校验和编程时,P1口可用作低八位地址接收,P1口还具有第二功能,可以通过对单片机进行设置,将P1口作为A/D转换口使用。在编程和校验试接收低8位地址,每一位可以独立的输入/输出。

7

并行口P2(P2.0~P2.7):P2口为一个内部提供上拉电阻的8位双向I/O接口,4TTL门电流可被P2口缓冲器接收、输出。当P2口被写入高电平时,其内部上拉电阻将其管脚拉高,并作为输入。作为输入时,P2口的管脚被外部拉为低电平时,P2口将输出电流,这是由于内部为上拉状态的原因。当应用16位地址外部数据存储器或外部程序存储器时,P2口输出地址的高八位。在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收控制信号和高八位地址信号[7]。

并行口P3(P3.0~P3.7):P3口为一个8位准双向I/O接口,另外还兼有中断(P3.2(外部中断0)、P3.3(外部中断1))、定时/计数器(P3.4(定时/计数器0)、P3.5(定时/计数器1))、串行通信(P3.0(串行口输入)、P3.1(串行口输出))、读/写(P3.6(外部数据存储器写信号)、P3.7(外部数据存储器读信号))等控制功能。

VCC供电电压;GND接地。

图2.1 STC89C52单片机引脚图

2.2.2 时钟电路与复位电路

1、时钟电路

单片机芯片内部有一个反向放大器构成的振荡器,XTAL1和XTAL2引脚分别为振

8

荡器的输入端和输出端,时钟可以由内部或外部产生。内部时钟电路是在XTAL1和XTAL2引脚上接一定时元件,内部振荡电路就产生自激振荡,定时元件通常是由石英晶体(晶振)和电容组成谐振电路。晶体振荡频率可在1.2MHz~12MHz之间选择,电容C1、C2的取值在5pF~30pF之间。外部时钟电路为XTAL1接地,XTAL2接外部振荡器,振荡器频率为不低于12MHz的方波信号。设计采取的是内部时钟电路如图2.2所示。

图2.2 晶振电路原理图

2、复位电路

单片机有两种复位方式,上电复位和开关复位,上电复位在上电瞬间RC电路充电,RST引脚上出现正脉冲,只要正脉冲保持100ms以上,就能使单片机有效复位。由于某种干扰,单片机不能正常复位,就需要加开关复位,当开关按下时,单片机复位。

3、复位电路的用途

单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。单片机复位电路如图2.3所示。

图2.3 复位电路原理图

4、复位电路的工作原理

在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,

9

如果释放后再按下,系统还会复位,所以可以通过按键的断开和闭合在运行的系统中控制其复位。

在电路图中,电阻大小为10k,电容大小为0.1uF。所以根据公式,可计算出电容充电电压为单片机电源电压(5V)的0.7倍,充电到电源电压的0.7倍就是3.5V,所需时间为10K*0.1UF=1S。也就是说在电脑启动的1S内,电容两端的电压值在0~3.5V增加。这个时候10K电阻两端电压值从5~1.5V减少(串联电路各处电压之和为总电压)。所以在1S内,单片机的RST引脚接收的电压值在5V~1.5V之间。在5V工作正常的51单片机中低电平信号为小于1.5V的电压信号,高电平信号则为大于1.5V的电压信号。所以在开机1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为1S左右)。

在单片机启动1S后,电容C两端的电压持续充电为5V,这时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在1S内,从 5V释放到变为了1.5V甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平,单片机系统自动复位。

对于片内有ROM/EPROM/E2PROM的单片机,用一片这种芯片构成的最小系统简单、可靠。构成最小系统时,只要将单片机接上时钟电路和复位电路,将EA非接高电平即可。最小系统时,P0、P1、P2、P3都可用作I/O线,但由于集成度限制,片内存储器容量有限,因此,最小系统主要用于一些简单的控制系统中。 2.2.3 单片机使用注意事项

⑴对于31脚(EA/VPP),当接高电平时,单片机在复位后从内部ROM的0000H开始执行,当接低电平时,复位后直接从外部ROM的0000H开始执行,这一点是初学者容易忽略的;

⑵晶振电路容易在焊接时漏掉电容需要接地,并且使用电容的大小一定要选准,晶振电路部分一定要焊接完全,否则容易使晶振电路出现虚接,影响设计;

⑶复位电路部分接口的电阻与电容选择要正确,要保证在电容充满电时,单片机有足够的时间进行复位;

⑷单片机的电源部分引脚接对,使用单片机时看单片机的缺口处来找单片机的引脚顺序;

10

⑸单片机在使用中P0口要加上拉电阻,一般为10K,因为P0口的驱动能力较低。

2.3 电流电压转换电路设计

由于前端设备温度、压力、流量、液位传感器所输出的为标准电流信号,而电流电压转换电路作用是将传感器输出的4~20mA标准电流信号转换为1~5V标准电压信号作为A/D转换器的输入。电流电压的转换是通过高精度250欧电阻来实现的,在转换完的电压信号后加一电压跟随器。

电压跟随器是用一个三极管构成的共集电路,电压跟随器,顾名思义,就是输入电压与输出电压是相同的[8],也就是说,电压跟随器的电压放大倍数恒小于且接近于1,电压跟随器的显著特点是输出阻抗低,而输入阻抗高,这使得它在电路中可以起到阻抗匹配的作用,能够使后一级的放大电路更好地工作。换一种说法,当输入阻抗很高时,就对前级电路相当于开路,当输出阻抗很低时,就相当于对后级电路的一个恒流源,也就是说输出电压不受后级电路阻抗的影响。一个相当于对前级电路开路,后级阻抗不影响输出电压常常被用作中间级,起到“隔离”前后级之间的影响的作用。

电压跟随器电路中所选芯片为LCM324,LM324系列器件带有差动输入的四路运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四路放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。LCM324管脚连接如图2.4所示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。

11

图2.4 LCM324管脚连接图

LCM324特点: ⑴短路保护输出; ⑵真差动输入级;

⑶可单电源工作范围在3V-32V之间; ⑷低偏置电流最大达到100mA; ⑸每封装含四个运算放大器; ⑹具有内部补偿的功能; ⑺共模范围扩展到负电源; ⑻行业标准的引脚排列; ⑼输入端具有静电保护功能。

设计中LCM324内四路运算放大器的连接方式相同,图2.5为其中一路的连接方式。

图2.5 电流电压转换电路原理图

12

2.4 模拟量采集电路设计

A/D转换器的作用是将电流电压转换电路输出的模拟量信号(1~5V电压信号)作为输入并将其转换为数字信号作为单片机的输入信号,由于系统涉及到的参数较多且考虑到实用价值,设计中A/D转换器件采用ADC0809。 2.4.1 ADC0809概述

1、ADC0809内部结构及转换原理

ADC0809是美国国家半导体公司生产的CMOS工艺8通道模数转换器,它采用逐次逼近式转换原理,内部分为两大部分,一部分为模拟量多路转换开关,另一部分是A/D转换器。它的输出可以直接与CPU总线连接。

模拟量多路开关内包含8路输入开关和3位地址锁存器/译码器。8路模拟量输入信号可接入8路输入开关。ADDA、ADDB及ADDC3位地址由ALE信号输入锁存,经过译码后决定转换哪一路输入的模拟量信号。

2、ADC0809引脚结构

ADC0809芯片有28条引脚,下面说明各引脚功能。 IN0~IN7:8路输入模拟量通道。 2-1~2-8:8位输出数字量通道。

ADDA、ADDB、ADDC:3位输入地址线,用于选择IN0~IN7 8路模拟输入通道中的某一通道。

ALE:地址锁存允许信号,高电平有效。

START:启动转换信号,脉冲上升沿使0809内部所有寄存器复位,下降沿开始进行A/D转换,转换过程中START应保持低电平。

EOC:转换结束信号,当为高电平时表示A/D转换结束时,转换期间一直为低电平。 OE:输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据,输入高电平时有效。

CLK:时钟脉冲输入端,ADC0809内部没有时钟电路,所需时钟信号需由外界提供。所用的四分频芯片是74HC4040,将74HC4040的8和11引脚接地、16引脚接电源、10引脚接单片机的时钟信号、7引脚接ADC0809的时钟脉冲输入端即可完成四分频。

3、ADC0809工作过程

首先输入3位地址,同时使ALE=1,将输入的3位地址存在地址锁存器内。该地址

13

经过译码选择8路模拟量输入中的一位并将其送给比较器。为START提供上升沿将逐位逼近寄存器SAR复位。START下降沿启动 A/D转换,之后EOC信号变为低电平,表示A/D转换在进行当中。EOC变为高电平时表示A/D转换完成,并将转换结果存入锁存器内,此转换结束信号可用为中断请求信号。当读允许输入端输入高电平时,数据允许输出,A/D转换后的数字量将被输出[9]。

A/D转换后的数字量应立即传送到单片机进行分析。数据传送过程中关键问题在于如何确认转换已完成,只有确认转换已完成ADC0809与单片机之间才能进行数据之间的传送。

4、数据传送方式 ⑴定时传送方式

转换时间对于一种A/D转换为一项是已知和固定的技术指标。例如ADC0809的转换时间是128μs,相当于6MHz的MCS-51单片机共64个机器周期。依据此已知项可设计一延时子程序,A/D转换开始后便调用这个子程序,延迟程序执行完毕,转换肯定也已经完成,接着便可进行数据之间的传送。

⑵查询方式

可以用查询方式,测试EOC的状态,即可确认转换是否已完成,并进行数据间的传送。利用查询方式时ADC0809与单片机接口连接比较自由,但控制时序要由程序产生。

⑶中断方式

中断请求信号为表示转换已完成的信号(EOC),单片机响应中断请求后,执行中断服务程序,读取数据。

无论使用上述哪种方式,转换一旦完成,采用指令便可进行数据之间的传送。首先读允许信号有效时即OE信号有效,便把转换后的数据送给单片机。

由于采用查询方式时单片机与ADC0809之间的连接方式较为简单,且易于控制所以系统中采用的是查询方式。

5、ADC0809的工作时序

ADC0809工作时序如图2.6所示,在此时序图中能得出,三位通道的地址在ALE信号为上升沿时锁存,通过多路模拟开关将对应通道内模拟量传送到模数转换器。内部电路在START信号为上升沿时复位,START信号为下降沿时启动转换,这时EOC信号为低电平状态,逐次逼近需要一定的过程,因此,在这期间,模拟量输入应保持不变,

14

比较器需一次次比较,直至转换结束,此时EOC信号为高电平。如果CPU发出读允许信号即OE为高电平,就可以读出数据。此外ADC0809具有较高的精度和转换速度,受温度的影响也较小。

图2.6 ADC0809工作时序图

2.4.2 ADC0809与单片机接口电路

将四路输入模拟信号转化为数字信号,为数据显示模块提供输入信号。单片机P1.3、P1.4、P1.5输出的三位地址加到通道选择端A、B、C,可作为通道编码。输出数据与P0口连接,START、ALE一起与P3.6相连,CLOCK与74HC4040的时钟输出端口相连,EOC与P3.5相连进行转换结束的判断,OE与P3.7相连作为输出允许控制端,ADC0809接口电路如图2.7所示。

图2.7 A/D转换接口电路原理图

15

3、电平转换集成电路MAX232功能

可实现89C52单片机与PC机的RS-232之间的电平转换,89C52单片机输入输出电平为TTL电平而PC机配置的是RS-232标准串行口,二者之间的电气规范不一致 ,对应关系如表2.1所示。

表2.1 电气规范对照表

数字值 TTL电平 232电平

1 +5v -3v ~-15v

0 0v +3v~+15v

P3.1(TXD)接MAX232的T2IN引脚,MAX232的T2OUT接DB-9的2引脚(RXD),串行接口电路如图2.12所示。

图2.12 串行口电路原理图

21

3 软件部分设计

软件部分设计主要针对于软件部分的程序进行分析介绍,对应各个模块首先介绍程序部分设计思路,然后对流程图进行详细的讲解。

3.1 主程序工作流程

主程序主要完成程序的初始化、按键程序及报警程序的判断,首先进入main函数对定时器0进行初始化设置,设置定时方式1,定时50ms中断一次,累计40次后为2S也就是用来定时2S,2S后通过标志位使标志显示界面变量加1,同时显示相应界面。主程序流程图如图3.1所示。

图3.1 主程序流程图(1)

22

图3.1 主程序流程图(2)

3.2 A/D转换子程序

利用ADC0809转换四路模拟量,首先选择需转换四路模拟量中的一路,然后启动转换,在其转换过程中一直判断其转换是否完成,如果未完成则继续转换,如果已完成转换则发出读允许信号,使其转换完成的数据可供单片机使用,A/D转换程序流程图如图3.2所示。

图3.2 A/D转换程序流程图

23

3.3 数字滤波及标度变换程序设计

数字滤波技术是指在软件中对采集到的数据进行消除干扰的处理。在软件中进行数字滤波的处理,以消除附加在数据中的各式各样的干扰,使采集到的数据能够真实的反映现场的工艺实际情况。数字滤波最简单和最常用的一种,方法是在某时刻对信号进行连续多次多样,对采样值进行算术平均,作为该时刻的信号值,连续采样的次数视具体情况而定。算术平均值滤波对抑制周期性干扰和随机干扰有良好效果。

设计中采用的数字滤波方法为最值算数平均值滤波,它是平均值滤波的改进,它认为最值是一个野值,应该剔除。对余下的值再做平均值滤波。

标度变换:测量时,先将外界信号转换成电信号,然后用A/D转换器将模拟量转换为数字量,经一系列变换后得到的数码值它仅仅对应于参数值相对量的大小,故必须把它转换成带有量纲的数值后才通过运算和显示。由于设计中参数值与A/D转换结果成线性关系,标度变换时采用线性变换公式Y=(Ymax-Ymin)(X-Nmin)/(Nmax-Nmin)+Ymin,Y为测量值、Ymax和Ymin为测量值的最大最小值、X为Y经过A/D后的值、Nmax和Nmin分别为Ymax和Ymin经过A/D后的值。在编写程序时Ymax、Ymin、Nmax、Nmin都是已知的。数字滤波及标度变换程序流程图如图3.3所示。

图3.3 数字滤波及标度变换程序流程图

24

3.4 显示程序设计

LCD1602的控制指令 1、基本操作

⑴状态与读操作——输入:RS=0(低电平)、R/W=1(高电平)、E=1,输出:D0~D7的状态字。

⑵数据读操作——输入:RS=1、R/W=1、E=1,输出:D0~D7的数据。 ⑶指令写入操作——输入:RS=0、R/W=0、E=1,无输出。 ⑷数据写入操作——输入:RS=1、R/W=0、E=1,无输出。 2、LCD1602的控制指令

LCD1602内部控制器的控制指令共有11条。其指令集如表3.1所示。

表3.1 LCD1602指令集

序号 1 2 3 4 5 6 7 8 9

指令 清屏显示 光标返回 设置输入模式 显示开/关控制 光标或字符移位

设置功能

设置字符发生存贮器地址 设置数据存贮器地址 忙标志位和数据指针

RS R/W D7 D6 D5 D4 D3 D2 D1 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 1 0 1

0 0 0 0 0 0 0 1 BF

0 0 0 0 0 0 1

0 0 0 0 0 1

0 0 0 0 1 DL

0 0 0 1

0 0 1 D

0 1 I/D C * *

D0 1 * S B * *

S/C R/L N

F

字符发生存贮器地址 显示数据存贮器地址

计数器地址 要写的数据内容 读出的数据内容

10 数到CGRAM或DDRAM) 1 11 CGRAM(DDRAM)读数 1

指令1:清屏显示,指令代码0X01,使所有指针和所有的显示清零,使其光标复位。 指令2:光标返回,指令代码0X20。显示回车,即数据指针清零,使光标返回到0X00。

指令3:设定输入模式。I/D(光标和显示设置)。I/D=1,光标右移(光标加1);I/D=0,光标左移。当S=1,在写一个字符时,整屏显示左移(I/D=1)或右移(I/D=0);当S=0,当写一个字符时,整屏的显示都不移动。

25

指令4:开关控制的显示方式。D是控制整体显示的开与关,D=1时表示显示开;D=0时表示关显示。C是控制光标的开与关,C=1时表示有光标;C=0时表示无光标。B是控制光标是否闪烁,B=1时表示光标为闪烁状态;B=0时表示光标不闪烁。

指令5:光标或画面滚动。S/C(滚动对象选择),S/C=1时表示画面滚动;S/C=0时表示光标滚动。R/L(滚动方向选择),R/L=1时表示向右滚动;R/L=0时表示向左滚动。

指令6:数据和字符的工作模式。DL=1时表示数据总线宽度为8位,即D7~D0有效;DL=0时表示数据总线宽度为4位,即D7~D4有效。N(设置显示字符的行数),N=0时表示为一行字符;N=1时表示为两行字符。F(设置字符体的点阵数),F=0时表示为5*7的字符点阵;F=1时表示为5*11的字符点数。一般设置为F=0.

指令7、8:设置字符发生器CGRAM及数据存储器DDRAM的地址。

指令9:忙标志位和数据指针。BF(忙标志位),BF=1时表示忙,此时LCD模块不能接收命令或数据;BF=0时表示不忙。所以在MCU对LCD进行读写操作前,必须先确认不忙。

指令10、11:写数据、读数据。LCD显示程序流程图如图3.4所示。

图3.4 Lcd显示程序流程图

26

3.5 按键处理程序设计

按键扫描程序为独立按键的扫描程序,主要完成按键的判断,延时去抖动,判断是否有按键按下,然后对对应的按键的功能做详细的介绍,独立式按键扫描程序的流程图如图3.5所示。

图3.5 按键程序流程图

首先使用if语句判断是否按键按下,如果按下则为低电平,然后进入延时函数,

27

防止抖动,然后再次判断该按键是否按下,如果确实按下则进入对应的按键的功能。按键处理部分用到三个按键,一个(key1)用来控制四个参数的单独显示和循环显示,另两个(key2、key3)用来控制报警上下限值的加1。

3.6 报警程序设计

报警部分的软件设计思路为当测量值超过报警上限或低于报警下限时产生报警,某个参数报警则在LCD的报警界面中该参数后则显示E(error),如为上限报警则P3.0引脚所接LED亮及蜂鸣器响应,如为下限报警则P3.1引脚所接LED亮及蜂鸣器响应。报警程序流程图如图3.6所示。

图3.6 报警程序流程图

28

结 论

本课题设计的是基于单片机的多功能参数检测系统。根据预期设计目的与要求,实现了对温度、压力、流量、液位的采集、显示,并能进行手动设置和报警提示,完成了数据采集系统等硬件控制电路和软件的设计等工作,最终达到预期的效果。

通过此项设计的分析可得到如下结论:

⑴本系统采用体积小、功耗低、功能强的STC89C52单片机,设计一个多功能参数检测系统,最终实现对温度、压力、流量和液位四个参数的实时显示与控制;

⑵利用数字滤波程序可使检测到的数据的精度提高; ⑶利用去抖程序可使按键程序执行的更加准确;

⑷对于线性标度变换,采用标度变换公式时应该灵活使用,不应死套公式; ⑸电压信号在经过LCM324后会有损耗,当5V电压通过LCM324时它的输出电压最高能达到4.5V,所以最终的测量结果会出现偏差。

29

致 谢

在论文的写作过程中遇到了很多的困难和障碍,都在同学和老师的帮助下度过了。尤其要感谢我的论文指导老师—刘寅生老师。他为人随和热情,治学严谨细心。刘老师从选题、定题到硬件设计以及最后论文的反复修改,刘老师始终认真负责地给与我深刻而细致的指导。

感谢这篇论文所涉及到的各位学者。本文引用了多位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。

“不积跬步无以至千里”,这次毕业论文能够最终顺利完成,归功于老师们四年间的认真负责,使得我能很好的掌握专业知识。也正是老师们的支持和帮助才使得我的毕业论文最终顺利完成,谢谢你们!

30

参考文献

[1] 马家辰,张颖.MCS-51单片机原理及接口技术[M].哈尔滨:哈工大出版社,1998:25-45

[2] 赵新民,王祁.智能仪器设计基础[M].哈尔滨:哈尔滨工业大学出版社,1999:37-48 [3] 张凡,戴胜华.微机原理与接口技术[M].北京:清华大学出版社,2003:2-15 [4] 葛顺明.基于标签变换的无线网络关键技术的研究[D].北京:北京邮电大学,2007 [5] 高继传.PC机无线互联系统的设计[D].南京:东南大学,2002

[6] 沈合利.机场跑道摩擦系数车标定方法的研究[D].天津:河北工业大学,2009 [7] 张荣.智能电液执行机构控制系统的研究[D].兰州:兰州理工大学,2011 [8] 张士福.半导体设备数据控制系统的设计及实现[D].西安:西安电子科技大学,2009 [9] 任亚军.基于USB的气体传感器检测装置的研究[D].西安:西安科技大学,2010 [10] 胡斌.基于HT50C-T钻机的钻进参数检测系统的研究[D].北京:中国地质大学,2007

31

附录A 硬件原理图

图A1 多功能参数检测系统电路原理图

32

附录B 程序代码

主程序

#include #include

char Temp_Buffer[2][16]; //---显示屏使用数据缓存 uchar Dis_Pot = 0; uchar T0_Com = 0;

uint Compear_Data[12] = { 50,0, 10,0, 4,0, 900,0, /*最大值为*/100,14,6,1000}; uint Measure_Data[4];

//Measure_Data Compear_Data bit TIME_FLAGE = 0;

bit AUTO_FLAGE = 1; //--默认自动模式 uchar Error_Check=0;

char code Fsmc_DisPlay_Data[10][16] = { {\ \ Down:20 \ {\ {\ \ {\ {\ \ }; void Refresh_DisPlay( uchar Dis_n ); void anjian( void ); void Adc_Conversion( uchar Adc_n ); void Check_Error_Arlm( uchar Error_Changle ); /******************************************** **函数名称:void Init_Timer( void ) **函数功能:定时器处理 **入口参数: **出口参数:

********************************************/ void Init_Timer( void ) { TMOD = 0X01;ET0 = 1; TH0 = 0X3C;TL0 = 0XB0; EA = 1;TR0 = 1; }

/******************************************** **函数名称:void main( void ) **函数功能:主函数处理

33

**入口参数: **出口参数:

********************************************/ void main( void ) { uchar Main_n = 0; LCD_init( ); Lcd_Clear( );Init_Timer( );Refresh_DisPlay(0);beep(100); while(1) { Adc_Conversion( Dis_Pot ); Check_Error_Arlm( Dis_Pot ); if( Error_Check == 0 ) { if( AUTO_FLAGE == 1 ) { if( TIME_FLAGE == 1 ) {Refresh_DisPlay( Dis_Pot++ ); if( Dis_Pot > 3 ) { Dis_Pot = 0; } TIME_FLAGE = 0; } } else {Refresh_DisPlay( Dis_Pot );} } else { for( Main_n=0; Main_n<16; Main_n++ ) {Temp_Buffer[0][Main_n] = Fsmc_DisPlay_Data[8][Main_n]; Temp_Buffer[1][Main_n] = Fsmc_DisPlay_Data[9][Main_n];} for( Main_n=0; Main_n<4; Main_n++ ) { if( (Error_Check&(1<

34

} }

/********************************************************** **函数名称:void Check_Error_Arlm( uchar Error_Changle ) **函数功能:检查错误 **入口参数:无 **出口参数:无

**********************************************************/ void Check_Error_Arlm( uchar Error_Changle ) { //Measure_Data Compear_Data LED1 = 1;LED2 = 1; if( Measure_Data[Error_Changle] > Compear_Data[Error_Changle*2] ) { //---上线报警 Error_Check = Error_Check|(1<

/******************************************** **函数名称:void Adc_Conversion( uchar Adc_n ) **函数功能:ADC采集

**入口参数:Adc_n 采集通道 **出口参数:

********************************************/ void Adc_Conversion( uchar Adc_n ) { uint Adc_Value; uchar Bl_Value; Adc_Value = adc_operation( Adc_n ); if( Adc_Value > 410 ) {Adc_Value -= 410; } else {Adc_Value = 0;}

35

本文来源:https://www.bwwdw.com/article/yaag.html

Top