1、绪论- 1 -1 系统总体方案设计- 3 -第2章 系统硬件设计- 5 -2.1 核心芯片的选择- 5 -2.1.1 单片机AT89C51- 5 -2.1.2 传感器LM1042- 6 -2.1.3 A/D转换芯片AD574A- 8 -2.1.4 数码管驱动芯片ICM7218- 8 -2.2 硬件连接电路图- 10 -2.2.1 电源部分- 10 -2.2.2 传感器电路- 11 -2.2.3 A/D转换电路- 12 -2.2.4 单片机外围电路及蜂鸣器电路- 14 -2.2.5 显示电路- 14 -第3章 系统软件设计- 16 -3.1 软件功能概述- 16 -3.2 主程序设计- 16 -
2、3.3 定时器T0中断服务程序- 17 -3.4 A/D转换子程序- 20 -3.5 LED显示子程序- 20 -结论- 22 -参考文献- 23 -附录程序代码- 24 -致谢- 28 -摘 要 随着社会的进步、生产工艺和生产技术的发展,人们对液位的检测提出了更高的要求。而新型电子技术微电子技术和微型计算机的广泛应用于普及,单片机控制系统以其控制精度高,性能稳定可靠,设置操作方便,造价低等特点,被应用到液位系统的控制中来。本文介绍了用液位检测集成芯片LM1042和A/D转换芯片A/D574A,以及AT89C51单片机作为主控元件的液位检测的原理、电路及监控程序。用LM1042液位检测集成芯片
3、测量液位,具有测量精度高、速度快、可靠、稳定等优点;采用单片机来控制液位信息的采集,并且计算出真实液位值,通过运算判断是否超限报警,使检测具有更高的智能性。关键词:AT89C51; AD574A; 液位检测; LM1402 超限报警ABSTRACT Along with societys progress, the production technology and production technology development of liquid level detection, people put forward higher requirements. New electronic
4、 technology and microelectronics technology and micro computer are widely used in popularity, SCM control system with its high control accuracy, stable and reliable performance, convenient operation and low cost characteristics set, is applied to the liquid level control system to. This paper introd
5、uces the use of level detection integrated chip LM1042 and A / D conversion chip A / D574A, and AT89C51 MCU as the main control device of liquid level detection principle, circuit and monitoring program. Using LM1042 liquid level detection chip liquid level measurement, has high measurement precisio
6、n, speed, reliability, stability and other advantages; the use of single-chip microcomputer to control the level of information collection, and calculate the actual level, through the calculation and judgment of whether overrun alarm, enabling the detection with more intelligent.Key words:AT89C51; A
7、D574A; level measurement; LM1402 overrun alarm绪论本设计研究的内容和方法内容:设计一微小液位检测系统,本设计以MCS-51系列单片机为核心,采用常用电子器件设计,自行设计电源,选用合适的液位检测传感器,检测液位,数码管显示,当液位高度太高或太低时,报警。( 可采用中断方式设计)方法:本设计经过调研,收集且分析相关技术资料,综合考虑液位检测技术发展和液位检测系统特点的基础上,提出把液位检测显示同超限报警综合的解决方案。本系统采用AT89C51单片机作为处理器,主要完成以下工作:1.基于AT89C51的液位信息检测设计方案。2.传感器LM1042,A/
8、D转换芯片AD574A与单片机的接口电路设计。3.LED数码管驱动芯片ICM7218与单片机的接口电路及其与数码管的硬件连接。4.设计主要软件程序,完成软件设计。宿州学院毕业论文 1 系统总体方案设计1 系统总体方案设计系统总体设计框图如图1-1所示: 电 源AT89C51 传 感器A/D转换LED驱动数码管蜂鸣器图1-1 系统总体结构图该系统以AT89C51作为核心控制部件,外加传感器。一片A/D转换芯片和一片数码管驱动芯片来完成系统的预期任务,即液位的检测、显示和超限报警。LM1042外接的热阻探针温度的变化依赖于周围材料的热阻的大小,而空气和液体的热阻大小有很大差别,从而可以根据探针在液
9、体中的深度不同时电阻的不同检测出液位的深度信息,由LM1042内部转换电路网络转换为与液位成线性关系的电压信号,再由12位逐次逼近型A/D转换芯片AD574A将模拟信号转换为数字信号,实现液位信息的输入,AT89C51从AD574A读取液位信息后进行数据处理和超限判断,随后将处理过的数据输出到数码管驱动芯片ICM7218的RAM中,由ICM7218实现数码管的静态显示,若液位超限则由单片机驱动蜂鸣器报警。各部分功能:1. 电源部分提供+5V +15V -15V电压供系统各部分使用。2. 传感器LM1042实现液位信息到电压信号的转换。3. AD574A将传感器输出的电压信号经A/D转换后送到单
10、片机。4. AT89C51为处理器,实现液位信息的接收、数据处理、和输出到ICM7218.5. 蜂鸣器部分在单片机检测到液位超限是由单片机驱动实现声音报警。6. 单片机对液位数据处理后输出,由ICM7218驱动数码管显示。宿州学院毕业论文 2 系统硬件设计第2章 系统硬件设计2.1 核心芯片的选择2.1.1 单片机AT89C51AT89C51单片机引脚图如图2-1所示:图2-1 AT89C51引脚图AT89C51简介AT89C51主要参数如表所示:表2-1 AT89C51的主要参数型号存储器定时器I/O串行口中断速度(MH)其他特点EPROMROMRAM89C514K1282321624低电压
11、AT89C51含 E2PROM电可编闪速存储器。有两级或三级程序存储器保密系统,防止E2PROM中的程序被非法复制。不用紫外线擦除,提高了编程效率。程序存储器E2PROM容量可达20K字节。 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性如下:与MCS-51兼容4K字节可编程闪烁存储
12、器寿命:1000写/擦循环全静态工作:0HZ-24HZ三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路以单片机AT89C51为核心,配以看门狗电路、A/D转换模块、LED显示模块以及键盘模块等组成。AT89C51作为仪表的核心部分,主要完成以下功能:(1)对采集到的液位信号进行必要的处理,保证检测精度符合要求;(2)将5路液位信号送LED进行实时显示;(3)响应键盘输入,查看或修改用户设定的液位上、下限值。2.1.2 传感器LM1042传感器由液位检测专用集成芯片LM1042和一组热探针组成,实
13、现液位信号到电压信号的转换。LM1042使用热阻探针技术来测量非可燃性液体的液面高度,它能提供一正比于液位高度的输出,可进行单次或重复测量,所有控制热阻探针、检测热阻探针的短路和开路所需的监控电路都集成在LM1042芯片内部。此外该芯片还可采用其他传感器信号或线性输入作为输入信号。该器件采用16脚DIP封装。芯片的主要特点如下:集成有热阻探针的控制电路;可单次测量或重复测量;具有探针短路、开路检测功能;电源或控制输入端具有50V的瞬态电压保护电路;电源范围7.518V;内部有电源调节器;可在-40+80的工作温度范围内工作。探针短路开路检测器重复振荡器时基斜坡产生器控制逻辑与锁存电源调节器重复
14、振荡器+Vs接探针1探针驱动器+Vs2.6K12接地9CR电压输出1610增益调整输入VREG14CM探针27-+861115534C1VG=8控制输入+VsVREG图2-2 LM1042内部框图LM1042的内部框图如图2-2所示。主要包括以下7个部分:5个放大器、3个模拟开关;探头故障检测器;锯齿波发生器及电平检测器;重复振荡器;控制逻辑与锁存器;电源调节器;恒流源。LM1042的基本测量原理将热敏电阻探头的上、下两部分分别置于空气、液体中,给探头通上工作电流。由于空气的热阻远大于液体的热阻,使得上、下两部分的温度变化量、电阻变化量、及电压变化量均不相同,由此就能求出液面高度来。2.1.3
15、 A/D转换芯片AD574AAD574A是美国模拟数字公司推出的单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动较零和自动极性转换功能,只需外接少量的阻容元件即可构成完整的A/D转换器,其主要功能特性如下;分辨率:12位非线性误差:小于1/12LBS或1LBS转换速率:25us模拟电压输入范围:0-10v和0-20v,0-5v和0-10v两挡四种电源电压:15v和5v数据输出格式:12位/8位芯片工作模式:全速工作模式和单一工作模式2.1.4 数码管驱动芯片ICM7218ICM7218是INTERSIL公司生产的一种
16、性能价格比较高的通用8位LED数码管驱动电路,28脚双列封装,是一种多功能LED数码管驱动芯片,可与多种单片机接口使用。ICM7218的输出可直接驱动LED显示器,不需外接驱动电路,其构成的显示电路结构简单,使用方便。ICM7218用于16进制/10进制显示模式时的内部结构图如图2-4所示,其内部有一个88静态RAM,存放8位LED显示数据。在计数器的控制下,显示数据和相应的位信号依次出现在输出口上,驱动LED数码管显示。显示数据命令和控制字命令是靠MODE端口区别的。其引脚图和内框图如图2-3和2-4所示:ICM7218SEGeSEGeSEGbDPID6ID5ID7WRITEMODEID4I
17、D1ID0ID2ID3GRONDSEGaSEGgSEGdSEGfDIGIT3DIGIT6DIGIT7DIGIT4VCCDIGIT8DIGIT5DIGIT2DIGIR1图2-3 ICM7218引脚图88静态RAM写地址计数器控制器多位器振荡器位驱动器十六进制译码器段驱动器段码和小数点 位选信号ID0-ID7 WR MODE图2-4 ICM7218内部框图2.2 硬件连接电路图2.2.1 电源部分电源电路如图2-5所示:图2-5电源电路本系统供电为市电AC220v,经变压器T1降为交流18v,经整流桥堆整流后得到脉动直流电压18v,再分别经三端稳压器LM7805、LM7815、LM7915分别得到
18、VCC(+5v)、+15v和-15v ,其中电解电容C1、C3、C22、C5、C7、C9起滤波作用,C2、C4、C23、C6、C8、C10是旁路电容,起抑制干扰的作用。2.2.2 传感器电路传感器电路如图2-6所示:图2-6传感器电路在传感器电路中,7脚和10脚是用于探针2的调整,由于本系统只用到探针1,故只需将7脚和10脚接地即可;1脚是热阻探针输入端;5脚是探针故障检测端;6脚是电源端;3,4脚分别接PNP管的发射极和集电极用于给探针提供200MA的固定电流;16脚为模拟电压输出端,输出与液位成正比的模拟电压;12,13脚用来调整探针的测量周期;9,14脚外接两个电容作为探针的记忆电容,记
19、忆探针的电压值。2.2.3 A/D转换电路A/D转换电路如图2-7所示:图2-7A/D转换电路本系统经过采用AD574A芯片,其中1脚为电源端;10脚输出标准10V电压经过变阻器R4连接到8脚给芯片内部解码网络供电;9脚为地端;12脚外接电阻网络用于调整零点,13脚为0-10V量程输入端;14脚为0-20V量程输入端,此系统不用;7,11脚为基准电压输入端;16-19脚接单片机P1.4-P1.7用于输出低4位,20-27脚接单片机P1.0-P1.7用于输出高8位;28脚输出转换完成信号,6,3,4,5脚用于控制芯片的工作方式,2脚接地代表芯片用于12位转换。当传感器信号输入13脚,单片机控制6
20、脚为高电平,3,4,5脚为低电平时,芯片使28脚输出低电平并启动12位A/D转换,转换完成后置位28脚,允许单片机读取数据,当单片机检测到28脚为高电平,控制6脚为高电平,3,4,5脚为低电平读取高8位,再4,6脚为高电平,3,5脚为低电平读取低4位,这样就完成一次A/D转换和数据读取。2.2.4 单片机外围电路及蜂鸣器电路单片机外接12MHZ晶振,在9脚外接手动复位电路;P0.3接蜂鸣器用于报警。电路如图2-8所示:图2-8单片机外围及蜂鸣器电路2.2.5 显示电路ICM7218A显示电路如图2-9所示:图2-9 ICM7218A显示电路本系统显示用的4位七段数据管由数据管专用驱动芯ICM7
21、218A驱动,27,3,1,25,2,24,26脚分别接数据管的ag,15,16,23,20脚为位选,分别控制4位数码管的亮灭,ID07为数据线,接单片机P2口,WRITE,MODE是写控制位和模式控制位,分别接单片机P0.6,P0.7。宿州学院毕业论文 3 系统软件设计第3章 系统软件设计3.1 软件功能概述在系统的硬件确定以后,功能完善的软件能够很好的指导和协调硬件的工作,可使系统发挥其最大的作用,并且便利以后的更新换代升级。一个完整的系统都离不开对系统状态的监控,为了更好的协调软件,硬件各个部分正常工作就必须对整个系统进行严密监控。在本系统中定时器T0中断服务程序担任数据读取,处理和输出
22、显示任务,每隔一定的时间对A/D转化进行一次采样,并进行相应的处理,在经过LED驱动电路来实现液位的显示。而主程序完成的任务相对简单,它只是完成初始化和启动T0定时的工作。3.2 主程序设计在本系统中主程序完成的任务相对简单,它只是完成初始化和启动T0定时的工作。开始 初始化读取限值启动IO定时结束图3-1主程序设计3.3 定时器T0中断服务程序T0中断服务程序完成的任务比较多,主要包括:每一秒启动一次A/D转换,读取并处理数据,显示和超限报警。T0中断服务程序流程图如图3-2所示:其中读取和处理数据放到A/D值读取子程序;显示放到LED显示子程序;由于液位是一种变化比较缓慢的量,故只需每隔一
23、定时间检测一次即可满足需要,在此选定一秒检测一次,即1秒进行一次A/D转换。由于本系统所用晶振为12MHZ,故定时器每计时一次用时为1/12*10(-6)*12S=1us,因此定时器为16位定时器,故最多计时216=65536次,即计时65536US=65.536MS,此时用定时器T0定时50ms,则当定时器定时20次,共定时20*50MS=1S,满足系统需要。据TC=M-T/T计数(T=50ms,T计数=1us,M=216)得TC=15536则定时器初值为TH0=3C,TL0=B0。超限预警则是通过把A/D转换值与上下限值比较得出液位是否有超限,若超限则输出高电平驱动蜂鸣器报警。开 始重装T
24、0初值 T0c+T0计时20次?计时次数T0c清零启动AD转换AD值读取子程序LED显示判断报警返 回YN图3-2定时器T0中断服务子程序开 始转换完成STS=1?写入控制字读取高8位修改控制字读取低4位计算液位值返 回YN逐位分离液位值并将各位放到ADV中图3-3 A/D转换子程序3.4 A/D转换子程序A/D转换子程序主要完成A/D值的读取以及数据的处理。因为AD574A进行A/D转换的过程中第28脚STS=0,转换完成后STS=1,故启动A/D转换后要先检测STS,若STS为高电平才进行A/D值读取操作,A/D值读取要先写读高8位控制字,然后读取高8位,再写入读低4位控制字然后读取低4位
25、,将读取得到的12位数据用于计算得到液位值,然后再对液位值逐步分离,分别得到数码管显示饿百位,十位,个位和一位小数位,并将它们放到字符数组A/DV中,用于LED显示,A/D转换子程序流程图如图3-3所示:3.5 LED显示子程序LED显示子程序主要完成液位值的显示,本系统采用数码管专用驱动芯品ICM7218驱动4位七段数码管用于液位值的显示,只需要把要显示的数据写入ICM7218的RAM中即可,由于该芯品默认驱动八位数码管,必须写入8字节显示数据,而此系统只用低4位,只需把高4位置为随机数即可,故先通过ICM7218的控制位WR=0和MODE1使芯片工作于方式1,写入控制字,然后使MODE=0
26、使芯片工作于方式0,写入8字节数据即可完成液位值的LED显示。LED显示子程序流程图如图3-4所示开 始ICM置于工作模式1写模式控制字ICM置于工作模式0输出液位值显 示返 回YN8位完?图3-4 LED显示子程序结论本次毕业设计主要是为了改善现有液位检测系统精度不高,速度慢,智能化程度低的缺点,给生产提供精度更高,速度更快,更加智能的液位检测系统。整个系统实现了预期的目标,达到了控制的高精度,高速,智能型的要求。1.高精度:使用LM1042Z作为长安其能够输出与液位成正比的电压信号,使用AD574A作为A/D转换芯片,来达到提高精度的目的,LM1042作为能够输出与液位成正比信号的电压信号
27、,AD574A是12位A/D转换芯片,并非线性误差仅为1LBS。2.高速:使用AD574A作为A/D转换芯片,其转换时间仅为25US。3.智能型:单片机AT89C51读取液位信息经过处理得到液位高度,并判断是否超限,若超限则驱动蜂鸣器报警,提高系统智能化程度。但是本设计也存在不少的不足,由于电源的波动,传感器的电气特性等问题,使得A/D转换结果有时波动很大,这样就可能出现误报警。由于时间的关系,系统中本应具有的根据液位变化自动调节液位的功能没有实现,而只是实现了超限报警。由于上述缺点的存在,此系统不是很完善,还有待进步改进和完善。通过这次设计,更加深入的理解和掌握了这方面的知识,对本专业的认识
28、也更加深入,使自己对本专业更加的热爱,对本科阶段四年的学习做了进一步的总结,更加明确了自己学习的目标和方向,由很多感悟和体验心得。而且,对工程设计的流程和步骤有了清晰的认识,为自己日后的学习和研究打下了坚实的基础。在这次系统设计过程中,我深刻的认识到要做好一个项目,不仅需要学好本身相关知识,还要广泛涉猎其他学科知识。不仅需要有坚实的知识,还要有坚强的意志和精益求精的精神,追求,只有这样才能做好工程项目。才能成为一名合格的人才。参考文献【1】谭浩强,张基温.C语言程序设计教程第三版.北京:高等教育出版社.2006.【2】Complete PCB Design Using OrCad Captur
29、e and Layout.US.2007.【3】于文俊.8051 C语言实习.北京:中国水利水电出版社.2003.【4】胡汉才.单片机原理及其接口技术(第二版).北京:清华大学出版社.2004.【5】沙占友.集成智能化温度传感器原理与应用.北京:电子工业出版社.2004.【6】王伟,李树荣.基于8051单片机温度采集及无线传送.现代电子技术.2011,01:146-150.【7】李娟,肖传强,于文娟.用汇编语言实现智能芯片SHT15对温湿度的测量.微计算机信息.2005,03:1-3.【8】汪玉凤,李善. LED显示驱动器ICM7218在配料系统中的应用.仪器仪表用户.2005,03:2-3.
30、【9】喻彪,刘开昌,赵文成.多传感器技术在航空燃油质量检测中的应用.国外电子测量技术.2007,10:21-21.【10】宿元斌.集成液位传感器LM1042及其应用.电子元器件应用.2006,09:104-105.宿州学院毕业论文 附录附录程序代码#include#define 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_DV
31、1; /A_D转换得到值unsigned Hmax,Hmin; /上下限值unsigned char A_DV4; /当前液位值float U1,U2,H;void T0Run(void); /T0启动子程序void Icmdis(unsigned char A_DV); /LED显示子程序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=0x0
32、7; /设置输入位 P1=0xff; P3=0x01; Hmax=3000; /上限值,根据实际情况设定 Hmin=10; /下限值 ,根据实际情况设定 T0Run();void T0Run(void) /T0启动子程序 IE=0x82; /启动中断T0 TMOD=0x01; /设置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_
33、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;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_DV2-U1)*H/(U2-U1); /计算液位值AAA=A_DV3*10;A
34、_DV0=AAA%10; /逐位分离液位值A_DV1=(AAA%100)/10;A_DV2=(AAA%1000)/100;A_DV3=AAA/1000;A_DV1=A_DV1|0x80; /第一位显示小数点return A_DV4;void Icmdis(unsigned char A_DV) /LED显示子程序 char i;ICMWR=0;ICMMODE=1; /工作模式1ICMOUT=0xB0; /输出模式控制字ICMMODE=0; /工作模式0for(i=0;iHmax|AAAHmin) Buzzer=1; return 1; 致谢在此论文撰写过程中,要特别感谢我的导师的指导与督促,同时感谢她的谅解与包容。没有老师的帮助也就没有今天的这篇论文。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。在此,向各学术界的前辈们致敬!感谢我的同学和朋友,在我写论文的过程中给予了我很多素材,还在论文的撰写和排版等过程中提供热情的帮助。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!