基于单片机的水位测量系统设计_第1页
基于单片机的水位测量系统设计_第2页
基于单片机的水位测量系统设计_第3页
基于单片机的水位测量系统设计_第4页
基于单片机的水位测量系统设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

I基于单片机的水位测量系统设计水是我们生活中不可或缺的部分,水位的深度跟水的存储量也是跟我们生活密切相关的,有人生活的地方就会有水位的监测。小到水箱,马桶,大到水库,水塔等等。在生活中常见的就是这些需要限制水位的容器。课题主要是研究0~1米内的,基于压力传感器的智能水位监控系统。本文主要说明了该水位检测系统硬件与软件的设计。此的设计主要采用压力传感器来测出水深位置的水压,然后将压力转换成为电压并输出为0~5V的模拟电压。模拟电压数据经过ADCO832把变成数字量送到单片机中进行处理,再显示出液位高度。本设计可以完成1米内水位高度的测量,可以精确到厘米位。此设是以AT89S52示部分、蜂鸣报警器等其它元器件共同构成。通过软件程序来控制整个系统实现水位的监测、控制和报警的功能。本检测系统具有设计方法合理,方便易行成本低等特点,具有一定实用价值。关键词:智能液位监控单片机AD转换器LCD显示蜂鸣报警器Waterisanessentialpartofourlife,thedepthofthewaterlevelandwaterstorageisalsocloselyrelatedwithourlife,someonelivingplacewillhavewaterlevelmonitoring.Tosmalltowatertank,toilet,largereservoirs,watertower,andsoon.Commoninlifeistheneedtolimitwaterlevelofthecontainer.Thistopicmainlystudieswithin0~1meter,Thisarticlemainlyelaboratedthewaterleveldetectionsystemofhardwareandsoftwaredesign.Thisdesignisthroughthepressuresensortomeasurethedepthofthewaterpressure,andthentheoutputis0~5vanalogvoltage,throughthedatafromtheADC0832translatesintodigitalquantityintosinglechip,thenshowtheliquidlevelheight.Thisdesigncanachieve0~1mheightofliquidlevelmeasurement,canaccuratetocm.ThisdesignthehardwarepartisbasedonAT89S52singlechipmicrocomputerasthecoredevice,controlledbythepressuresensor,buttons,ADC0832converters,LCDdisplay,buzzeralarmandothercomponentstogether.Throughthesoftwareprogramtocontrolthewholesystemcanrealizethefunctionofwatermonitoring,controlandalarm.Designmethodofthedetectionsystemisreasonable,convenientandfeasiblecostlowcharacteristic,hascertainpracticalvalue.Keywords:intelligentliquidlevelmonitoringMCUADconvertersLCDdisplaybuzzeralarm 错误!未定义书签。Abstract 错误!未定义书签。错误!未定义书签。绪论 11系统方案 错误!未定义书签。1.1设计方案 21.2设计所要达到的要求 22硬件部分 42.1硬件结构框图 42.2硬件电路部分 42.3AT89S52的主要性能参数 42.3.1复位电路部分 52.3.2外部晶振时钟电路 62.4LCD液晶显示部分 72.5A/D转换部分 72.5.1ADC0832芯片 72.5.2时序图 82.6压力感应部分 93软件部分 3.1数模转换模块ADC0832 3.2LCD1602液晶显示模块程序设计 3.2.1LCD1602控制指令 3.2.2LCD1602液晶显示程序 3.3按键模块 4系统板设计及测试 2 204.2系统板调试 20 参考文献 附录1电路原理图 附录2主体程序 以前水位监测的工作往往是让工作人员来做的,工作人员24小时对水深的变化进行测液体压力的原理,结合单片机设计出一种智能液位监控器。经过反反复复的测试与调试,该系统在0~1米内具有良好的灵敏性和稳定性,达块,报警指示灯模块,电机驱动模块。工作原理:利用一个压力传感器测出在传感器所处水深位置的水的压力,压力变送器将压力转换成电压输出,输出是0~5V的模拟电压信号(或是4~20毫安的模拟电流信号),利用电压进行采集并将模拟电压信号转换成数字电平信号0,1。再在单片机中用程序将于设定下限水位,蜂鸣器报警,低水位指示灯亮,电机转,进水。当前水位高于设定上限水位后,蜂鸣器报警,高水位指示灯亮,电机停止转动,停止进水。硬件总体的结构框图如1-1所示:液晶显示液晶显示蜂鸣器报警报警指示灯按键部分水泵AD转换器单片机最小系统图1-1结构框图(3)单片机系统能控制整个系统的运行。把数字转换成水深的数值并且传送给(4)按钮模块:通过按钮来设置水位上下限。水位低于下限蜂鸣器响并且驱动(5)驱动模块:低于下限加水,高于上限停止加水。以达到控制水位的目的。2硬件电路部分2.1硬件结构本次设计的系统硬件部分主要包括压力感应模块,AT89S52单片机主控制模块,ADC0832模数转换模块,按键模块,蜂鸣器报警端口信号接入模块,1602LCD显示模块,电机驱动模块。2.2硬件电路部分硬件部分总电路如图2-1所示电源接口电源接口按键蜂鸣器3图2-1硬件部分总电路2.3AT89S52的主要性能参数:AT89S52是一种高性能、低功耗的CMOS8位微控制器,它具有8K在系统可编程Flash存储器。它是使用Atmel公司高密度非易失性存储器技术制造,并与业界的标准80C51在产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,也就是适合于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活及非常有效的解决方案。AT89S52单片机提供口一下标准功能:8K字节Flash,256字节RAM,32位I/0口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。此外,AT89S52单片机的设计与操作频率可下1186降到0HZ静态逻辑,支持2种软件可选的节电模式。在空闲模式下,CPU停止工作,而RAM,定时器/计数器,串行口,外中断系统可继续工作。在掉电保护模式下,RAM内容可以被保存,但振荡器将被冻结,单片机一切工作停止,直到下一个中断或者硬件复位为止,单片机最小系统电路图如图2-2所示:VCCIR2pl5pl6rstYX]23456789U1P10P30VCCP34XTAL2XTAL1AT89S⁵2PSENP27P26P23VCCP02P03P06P22P112456VCC图2-2单片机最小系统电路图2.3.1复位电路部分AT89S52有一个复位输入引脚RST,它为单片机提供了初始化的手段,可以使程序从指定处开始执行。在AT89S52的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作,只要RST保持高电平,则AT89S52循环复位,只有当RET由高电平变成低电平以后,AT89S52才从0000H地址开始执行程序,本系统采用按键复位方式的复位电路,如图2-3所示:图2-3复位电路电路;还有一种方式是外部方式,本设计按照实际需要,和简便易行的设计理念,选择使用内部振荡的方式。有一个构成振荡器的高增益反相放大器在MCS-51里面,所以实际构成的振荡时钟电路,外接晶振以及电容C1和C2构成了并联谐振电路接在放大器的反馈回路中,对接电容的值虽然没有严格的要求,但电容的大小会影响振荡频率的高低,振荡器的稳定性,起振的快速性和温度的稳定性。晶振的频率可在1.2MHZ~12MHZ之间任选,电容C1和C2的典型值在20pf~100pf之间选择,因为本次系统设计要用到定时器,为了方便计算,选择了12MHZ的晶振,选择使用30pf的电容。图2-4晶振电路的设计LCD1602液晶显示模块有专门的点阵字符液晶显示器件,控制器,行列驱动器16脚(带背光)接口,其主要技术参数:引脚如表格2-4所示:表2-4LCD1602显示模块串行模式引脚说明表编号符号引脚说明编号符号引脚说明VSS电源地9D2数据2VDD电源正极D3数据3VL液晶显示偏压D4数据4数据/命令选择D5数据5R/W读/写选择D6数据6E使能信号D7数据7DO数据BLA背光源正极8D1数据BLK背光源负极表2-4:引脚接口说明:第3脚:VL是液晶显示器的对比度调整端口,当它接电源正极时对比度最弱,当它接地时对比度最强,对比度太强的情况下可能产生“鬼影”,使用该显示屏的时候可第5脚:R/W是读写信号线。电平为低时执行写入操作,电平为高时执行读取操作。当RS和R/W都是低电平的时候可选择执行写入指令或者显示地址;当RS为高电平R/W为低电平时可以写入数据;当R/W为高电平RS为低电平时可以读忙信号;。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第16脚:背光源负极。(1)8位分辨率;(2)双通道A/D转换;(3)输入输工作频率为250KHZ,转换时间为32μS;(6)一般功耗仅为15mW;(7)8P、14P—DIP(双列直插)、PICC多种封装;(8)商用级芯片温宽为0°Cto+70°C,工业级芯片温宽为40℃-+85℃图2-5DAC0832引脚图CS:片选使能,低电平有效CH0:模拟输入通道0,或作为IN+/-使用CH1:模拟输入通道1,或作为IN+/-使用GND:芯片参考0电位(地)DO:数据信号输出,转换数据输出CLK:芯片时钟输入VCC:电源输入ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处常情况下ADC0832与单片机的接口应为4条数图2-6ADCO832时序图用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据(SGL、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2位数据在完成输入启动位、通道选择之后,到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可将电压值设定在某一个我们这次智能液位传感器设计使用的传感器部分采用的是压力传感器位测量采用的测量液体压强的方式。压力传感器如下图2-7:图2-7压力传感器图传感器主要参数如下:压输出:0.23v---4.9v;线性度0.2%;外型:30×30×20mm。模块程序和其他简单模块程序。依据开发板上硬件连接所要实现的功将分别介绍以上各个模块的程序设计。而整体的程序流程如图3-1所示显示当前水位上下限水判断当前水位值是水泵停止转否是否低水位红灯亮图3-1程序流程图3.1模数转换模块ADC0832压力传感器感产生的电压信号进入ADC也就是我们的模数转换模块,将模拟信号转换成数字信号,主程序结构如下:sbitADC0832CS=P1^2;unsignedintA_DOunsignedchari,dat;ADC0832CS=1;//一个转换周期开始ADC0832CLK=0;//为第一个脉冲作准备ADC0832_CS=0;//CS置0,片选有效ADC0832_DIO=1;//DIO置1,规定的起始信号ADC0832CLK=1;ADC0832CLK=0;//第一个脉冲的下降沿,此前DIO必须是高电平ADC0832_DIO=1;//DIO置1,通道选择信号ADC0832CLK=1;//第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CHOADC0832_CLK=0;ADC0832DIO=0;//DI置0,选择通道0ADC0832_CLK=1;ADC0832_CLK=0;ADC0832DIO=1;ADC0832_CLK=1;//第三个脉冲下沉之后,输入端DIO失去作用,应置1for(i=0;i<8;i++)//高位在前ADC0832CLK=0;dat<<=1;//将下面储存的低位数据向右移datl=(unsignedchar)ADC0832_DIO;//将输出数据DIO通过或运算储存在dat最低位}ADC0832returndat;}1602液晶模块内部的控制器共有11条控制指令,如表3-1所示:序号清显示0000000002光标返回00000000*3置输入模式00000001S4显示开/关控制0000001DCB5光标或字符移位000001CL**6置功能0000NF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01计数器地址写数到CGRAM或0要写的数据内容读数11读出的数据内容注意:1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清空显示屏幕,指令码01H,清除液晶显示器,把显示器还原到空白状态,地址计数器的值设为0,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H,光标撤回到显示器的左上方,保持指令3:光标和显示模式设置,也就是设定每次定入1位数据后光标的移动方向,据后显示屏整体右移1个字符,低电平则表示写入数据后显示屏不移动。示的开与关,高电平表示显示功能开,低电平表示显示功能关C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,指令5:使光标移位或使整个显示屏幕移位S/C:高电平时移动显示的文字,低电平时移动光标R/L:高电平表示光标或字符右移,而低电平则表示光标或字符左指令6:设定数据总线位数、字型及显示的行数DL:高电平时数据总线为8位,低电平时数据总线为4位。N:低电平时为1行显示,高电平时2行显示F:低电平时显示5x7的点阵每个字符,高电平时显示5x10的点阵每个字符。指令7:字符发生器RAM地址设置,也即是设定下一个存入数据的CGRAM的指令8:设定下一个要存入数据的DDRAM的地址。高电平表示液晶显示器忙,此时模块暂时不能接收命令或者数据,如果为低电平表指令10:将使用者个人设计的图形存入CGRAM或者将字符吗写入DDRAM,LCD1602液晶显示屏是一个显示非常慢的元器件,因此在执行每条指令之前必须效。要显示字符串时,首先要将显示的字符存入数组,而且要输入首字符地址,也123456789第一行第二行定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(COH)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标1602液晶模块内部的字符发生存储器(CGROM)已经存是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就3.2.2LCD1602液晶显示程序主要程序如下sbitEN=P2^7;sbitRS=P2^5;sbitRW=P2^6;unsignedcharLCD1602_Table[]="0123456789:-";unsignedcharDIS1TAB[]={"Waterlevel:cm"};unsignedcharDIS2_TAB[]={"H:cmL:cm"};//0123456789abcdef//液晶显示第一行数据voidwritedate(uchardate)//写数据指令EN=0;RS=1;EN=0;delayms(5);EN=1;voidwrite_com(uchardate)//写命令指令EN=0;RS=0;EN=0;delayms(5);EN=1;voidinit_16020unsignedchari;RW=0;writecom(0x38);write_com(0x0c);write_com(0x06);//设置16*2显示,5*7点阵,8位数据端口//设置开显示,不显示光标//写一个字符后地址指针加1writecom(0x01);write_com(0x80);//显示清0,数据指针清0for(i=0;i<16;i++)write_date(DIS1_TAB[i]);write_com(0x80+0x40);for(i=0;i<16;i++)write_date(DIS2_TAB[i]);voiddisplayO//显示函数{staticuchari=0;if(set_flag>0)if(i<20)write_com(0x80+12);write_date(LCD1602_Table[Water_dat/10]);write_date(LCD1602_Table[Water_dat%10]);write_com(0x80+0x40+4);if((set_flag-=1)&&(i<10))write_date(');writedate(')}{write_date(LCD1602_Table[H_lim/10]);//显示上限水位write_date(LCD1602_Table[H_lim%10]);write_com(0x80+0x40+11);if((set_flag-=2)&&(i<10))write_date(');write_date(');{3.3按键模块程序按键模块的功能是实现水位上下限的设置voidkeyO{{delayms(10);//延时按键消抖{while(!K1);}//set//set-flag等于1设置上限{delayms(10);if(K2==0){if(H_lim<99)H_lim++;while(!K2);elseif(K3==0)//减小按键按下等于2设置上限delayms(10);if(K3==0)if(H_lim>0)Hlim--;while(!K3);break;if(K2==0)delayms(10);if(K2==0)if(L_lim<99)L_lim++;while(!K2);elseif(K3==0)delayms(10);if(K3==0)if(L_lim>0)L_lim--;while(!K3);break;default:break;4系统板设计及测试画出电路原理图。然后根据老师的要求,为了要完成这个课程设计去了几天图书馆些功能芯片固定,再根据所要实现的功能,并参考原理图和信号流向规律以及安全(3)布局时保障线与线之间不出现或尽量少出现交叉同时保障总的连线尽可能版面美观的标准来优化布局。相同结构电路部分尽可能采取对称布局。同类元件尽有字符在水平或垂直方向上应一致。字符,丝印大小要统一。的稳压电源来提供的。首先要在计算机上安装一个叫keiil的软件,新建一个工程“swcly”并且选择单片机型号为AT89S52。然后将我写的C语言程序添加到新建的青老师跟同学的大力帮助下才勉强得以完成。接下来打开烧写器的软件Topwin,添报警端口信号接入模块:烧写.HEX文件到单片机中,接通电源,按下按键,LCD1602上显示该键对应的报警信号。如图4-1所示,第一路出现报警信号;如图不会是脱焊或者焊接问题,仔细检查了很多遍后发现是一个电阻焊错了。我对这个基于对一些功能芯片(如AT89S52)和一些模块(如LCD12232液晶显示屏模块、SP-M微型打印机)的了解AT89S52单片机为主控制器的前提下,对外围电路进行了合理的配置,其中包括时钟电路和复位电路。时钟电路晶振的振荡频率应该选择针对各个模块要实现的功能,开发相应的功能程序模块—报警端口信号接入程间的硬件和软件测试,每个模块都能顺利烧写程序和正常运行。运行之后,能够达通过对每个模块前期的电路设计和后期的软硬件调试,我对单片机理论和实践本论文的选题及研究工作是在陈青老师的指导下完成的。从硬件的选择到软件的编写调试,都是在老师严谨认真的治学态度,精益求精的工作作风,深刻地熏陶和鞭策着我。从开始毕业设计课题的选择到最后毕业论文的完成,陈老师至始至终给予我细心的指导、无限的关怀和不懈的支持。半年的时间里,陈老师不仅在学业上给我以正确的指导,而且在思想上给我关怀备至。同时,他跟我分享工作和学习我能够迎难而上,不停地在图书馆和网络上查找解决的方案并向老师请教。在开发感谢学校为我提供了良好的安静学习环境,并且提供了丰富的图书资源及电子最后,向每一位认真细心指导,辛苦评阅的老师们致以衷心的感谢和最崇高的敬意![1]纪宗南.单片机外围器件实用手册-输入通道器件分册[M].北京:北京航空航天大学出版社,2005:225-230.[2]赵家贵.新编传感器电路设计手册[M].北京:中国计量学出版社,2002.[3][3]李伟提.单片系列液晶显示器[M].北京:北京航空航天大学出版社,2001:[4]韩广兴.电子元器件与实用电路基础(修订版[M]).北京:电子工业出版社,2005:340-356.[5]彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真(第2版).北京:电子工业出版社,2012,(10).[6]张鑫.单片机原理及应用[M].北京:电子工业出版社,2005:161-258.[7]朱定华.单片微机原理与应用.北京:清华大学出版社,2003.[8]朱定华.数字电路与逻辑设计.北京:清华大学出版社,2011.[9]朱定华,吴建新,饶志强.模拟电子技术.北京:清华大学出版社,2008.[10]葛飞.AMT参数调试及故障诊断系统的开发.西安:西安科技大学,2011[11]吴向军.汇编语言程序设计.北京:高等教育出版社,2002.[12]何福良.汇编语言程序设计.北京:北京工业大学出版社,2003.[13]郭金枝.水温水位检测系统的设计[J].仙桃职业学院,2012[14]周润景,蔡雨恬.PROTEUS入门实用教程(第2版).北京:机械工业出版社,2011,(11).[15]清源计算机工作室.Protel99SE原理图与PCB及仿真[M].北京:机械工业出版社,2004:10-345.[16]CharlesBlandRadcliffe.Proteus.NabuPress,2012,(02)[17]FoumdationandApplicationpfMicrocontroller.GuiyunTian出版社:高等教育出版社第一版的具p怒g10见Z的具p怒g10见Z上Euugpt9g756578EP1DTFt.*P0.6b*PO707P3WTTP3.*TUPJST1至’33卫2艺88221们E附录2实验现象附录3主体程序#defineucharunsignedchar//宏定义#defineuintunsignedintsbitbeep=P1^4;sbitRelay=P2^0;sbitLED_H=P1^6;sbitLED_L=P1^7;

温馨提示

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

评论

0/150

提交评论