毕业设计160水位检测仪系统.docx
《毕业设计160水位检测仪系统.docx》由会员分享,可在线阅读,更多相关《毕业设计160水位检测仪系统.docx(27页珍藏版)》请在冰豆网上搜索。
![毕业设计160水位检测仪系统.docx](https://file1.bdocx.com/fileroot1/2022-10/28/1ca3ef24-7d6e-4875-86da-9d1c99491b2a/1ca3ef24-7d6e-4875-86da-9d1c99491b2a1.gif)
毕业设计160水位检测仪系统
课程设计
题目:
水位检测仪系统
专业:
计算机科学与技术
班级:
姓名:
学号:
实验地点:
电子系统设计室
成绩:
(2006.6)
目录
第1节引言………………………………………………………………………1
1.1设计背景……………………………………………………………………1
1.2系统功能说明………………………………………………………………1
第2节硬件设计基本原理与实现方法……………………………………………2
2.1水位检测与数据采集……………………………………………………2
2.2数码管LED显示…………………………………………………………4
2.2.1相关芯片简介………………………………………………………4
2.2.2显示部分工作原理…………………………………………………5
第3节系统软件设计……………………………………………………………8
3.1初始化程序………………………………………………………………8
3.2TMR1中断服务程序……………………………………………………9
3.3数据转换子程序…………………………………………………………10
3.4TMR0中断服务程序……………………………………………………11
3.5程序清单…………………………………………………………………13
第4节结束语……………………………………………………………………22
参考文献……………………………………………………………………………22
水位检测仪系统
第1节引言
水位检测和显示仪表装置在工业上有着广泛的应用。
本设计采用的是一种低成本的数码管显示驱动方案。
在对成本较敏感的小型系统中,该方案有着一定的参考价值。
1.1设计背景
键盘和显示器是单片机系统中人机对话不可缺少的一部分。
在许多智能仪表的设计中,多用LED数码管来显示。
这是因为LED数码管驱动简单,成本较低并且能适应恶劣的环境。
用于数码管显示驱动的芯片有很多种,常见的有MAX7219、MAX7221、ZLG7290、IMC7218B以及8279等。
这些专用芯片使用方便、功能教强,但价格偏高。
本设计中采用的循环扫描的方式,充分利用单片机快速的处理能力对各显示单元分时选通,只需普通的串行移位芯片,就可以达到显示驱动的目的。
这种方法对单片机的CPU占用率相对较高,不适宜于CPU任务繁忙的场合,但是对那些功能相对简单,CPU相对空闲的中小型系统非常实用,能够大大降低系统成本。
1.2系统主要功能
该装置对偏离零点的水位进行检测,然后将带符号的水位值(低于或高于零点)用数码管显示出来,并通过双色发光二极管LED阵列对水位高度进行模拟显示。
整个装置主要包含水位检测和显示两个部分,现将每部分功能说明如下:
(1)水位检测:
在0mm、±10mm、±25mm、±50mm、±80mm、±120mm、±160mm、±240mm共15点基础上,检测水位偏离零点的大小。
(2)水位显示:
将上一步检测结果用数码显示出来,显示值以比实际水位小的最近点为准,例如:
水位实际高度为35mm,则数码管显示25mm。
同时,用15个竖直排列的双色LED阵列直观的模拟当前水位高度,当水位没有达到某点相应的LED显示红色,达到或超过则显示绿色。
当水位低于-240mm时报警灯显示绿色,高于+240mm时报警灯显示红色,当水位恢复正常值时报警灯熄灭。
第2节硬件设计基本原理与实现方法
2.1水位检测与数据采集
本设计采用电接点水位检测方法,在每一个预定水位检测点处,将两个电极安装在容器壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连,两个电极等高度并间隔一定距离。
当水位没有达到该检定点时,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没于水中,由于水的导电性,两个电极导通。
通过检测两个电极是否导通就可以检测水位的高度了。
对15个检测点相应有15个检测通道,本设计运用了两片8通道的多路开关CD4051,对各通道循环检测来实现数据采集。
CD4051是一种双向8通道的多路开关,可以8路选通输入,1路输出;也可1路输入,8路选通输出。
通过3为数据位A、B、C进行通道选择。
禁止输入输出端INH可以禁止和允许工作。
CD4051具有低接通电阻和低关断电流的特点,其引脚定义如图2.1所示,真值表如表2.1所示。
IN/OUT
VDD103ABC
161514131211109
0
12345678
46OUT/IN75INHVEEVSS
IN/OUTIN/OUT
图2.1CD4051引脚图
表2.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
*
*
*
尽管水位检测原理简单,但应用时却不能仅仅用每路的通断来判断水位是否没过该路的电极。
实际上,水的电阻因水中所含成分不同有很大的差异,例如蒸馏水就不导电,就不能用这种方法来检测,而本设计所应用的场合经试验测得水阻在几K到几十K不等;另一方面,空气电阻也不是无穷大,也跟其成分有关,例如饱和蒸汽的阻值就大概在1M欧左右。
所以,不能通过判断单片机的数据采集引脚输入电平高低来判断水位是否到达某点,否则,对介于高、低电平之间的电平状态就无法做出判断,而这种情况是可能存在的。
一个可靠的方法是对输入引脚的数据进行采样,然后将采样结果与一个阈值进行比较,从而得出正确的结论。
根据这个原理设计的水位检测电路如图2.2所示。
从图中可以看出,通过RD0~RD3口进行采样通道地址译码,在不同时刻选通16个通道中的1个。
当水位上升到某一对电极高度时,相应通道的采样电压将会较低;若水位没有上升到电极高度,那么上拉电阻将会把采样值钳位到+5V。
RA0口作为A/D采样通道输入口。
图2.2水位检测电路原理图
2.2数码管与LED显示
模拟水位高度由15个双色发光二极管(LED)来完成,共分为4组。
在某一特定时刻,每组LED与一个数码管一起被选通(4组LED对应4个数码管),两个8位的移位寄存器741S164级联,将单片机送出的2个字节串行数据转化为16位并行数据,分别送选通的LED和数码管。
在不同时刻,系统对4组LED和数码管快速地循环扫描,就完成了面板显示的功能。
2.2.1相关芯片简介
显示部分用到的芯片包括移位寄存器74LS164、数据缓冲器74LS244以及多路开关CD4051。
下面就74LS164和74LS244作简单介绍。
(1)移位寄存器74LS164。
74LS164引脚定义如图2.3所示,起真值表如表2.2所示,其功能是将外部输入的串行数据转化为8位的并行数据输出具有锁寸功能。
A、B端为串行数据输入端,QA~QH,CLK为外部时钟输入端,CLR为清零端。
74LS164在高电平输出时,为并行数据输出端其输出最大电流为0.4mA;低电平输出时,其输出最大电流为8mA,不足以驱动数码管或发光二极管正常工作,所以在本设计中外加数据缓冲器以增大驱动能力。
图2.374LS164引脚图
表2.274LS164真值表
输入
输出
CLEAR
CLOCK
AB
QAQB……QH
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。
74LS244缓冲器常用作三态缓冲或总线驱动,+5V供点,其高电平时输出最大电流可达15mA,低电平输出时最大电流可达24mA,足以驱动数码管和LED工作。
74LS244共8个输入输出通道,通过门控端G1和G2来选择其通断,其功能原理及引脚如图2.4所示。
图2.474LS244内部结构及引脚图
从图中可以看出,当引脚1G为低电平时,输入通道1A~1A4与输出通道1Y1~1Y4连通;当引脚1G为高电平时则截止。
同理引脚2G控制着输入通道2A1~2A4与输出通道2Y1~2Y4的通断。
2.2.2显示部分工作原理
首先介绍一下双色二极管的功能和用法。
如图1.5所示,1个双色二极管有3个引脚,引脚1、2均为信号“+”端,引脚3为GND端(信号“—”端)。
引脚电平(TTL电平)与LED显示颜色如表1.6所示。
表1.5双色二极管功能表
引脚1
引脚2
二极管状态
0
0
熄灭
0
1
绿色
1
0
红色
1
1
混合色
图1.5双色二极管外观图
数码管及LED显示电路如图1.6所示,RC5口作为串行数据的同步时钟端,与74LS164的数据输入端相连;RC3口作为串行数据的同步时钟端,与74LS164的同步时钟输出端均与SPI方式时端口一样;实际应用中,若不用SPI方式,而用第5章中提到的模拟数据串行口时,可以用任何普通I/O端口代替)。
两片移位寄存器74LS164的并行数据输出端则分别与两片数据缓冲器74LS244的输入端相连,RD7口作为数据缓冲器74LS244的门控信号输出端,控制74LS244的通断。
图1.6数码管和LED显示电路
每4个双色二极管和1个数码管一组,二极管的8个信号“+”端分别与第一片74LS244的8位数据输出端相连,数码管的8位数据输入端分别与第二片74LS244的8位数据输入端相连,每组二极管和数码管的GND端都与CD4051的1个输入通道相连,CD4051的输出端与系统的“地”相连。
RE0~RE1口作为地址译码输出端口,用于多路开关CD4051的4路通道选择,每一时刻只有一组共4个二极管和1个数码管被选通,其GND端同系统的“地”构成通路,其他的二极管与数码管则不能构成通路。
每向74LS164传送完两个字节共16位数据,通过RD7口使能74LS244,将数据送到二极管和数码管的输入口,然后通过RE0~RE1口打开一条通道,则被选通的数码管和二极管就会按照接收的数据进行相应的显示。
不断地发送新数据并利用CD4051循环的扫描4个通道,则所有的二极管和数码管就会持续的发光显示。
另外由一个双色二极管作为报警灯,RD5口与二极管的引脚1相连,RD4口与二极管的引脚2相连。
第3节系统的软件设计
本系统的软件的核心是两个不断循环执行的中断程序:
TMR0中断用于驱动数码管和LED显示:
TMR1中断用于采集水位值并且将采集结果送缓冲寄存器供显示部分读取,同时对采集结果进行简单的分析,判断其是否超过水位上限或下限,若超过则点亮相应的报警灯。
整个软件部分大体可分为初始化程序、TMR1中断服务程序、数据转化子程序、TIMR0中断服务程序4个部分,以下分别加以描述。
3.1初始化程序
初始化程序位于主程序开始部分,主要对3个部分进行初始化:
I/0端口、TMR1和TMR0各部分初始化步骤如下描述,不再给出流程图。
1.I/O端口方向控制寄存器
A/