1、江西理工大学2011届专科毕业论文(专科)江 西 理 工 大 学 南 昌 校 区毕 业 设 计(论文)题 目:基于单片机的水位检测系统的研究与设计系别:信息工程系专 业:电气自动化班 级:09自动化1班学 生:凌晖学 号:09321108指导教师:郭泉江 职称:助教I江西理工大学2011届专科毕业论文(专科)摘 要现代传感技术、电子技术、计算机技术、自动控制技术、信息处理技术和新工艺、新材料的发展为智能检测系统的发展带来了前所未有的奇迹。在工业、国防、科研等许多应用领域,智能检测系统发挥着越来越大的作用。随着社会的进步、生产工艺和生产技术的发展,人们对液位的检测与控制提出了更高的要求.而新型电
2、子技术微电子技术和微型计算机的广泛应用于普及,单片机控制系统以其控制精度高,性能稳定可靠,设置操作方便,造价低等特点,被应用到液位系统的控制中来。本设计用液位检测集成芯片LM1042、A/D转换芯片A/D574A、继电器、水泵,以及AT89C51单片机作为主控元件的液位检测与控制的原理、电路及监控程序.用LM1042液位检测集成芯片测量液位,具有测量精度高、速度快、可靠、稳定等优点;采用单片机来控制液位信息的采集,并且计算出真实液位值,通过运算判断是否超限报警,使检测与控制具有更高的智能性。关键词:AT89C51;AD574A;液位检测;LM1402;超限报警;继电器;水泵。ABSTRACTM
3、odern sensing technology, electronic technology, computer technology, automatic control technology, information processing technology and new technology, new material for the development of the intelligent detection system development has brought an unprecedented miracle。 In industry, national defen
4、se, scientific research and many other fields of application, intelligent detection system is playing the more and more major role。 Along with the progress of the society, the production technology and production technology development, the people to the level of test and control put forward higher
5、request. And the new electronic technology of microelectronics technology and microcomputers widely used in popularity, singlechip microcomputer control system with its high control accuracy, high performance is stable and reliable, setting, convenient operation, cost low characteristic, has been ap
6、plied to the liquid level control systems。 This design with liquid level detection integrated chips LM1042, A/D converse.Keywords: AT89C51; AD574A; The liquid level detection; LM1402; Overrun alarm; Relay; Water pump。目录第一章绪论11.1 水位检测技术的应用与发展11.2 水位检测系统设计的意义11.3 本设计研究的内容和方法1第二章系统硬件设计32。1系统总体功能概述32.2
7、核心芯片的选择42。3硬件原理图10第三章系统软件设计153.1软件功能概述153。2 主程序设计163。3定时器T0中断服务程序173.4 A/D转换子程序183。5 LED显示子程序18第四章结论19参考文献20致谢21附录22附录一主程序代码22附录二电路图26附录三 PCB版27第一章 绪论1。1 水位检测技术的应用与发展当今的工业领域中液位检测对许多自动控制方案来说都至关重要.现代电子技术、传感技术、通信技术和计算机技术的迅速发展,也促进了水位监测技术自动化的发展.水位监测是采集、存储、传输、处理等技术的集成。从传统的水位检测与控制方式即人工监测技术分析来看,主要存在以下问题:首先记
8、录方式以模拟方式为主,就是数学方式记录的也很难方便的输入计算机处理,其次数据处理基本靠人工处理判断,费时易错,最后水位信息的采集、传输、处理的实时性和准确性较差,控制也是全人工操作,无法适应现代水文的需求。因此,要用自动化技术促进水位检测与控制自动化的发展。1。2 水位检测系统设计的意义水位检测系统是自然界和一般工业界不可缺少的一种检测系统.但凡江河湖海,工业中应用的蓄水池、水塔、水箱、地下水等都需要有水位检测。供水系统中有许多设备由于所处地势高,上下极为不便,有时水即将用完或者已经用完也不知道,造成需用水时却水量不足或者无水可用的情况。此时,在向池中注入水过程中,由于不知道水位情况,也就无法
9、控制水量多少,为了准确掌握水位情况,传统的做法是安排人员进行人为监控,这样不仅会占用人力、物力,还会大大影响工作效率.为此需要对水位监测情况实现自动化监测、数据化、智能化显示、视觉或听觉冲击化报警,实现水位检测一个完整的系统,那么工作人员便可以在操作室获知整个设备的水位状况,如此不但大大减低工作人员的危险性,同时更提高了工作效率及简便性.1。3 本设计研究的内容和方法 内容:本设计以MCS51系列单片机为核心设计水位检测系统,自行设计电源,选用液位检测传感器检测液位,数码管显示,当液位高度太高或太低时,报警( 可采用中断方式设计),由单片机控制继电器的闭合来控制水泵的工作,达到调节水位的效果。
10、 方法:本设计经过调研,收集且分析相关技术资料,综合考虑液位检测技术发展和液位检测系统特点的基础上,提出把液位检测显示同超限报警综合的解决方案。本系统采用AT89C51单片机作为处理器,主要完成以下工作:1 基于AT89C51的液位信息检测设计方案.2 传感器LM1042、A/D转换芯片AD574A与单片机的接口电路设计。3 LED数码管驱动芯片ICM7218与单片机的接口电路及其与数码管的硬件连接.4 继电器控制水泵加水电路的设计。5 设计主要软件程序模块,完成软件设计。第二章 系统硬件设计2。1系统总体功能概述该系统可看做两个方面:检测装置与控制执行。系统以AT89C51作为核心控制部件。
11、检测装置由传感器、一片A/D转换芯片和一片数码管驱动芯片来完成液位的检测、显示和超限报警.LM1042外接的热阻探针温度的变化依赖于周围材料的热阻的大小,而空气和液体的热阻大小有很大差别,从而可以根据探针在液体中的深度不同时电阻的不同检测出液位的深度信息,由LM1042内部转换电路网络转换为与液位成线性关系的电压信号,再由12位逐次逼近型A/D转换芯片AD574A将模拟信号转换为数字信号,实现液位信息的输入,AT89C51从AD574A读取液位信息后进行数据处理和超限判断,随后将处理过的数据输出到数码管驱动芯片ICM7218的RAM中,由ICM7218实现数码管的静态显示,若液位超限则由单片机
12、驱动蜂鸣器报警。控制执行方面,通过单片机的输出电信号控制继电器的闭合,实现对水泵的控制。AT89C51液 位LED驱动器继电器水 泵电 源传感器AD转换数码管图21 系统总体结构图各部分功能:1. 电源部分提供+5V +15V -15V电压供系统各部分使用.2. 传感器LM1042实现液位信息到电压信号的转换。3. AD574A将传感器输出的电压信号经A/D转换成数字信号后送到单片机。4. AT89C51为处理器,实现液位信息的接收、数据处理、和输出到ICM7218。5. 蜂鸣器部分在单片机检测到液位超限是由单片机驱动实现声音报警。6. 单片机对液位数据处理后输出,由ICM7218驱动数码管显
13、示。7. 水泵加水电路由继电器进行控制。2.2 核心芯片的选择(1)单片机AT89C51 单片机是把微型计算机主要部分集成在一块芯片上的单芯片微型计算机.单片机AT89C51由CPU、存储器(包括RAM和ROM)、I/O接口、定时/计数器、中断控制功能等均集成在一块芯片上,片内各功能通过内部总线相互连接起来.1. 主要特性:8位CPU内置4K字节可重复编程Flash寿命:1000写/擦循环全静态工作:0HZ-24HZ三级程序存储器锁定1288位内部RAM32根可编程I/O线两个16位定时器/计数器5个中断源,2个中断优先级可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路2。管脚说明:图
14、22 AT89C51的引脚图Vcc:供电电压Vss:接地P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,他可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FLISH 进行校验时,P0输出源码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉位高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故.在FLISH 进行校验时,P1口作为第八地址接受
15、.P2口位一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故.胖口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给地址“1”时,他利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出器特殊功能寄存器的内容。P2口在FLISH编程和校验时接受高八位地址信号和控制信号。P3口:P3口管脚是八个带内部上拉电阻的双向I/O口,可接受输出4个TTL门电流。当P3口写入“1后,他们被内部上拉为
16、高电平,并用作输入.作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口也作为AT89C51的一些特殊功能口,如下所示:P3口管脚备选功能:P3.0 RXD (串行输入口)P3。1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3。3 /INT1(外部中断1)P3。4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3。6 /WR(外部数据存储器写选通)P3。7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时
17、,地址所存允许的输出电平用于锁存地址的低位字节。在FLISH编程期间,此引脚用于输入编程脉冲.在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6.因此它可用作对外部输出的脉冲或用于定是目的。然而要注意的是:每当用作外部数据存储器是,将跳过一个ALE脉冲.如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高,如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的的选通信号。在有外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部存储器时,这两次有效的/PS
18、EN信号讲不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部存储器(0000HFFFFH),不管内部是否有程序存储器.注意加密方式1时,/EA将内部锁存为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP).XTAL1:反响放大振荡器的输入及内部时钟工作电路的输入XTAL2:来自反响振荡器的输出.3。I/O口引脚:a:P0口,双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用;b:P1口,8位准双向I/O口c:p2口,8位准双向I/O口,与地址总线(高8位)复用;d:P3口,8位准双向I/O口,双功能复用
19、。(2)传感器LM1042传感器由液位检测专用集成芯片LM1042和一组热探针组成,实现液位信号到电压信号的转换.LM1042使用热阻探针技术来测量非可燃性液体的液面高度,它能提供一正比于液位高度的输出,可进行单次或重复测量,所有控制热阻探针、检测热阻探针的短路和开路所需的监控电路都集成在LM1042芯片内部。此外该芯片还可采用其他传感器信号或线性输入作为输入信号.该器件采用16脚DIP封装。芯片的主要特点如下;集成有热阻探针的控制电路;可单次测量或重复测量;具有探针短路、开路检测功能;电源或控制输入端具有50V的瞬态电压保护电路;电源范围7.518V;内部有电源调节器;可在40+80的工作温
20、度范围内工作。(3)A/D转换芯片AD574AAD574A是美国模拟数字公司推出的单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动较零和自动极性转换功能,只需外接少量的阻容元件即可构成完整的A/D转换器,其主要功能特性如下:分辨率:12位非线性误差:小于1/12LBS或1LBS转换速率:25us模拟电压输入范围:0-10v和0-20v,0-5v和010v两挡四种电源电压:15v和5v数据输出格式:12位/8位芯片工作模式:全速工作模式和单一工作模式(4)数码管驱动芯片ICM7218ICM7218是INTERSIL公司
21、生产的一种性能价格比较高的通用8位LED数码管驱动电路,28脚双列封装,是一种多功能LED数码管驱动芯片,可与多种单片机接口使用。ICM7218的输出可直接驱动LED显示器,不需外接驱动电路,其构成的显示电路结构简单,使用方便.其引脚图和内框图如图24和2-5所示。图23ICM7218引脚图88静态RAM十六进制译码器段驱动器位驱动器振荡器控制器多位器写地址计数器ID0-ID7WR MODE 段码和小数点位选信号 图24 ICM7218内部结构 (5)蜂鸣器在单片机检测到液位超限时,将由单片机驱动蜂鸣器实现声音报警。(6)继电器继电器是具有隔离功能的自动开关元件,在我们设计当中主要来做自动控制
22、作用,我们采用+5V的直流电来控制220V的交流电,以达到控制水泵的作用,因为是在这里是以一种弱电来控制强电所以安装和使用的过程当中我们一定要注意用电安全注意事项.电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以
23、这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。其中光电耦合器是以光为媒介传输电信号的一种电一光一电转换器件.它由发光源和受光器两部分组成。把发光源和受光器组装在同一密闭的壳体内,彼此间用透明绝缘体隔离.发光源的引脚为输入端,受光器的引脚为输出端,在本设计当中发光源为发光二极管,受光器为光敏三极管。在本设计当中我们采用光电耦合器组成开关电路的作用,能够很好地将单片机信号稳定地送给继电器驱动继电器闭合。(7)水泵:定义:通常把提升液体、输送液体或使液体增加压力 , 即把原动机的机械能变为液体能量从而达到抽送液体目的的机器统称为泵。分类:
24、根据不同的工作原理可分为容积水泵、叶片泵等类型。容积泵是利用其工作室容积的变化来传递能量;叶片泵是利用回转叶片与水的相互作用来传递能量,有离心泵、轴流泵和混流泵等类型。工作原理:1 、容积式泵: 利用工作腔容积周期变化来输送液体。 2 、叶片泵 : 利用叶片和液体相互作用来输送液体。本系统中可选用普兰迪2202的水泵。2.3硬件原理图图25电源电路(1)电源部分本系统供电为市电AC220v,经变压器T1降为交流18v,经整流桥堆整流后得到脉动直流电压18v,再分别经三端稳压器LM7805、LM7815、LM7915分别得到VCC(+5v)、+15v和15v ,其中电解电容C1、C3、C22、C
25、5、C7、C9起滤波作用,C2、C4、C23、C6、C8、C10是旁路电容,起抑制干扰的作用。电源电路如图25所示.(2)传感器电路图26传感器电路传感器电路如图26 所示。在传感器电路中,7脚和10脚是用于探针2的调整,由于本系统只用到探针1,故只需将7脚和10脚接地即可;1脚是热阻探针输入端;5脚是探针故障检测端;6脚是电源端;3,4脚分别接PNP管的发射极和集电极用于给探针提供200MA的固定电流;16脚为模拟电压输出端,输出与液位成正比的模拟电压;12,13脚用来调整探针的测量周期;9,14脚外接两个电容作为探针的记忆电容,记忆探针的电压值.(3)A/D转换电路A/D转换电路如图27所
26、示。图2-7A/D转换电路本系统经过采用AD574A芯片,其中1脚为电源端;10脚输出标准10V电压经过变阻器R4连接到8脚给芯片内部解码网络供电;9脚为地端;12脚外接电阻网络用于调整零点,13脚为0-10V量程输入端;14脚为020V量程输入端,此系统不用;7,11脚为基准电压输入端;16-19脚接单片机P1。4-P1。7用于输出低4位,20-27脚接单片机P1。0P1。7用于输出高8位;28脚输出转换完成信号,6,3,4,5脚用于控制芯片的工作方式,2脚接地代表芯片用于12位转换。当传感器信号输入13脚,单片机控制6脚为高电平,3,4,5脚为低电平时,芯片使28脚输出低电平并启动12位A
27、/D转换,转换完成后置位28脚,允许单片机读取数据,当单片机检测到28脚为高电平,控制6脚为高电平,3,4,5脚为低电平读取高8位,再4,6脚为高电平,3,5脚为低电平读取低4位,这样就完成一次A/D转换和数据读取。(4)单片机外围电路及蜂鸣器电路单片机外接12MHZ晶振,在9脚外接手动复位电路;P0。3接蜂鸣器用于报警.电路如图28所示:图2-8单片机外围及蜂鸣器电路图2-9 ICM7218A显示电路(5)ICM7218A显示电路ICM7218A显示电路如图2-9所示.本系统显示用的4位七段数据管由数据管专用驱动芯ICM7218A驱动,27,3,1,25,2,24,26脚分别接数据管的ag,
28、15,16,23,20脚为位选,分别控制4位数码管的亮灭,ID07为数据线,接单片机P2口,WRITE,MODE是写控制位和模式控制位,分别接单片机P0。6,P0.7。(6)继电器控制水泵加水电路K1该电路由继电器RL1和闭合开关、光电耦合器、水泵、R7、R8、R9、R10以及D2、Q3等组成。当水位在低水位时单片机给P3.1送出一个高电平导通光电耦合器然后光电耦合器驱动Q3导致继电器闭合从而让220V的交流电接通使水泵加水.U3GDOUHEJUMP RELAY-SPDT123CON3R91KR152KR72KR1010KD7Q3NPN+5V+5V图2-10继电器控制水泵加水电路的原理图第三章
29、 系统软件设计3.1软件功能概述在系统的硬件确定以后,功能完善的软件能够很好的指导和协调硬件的工作,可使系统发挥其最大的作用,并且便利以后的更新换代升级。一个完整的系统都离不开对系统状态的监控,为了更好的协调软件,硬件各个部分正常工作就必须对整个系统进行严密监控.在本系统中定时器T0中断服务程序担任数据读取,处理和输出显示任务,每隔一定的时间对A/D转化进行一次采样,并进行相应的处理,在经过LED驱动电路来实现液位的显示。而主程序完成的任务相对简单,它只是完成初始化和启动T0定时的工作。显示液位高度传感器测量启动水泵继续供水启动A/D转换报警提示启动水泵关闭水泵停止供水报警提示关闭水泵结 束
30、开 始测量值高于上限值 测量值等于设定值测量值低于下限值YYYNNN图31主程序设计开 始 转换完成 STS=1? 写入控制字 读取高8位 计算液位值 修改控制字 逐微分离液位值并将各位放到ADV中 读取低4位 结 束 重装ID初值 T0 c+ 记时次数T0c清零 T0计时20次 AD读取子程序 启动AD转换 LED显示 判断报警 开 始 结 束 N N Y YY图32定时器T0中断服务子程序 图33 A/D转换子程序3。2 主程序设计主程序如图31所示。系统开始工作时,由LM1042传感器检测出水位深度,经A/D转换后,送入单片机与设定值相比较.如果测量值高于上限值则发出警报并关闭水泵;如果
31、测量值低于下限值则发出警报并启动水泵供水;如果测量值等于设定值则关闭水泵停止供水,并由显示水位值,否则启动水泵继续供水且显示水位值。返 回开 始ICM置于中作模式1写模式控制字ICM置于中作模式0 输出液位值8位完? 显 示YX图34 LED显示子程序3.3定时器T0中断服务程序T0中断服务程序完成的任务比较多,主要包括:每一秒启动一次A/D转换,读取并处理数据,显示和超限报警。T0中断服务程序流程图如图32所示:其中读取和处理数据放到A/D值读取子程序;显示放到LED显示子程序;由于液位是一种变化比较缓慢的量,故只需每隔一定时间检测一次即可满足需要,在此选定一秒检测一次,即1秒进行一次A/D
32、转换。由于本系统所用晶振为12MHZ,故定时器每计时一次用时为1/12*10(6)*12S=1us,因此定时器为16位定时器,故最多计时216=65536次,即计时65536US=65.536MS,此时用定时器T0定时50ms,则当定时器定时20次,共定时2050MS=1S,满足系统需要。据TC=M-T/T计数(T=50ms,T计数=1us,M=216)得TC=15536则定时器初值为TH0=3C,TL0=B0。超限预警则是通过把A/D转换值与上下限值比较得出液位是否有超限,若超限则输出高电平驱动蜂鸣器报警。3。4 A/D转换子程序A/D转换子程序主要完成A/D值的读取以及数据的处理。因为AD
33、574A进行A/D转换的过程中第28脚STS=0,转换完成后STS=1,故启动A/D转换后要先检测STS,若STS为高电平才进行A/D值读取操作,A/D值读取要先写读高8位控制字,然后读取高8位,再写入读低4位控制字然后读取低4位,将读取得到的12位数据用于计算得到液位值,然后再对液位值逐步分离,分别得到数码管显示饿百位,十位,个位和一位小数位,并将它们放到字符数组A/D中,用于LED显示,A/D转换子程序流程图如图33所示。3。5 LED显示子程序LED显示子程序主要完成液位值的显示,本系统采用数码管专用驱动芯品ICM7218驱动4位七段数码管用于液位值的显示,只需要把要显示的数据写入ICM
34、7218的RAM中即可,由于该芯品默认驱动八位数码管,必须写入8字节显示数据,而此系统只用低4位,只需把高4位置为随机数即可,故先通过ICM7218的控制位WR=0和MODE=1使芯片工作于方式1,写入控制字,然后使MODE=0使芯片工作于方式0,写入8字节数据即可完成液位值的LED显示。LED显示子程序流程图如图3-4所示。第四章 结论本次毕业设计主要是由LM1042内部转换电路网络转换为与液位成线性关系的电压信号,再由12位逐次逼近型A/D转换芯片AD574A将模拟信号转换为数字信号,实现液位信息的输入,AT89C51从AD574A读取液位信息后进行数据处理和超限判断,随后将处理过的数据输
35、出到数码管驱动芯片ICM7218的RAM中,由ICM7218实现数码管的静态显示,若液位超限则由单片机驱动蜂鸣器报警。通过这次设计,更加深入的理解和掌握了这方面的知识,对本专业的认识也更加深入,使自己对本专业更加的热爱,对专科四年的学习做了进一步的总结,更加明确了自己学习的目标和方向,由很多感悟和体验心得。而且,对工程设计的流程和步骤有了清晰的认识,为自己日后的学习和研究打下了坚实的基础。在这次系统设计过程中,我深刻的认识到要做好一个项目,不仅需要学好本身相关知识,还要广泛涉猎其他学科知识。不仅需要有坚实的知识,还要有坚强的意志和精益求精的精神,追求,只有这样才能做好工程项目。才能成为一名合格
36、的人才。参考文献1刘守义、钟苏。数字电子技术.西安电子科技大学出版社,2003。2 孙亮、杨鹏。自动控制原理。北京工业大学出版社,2010修订版。3 王新.微型计算机控制技术.中国电力出版社,2009.4 张毅刚、彭喜元.单片机原理及接口技术。人民邮电出版社,2008。5 梁森,欧阳三泰,王侃夫.自动检测技术及应用.北京:机械工业出版社,2010。6 莫正康.电力电子应用技术。机械工业出版社,2010。7李华.MCS51系列单片机实用接口技术.M.北京:北京航空航天大学出版社,1993。8王毅。单片机器件应用手册M。人民邮电出版社,1995.9王昌明.传感与测试技术M。北京:北京航空航天大学出
37、版社,2005。10李谋主.位置检测与数显技术M. 北京:机械工业出版社,1993。11张毅刚.MSC_51单片机实用子程序设计.哈尔滨工业大学出版社,2003。12占跃华.C语言程序设计。北京邮电大学出版社,2010。13涂时亮。单片机软件设计技术M.重庆:科学文献出版社重庆分社,1987。14刘存.现代检测技术M.北京:机械工业出版社,2005。158-bit Microcontroller With 4K Bytes Flash AT89C51。ATMEL,2000.致谢在此论文最终完成之际,向所有关心和帮助过我的老师、同学和朋友表示深深感谢!首先感谢信息工程系的领导和老师对我的关心和帮
38、助,感谢他们为我提供便利的条件,使我的毕业设计能顺利完成.同时,我要衷心感谢郭泉江老师,从毕业设计的开始到毕业论文的最终定稿,在此期间戴老师给了我细心的指导和帮助,郭老师渊博的知识、诚恳的为人、严谨的治学态度深深感染了我,让我终生受用。在此,我向我的指导老师致以诚挚的谢意和深深的敬意。此外,在我撰写论文期间,还得到了同班同学的支持和鼓励,我要特别感谢赖志颖和涂东方等同学,每当我遇到困难进行不下去的时候,他们都能耐心细致地给我讲解,帮助我度过了一个又一个难关,我的毕业设计和论文才得以顺利地进行,在此我衷心地对他们说声:”谢谢!”。附录附录一 主程序代码includereg51.h#define
39、A_DIN P1#define ICMOUT P2sbit Buzzer=P03;sbit ICMMODE=P06;sbit ICMWR=P07;sbit STS=P30;sbit RC0=P31;sbit A0=P32;sbit CS0=P33;sbit CE=P34;unsigned char A_DV0,A_DV1; /A_D转换得到值unsigned Hmax,Hmin; /上下限值unsigned char A_DV4; /当前液位值float U1,U2,H;void T0Run(void); /T0启动子程序void Icmdis(unsigned char A_DV); /LE
40、D显示子程序void A_DRun(void); /启动A_D转换子程序unsigned char A_DReA_D(void); /A_D转换子程序int AAA;bit Bjj(int AAA,unsigned Hmax,Hmin); /数值比较函数char T0c=0; /T0计时次数main() P0=0x07; /设置输入位 P1=0xff; P3=0x01; Hmax=3000; /上限值,根据实际情况设定 Hmin=10; /下限值 ,根据实际情况设定 T0Run();void T0Run(void) /T0启动子程序 IE=0x82; /启动中断T0 TMOD=0x01; /设
41、置T0工作于模式1 TH0=0x3C; TL0=0xB0; /送入计数初值 TR0=1; /启动定时器T0void time0(void) interrupt 1TH0=0x3C;TL0=0xB0; /重装计数初值T0c+;if(T0c19) /如果计时20次即1s T0c=0;A_DRun(); /启动A_D转换A_DReA_D(); Icmdis(A_DV); Bjj(AAA,Hmax,Hmin);void A_DRun(void) /启动A_D程序 RC0=1; /启动12位转换CS0=0;CE=1;A0=0;unsigned char A_DReA_D(void) int A_DV2;
42、float A_DV3;A0=0;RC0=0;A_DV1=A_DIN; /读取高8位A0=1;A_DV0=A_DIN; /读取低4位A_DV0=A_DV0/8;A_DV2=A_DV1*16+A_DV0; /计算A_D转换值A_DV3=(A_DV2U1)*H/(U2U1); /计算液位值AAA=A_DV310;A_DV0=AAA10; /逐位分离液位值A_DV1=(AAA100)/10;A_DV2=(AAA1000)/100;A_DV3=AAA/1000;A_DV1=A_DV10x80;/第一位显示小数点return A_DV4;void Icmdis(unsigned char A_DV) /LED显示子程序 char i;ICMWR=0;ICMMODE=1; /工作模式1ICMOUT=0xB0; /输出模式控制字ICMMODE=0; /工作模式0for(i=0;i4;i+)ICMOUT=A_DVi; /输出液位值 bit Bjj(int AAA,unsigned Hmax,Hmin) /数值比较函数 if(AAAHmax|AAAHmin) Buzzer=1; return 1; 附录二 电路图附录三 PCB版19