《多功能智能化液位检测装置课程设计.doc》由会员分享,可在线阅读,更多相关《多功能智能化液位检测装置课程设计.doc(28页珍藏版)》请在三一办公上搜索。
1、烟台南山学院 装订线毕 业 论 文二一三年五月传感器课程设计液位智能仪 专业班级: 姓 名: 指导教师: 摘 要本设计一种多功能智能化液位检测装置,采用ATmega8作为硬件电路核心,以圆柱形电容探头为液位检测传感器,利用电容频率转换原理将电容变化为频率变化,利用单片机检测频率,软件计算液位高度。本装置具有机械去液面波动,用软件进行温度修正、线性校正、用户自校正,通信和多液体选择等功能。本文主要创新之处是提出一种适合于波动液面液位检测的智能液位仪,具有温度补偿、用户自校正和通信等功能。本文设计了高度为100cm的柱形电容液位检测传感器,电容器具有结构简单,电路实现容易,利用555振荡电路实现了
2、电容到频率的转换,利用程序实现频率到高度转换,理论正确可靠,推算过程合理,利用软件分段修正减小了线性误差。在电容的两端装有液位缓冲器,采用机械的方式减小液面波动。由实验测试可知,本液位检测装置性能稳定,检测可靠,测量精度达到1cm, 分辨率可0.1cm,达到车载式喷雾机液位检测的要求。利用此方案可根据需要设计各种量程的液位检测装置,适用性较广。 关键词:电容式液位计;频率转换;频率测量 Abstract This design a kind of multi-functional intelligent liquid level detection device, using ATmega8
3、as core, the hardware circuit in cylindrical capacitance sensor for liquid level detection sensor, using capacitance frequency conversion principle of capacitance to frequency changes, using single-chip microcomputer testing frequency, the level of software calculation. This device has the machinery
4、 to liquid level fluctuation, temperature correction, linear correction by software, user self correction, communication and more liquid, and other functions. Main innovation of this paper is proposed a kind of suitable for the liquid level fluctuation in intelligent liquid level meter liquid level
5、detection, temperature compensation, user self-calibration is communication. This article design the height is 100 cm of cylindrical capacitance liquid level detection sensor, the capacitor has the advantages of simple structure, circuit implementation is easy, using 555 oscillation circuit for capa
6、citance to frequency conversion, using the program to realize frequency conversion to the height, is correct and reliable, reasonable calculation process, using piecewise linear error correction reduces the software. In the ends of the capacitor is equipped with liquid level buffers, adopt the way o
7、f mechanical reduce liquid level fluctuation. The experimental test shows that the liquid level detection device has stable performance, reliable detection, measurement accuracy is 1 cm, resolution to 0.1 cm, to suit the requirements of vehicular spray machine for liquid level detection. Using this
8、scheme can be according to the need to design various range of liquid level detection device, has a wide applicability.Keywords:Capacitive liquid level meter;Frequency conversion;Frequency measurement目 录绪 论 11. 选题背景及设计指导思想21.1课题背景21.2指导思想22. 引言33. 电容式液位传感器结构与测量原理33.1.1电容式液位传感器的工作原理33.1.2传感器的组成43.1.3
9、测量原理43.2将电容转化成电信号部分53.3 电信号放大电路设计53.4A/D转换器设计63.5控制电路的设计73.6 显示电路设计83.7软件系统的设计94. 测量电路设计114. 1 测量电路114.2整流电路144.3放大电路145. 误差分析15 5. 1 机械结构参数的影响15 5. 2 测量电路的影响156. 结 论16致 谢17参考文献18附录一:系统总图19附录二:程序清单20绪 论 河流、水库或容器的液位可以通过测量浸在液体内两电极间的电容而进行监控。使用电容式传感器进行液位测量,具有以下优点:低成本(即对于传感器有比较成熟的技术)、低功耗、高线性度、对应用场合的几何形状有
10、较高的适应性。 电容式液位传感器的工作原理取决于液体类型。对于导电液体,为了避免短路,两个传感器电极中至少有一个是绝缘的。在气-液分界面以下,液体表现为导体,因此,电容的电解质仅仅是绝缘电极。在气-液分界面以上,电解质就是绝缘电极与电极之间的空气,因而产生更小的电容。另一方面,对于非导电液体,电极不需要绝缘。在气-液分界面以下,电解质是液体(其介电常数高于空气)。而分界面以上,则是空气。对于两种类型的液体,随着液位的升高,在气液分界面以下的电极的面积也就增加,进而导致电容增大。电容式传感器可分为两类:浮力电容式传感器(即该传感器的电极都不接地),还有接地电容式传感器(即传感器两个电极中的一个是
11、接地的)。前者使用范围更大,应用更广泛,因为能抵抗杂散电容干扰的接口电路可以对它们的数据进行读取。然而,由于浮力电容式传感器的安全原因或者操作条件的限制,接地电容式传感器在一些领域中还是有一些应用的。例如:接地金属容器中导电液体的液位的测量。文献【6】公布了一个0.6mm的非线性误差线(0.1%)和一项对于60cm的测量范围允许有0.1mm的非线性误差的决议。另一方面,文献【7】公布了一个1%的非线性误差线和一项对于70cm的测量范围允许有1mm的非线性误差的决议。在许多工业应用中,传感器是远离电子器件的。例如:在油库底部的水位测量。在这些情况下,为了减少外部噪声的影响干扰,传感器用屏蔽电缆连
12、接到接口电路。对于接地电容传感器,普通的被动屏蔽(防护罩连接地面)是不合适的,因为电缆的附加电容与电容器的电容同时存在,而且电缆的附加电容能够远大于由于环境条件引起的传感器的电容。为了减少这种附加电容的影响,接地电容式传感器一般采用有源屏蔽技术连接到接口电路。 本文介绍了以远程电容式传感器为基础的液位测量系统的设计和实施。它提供了在有源电路中对因附加元件产生的影响的详细分析该系统已经通过在接地金属容器中测量液体导电水平的测试。第1章 选题背景及设计指导思想1.1课题背景在工业自动化生产过程中,为了实现安全快速有效优质的生产,经常需要对液位进行精确测量,继而进行自动调节、智能控制使生产结果更趋完
13、善。通常进行液位测量的方法有二十多种,分为直接法和间接法。直接液位测量法是以直观的方法检测液位的变化情况,如玻璃管或玻璃板法。然而随着工业自动化规模的不断扩大,因其方法原始、就地指示、精度低等逐渐被间接测量方法取代。目前国内外工业生产中普遍采用间接的液位测量方法,如浮子式、液压式、电容法、超声波法、磁致伸缩式、光纤等。其中电容式液位测量价格低廉、结构简单,是间接测量方法中最常用的方法之一。车用燃油油位的计量,从而向当今高精度、数字化、集成化、智能本设计采用一种与介质无关的电容式液位测量方法,解决了传统电容测量与被测介质有关的技术难题。它可以应用于动态液位测量,尤其是在被测液体本身介质常数和液位
14、,随时间和环境等因素容易发生变化的场合,如化的科学技术全面发展更迈进了一步,对满足石油化工等液位检测领域的迫切需求具有重大的理论和应用价值,前景十分广阔。消除电容式液位测量方法中介质介电常数的因素是关键,设计符合测量方法的电容极板,通过电容电压转换电路处理为直流电压信号,由数据采集卡采集后送入单片机或计算机,最终实现算法的设计。其中电容极板设计时需注意消除和减小边缘效应和寄生电容的影响,同时要保证平板电容良好的绝缘性能和抗外界干扰性。最后在整体设计和理论分析的基础之上,从硬件各部分进行具体的设计,包括硬件电路和各环节的信号量匹配等。通过理论计算和数据分析,验证了此液位仪具有良好的性能,达到了要
15、求的技术指标,同时指出了需要改进和完善的地方。1,2指导思想使用电容式液位传感器,设计传感器放大电路,将液位信号转变为标准电信号,将液位值显示出来(液位高度2.5米,显示精度1厘米)。再设计控制电路,控制料罐的进口阀门开度,使其能够稳定在设定的高度值。具体要求1)设计以测量显示部分电路为主;2)要绘制原理框图;3)绘制原理电路;4)要有必要的计算及元件选择说明;5)提供元件清单。第2章引言电容式传感器利用了非电量的变化转化为电容量的变化来实现对物理量的测量。电容式传感器广泛用于位移、振动、角度、加速度等机械量的精密测量,并正逐步扩大到压力、差压、液面(料位)、成分含量等方面的测量。电容式传感器
16、具有以下几个特点:1)机构简单,体积小,分辨力高;2)可实非接触式测量;3)动态效应好。电容式传感器的固有频率很高,因此动态效应时间短,且其介质耗损小,可使用较高的工作频率,可用于测量高速变化的参数;4)温度稳定性好。它本身发热量极小;5)能在高温、辐射和强振动等恶劣条件下工作6)电容量小,功率小,输出阻抗高,因此,负载能力差,易受外界抗干扰产生不稳定现象。第3章 电容式液位传感器的结构与测量原理3.1.1电容式液位传感器的工作原理电容式传感器是把被测的非电量转换为自身电容量变化的一种传感器。这些被测量是用于改变组成电容器的可变参数而实现其转换的。电容式传感器的基本工作原理可以用最普通的平行极
17、板电容器来说明。两块相互平行的金属极板,当不考虑其边缘效应(两个极板边缘处的电力线分布不均匀引起电容量的变化)时,其电容量为: 公式中 电容极板间介质的介电常数; A 两平行板所覆盖的面积; d 两平行板之间的距离。 因此只要改变其中的一个参数,就会引起电容量的变化,根据这一电容结构关系可构成变极距电容传感器,变面积型电容传感器和变介质型传感器、用于测量液位的电容式传感器。是利用容器中的物料为恒定的介电常数时,极间电容正比于液位的原理而构成的,并应用电子学方法测量电容值,从而探测液面位置信息。特点是液位测量只与电容结构有关,与物料的密度无关 根据这一特点,可采用圆筒形结构构成变面积型的液位传感
18、器,这种传感器结构的探头是由这两个电极极板构成,通过气、液或料相介质的高度不同引起极间电容改变来探测物面位置的。其结构十分简单轻巧,便于安装、维护与使用。3.1.2传感器的组成图3-1-2 为传感器部分的结构原理图。它主要是由细长的不锈钢管(半径为R1 ) 、同轴绝缘导线(半径为R0 ) 以及其被测液体共同构成的金属圆柱形电容器构成。该传感器主要利用其两电极的覆盖面积随被测液体液位的变化而变化, 从而引起对应电容量变化的关系进行液位测量。图3-1-2传感器原理图3.1.3 测量原理由图1 可知, 当可测量液位H = 0 时, 不锈钢管与同轴绝缘导线构成的金属圆柱形电容器之间存在电容C0 , 根
19、据文献得到电容量为: (1) 式中, C0 为电容量, 单位为F ; 0 为容器内气体的等效介电常数,单位为F/ m; L 为液位最大高度; R1 为不锈钢管半径;R0 为绝缘导线半径, 单位为m。当可测量液位)为H 时, 不锈钢管与同轴绝缘电线之间存在电容CH : (2)式中, 为容器内气体的等效介电常数, 单位为F/ m。因此, 当传感器内液位由零增加到H 时, 其电容的变化量C 可由式(1) 和式(2) 得 (3)由式可知, 参数0 , , R1 , R0 都是定值。所以电容的变化量C 与液位变化量H 呈近似线性关系。因为参数0 , , R1 , R0 , L 都是定值, 由式(2) 变
20、形可得:CH = a0 + b0 H ( a0 和b0 为常数) (4)。可见, 传感器的电容量值CH 的大小与电容器浸入液体的深度H 成线性关系。由此, 只要测出电容值便能计算出水位。3.2将电容转化成电信号部分 采用运算法测量电路来转化。该电路由传感器和固定的标准电容以及运算放大器A组成,如图3-2所示。 图3-2 运算放大器测量电路原理图3.3 电信号放大电路设计由于从传感器得出的电压一般在030mv之间,太小不易测量,所以要通过放大电路进行放大,如图3-3所示,采用最基本的比例运算反放大电路. 图3-3 比例放大电路要将30mV电压放大成5V,根据公式U=-(R1/R2)Uo,所以选择
21、R1=500K,R2=3K,R4=R1/R2,后边的是一个反相器,把第一个运放得到的电压反相成正的,其中R3=R5=1K,R6=R3/R5。3.4 A/D转换器设计本文采用A/D转换器ADC0809。ADC0809是CMOS单片型逐次逼近式AD转换器,由于输出级有8位三态输出锁存器,因而0809的数据输出端可以直接与单片机的数据总线连接。ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变
22、为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上.ADC0809转换是采用逐次比较的方法完成A/D转换的,由单一的+5V供电,片内带有锁存功能的8路选一的模拟开关,由A,B,C引脚的编码来确定所选通道。0809完成一次转换需要100us左右,输出具有TTL三态锁存缓冲器,可直接连到MCS-51的数据总线上,通过适当的外接电路,0809可对0-5V的模拟信号进行转换。ADC0809与单片机的接口电路图3-4 ADC0809与单片机的接口电路3.5 控制电路的设计 控制电路在这里起到非常重要的作用,在水
23、位测量中测量到水罐中水位的高度,当水位高于2.5m水位时,电动机停转,水泵停止对水罐供水;当水位低于2.5m水位时,电动机起转,水泵开始对水罐供水。其电路图如图3-5所示。图3-5 控制电路电路图3.6 显示电路设计发现需要4位的LED足可满足本设计的显示精度要求,为了减少所需的I/O数量,降低成本,采用动态显示控制方式。通过对显示接口电路的综合分析,发现测距仪利用串行输入BCD码十进制译码驱动显示器件MC14499来完成与单片机系统的显示接口较为简单可靠。用MC14499设计的LED显示器动态显示接口电路如图3-6所示。图3-6 MC14499设计的LED显示器动态显示接口电路用MCS -
24、51系列单片机作为控制核心的水位测量计,其数据输出既可以通过单片机的通用I/O口输出,也可以通过单片机的串口用串行方式输出。这里假设使用的单片机是8051 ,单片机的P1口为数据输出口, 显示器采用共阴极8段LED, 显示位数为4位,由于一片MC14499 可以驱动4 个LED 显示器,因此该显示接口只需用一片MC14499和单片机连接。图是该动态显示接口的原理图。P1.0用来向MC14499 发送数据,P1.1用来向MC14499发送时钟脉冲,P1.2用于控制单片机输出数据向MC14499串行输入(当P1.2 = 0时,允许MC14499输入数据)。反相器74LS06作为显示器的位驱动, 8
25、 个47的电阻是LED 的限流电阻, 3个5.1k的电阻是上拉电阻,使单片机8031输出电平与MC14499输入电平相兼容。由于MC14499 具有输入自动锁存功能,而串行输入一帧数据又需要一定的时间,所以LED显示的数据不会出现闪烁现象。3.7 软件系统的设计 软件主要由主程序、定时中断程序、外中断程序组成。其中主程序完成参数的初始化,中断的管理,结果的显示等工作。主程序流程图如下:程序运行开要初始化各种参数,可以默认液位设定值等,之后如果要进入液位设定的话就按SET按键进入液位设定模式,然后进行比较,看当前的液位有没有超过默认的极限值,如果超过了极限值,通过按键UP或DOWN进行液位调节,
26、直至液位到达正常范围;没有超过极限值就正常显示。报警80%开始初始化取液位值显示液位值是否打开供水阀取液位值是90%取液位值是显示液位值30%30%报警数据测试与误差修正在实际设计中, 取L为100cm,对水位进行实测,当无液时的频率=279.0KHz, 100cm高液位时=3.312KHz,频率最大时小于单片机的最高频率测量范围,频率最小时也不至于降低测频精度。经过测试,实际高度与测试结果如表1。表1 液位实际高度与测试结果比较 (测试水温20)实际值0151015202530354245测量值00.63.26.510.715.621.927.533.541.946.1实际值50556065
27、707580859095100测量值52.759.065.873.378.383.888.994.098.1101.3104.7由上表中可知,测量结果是一条波动曲线, 在0cm、20cm处误差较小,为两线的交点,低误差为负,高端误差为正,90cm以后误差逐渐减小,预计在110cm处达到交点。经分段修正后,测量结果如表2。表2 修正后液位实际高度与测量结果比较(测试水温20)实际值0151015202530354545测量值015.210.414.819.524.730.135.039.644.6实际值50556065707580859095100测量值50.154.859.864.570.37
28、5.480.485.289.395.099.8由表2可知,经过修正后,误差小于0.5cm,分辨率为0.1cm。抽样检测不同水温的不同高度,误差都在1.0cm以内,符合设计要求。第4章 测量电路设计4.1测量电路本设计采用二极管T形网络(双T电桥)如下图所示。它是利用电容器充放电原理组成的电路。其中e是高频电源,提供幅值电压为E的对称方波;C1和C2为差动电容传感器;D1和D2为两只理想二极管;R1和R2为固定电阻,且R1=R2;RL 为负载电阻(或后接仪器仪表的出入电阻)。 该电路的工作原理如下:当电源为正半周时,二极管D1导通而D2截止,其等效电路如图(b)所示。此时电容C1很快充电至E,电
29、源e经R1以电流I1向负载RL供电;与此同时,电容C2经R2和RL放电,放电电流I2(t)。流经RL的电流IL(t)是I1和I2(t)之和,他们的极性如图(b)所示。当电源e为负半周时,二极管D2导通而D1截止,其等效电路如图(c)所示。此时电容C1很快充电至E,电源e经R1以电流I1向负载RL供电;与此同时,电容C2经R2和RL放电,放电电流I2(t)。流经RL的电流IL(t)是I1和I2(t)之和,他们的极性如图(c)所示。利用电路分析可以求得电源e的负半周内电路的输出为:式中,为电容C1的放电时间常数。同理,在电源e的正半周期内电路的输出为式中,为电容C2的放电时间常数。由此可得输出电流
30、的平均值为式中,f为电源e的频率;k1、k2为系数,输出电压的平均值为适当选择电路中元件的参数以及电源频率f,则上式中指数项所引起的误差可以小于1%。式中,k为常数,为电容传感器测量时的电容变化量。二极管T形网络电路特点:(1)e,C1 ,C2接地 ;(2)工作电平高,D1 ,D2工作在线性区灵敏度与电源幅值和频率有关;(3)输出电压高;(4)输出阻抗与C1 、C2无关,与R1 ,R2同数量级,可用mA或mA表直接测量;(5)RL影响电容放电速度,宜小些,RL1kW时,上升时间20ms,可测量动态信号 。4.2整流电路 将模拟电压转化为数字信号所用的转换芯片为ADC0809,它仅能将单极性电压
31、转换为数字量,所以我们将测量电路转换后的电压先经整流电路、滤波器和稳压电路将输入电压变为单极性电压供给放大电路。4.3放大电路由于从传感器得出的电压一般在030mv之间,太小不易测量,所以要通过放大电路进行放大,如图4-3所示,采用最基本的比例运算反放大电路.图4-3放大电路要将30mV电压放大成10V,根据公式U=-(R1/R2)Uo,所以选择R1=1000K,R2=6K,R4=R1/R2后边的是一个反相器,把第一个运放得到的电压反相成正的,其中R3=R5=2K,R6=R3/R5。第5章 误差分析5.1机械结构参数的影响从公式与分析方法中可以看出:传感器的电容量是结构参数的函数,温度的变化会
32、引起内外圆筒直径的变化,从而引起电容量的变化,导致测量误差,所以,选用制作电容的材料的线膨胀系数应足够小,如,选用铝合金材料,线膨胀系数为230 xl0 ,可以满足使用要求;如果采用合适的非金属材料,其变形系数会更小。在高精度要求的场合下,还可以通过测量温度,进行温度修正,以达到更高的测量精度。为了减小加工和装配对电容量与液位关系的影响,应尽量提高加工精度,保证二圆筒的直径精度,特别是装配时要保证二筒轴线的平行度。5.2测量电路的影响由于测量电路电缆存在分布电容,这种即使每米几pF的影响要获得高的测量精度也是不能接受的。因此,在使用屏蔽电缆防止引入干扰的同时,还应采取驱动屏蔽技术,使电缆的影响
33、降到最小。第6章 结论当被测介质物位变化时,传感器电容量发生相应变化,电容量的变体 Cx 通过转换器转换成与物位成比例的直流电压信号,间接测量出液位H1。经过本课程设计,总的来说基本完成了课设的任务要求,使理论与实践相结合,学到了很多知识。设计的过程也是专业知识的学习过程,而且是更生动、更切实、更深入的专业知识的学习。首先,一个设计是结合科研课题,把学过的专业知识运用于实际,在理论和实际结合过程中进一步消化、加深和巩固所学的专业知识,并把所学的专业知识转化为分析和解决问题的能力。其次,在搜集材料、调查研究、接触实际的过程中,既可以印证学过的书本知识,又可以学到许多课堂和书本里学不到的活生生的新
34、知识。此外,我们在这种自己动手的设计中,对所学专业的某一侧面和专题作了较为深入的分析。在此我感谢老师对我的帮助和鼓励!总之,这次的课程设计对我来说说是一个很好锻炼自己的机会! 致 谢本论文是在韩彩娟指导老师的悉心指导下完成的。导师严谨的治学态度和谆谆教诲,就是一盏明灯,照亮我前进的方向,让我逐渐成长起来。值此论文完成之际,向您致以最深的感谢!韩老师学识渊博,具有求实的、严谨的治学态度和勤奋、创新的钻研精神使我受益匪浅,并将奉为我终身学习的楷模,老师高尚的敬业精神,平易近人的生活态度,及对我谆谆教诲,都将对我今后的学习、工作、生活产生深远影响。老师踏实敬业的实干精神、高尚纯洁的人格魅力给我留下了
35、深深的印象,是我学习的楷模和人生的榜样,时刻鞭策着我不断进步,在此,把特别的敬意和谢意献给韩老师,祝韩老师工作愉快,身体健康! 最后我还要感谢我亲爱的父母,正是他们平凡而又伟大的爱,指引着我热爱生活、热爱学习。亲人们的爱和奉献促使我在人生的道路上奋发进取、努力学习。永远祝愿他们生活愉快,身体健康。 参考文献【1】张国雄.测控电路(第三版).机械工业出版社【2】何道清、张禾.传感器与传感器技术(第二版).科学出版社【3】胡寿松.自动控制原理(第五版).科学出版社【4】阎石.数字电子技术基础(第五版).北京:高等教育出版社【5】童诗白、华成英编.模拟电子技术基础(第四版).北京:高等教育出版社【6
36、】唐云龙.新型浮筒液位计校验仪的设计开发;(硕士学位论文).大连.大连理工大学.【7】杨玉玲.基于磁滞伸缩液位传感器的船舶液位/容积精确监控系统;(硕士学位论文).上海.上海海事大学【8】 龙北生,任庆凯. 电容式智能温度仪的硬件设计J . 长春工程学院学报,2001 ,2 (1) 【9】孙汉旭,胡旭辉. 超声波波位检测装置的研究. 电子产品开发与创新,2004,17(2)【10】黄长艺,卢文祥,熊诗波.机械工程测量与试验技术. 机械工业出版社,2004,2:79-82【11】阮亚婕.智能电容式液位计系统设计.仪表技术,2002,6附录一:系统总图附录二:程序清单-MC144999显示程序-M
37、C14499XS:MOVP2.4,#0;将使能端清零,使能端低电平有效MOVP2.3,#1;将时钟信号置1MOV30H,#8 ;将8位依次送入MC14499驱动芯片MOVA,30HAA:ANLA,#01H;使第一位数码管显示MOVP2.2,AMOV30H,ARRADJNZ20H,AAMOVP2.4,#1MOVP2.3,#0ACALLDELAY1MOVP2.4,#0;将使能端清零,使能端低电平有效MOVP2.3,#1;将时钟信号置1MOV30H,#8 ;将8位依次送入MC14499驱动芯片MOVA,30HBB:ANLA,#01H;使第二位数码管显示MOVP2.2,AMOV30H,ARRADJNZ
38、20H,BBMOVP2.4,#1MOVP2.3,#0ACALLDELAY1MOVP2.4,#0;将使能端清零,使能端低电平有效MOVP2.3,#1;将时钟信号置1MOV30H,#8 ;将8位依次送入MC14499驱动芯片MOVA,30HCC:ANLA,#01H;使第三位数码管显示MOVP2.2,AMOV30H,ARRADJNZ20H,CCMOVP2.4,#1MOVP2.3,#0ACALLDELAY1MOVP2.4,#0;将使能端清零,使能端低电平有效MOVP2.3,#1;将时钟信号置1MOV30H,#8 ;将8位依次送入MC14499驱动芯片MOVA,30HDD:ANLA,#01H;使第四位数
39、码管显示MOVP2.2,AMOV30H,ARRADJNZ20H,DDMOVP2.4,#1MOVP2.3,#0ACALLDELAY1RET-初始化程序-晶振:12MHZ;WATER EQU32H ;设定的水位值NUB_VALEQU34H ;加1、减1的暂存值WATER_1EQU36H;采集到的水位值WATER_NUMEQU30H;ORG0000HLJMPSTARTORG0030HSTART:MOVSP,#60H;设置堆栈值MOVIE,#00H;屏蔽所有的中断信号MOVTCON,#00H ;MOVTMOD,#10H ;选用T0定时/计数器SETBP2.1;关水泵电机MOVR0,#20HMOVR1,
40、#20HMOVA,#00HSTART_1:MOVR0,AINCR0DJNZR1,START_1START_2:CLRP2.1;开水泵电机MOVWATER,#2.5H ;初始水位值设为2.5m-主程序-MAIN:ACALLDISPLAYMOVA,WATER_NUMCJNEA,WATER,MAIN1CLRCMAIN1:JCMIAN2CLRP2.1;启动水泵LJMPMAINMAIN2:CJNEA, WATER,MAIN3CLRCMAIN3:JNCMAIN4SETB P2.1;关闭水泵LJMPMAINMAIN4:CLRP2.1;水泵复位LJMPMAIN-A/D转换程序-ORG0000HLJMPA/D_ABCD;转主程序ORG0003H;中断服务程序入口地址LJMPINT0F;中断服务程序ORG0100HA/D_ABCD:MOVR0,#30H;内部数据指针指向30H单元MOVDPTR,#7FF8H;指向P2.7口,且选通IN0(低三位地址为000H)SETBIT0;设置外部中断0为下降沿出发SETBEX0;开允许中断SETBEA;开总中断允许MOVXDPTR,A;启动A/D转换LJMP$;等待转换结束中断-A/D中断服务程序-INT0F:MOVXA,DPTR;取A/D转换结果MOVR0,A;存结果CLREX0;关中断允许RETI ;中断返回