基于51单片机水位检测系统设计与制作_第1页
基于51单片机水位检测系统设计与制作_第2页
基于51单片机水位检测系统设计与制作_第3页
基于51单片机水位检测系统设计与制作_第4页
基于51单片机水位检测系统设计与制作_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1产品功能分析...........................................................................................................1

2设计方案遴选...........................................................................................................1

2.1单片机的选择...............................................................................................1

2.2压力传感器的选择.......................................................................................2

2.3系统框图设计...............................................................................................2

3产品硬件设计...........................................................................................................3

3.1STC89C52RC单片机核心电路设计..............................................................3

3.2压力传感器设计...........................................................................................3

3.3LCD1602液晶显示模块电路........................................................................3

4产品软件设计...........................................................................................................4

4.1主程序流程图...............................................................................................4

4.2APP程序设计................................................................................................5

4.3产品程序清单...............................................................................................6

5产品调试及使用说明...............................................................................................6

5.1产品调试.......................................................................................................6

5.2产品使用说明...............................................................................................6

6产品设计技术标准...................................................................................................7

参考资料.......................................................................................................................7

附录1元器件清单..............................................................................................8

附录2电路原理图..............................................................................................9

附录3PCB设计图...............................................................................................9

附录4产品实物图..........................................................................................10

附录5产品装配图............................................................................................10

附录6程序代码................................................................................................11

湖南商务职业技术学院毕业设计

基于51单片机水位检测系统设计与制作

1产品功能分析

液位监控器的应用虽然非常广泛,但是现在工业领域专用性,研究领域高

精度的液位监控器的价格非常贵,对于民用产品来讲成本高,资源浪费。所以

我们的设计应更加注重于对基础基本传感器应用,由最低的成本,获得我们最

大的需求。日常生活中,水位检测可以融入我们的生活给我们带便利。生活中

很常见,没水的时候把水阀打开忘记关掉,等回来的时候已经满屋是水,在农

村生活中自来抽水系统等完全可以用,也不需要太高的精度,为我们的生活带

来一定的便利。

2设计方案遴选

液位监控器的应用虽然非常广泛,但是现在高精度的液位监控器的价格非

常贵,实现民用还有一定的难度。所以我们的设计应更加创新利用更小的成本

设计生产出更好的传感器。

2.1单片机的选择

方案一:采用ARM7作为主控器件,虽然速度很快,资源很多,但价格比较

高,资源浪费,缺乏市场竞争力。

方案二:采用SST89C52作为主控器件,虽然该款单片机较便宜,运行速度

较慢,但是运行速度相对而言足够系统运行并有富余,也可以对单片机操作,

来完成系统的功能设置,且电机的控制可以增加简单的外围电路设计。单片机

就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以

充分发挥其资源、有较为强大的控制功能及可位寻址操作功能。

综上所述,为简化外围电路设计,提高市场竞争力,我们选择方案二。

1

湖南商务职业技术学院毕业设计

2.2压力传感器的选择

方案一:采用桥式压力传感器

桥式压力传感器是通过应变片的应力变形,当有应力变形时,传感器会

输出电压,随着中立重力的加大输出电压会出现线性变化。由于桥式压力传

感器,应力变形很小,输出的电压变化幅度小、电压值小。且体积小,结构

比较简单,动态效应也好,灵敏度高,能测出十几帕的微压,长期稳定性好,

滞后和蠕变小,频率效应高,便于生产,成本也低。

方案二:采用分立元件搭建一个压力传感模块

采用压敏电阻和外围电路搭建一个压力传感器,通过放大电路对压敏电

阻的电压放大,有普通的AD采集。该方案容易受到外界干扰,有时甚至检

测不到,还要用到AD采样和电压比较器来处理,这样加大了电路设计的难

度。这样的灵敏度不够,误差大,功耗大,增加了开发成本。

比较以上两种方案,方案一占有很大的优势。这样不但能准确完成测

量,而且能避免电路的复杂性,因此拟选择方案一。

2.3系统框图设计

采集

压力传感器ADC0832

水位

STC89c52

单片机

按键

LCD1602显示

根据设计内容要求,经仔细分析计算,充分考虑各种因素,制定整体制作

方案。整体方案以AT89C51为控制核心,对各传感器采集数据进行综合分析,

2

湖南商务职业技术学院毕业设计

作出相应的处理,保证精确稳定、快速的完成设计任务。系统方框图如图所示。

3产品硬件设计

该系统以STC89c52单片机为控制核心设计的水位检测装置,该系统主要有

单片机最小系统、按键模块、1602液晶显示模块、压力传感器模块、电磁继电

器驱动模块和ADC0832组成。STC89c52系列单片机内部自带资源丰富、运算速

度较快,适用于强干扰和要求速度较高的场合。以电磁继电器开环控制和压力

传感器闭环实现对该系统的控制,达到系统的稳定可靠

3.1STC89C52RC单片机核心电路设计

STC89C52RC是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机,

基于Intel标准的8052,指令代码完全兼容传统的8051系列单片机,12时

钟/机器周期和6时钟/机器周期可任意选择。

3.2压力传感器设计

压力传感器是通过膜片两边存在压力差时,膜片产生变形,膜片上各点产

生应力。四个电阻在应力的作用下,阻值产生变化,电桥失去平衡,输出相应

的电压,电压与膜片两边的压力差成正比。所以通过8位AD芯片ADC0832和简

单的外围电路组成的采集模块一起使用,是电路简化,操作方便,易于固定、

控制,称量值精度高。我们选用D3B压力传感器。

3.3LCD1602液晶显示模块电路

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模

块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显

示字符地址,也就是告诉模块在哪里显示字符,下图就是1602的内部显示地

址。

3

湖南商务职业技术学院毕业设计

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128

列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成。显示屏

上64×16个显示单元与显示RAM区的1024字节相对应,每一字节的内容与显示屏

上相应位置的亮暗对应。

例如显示屏第一行的亮暗由RAM区的000H~00FH的16字节的内容决定,当

(000H)=FFH时,屏幕左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH

时,屏幕右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)

=00H…,(00EH)=00H,(00FH)=00H时,在屏幕的顶部显示一条由8条亮线和

8条暗线组成的虚线。这就是LCD显示的基本原理。

字符型液晶显示模块是一种专门用于显示字母、数字和符号等的点阵式

LCD,常用16×1,16×2,20×2和40×2等的模块。一般的LCD1602字符型液晶

显示器的内部控制器,大部分为HD44780,能够显示英文字母、阿拉伯数字、日

文片假名和一般性符号。

4产品软件设计

4.1主程序流程图

系统程序图设计如下:

4

湖南商务职业技术学院毕业设计

开始

程序初始化

按键按下Y

N

设置最大值/最小值

读取ADC采集值

数据处理

大于最大值小于最小值

YY

NN

停止水泵工作驱动水泵

1602显示

结束

4.2APP程序设计

5

湖南商务职业技术学院毕业设计

4.3产品程序清单

水位检测程序清单

reg51.h

LCD1602intring.h

主程序

main

c51.ceeprom52.h

定义IO口初始化1602

5产品调试及使用说明

5.1产品调试

板子做好以后,就把所有的元件焊上去了,这样对于没有调试过的板子,

就很难找到原因。.所以焊接的顺序很重要,应该是应该按功能划分的器件进行

焊接,顺序是功能部件的焊接--调试(OK)--另一功能部件的焊接,这样容易找到

问题的所在。

5.2产品使用说明

把USB电源线插上,然后打开电源开关。(此时液晶上显示水位、第二行

显示模式(模式包括手动跟自动模式,按设置按键2可以切换模式))

6

湖南商务职业技术学院毕业设计

在手动模式下,按第三个设置按键可以直接打开和关闭水泵

按第一个设置按键可以调整水位上限和下限值。

设置数值后打开自动模式,水泵跟传感器开始工作

如果水位小于低位值,则蜂鸣器开始报警并且加水,对应指示灯亮、一旦水位

高于高位值,蜂鸣器报警并停止加水且对应指示灯亮。

如果水位在高位值跟低位值中间则蜂鸣器停止警报,当水位低于低位值时开始

抽水,抽水到高于高位值时停止抽水。

抽水满一次后,需要水位低于低位值后再抽水。

在用水过程中,水位在低位值跟高位值中间是不抽水工作的。

6产品设计技术标准

[1]J-STD-001E电气与电子组件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E电子组件的可接受性要求

[3]IPC-7711/21电子组件和电路板的返工&返修

[4]GB/T11457-2006信息技术软件工程术语;

[5]GB/T8566-2007信息技术软件生存周期过程标准;

[6]GB/T8567-2006计算机软件文档编制规范。

参考资料

[1]高慧芳等.单片机原理及应用技术[M].北京:科学出版社,2010.

[2]ISDSeriesSingle-ChipVoiceDeviceDataBook.WinbondInc.,2000

[3]宋戈,黄鹤松,员玉良,蒋海峰.51单片机应用开发范例大全[M],北京:人民邮电出版社,2010:

P193-P205

[4]王竹便.录音技术及技巧浅议[J].科技情报开发与经济.2005

[5]孟宪超.数码录音笔原理及应用[J].信息时代导刊.2004

[6]韩改宁,李永锋.基于AT89C52单片机的语音录放系统实现[J].成阳师范学院,2009,17(9):116-

117

7

湖南商务职业技术学院毕业设计

附录1元器件清单

名称型号标志r数量实物图片

蜂鸣器BellB11

电容10ufB21

电容220ufC11

电容30pfC2,C32

电容104C61

二极管

DIODEC101

电源接口电源接口

5VD21

微动开关SW-AJJ14

5MM红色发光

LEDJ32

二极管

排针

Header4K1,K2,K3,K41

三极管9012L1,L22

电阻1KP14

电阻10kP21

电阻3KP31

排阻10KQ4,Q61

电源开关自锁开关R2,R10,R161

继电器接口2PR111

晶振12MR261

5V水泵抽水水泵RX11

继电器JSW11

水位传感器D3B压力传感器U11

8

湖南商务职业技术学院毕业设计

单片机STC89C52U21

单片机插座40PY11

模式转换芯片ADC0832CCN1

IC插座8P1

液晶LCD16021

附录2电路原理图

9

湖南商务职业技术学院毕业设计

附录3PCB设计图

附录4产品实物图

10

湖南商务职业技术学院毕业设计

附录5产品装配图

11

湖南商务职业技术学院毕业设计

附录6程序代码

#include<reg52.h>//头文件

#include<intrins.h>

#include"eeprom52.h"//STC89C52EEPROM程序文件

#defineucharunsignedchar//宏定义

#defineuintunsignedint

#defineLCD1602_datP0//LCD1602数据口宏定义

sbitLCD1602_rs=P2^5;//LCD1602控制数据IO口

sbitLCD1602_rw=P2^6;

sbitLCD1602_e=P2^7;

sbitbeep=P1^3;//蜂鸣器IO

sbitled_1=P1^4;//LED指示灯IO

sbitled_2=P1^6;

sbitkey_1=P3^0;//系统控制按键IO口

sbitkey_2=P3^1;

sbitkey_3=P3^2;

sbitalarm_1=P2^0;//控制继电器IO口

12

湖南商务职业技术学院毕业设计

sbitADC0832_CS=P1^2;//ADC0832控制IO口使能口

sbitADC0832_CLK=P1^1;//时钟IO口

sbitADC0832_DIO=P1^0;//数据输入输出IO口

uintsum;//10次AD值的综合变量

ucharRH,RH_H=12,RH_L=8,state,ms,cs;//当前水位,水位上限,下限,设

置项变量,50ms变量,cs为计次数变量,

bitbeep1,zt,s1;//报警标志位,工作模式标志位,闪烁标志位

unsignedintA_D()//ADC0832读值程序

{

unsignedchari;

unsignedchardat;

ADC0832_CS=1;//一个转换周期开始

ADC0832_CLK=0;//为第一个脉冲作准备

ADC0832_CS=0;//CS置0,片选有效

ADC0832_DIO=1;//DIO置1,规定的起始信号

ADC0832_CLK=1;//第一个脉冲

ADC0832_CLK=0;//第一个脉冲的下降沿,此前DIO必须是高电平

ADC0832_DIO=1;//DIO置1,通道选择信号

ADC0832_CLK=1;//第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别

输入两位数据用于选择通道,这里选通道RH0

ADC0832_CLK=0;//第二个脉冲下降沿

ADC0832_DIO=0;//DI置0,选择通道0

ADC0832_CLK=1;//第三个脉冲

ADC0832_CLK=0;//第三个脉冲下降沿

ADC0832_DIO=1;//第三个脉冲下沉之后,输入端DIO失去作用,应置1

ADC0832_CLK=1;//第四个脉冲

for(i=0;i<8;i++)//高位在前

{

ADC0832_CLK=1;//第四个脉冲

ADC0832_CLK=0;

dat<<=1;//将下面储存的低位数据向右移

dat|=(unsignedchar)ADC0832_DIO;//将输出数据DIO通过或运算储存

在dat最低位

}

ADC0832_CS=1;//片选无效

returndat;//将读书的数据返回

}

/********************************************************************

13

湖南商务职业技术学院毕业设计

*名称:delay()

*功能:小延时。

*输入:无

*输出:无

********************************************************************

***/

voiddelay(uintT)//延时函数

{

while(T--);

}

/********************************************************************

*名称:LCD1602_write(ucharorder,dat)

*功能:1602写如数据函数

*输入:输入的命令值

*输出:无

********************************************************************

***/

voidLCD1602_write(ucharorder,dat)//1602一个字节处理

{

LCD1602_e=0;

LCD1602_rs=order;

LCD1602_dat=dat;

LCD1602_rw=0;

LCD1602_e=1;

delay(1);

LCD1602_e=0;

}

/********************************************************************

*名称:LCD1602_writebye(uchar*prointer)

*功能:1602写入数据函数指针式

*输入:输入的命令值

*输出:无

********************************************************************

***/

voidLCD1602_writebyte(uchar*prointer)//1602字符串处理

{

while(*prointer!='\0')

{

LCD1602_write(1,*prointer);

prointer++;

}

}

14

湖南商务职业技术学院毕业设计

/********************************************************************

*名称:LCD1602_cls()

*功能:初始化1602液晶

*输入:无

*输出:无

********************************************************************

***/

voidLCD1602_cls()//1602初始化

{

LCD1602_write(0,0x01);//1602清屏指令

delay(1500);

LCD1602_write(0,0x38);//功能设置8位、5*7点阵

delay(1500);

LCD1602_write(0,0x0c);//设置光标不显示开关、不显示光标、字

符不闪烁

LCD1602_write(0,0x06);

LCD1602_write(0,0xd0);

delay(1500);

}

/********************************************************************

*名称:show()

*功能:LCD1602液晶显示程序

*输入:无

*输出:无

********************************************************************

***/

voidshow()

{

if(state==0)//当前水位及工作模式显示

{

LCD1602_write(0,0x80);LCD1602_writebyte("Waterlevel:");//当前水位

LCD1602_write(0,0x80+12);

if(RH>9)LCD1602_write(1,0x30+RH/10%10);

elseLCD1602_writebyte("");

LCD1602_write(0,0x80+13);

LCD1602_write(1,0x30+RH%10);

LCD1602_write(0,0x80+14);

LCD1602_writebyte("cm");

LCD1602_write(0,0xC0);LCD1602_writebyte("State:");//工作模式

LCD1602_write(0,0xC0+6);

if(zt==0)

15

湖南商务职业技术学院毕业设计

{

LCD1602_writebyte("Manul");

}else

{

LCD1602_writebyte("Auto");

}

}else//水位上下限设置界面

{

LCD1602_write(0,0x80);

LCD1602_writebyte("Water_H:");//水位上限

LCD1602_write(0,0x80+8);

if(state==1&&s1==1)//通过闪烁标志为达到闪烁的效果

{

LCD1602_writebyte("");

}else

{LCD1602_write(0,0x80+8);

if(RH_H>9)LCD1602_write(1,0x30+RH_H/10%10);

elseLCD1602_writebyte("");

LCD1602_write(0,0x80+9);

LCD1602_write(1,0x30+RH_H%10);

}

LCD1602_write(0,0x80+10);

LCD1602_writebyte("cm");

LCD1602_write(0,0xC0);

LCD1602_writebyte("Water_L:");//水位下限

if(state==2&&s1==1)//通过闪烁标志为达到闪烁的效果

{

LCD1602_write(0,0xC0+8);

LCD1602_writebyte("");

}else

{

LCD1602_write(0,0xC0+8);

if(RH_L>9)LCD1602_write(1,0x30+RH_L/10%10);

elseLCD1602_writebyte("");

LCD1602_write(0,0xC0+9);

LCD1602_write(1,0x30+RH_L%10);

}

LCD1602_write(0,0xC0+10);

LCD1602_writebyte("cm");

}

}

16

湖南商务职业技术学院毕业设计

/********************************************************************

*名称:key()

*功能:按键控制程序实现系统各个控制功能

*输入:无

*输出:无

********************************************************************

***/

voidkey()

{

if(!key_1)//设置按键设置功能:切换显示及设置的选项

{

delay(888);//按键去抖

if(!key_1)//再次判断按键

{

while(!key_1)show();//按键判断是否释放

state=(state+1)%3;//执行按键功能切换设置项

}

}

if(!key_2)//切换设置项值的大小及非设置模式下切换系统工作模式

按键

{

delay(888);//按键去抖

if(!key_2)//再次判断按键

{

while(!key_2)show();//按键判断是否释放

if(state==1)//执行按键功能切换设置项

{

if(RH_H<100)RH_H++;//设置上限值

SectorErase(0x2000);//保存上限值保存到单片机中EEPROM

byte_write(0x2000,RH_H);

}elseif(state==2)

{

if(RH_L<RH_H-1)RH_L++;//设置下限值

SectorErase(0x2200);//保存下限值保存到单片机中EEPROM

byte_write(0x2200,RH_L);

}else

{

zt=!zt;//切换系统的工作模式自动手动

alarm_1=1;//关闭继电器

}

}

}

17

湖南商务职业技术学院毕业设计

if(!key_3)//切换设置项值的大小及手动模式下切换系统工作状态

‘开关’

{

delay(888);//按键去抖

if(!key_3)//再次判断按键

{

while(!key_3)show();//按键判断是否释放

if(state==1)//执行按键功能切换设置项

{

if(RH_H>RH_L+1)RH_H--;

SectorErase(0x2000);//保存上限值保存到单片机中EEPROM

byte_write(0x2000,RH_H);

}elseif(state==2)

{

if(RH_L>0)RH_L--;

SectorErase(0x2200);//保存下限值保存到单片机中EEPROM

byte_write(0x2200,RH_L);

}else

{

if(zt==0)

{

alarm_1=!alarm_1;//手动模式切换系统的工作状态

}

}

}

}

}

/********************************************************************

*名称:proc()

*功能:系统处理程序部分

*输入:无

*输出:无

********************************************************************

***/

voidproc()

{

if(zt==1)//zt==1为自动模式如果系统在自动模式下

{

if(RH>=RH_H)//如果当前水位值达到水位上限值则

{

alarm_1=1;//关闭继电器

led_1=0;//显示对应的指示灯

18

湖南商务职业技术学院毕业设计

}else

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论