最新毕业设计水位检测仪设计.docx
《最新毕业设计水位检测仪设计.docx》由会员分享,可在线阅读,更多相关《最新毕业设计水位检测仪设计.docx(33页珍藏版)》请在冰豆网上搜索。
![最新毕业设计水位检测仪设计.docx](https://file1.bdocx.com/fileroot1/2023-1/12/e6196664-1fe3-49a8-9147-26ca8d5ad8c4/e6196664-1fe3-49a8-9147-26ca8d5ad8c41.gif)
最新毕业设计水位检测仪设计
摘要1
1引言2
1.1水位检测仪器的现状和发展前景2
1.2本文的结构安排2
2水位监测仪的基本原理3
2.1功能说明3
2.2整体架构3
3硬件设计5
3.1水位检测与数据采集5
3.2数码管与LED显示7
3.2.1相关芯片简介7
3.2.2显示部分工作原理9
4系统软件设计12
4.1初始化程序12
4.1.1I/O端口方向控制寄存器12
4.1.2TMR1初始化12
4.1.3TMR0初始化13
4.2定时/计数器13
4.2.1TMR1中断服务程序14
4.2.2TMR0中断服务程序15
4.3数据转换子程序17
结束语19
致谢20
参考文献21
附录22
附录程序清单及注释22
水位检测仪设计
摘要:
水位检测和显示仪表装置在工业上有着广泛的应用,本文设计了一种能实时检测并显示水位的仪器----水位检测仪。
设计主要论述对水位数据采集系统的设计与实现,其主要功能是完成数据采集、处理、显示、数据存储等。
根据对数据采集系统体系结构及功能要求的分析,以PIC16F877单片机为核心设计并实现的采集系统,结合CD4051实现对水位的检测,结构简单,实现可靠。
在PIC单片机中实现了数据存储和处理,获取了当前的水位,并设计实现了数码管的驱动显示电路。
该设计是基于单片机技术设计实现的低功耗水位数据采集装置,是一个具有一定实用性的实时数据采集系统。
最后的实验结果验证了水位监测仪的总体设计思路及硬件、软件设计方案正确,能够准确地实现了水位的自动检测。
关键词:
PIC单片机;水位检测;LED显示
DesignofWater-levelDetectingMeter
Abstract:
Waterleveldetectionanddisplaydeviceshasawiderangeofapplicationsinindustry,thisarticledesignareal-timedetectionanddisplayequipment----waterleveldetector.Thisdesignfocusesonthedesignandimplementationofdataacquisitionsystemforthewaterlevel,anditsmainfunctionistocompletethedatacollection,processing,display,datastorageandsoon.Accordingtothedataacquisitionsystemarchitectureandfunctionalrequirementsanalysis,thearticledesignandaccomplishtheacquisitionsystemwithsimplestructureusingPIC16F877single-chipasthecore,itcandetectthewaterlevelwithCD4051reliably.ItimplementsthedatastorageandprocessinginthePICMCU,accesstothecurrentwaterlevel,anddesigndigitaldisplaydrivecontrolcircuit.Thedesignisalow-powerwater-leveldataacquisitiondevicebasedonsingle-chiptechnology,it'sapracticalreal-timedataacquisitionsystem.Finally,theexperimentalresultsverifythewaterlevelmonitortheoveralldesignideasandhardware,softwaredesigniscorrect,canbeachievedaccuratelythewaterlevelauto-detection.
Keywords:
PICSingle-chipComputer;Waterleveldetection;LEDdisplay
第1章引言
1.1水位检测仪器的现状和发展前景
随着科学技术的不断发展,我国的监测仪器已具有一定研究、开发和生产能力,特别是各种仪器的数据处理系统及自动控制系统的最新研究成果,使我国仪器研制和在用仪器改造的升级,迈上了一个新的台阶。
目前国产仪器在功能齐全、性能稳定等方面,与国际上较为先进的同类产品不相上下,完全能够满足水位检测的需要,且价格比国外进口仪器便宜得多。
虽然我国的地下水环境监测仪器,从工艺力量和工艺装备,从行业生产水平和专业化水平等方面来看,与发达国家相比有较大差距,但在某些方面,已具有一定的优势,特别是各种仪器数据处理系统及自动控制系统的最新研究成果,使我国仪器研制和在用仪器改造的升级,迈上了一个新的台阶,而就功能设置与软件编辑来说,更适合我国的国情。
在水位检测仪器方面,国外具有较为先进产品,但不适合我国国情,突出表现在:
仪器设备昂贵,操作步骤复杂,质控程序繁琐。
我们应采取有效措施,扬长避短,将国外的先进技术引入国内消化吸收,建立既适合我国国情又尽可能与国际接轨的监测方法。
在地下水监测仪器的研制中,要在多品种和提高技术水平上下功夫,真正做到能准确、及时、真实的数据反映地下水状况和变化规律[1]。
水位检测和显示仪表装置在工业上有着广泛的应用[2-9]。
为了适应我国自动检测的发展现状,本文设计了一种能实时检测并显示水位的仪器----水位监测仪
1.2本文的结构安排
本文主要分三个章节介绍水位监测仪的开发流程:
第二章介绍水位监测仪的基本原理,简单介绍水位监测仪的功能以及整体架构
第三章介绍硬件设计,从数据采集和显示两个方面分别介绍
第四章介绍软件设计,从TMR1中断服务程序、子程序转换程序、TMR0中断服务程序三部分进行系统分析。
第2章水位监测仪的基本原理
2.1功能说明
对偏离零点的水位进行检测,然后将带符号的水位置(低于或高于零点)用数码管显示出来,并通过双色发光二极管LED阵列对水位高度进行模拟显示。
(1)水位检测:
在0mm、±10mm,±25mm、±50mm、±80mm、±120mm、±160mm、±240mm共15点的基础上,检测水位偏离零点的大小。
(2)水位显示:
将上一步检测结果用数码管显示出来,显示值以比实际水位小的最近点为准,同时用15个竖直排列的双色LED阵列直观地模拟当前水位高度,当水位没有达到某点时相应的LED显示红色、达到或超过则显示绿色。
当水位低于-240mm时报警灯显示绿色,高于240mm是报警灯显示红色,当水位恢复正常时报警灯熄灭。
2.2整体架构
水位监测仪主要由三部分组成:
水位检测与数据采集电路、PIC16F877单片机以及数码管与LED显示电路。
整体框图如图2.1所示。
图2.1水位监测仪整体构架框图
水位数据采集电路将采集到的数据通过采样通道输入口传输给PIC16F877单片机,PIC单片机对数据进行处理后信号输出给显示电路,数码管及LED显示电路将水位显示出来。
本设计引入一种独特的扫描思想----循环扫描,由于水位检测的数据采集及显示的实时性要求不是很高,而单片机的的运行速度相对很快,如果分时选通各个采样及显示通道,整体开来近似为同时进行的,只要不断的重复这一扫描过程,就可以完成无间隔数据采集和无闪烁显示。
水位检测与数据采集电路部分采用电接点水位检测方法,在每一个预定水位检测点处,将两个电极安装在容器壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连接,两个电极等高度并间隔一定距离。
当水位没有达到该检定点是,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没入水中,由于水的导电性,两个电极导通。
通过检测两个电极是否导通就可以检测水位的高度了。
数码管与LED显示电路部分主要由15个双色发光二极管和4个数码管组成。
模拟水位高度由15个双色发光二极管(LED)来完成,共分4组。
数字水位高度显示由四个数码管来完成,分别表示正负、百位、十位和各位。
在某一特定时刻,每组LED与一个数码管一起被选通(4组LED对应4个数码管),两个8位的移位寄存器74LS164级联,将单片机送出的2个字节串行数据转化为16位并行数据,分别送选通的LED和数码管。
在不同时刻,系统对4组LED和数码管快速的循环扫描,就完成了面板显示的功能。
第3章硬件设计
本部分介绍多通道水位循环检测的硬件设计、利用串行芯片扩展I/O端口的方法以及循环扫描方式实现面板显示的硬件结构。
水位检测仪的电路原理图如图3.1所示。
图3.1水位监测仪电路原理图
3.1水位检测与数据采集
本设计采用电接点水位检测方法,通过检测两个电极是否导通就可以检测水位的高度了。
对15个检测点相应有15个检测通道,本设计运用两片8通道的多路选择开关CD4051,对各个通道循环检测来实现数据采集。
CD4051是一种双向8通道的多路开关,可以8路选通输入,1路输出;也可以1路输入,8路选通输出。
通过3为数据位A,B,C进行通道选择。
禁止输入输出端INH可以禁止和允许工作。
其引脚定义如图3.2所示,真值表如表1所示。
IN/OUT
VDD103ABC
161514131211109
0
12345678
46OUT/IN75INHVEEVSS
IN/OUTIN/OUT
图3.2CD4051引脚图
表1CD4051真值表
选通通道
输入状态
INHIBIT
C
B
A
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
NONE
1
*
*
*
尽管水位检测原理简单,但应用时却不能仅仅用每路的通断来判断水位时否没过该路的点击。
实际上水的电阻因水的所含成分不同有很大的差异,例如蒸馏水就不到点,就不能用这种方法来检测。
另一方面,空气电阻也不是无穷大的,也跟其成分有关,例如饱和蒸汽的组织大概有1M欧左右。
所以,不能通过判断单片机的数据采集引脚输入电平高低来判断水位是否到达某点,否则介于高低电平之间的电平状态就无法做出判断,而这种情况可能存在。
一个可靠的方法就是对输入引脚的数据进行采样,然后将结果与一个阀值电压进行比较,从而得出结论。
根据这个原理设计的水位检测仪数据采集部分的电路如图3.3所示。
从图中可以看出,RD3口是地址扩展口,其与一个非门连接,结合INH引脚,将2个8路选通开关扩展为一个16路选通开关。
通过RD0~3口进行采样通道地址译码,在不同时刻选通15个通道中的1个,循环扫描15个通道。
当水位上升到某一对电极高度时,相应通道的采样电压将会较低;若没有上升到电极高度,那么上拉电阻将会把采样值箝位到+5V。
通过判断采样电压的高低,就可以判断选通的通道是否没于水中,进而判断水位高度,RA0口作为A/D采样的通道输入口。
POLE0~14为15对模拟水位高度的电极。
图3.3数据采集原理图
3.2数码管与LED显示
键盘和显示器是单片机系统中人机对话不可缺少的一部分。
在许多智能仪表的设计中,多用LED数码管来显示。
这是因为LED数码管驱动简单,成本较低并且能适应恶劣的环境。
用于数码管显示驱动的芯片有很多种,常见的有MAX7219、MAX7221、ZLG7290、ICM7218B以及8279等。
这些专用芯片使用方便,功能较强,但价格偏高。
本设计中采用循环扫描的方式,充分利用单片机快速的处理能力对各显示单元分时选通,只需普通的串行移位芯片,就可以达到显示驱动的目的。
3.2.1相关芯片的介绍
显示部分用到的芯片包括移位寄存器74LS164、数据缓冲器74LS244以及多路开关CD4051。
下面就74LS164和74LS244作简单介绍。
(1)移位寄存器74LS164。
74LS164引脚定义如图3.4所示,起真值表如表2所示,其功能是将外部输入的串行数据转化为8位的并行数据输出,+5V供电,串行传输的频率由外部时钟控制,其数据输出具有锁存功能。
A,B端为穿行数据输入端,QA~QH为并行数据输出端,CLK为外部时钟输入端,CLR为清零端。
当清除端CLEAR为低电平时,输出端(QA~QH)均为低电平。
串行数据输入端(A、B)可控制数据,当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下QA为低电平。
当A、B有一个为高电平则另一个就允许数据输入,并在CLOCK上升沿作用下决定QA的状态。
图3.474LS164引脚图[10]
表274LS164的真值表
输入
输出
CLEAR
CLOCK
AB
QAQBQH
L
X
XX
LLL
H
L
XX
QA0QB0QH0
H
↑
HH
HQAnQGn
H
↑
LX
LQAnQGn
H
↑
XL
LQAnQGn
注:
QA0、QB0、QH0为在稳态输入条件建立之前QA、QB和QH相应的电平;QAn、QGn为在最近的时钟↑转换前QA或QG的电平,表示移1位。
(2)数据缓冲器74LS244。
由于74LS164在高电平输出时,其输出最大电流为0.4mA;低电平输出时,起输出最大电流为8mA,不足以驱动数码管或发光二极管正常工作,所以在本设计中外加数据缓冲器以增大驱动能力,使数码管和二极管可以正常工作。
74LS244缓冲器常用作三态缓冲或总线驱动,+5V供电,其高电平时输出最大电流可达15mA,低电平输出时最大电流可达24mA,足以驱动数码管和LED工作。
74LS244共8个输入输出通道,通过门控端1G和2G来选择其通断,其引脚图如图3.5所示。
图3.574LS244内部结构及引脚图
从图中可以看出,当引脚1G为低电平时,输入通道1A1~1A4与输出通道1Y1~1Y4连通;当引脚1G为高电平时则截止。
当引脚2G为低电平时,输入通道2A1~2A4与输出通道2Y1~2Y4连通;当引脚2G为高电平时,输入通道2A1~2A4与输出通道2Y1~2Y4截止。
3.2.2显示部分工作原理
首先介绍一下双色二极管的功能和用法。
如图3.6所示,1个双色二极管有3个引脚,引脚1,2均为信号“+”端,引脚3为GND端(信号“-”端)。
引脚电平(TTL电平)与LED显示颜色如表3所示。
图3.6双色二极管外观图
表3双色二极管的功能表
引脚1
引脚2
二极管状态
0
0
熄灭
0
1
绿色
1
0
红色
1
1
混合颜色
数码管及LED显示电路如图3.7所示,其主要功能流程是:
将单片机输出的串行数据通过74LS164移位寄存器转化并行数据,经74LS244数据缓冲器驱动数码管及LED显示。
RC5口作为串行数据输出端,与74LS164的数据输入端相连,当单片机输出的串行数据输入74LS164;RC3口作为串行数据的同步时钟端,与74LS164的时钟同步输入端相连。
两片移位寄存器74LS164的并行数据输出端则分别与两片数据缓冲器74LS244的输入端相连,两片74LS244分别驱动数码管和LED的显示,RD7口作为数据缓冲器74LS244的门控信号输出端,控制74LS244的通断。
图3.7数码管及LED显示电路
每4个双色二极管和1个数码管一组,二极管的8个信号“+”端分别与第一片74LS244的8位数据输出端相连,数码管的8为数据输入端分别与第二片74LS244的8为数据输出端相连,每组二极管和数码管的GND端都与CD4051的1个输入通道相连,CD4051的输出端与系统的“地”相连。
RE0~RE1口作为地址译码输出端口,用于多路开关CD4051的4路通道选择,每一时刻只有一组共4个二极管和一个数码管被选通,其GND端同系统的“地”构成通路,其他的二极管与数码管则不能构成通路。
每向74LS164传送完2个字节共16位数据,通过RD7口使能74LS244,将数据送到二极管和数码管的输入口,然后通过RE0~RE1口打开一条通道,则被选通的数码管和二极管就会按照接收的数据进行相应的显示。
不断的发送新数据并利用CD4051循环的扫描4个通道,则所有的二极管和数码管就会持续的发光显示。
利用人的视觉暂留现象,每个LED或数码管两次被选通的时间间隔不能大于100ms。
另外由一个双色二极管作为报警灯,RD5口与二极管引脚1相连,作为上限报警灯;RD4口与二极管的引脚2相连,作为上限报警灯。
第4章系统软件设计
本设计关键的核心是两个不循环执行的中断程序:
TMR0中断用于驱动数码管和LED显示;TMR1中断用于采集水位值并且将采集结果送缓冲寄存器供显示部分读取,同时对采集结果进行简单的分析,判断其是否超过水位上限和下限,若超过则点亮相应的报警灯。
整个软件大体可以分为初始化程序、TMR0中断服务程序、数据转换子程序、TMR1中断服务程序4个部分,以下分别加以描述。
4.1初始化程序
初始化程序位于主程序开始部分,主要对3部分进行初始化:
I/O端口、TMR1和TMR0。
各部分的初始化步骤如下描述。
4.1.1I/O端口方向控制寄存器
◆RA0端口用于将采集到的数据输入,故将A/D端口RA0设置为输入方式
◆串行数据同步端口RC3,设置为输出方式
◆串行数据输出端口RC5,设置为输入方式
◆采样通道地址译码端口RD0~RD3,设置为输出方式
◆显示部分地址译码端口RE0~RE1,设置为输出方式
◆报警输出端口RD4~RD5,设置为输出
4.1.2TMR1初始化
TMR1初始化步骤如下:
●将第一外设中断标志寄存器PIR1(地址为0CH)中的TRM1溢出中断标志位TMR1IF(Bit0)清零。
●将第一外设中断屏蔽寄存器PIE1(地址为8CH)中的TMR1溢出中断屏蔽位TMR1IE(Bit0)置位。
●通过TMR1中断控制寄存器T1CON(地址为10H)设置时钟及分频比等。
即:
①时钟源选择位TMR1CS(Bit1)清零,选择内部时钟源
②分频比选择位T1CKPS0~T1CKPS1(Bit5~4)置位11,选择分频比1:
8
●给TMR1计数器TMR1H(地址为0FH)、TMR1L(地址为0EH)赋初值
●将中断控制寄存器INTCON(地址为0BH)中的全局中断屏蔽位GIE(Bit7)置位,响应所有外围设备模块产生的中断请求
●将中断控制寄存器INTCON(地址为0BH)中的外设中断屏蔽位PEIE(Bit6)置位,开放第二级别的外围中断
4.1.3TMR0初始化
TMR0初始化步骤如下:
⏹通过选项寄存器OPTION_REG(地址为81H)设置TMR0的分频比及时钟
即:
①时钟选择位T0CS(Bit5)清零,由内部提供的指令周期信号作为时钟源
②分频器分配为PSA(Bit3)清零,分频器分配给TMR0
③分频器分频比选择位PS2~PS0(Bit2~0)置位111,选择分频比1:
128
⏹将INTCON寄存器(地址为0BH)中的TMR0中断标志位T0IF(Bit2)清零并将中断屏蔽位T0IE(Bit5)置位
⏹将中断控制寄存器INTCON(地址为0BH)中的全局中断屏蔽位GIE(Bit7)置位,响应所有外围设备模块产生的中断请求
⏹将中断控制寄存器INTCON(地址为0BH)中的外设中断屏蔽位PEIE(Bit6)置位,开放第二级别的外围中断
⏹给TMR0计数器赋初值
4.2定时/计数器
定时/计数器其功能都是靠寄存器计数值的累积来实现的,PIC单片机采用递增方式,计数值累加到上限后会产生溢出,相应的会在溢出中断标志位上反映出来。
计数值的累加又是靠时钟来触发的,它可以是单片机内部时钟,也可以来自外部。
定时的长短以及数值的上限都是定时/计数器的位宽、分频器的分频值有关。
PIC16F87X系列单片机集成3个定时/计数器模块TMR0、TMR1、TMR2。
在结构和功能上不尽相同,其定时长短,计数上限因此也不一样,应用场合也不同[11]。
TMR0为8位宽,与WDT共用一个可选的预分频器,用于一般的通用目的。
TMR1为16位宽,附带一个可编程的预分频器以及一个可选的低频时基振荡器,不仅可以用来计数,还可与CCP模块一起实现输入捕捉与输出比较功能。
TMR2也是一个8位宽的定时/计数器,附带一个可编程的预分频器,一个可编程的后分频器,一个周期寄存器和比较器,只能用于定时,不能用于计时,可与CCP模块一起实现PWM功能(即产生脉宽调制信号)。
TMR0的特点:
◆8位宽定时/计数器
◆计数器TMR0内容可读可写
◆8位软件可编程预分频器
◆内部/外部时钟可选,外部时钟触发边沿可选
◆溢出中断功能
TMR1的特点:
◆16位宽定时/计数器
◆计数器TMR1内容可读可写
◆3位软件可编程预分频器
◆累加计数信号源可选内部时钟、外部触发信号或自带时基振荡器信号
◆溢出中断功能
TMR2的的特点:
◆8位宽的定时器
◆计数器TMR2内容可读可写
◆2位软件可编程与预分频器,4位软件可编程后分频器
◆累加计数信号源可选内部时钟信号,因此只能工作在定时器模式
◆8位周期寄存器
◆溢出次数经过分频后溢出中断
◆可以由用户软件关闭退出定时
本设计应用到了TRM0和TMR1
4.2.1TMR1中断服务程序
设定系统的水位刷新时间为1S,即单片机每秒钟对采样通道进行一遍A/D转换、软件上则设定TMR1定时器每秒产生一次中断,执行数据采样程序,从最高水位采样通道向下执行,并不断将每次采样结果与系统设定的门限值比较(采样结果如果小于门限值,说明电平低,即电容两极同时没于水中,水位已经超过该电极)当检测到水位超过某一对电极时,则退出采样程序。
接下来判断水位是否越限,若是则点亮相应的报警灯,否则使报警灯熄灭。
然后调用数据转换子程序,将水位采样结果转化为相应数码管和LED显示段码值存入显示数据缓冲寄存器。
由于PIC单片机的中断矢量只有一个,而本设计中用到两个中断(TMR1和TMR0),故而在中断服务程序入口处,需要对中断源进行判断,这是通过判断相应的中断标志寄存器来实现的。
TMR1中断服务程序流程图如图4.1所示。
设置TMR1定时器分频比为1:
8,采用内部时钟源,系统采用2M晶振。
那么TMR1的时钟脉冲周期为2μs,由于分频比为1:
8,则每16μs计数一次,1s需要计数62500次,即从计时开始到62500个计数周期后,TMR1寄存器达到上限65536并溢出,所以TMR1寄存器初始值65536-62500=3036,即0BDCH。
下面对流程图中的关键部分进行简单说明:
(1)关于ADC控制寄存器ADCON0的设置:
AD转