已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要对偏离零点的水位进行检测,然后将带符号的水位值(低于或高于零点)用数码管显示出来,并通过双色二极管LED阵列对水位高度进行模拟显示利用水位监测模拟传感器以测得水位的状况,通过单片机和显示系统在水位现场以LED的方式显示出来,并通过与之相连的GSM模块将水位信息以一种无线的方式发送给远程终端,起到检测的作用。在终端通过仿人工智能控制算法在大惯性、纯滞后系统中的应用,可克服传统PID控制的相位滞后、积分饱和,解决控制系统的稳定性及准确性的矛盾。在每一个预定水位检测点处,将两个电极安装在容器壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连,两个电极等高度并间隔一定距离。当水位没有达到该检定点时,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没于水中,由于水的导电性,两个电极导通。通过检测两个电极是否导通就可以检测水位的高度了。对15个检测点相应有15个检测通道,本设计运用了两片8通道的多路开关CD4051,对各通道循环检测来实现数据采集。系统的软件的核心是两个不断循环执行的中断程序:TMR0中断用于驱动数码管和LED显示:TMR1中断用于采集水位值并且将采集结果送缓冲寄存器供显示部分读取,同时对采集结果进行简单的分析,判断其是否超过水位上限或下限,若超过则点亮相应的报警灯。整个软件部分大体可分为 初始化程序、TMR1中断服务程序、数据转化子程序、TMR0中断服务程序4个部分。该系统还设计了报警系统,因为实际中故障的预报和预警非常重要,他可以提醒检修人员可能要进行检查和维护信息,避免故障的发生,做到故障前的预报和预警。为提高报警系统的可靠性,及时准确的将报警信号从众多实时数据中提取出来各种智能技术被引入到故障检测系统之中,已成为故障检测研究重要内容之一。水位检测和显示仪表装置在工业上有着广泛的应用而本设计采用的是一种低成本的数码管显示驱动方案。所以在对成本较敏感的小型系统中,该方案有着一定的参考价值。关键字: 单片机 水位检测 应用前言在当今社会,水在人们正常生活和生产中起着非常重要的作用。给水工程往往成为高层建筑或工矿企业中最重要的基础设施之一。任何时候都能提供足够的水量、平稳的水压、合格的水质是对给水系统提出的基本要求。就目前而言,多数工业、生活供水系统都采用水塔、层顶水箱等作为基本储水设备,由一级或二级水泵从地下市政水管补给。因此,如何建立一个可靠安全、又易于维护的给水系统是值得我们研究的课题。本设计介绍一种利用水位监测模拟传感器以测得水位的状况,通过单片机和显示系统在水位现场以LED的方式显示出来,并通过与之相连的GSM模块将水位信息以一种无线的方式发送给远程终端,起到检测的作用。在终端通过仿人工智能控制算法在大惯性、纯滞后系统中的应用,可克服传统PID控制的相位滞后、积分饱和,解决控制系统的稳定性及准确性的矛盾。将控制算法应用到水位控制,取得了较好的控制效果。 在社会经济飞速发展的今天,水在人们正常生活和生产中起着越来越重要的作用。一旦断了水,轻则给人民生活带来极大的不便,重则可能造成严重的生产事故及损失。因此给水工程往往成为高层建筑或工矿企业中最重要的基础设施之一.任何时候都能提供足够的水量,平稳的水压,合格的水质是对给水系统提出的基本要求.就目前而言,多数工业,生活供水系统都采用水塔,层顶水箱等作为基本储水设备,由一级或二级水泵从地下市政水管补给。因此,如何建立一个可靠安全,又易于维护的给水系统是值得我们研究的课题。 水位控制在日常生活及工业领域中应用相当广泛,比如水塔,地下水,水电站等情况下的水位控制。而以往水位的检测是由人工完成的,值班人员全天候地对水位的变化进行监测,用有线电话及时把水位变化情况报知主控室。然后主控室再开动电机进行给排水.很显然上述重复性的工作无论从人员,时间和资金上都将造成很大的浪费。同时也容易出差错。因此急需一种能自动检测水位,并根据水位变化的情况自动调节的自动控制系统,我所研究的就是这方面的课题。目录1系统总体设计11.1系统主要功能11.2系统工作原理12系统硬件电路设计22.1单片机系统22.1.1单片机简介2.1.2单片机发展概述2.1.3单片机内部结构2.2水位检测与数据采集2.2.1PLC16F877芯片介绍2.2.2CD4051芯片介绍2.2.3水位检测电路2.3数码管与LED显示2.3.1相关芯片介绍2.3.2显示部分工作原理2.4报警电路3系统软件程序设计3.1初始化程序3.2TMR1中断服务程序3.3数据转换子程3.4TMR0中断服务程序3.5程序清单及注释4 结论 致 谢参考文献1 系统总体设计水位检测和显示仪表装置在工业上有着广泛的应用。本设计采用的是一种低成本的数码管显示驱动方案。在对成本较敏感的小型系统中,该方案有着一定的参考价值。1.1系统主要功能对偏离零点的水位进行检测,然后将带符号的水位值(低于或高于零点)用数码管显示出来,并通过双色二极管LED阵列对水位高度进行模拟显示。整个装置主要包含水位检测和显示两个部分,现将每部分功能说明如下:(1)水位检测:在0mm、10 mm、25 mm、50 mm、80 mm、120 mm、160 mm、240 mm共15点基础上,检测水位偏离零点的大小。(2)水位显示:将上一步检测结果用数码管显示出来,显示值以比实际水位小的最近点为准,例如:水位实际高度为35 mm,则数码管显示25 mm。同时,用15个竖直排列的双色LED阵列直观的模拟当前水位高度,当水位没有达到某点相应的LED显示红色,达到或超过则显示绿色。当水位低于240 mm时报警灯显示绿色,高于240 mm时报警灯显示红色,当水位恢复正常值时报警灯熄灭。1.2系统工作原理本设计采用电接点水位检测方法,在每一个预定水位检测点处,将两个电极安装在容器壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连,两个电极等高度并间隔一定距离。当水位没有达到该检定点时,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没于水中,由于水的导电性,两个电极导通。通过检测两个电极是否导通就可以检测水位的高度了。对15个检测点相应有15个检测通道,本设计运用了两片8通道的多路开关CD4051,对各通道循环检测来实现数据采集。本系统由水箱、检测元件、多路开关、单片机系统、数码显示和报警六大部分组成。如下图所示:检测元件多路开关单片机系统数码显示报警水箱图1.1 系统组成框图2系统硬件电路设计2.1单片机系统 2.1.1单片机简介单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品、升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。2.1.2单片机发展趋势1946年第一台电子计算机诞生至今,只有50年的时间,依靠微电子技术和半导体技术的进步,从电子管晶体管集成电路大规模集成电路,现在一块芯片上完全可以集成几百万甚至上千万只晶体管,使得计算机体积更小,功能更强。特别是近20年时间里,计算机技术获得飞速的发展,计算机在工农业,科研,教育,国防和航空航天领域获得了广泛的应用,计算机技术已经是一个国家现代科技水平的重要标志。单片机诞生于20世纪70年代,所谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛。20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新材料新工艺尚未成熟,单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM有的还包括了一些简单的I/O口集成到芯片上,它还需配上外围的其他处理电路方才构成完整的计算系统。1976年INTEL公司推出了MCS-48单片机,这个时期的单片机才是真正的8位单片微型计算机,并推向市场。它以体积小,功能全,价格低赢得了广泛的应用,为单片机的发展奠定了基础,成为单片机发展史上重要的里程碑。在MCS-48的带领下,其后,各大半导体公司相继研制和发展了自己的单片机。到了80年代初,单片机已发展到了高性能阶段。此外,日本的著名电气公司NEC和HITACHI都相继开发了具有自己特色的专用单片机。80年代,世界各大公司均竞相研制出品种多功能强的单片机,约有几十个系列,300多个品种,此时的单片机均属于真正的单片化,大多集成了CPU、RAM、ROM、数目繁多的I/O接口、多种中断系统,甚至还有一些带A/D转换器的单片机,功能越来越强大,RAM和ROM的容量也越来越大,寻址空间甚至可达64kB,可以说,单片机发展到了一个全新阶段,应用领域更广泛,许多家用电器均走向利用单片机控制的智能化发展道路。1982年以后,16位单片机问世,代表产品是INTEL公司的MCS-96系列,16位单片机比起8位机,数据宽度增加了一倍,实时处理能力更强,主频更高,集成度达到了12万只晶体管,RAM增加到了232字节,ROM则达到了8kB,并且有8个中断源,同时配置了多路的A/D转换通道,高速的I/O处理单元,适用于更复杂的控制系统。90年代以后,单片机获得了飞速的发展,世界各大半导体公司相继开发了功能更为强大的单片机。美国Microchip公司发布了一种完全不兼容MCS-51的新一代PIC系列单片机,引起了业界的广泛关注,特别它的产品只有33条精简指令集吸引了不少用户,使人们从INTEL的111条复杂指令集中走出来。PIC单片机获得了快速的发展,在业界中占有一席之地。随后,熟悉单片机的人士都比较清楚了,更多的单片机种蜂拥而至,MOTOROLA公司相继发布了MC68HC系列单片机,日本的几个著名公司都研制出了性能更强的产品,但日本的单片机一般均用于专用系统控制,例如NEC公司生产的uCOM87系列单片机,其代表作uPC7811是一种性能相当优异的单片机。MOTOROLA公司的MC68HC05系列其高速低价等特点赢得了不少用户。1990年美国INTEL公司推出了80960超级32位单片机引起了计算机界的轰动,产品相继投放市场,成为单片机发展史上又一个重要的里程碑。此期间,单片机园地里,单片机品种异彩纷呈,争奇斗艳。有8位、16位甚至32位机,但8位单片机仍以它的价格低廉、品种齐全、应用软件丰富、支持环境充分、开发方便等特点而占着主导地位。而INTEL公司凭着他们雄厚的技术,性能优秀的机型和良好的基础,目前仍是单片机的主流产品。只不过是九十年代中期,INTEL公司忙着开发他们个人电脑微处理器,已没有足够的精力继续发展自己创导的单片机技术,而由PHILIPS等公司继续发展C51系列单片机。2.1.3单片机的内部结构单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:1.中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。2. 数据存储器(RAM): 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。3. 程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。4. 定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。5. 并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。6. 全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。7. 中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。8. 时钟电路: 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。2.2水位检测与数据采集2.2.1PLC16F877芯片介绍PIC16F877单片机有双列直插式40引脚及表面贴装式44引脚等几种封装形式。PIC16F877单片机是目前世界上片内集成外围模块最多,功能最强的单片机品种之一。所有接口引脚除具有输入/输出功能以外。一般都设计有第2功能,甚至第3功能。它采用引脚复用技术,以便即使增加功能但却不增大体积及引脚数量。为了便于记忆可将PIC16F877单片机引脚分成两大类。即7个系统配置引脚和33个输入/输出功能引脚。1.系统配置引脚(1)电源和接地引脚(均配置2组) :正电源端 :接地端(2)时钟复位引脚OSC1/CLKIN: 时钟振荡器晶体连接端1/外部时钟源输入端OSC2/CLKOUT:时钟振荡器晶体连接端2/外部时钟源输出端(3)主复位引脚/:人工复位输入端(低电平有效)编程电压输入端2.输入/输出功能引脚PIC16F877单片机配置有5个端口,多达33个双向输入/输出引脚。每个引脚都具有较强的对外电路驱动能力。都可以独立设置成所需要的输入/输出状态。(1) 端口A是一个双向输入/输出可编程端口,只有当对ADCON1进行设置后才能用作为数字量输入/输出引脚。端口A的引脚还有第2、3功能。RA0/AN0 RA0/第0路模拟信号输入端RA1/AN1 RA0/第1路模拟信号输入端RA2/AN2/ RA2/第2路模拟信号输入端/负参考电压端RA3/AN3/ RA3/第3路模拟信号输入端/正参考电压端RA4/TOCKI RA4/定时器0时钟输入端RA5/AN4/ RA5/第4路模拟信号输入端/SPI通信从动选择(2) 端口B 引脚端口B是一个双向输入/输出可编程端口。当其用作输入时,内部有可编程的弱上拉电路,此外,端口B的引脚还有第2、第3功能。考虑到MPLAB-IDE集成开发环境借用RB端口的3个引脚。一般在扩展外围电路中应避免使用RB3、RB6和RB7。如果必须要用,则应采取相应的措施。RB0/INT RB0 /外部中断输入端RB1 RB1RB2 RB2RB3/PGM RB3 /低电平电压编程输入端RB4 RB4 (具有电压变化中断功能)RB5 RB5 (具有电压变化中断功能)RB6/PGC RB6 (具有电压变化中断功能)/在线调试输入端和串行编程时钟输入端RB7/PGD RB7 (具有电压变化中断功能)/在线调试输入端和串行编程数据输入端(3) 端口C引脚端口C是一个双向输入/输出可编程端口。该引脚主要投入有两大类功能:捕捉/比较/脉宽调制/模块CCP和各类串行通信模块。RC0/T10SO/T1CKI RC0/定时器1的振荡器输出端/定时器1时钟输入端RC1/T10SI/CCP2 RC1/定时器1的振荡器输入端/捕捉器2输入端或比较器2输出端或脉宽调制器PWM2的输出端RC2/CCP1 RC2/捕捉器/输入端或比较器1输出端或脉宽调制器PWM1的输出端RC3/SCK/SCL RC3/SPI 和C串行口的同步时钟输入或输出端RC4/SDI/SDA RC4/SPI 串行口的数据输入端和C串行口的数据输入或输出端RC5/SD0 RC5/SPI 串行口的数据输出端RC6/TX/CK RC6/USART全双工异步发送端/ USART半双工同步传送时钟端RC7/RX/DT RC7/USART全双工异步接受端/ USART半双工同步传送数据端(4) 端口D引脚 端口D是一个双向输入/输出可编程端口。其全部引脚都有第2功能,RD0RD7/PSP0PSP7:RD0RD7/作从动并行口与其他微处理器总线连接。(5) 端口E引脚端口E是一个双向输入/输出可编程端口,只有当对ADCON1进行设置后,才能用作为数字量输入/输出引脚。RE0/AN5 RE0/并行口读出控制端/第5路模拟信号输入端RE1/AN6 RE1/并行口写入控制端/第6路模拟信号输入端RE2/AN7 RE2/并行口片选控制端/第7路模拟信号输入端2.2.2 CD4051芯片的介绍本设计采用电接水位检测方法,在每一个预定水位检测点处,将两个电极安装在电容壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连,两个电极等高度并间隔一定距离。当水位没有达到该检定点时,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没于水中,由于水的导电性两个电极导通。通过检测两个电极是否导通就可以检测水位的高度了。对15个检测点相应有15个检测通道,本设计运用了两片8通道的多路开关CD4051,对各通道循环检测来实现数据采集。多路开关的主要用途是把模拟信号分时地送入A/D转换器,或者把经计算机处理后的数据由D/A转换器转换成的模拟信号,按一定的顺序输出到不同的控制回路中去。前者称为多路开关,完成多到一的转换;后者称为反多路开关或多路分配器,完成一到多的转换。CD4051是双向8通道多路开关,其内部结构如图所示。它由电平转换、译码/驱动和开关电路三部分组成,其中电平转换可实现CMOS到TTL逻辑电平的转换,因此,加到通道选择输入端的控制信号的电平幅度可为3V-20V。同时,最大模拟量信号的峰值可达20V。CD4051带有三个通道选择输入端A,B,C和一个禁止端INH。当CBA为000-111B时,可产生8选1控制信号,使8路通道中的某一通道的输入与输出接通。当INH为0 时,允许通道接通;当INH为1时,禁止通道接通。其真值表如表所示。IN/OUT0-7 及OUT/IN的传递方向,可用做多路开关和反多路开关。CD4051具有低接通电阻和低关断电流的特点,其引脚定义如图2.1所示,真值表如表2.1所示:图2.1 CD4051引脚图表2.1 CD4051真值表INHC B A接通通道号0000IN00001IN10010IN20011IN30100IN40101IN50110IN60111IN71XXX_使用禁止端INH,可以很方便地实现通道数的扩展。例如使用两片CD4051可组成16路的多路开关。当通道选择码D3D2D1D0取00001111B之一时,便惟一的选中这16路通道中的某一通道。2.2.3水位检测电路尽管水位检测原理简单,但应用时却不能仅仅用每路的通段来判断水位是否没过该路的电极。实际上,水的电阻因水中所含成分不同有很大的差异,例如蒸馏水就不导电,就不能用这种方法来检测,而本设计所应用的场合经试验测得水阻在几欧到几十欧不等;另一方面,空气电阻也不是无穷大,也跟其成分有关,例如饱和蒸汽的阻值就大概在1欧左右。所以不能通过判断单片机的数据采集引脚输入水平高低来判断水位是否到达某点,否则,对介于高低水平之间的电平状态就无法做出判断,而这种情况是可能存在的。一个可靠的方法是对输入引脚的数据进行采样,然后将采样结果与一个阈值进行比较,从而得出正确的结论。根据这个原理设计的水位检测电路如图2.2所示:图2.2 水位检测电路图从图中可以看出,通过RD0RD3口进行采样通道地址译码,在不同时刻选通16通道中的1个。当水位上升到某一对电极高度时,相应通道的采样电压将会降低;若水位没有上升到电极高度,那么上拉电阻将会把采样值钳位到+5v。RA0口作为A/D采样通道输入口。 2.3 数码管与LED显示模拟水位高度由15个双色发光二极管(LED)来完成,共分为4组。在某一特定时刻,每组LED与一个数码管一起被选通(4组LED对应4个数码管),两个8为的移位寄存器74LS164级联,将单片机送出的2个字节串行数据转化为16位并行数据,分别送选通的LED和数码管。在不同时刻,系统对4组LED和数码管快速地循环扫描,就完成了面板显示的功能。2.3.1 相关芯片介绍显示部分用到的芯片包括移位寄存器74LS164、数据缓冲器74LS244以及多路开关CD4051。下面就74LS164和74LS244作简单介绍:1 移位寄存器74LS164具有移位功能的寄存器为移位寄存器。移位寄存器根据移位情况的不同可分单向移位寄存器和双向移位寄存器。8位单向移位寄存器74LS164为串行输入/串行(并行)输出,其引脚排列如图所示:图2.3 74LS164引脚图 图中,DSA、DSB为串行数据输入端,实际使用时把A、B连在一起;CP为移位时钟输入端,当CP信号为上跳沿时,数据右移一位;为清零输入端,低电平有效。当该端加低电平时,所有输出端Q0Q7均为低电平;Q0Q7为并行数据输出端,同时,Q7端也是串行数据输出端,串行数据从DSA、DSB端进入,最先进入的从Q0端输出,最后进入的从Q7端输出。 移位寄存器74LS164状态表输入输出说明DSA*DSBCP000000000清零10保持111输入1个1100输入1个02 数据缓冲器74LS24474LS244 缓冲器常用作三态缓冲或总线驱动,+5V供电,其高电平时输出最大电流可达15mA,低电平输出时最大电流可达24mA,足以驱动数码管和LED工作。74LS244共8个输入输出通道,通过门控端G1和G2来选择其通断,其功能原理及引脚如图2.4所示:图2.4 74LS244内部结构及引脚图从图中可以看出,当引脚1G为低电平时,输入通道1A1A4与输出通道1Y11Y4连通;当引脚1G为高电平时则截止。同理引脚2G控制着输入通道2A12A4与输出通道2Y12Y4的通断。2.3.2 显示部分工作原理1 双色二极管发光二极管是一种利用正偏时PN结两侧的多子(N区的电子、P区的空穴)直接复合释放出光能的光发射器件,是另一种特殊的二极管,这种管子通过电流时能发出光。发光二极管是由磷、砷、镓等半导体化合物制作的,发光二发光二极管简称极管有可见光、不可见光和激光等类型。其中可见光LED的发光颜色有红、黄、绿、橙等。光的颜色取决于制造时所使用的材料。不可见光LED常将的是红外LED;而激光二极管具有良好的串色性。由于发光二极管体积小、工作电压低、寿命长、单色性好和响应速度快,因此应用很广。如电平指示器、指示灯、七段数字显示器等。 首先介绍一下双色二极管的功能和用法。如图2.5所示,1个双色二极管有3个引脚,引脚1、2均为信号“”端,引脚3为GND端(信号“”)。引脚电平(TTL电平)与LED显示颜色如表2.5所示:图2.5 双色二极管外观图表2.5双色二极管功能表引脚1引脚2二极管状态00熄灭01绿色10红色11混合色2 LED显示器LED即发光二极管。LED显示器有单个、七段和点阵式等几种类型。单个LED显示器常用于显示仪器的状态。仪器内微处理器经数据总线D0D7,输出待显示的代码,送至输出接口,当其输出端Q0为低电平时,LED显示器正向导通并发亮,反之则熄灭。七段LED显示器由数个LED组成一个阵列,并封装于一个标准的外壳中。为适用于不同的驱动电路,有共阳极和共阴极两种结构。用七段LED显示器可组成09数字和多种字母。为了适应个中装置的需要,这种显示中还提供有一个小数点,所以实际共有八段。为了显示某个数或字符,就要点亮对应的段,这就需要译码。译码有硬件译码和软件译码之分。硬件译码电路的优点是计算机时间的开销比较小,但是硬件开支大。与硬件电路相比,软件译码显示电路省去硬件译码器,其BCD码转换为对应的段码这项工作由软件来完成。共阳极和共阴极显示器的段码互为反码。微处理器有较强的逻辑控制能力,采用软件译码并不复杂。采用软件译码不仅可使硬件电路简化,而且其译码逻辑可随编程设定,不受硬件逻辑的限制。所以智能仪器使用较多的是软件译码方式。七段LED显示器只能显示数字和部分字符,并且字符显示的形状与印刷体相差很大,识别比较困难。点阵式LED显示器是以点阵格式进行显示的,因而显示的符号比较逼真。这是点阵式显示器的优越之处。点阵式显示器电路不足之处是接口电路及控制程序较复杂。点阵式显示器的格式一般有47,57,79等几种,最常用的是57点阵。57点阵字符显示器由35只LED显示单元排成5列7行矩阵格式。3.数码管及LED显示电路数码管及LED显示电路如图2.3所示,RC5口作为串行数据的同步时钟端,与74LS164的数据输入端相连;RC3口作为串行数据的同步时钟端,与74LS164的数据输出端均与SPI方式时端口一样;实际应用中,若不用SPI方式,而用模拟数据串行口,可以用任何普通I/O断口代替。两片移位寄存器74LS164的并行数据输出端则分别与两片数据缓冲器74LS244的输入端相连,RD7口作为数据缓冲器74LS244的门控信号输出端,控制74LS244的通断。每4个双色二极管和1个数码管一组,二极管的8个信号“”端,分别与第一片74LS244的8位数据输出端相连,数码管的8位数据输入端,分别与第二片74LS244的8位数据输入端相连,每组二极管和数码管的GND端都与CD405的1个输入通道相CD4051的输出端与系统的“地”相连。RE0RE1口作为地址译码输出端口,用于多路开关CD4051的4路通道选择,每一时刻只有一组共4个二极管和1个数码管被选通,其GND端同系统的“地”构成通路,其他的二极管与数码管则不能构成通路。每向74LS164传送两个字节共16位数据,通过RD7口使能74LS244,将数据送到二极管和数码管的输入口,然后通过RE0RE1口打开一条通道,则被选通的数码管和二极管就会按照接收的数据进行相应的显示。不断地发送新数据并利用CD4051循环的扫描4个通道,则所有的二极管和数码管就会持续的发光显示。2.4报警电路用一个双色二极管作为报警灯,RD5口与二极管的引脚1相连,RD4口与二极管的引脚2相连。3系统软件程序设计本系统的软件的核心是两个不断循环执行的中断程序:TMR0中断用于驱动数码管和LED显示:TMR1中断用于采集水位值并且将采集结果送缓冲寄存器供显示部分读取,同时对采集结果进行简单的分析,判断其是否超过水位上限或下限,若超过则点亮相应的报警灯。整个软件部分大体可分为 初始化程序、TMR1中断服务程序、数据转化子程序、TMR0中断服务程序4个部分,以下分别加以描述。3.1初始化程序初始化程序位于主程序开始部分,主要对3个部分进行初始化:I/O、TMR1和TMR0各个部分初始化步骤如下描述: 1.I/O端口方向控制寄存器A/D输入口RAD设置为输入方式,串行时钟及串行数据输出端口RC,采样通道地地址码端口RD、显示部分地址译码几报警输出端口RE均设置为输出方式。2.TMR1初始化TMR1初始化程序步骤如下:将第一位外设中断标志寄存器PIRI中的中断标志位TMR1IF清零。将第一位外设中断屏蔽寄存器PIE1中的中断允许位TMR1IE置位。通过TMR1中断控制器I1CON设置时钟及分频比等。给TMR1计数器TMR1H、TMR1L赋初值。将中断控制寄存器INTCON中的全局中断屏蔽位GIE置位。将外设中断屏蔽位PEIE置位。3. TIMR0初始化 TIMR0初始化步骤如下:通过选项寄存器OPTIONREG设置TMR0的分频比及时钟。将INTCON寄存器中的TMR0中断标志位清零并将中断屏蔽位置位。给TMR0计数器赋初值。32TMR1中断服务程序设计系统的水位值刷新时间为1s,即单片机每秒对采样通道一遍A/D转换。软件上则设定TMR1定时器每秒产生一次中断,执行数据采样程序,从最高水位采样通道向下执行,并不断将每次采样结果与系统设定的门限值比较,当检测到水位超过某一对电极时,则退出采样程序。接下来判断水位是否越限,若是则点亮相应的报警灯,否则使报警灯灭。然后调用数据转换子程序,将水位采样结果转化为相应数码管和LED显示段码值,存入显示数据缓冲寄存器。由于PIC单片机的中断矢量只有一个,而本设计用到两个中断,故而在中断服务程序入口处,需要对中断源进行判断,这是通过判断相应的中断标志寄存器实现的。设置TMR1定时器分频比为1:8,采用内部时钟源,系统采用2M晶振。那么TMR1的时钟脉冲周期为2 s,由于分频比为1:8,则每16 s计数一次,1s需要计数62500次,即从计时开始到62500个计数周期后,TMR1寄存器达到上限65536并产生溢出,所以TMR1寄存器初始值为65536-62500=3036,即0BDCH。TMR1中断服务程序流程图如图3.1所示:图3.1 TMR1 中断服务程序流程图3.3数据转换子程序在进行水位检测后,会产生一个水位的高度值(设为HEIGHT),但它并不是一个真实的水位值,只是一个标志水位高度的通道号,其值为0-15中的某个数,分别表示没有水以及15种水位高度共16种情况。故而需要将其转化为LED和数码管显示数据SEG1-SEG4d的对应关系,表3.2则为数码管的七段码值与显示符号对应关系。表3.2 高度值与显示段码对照表HEIGHTLED1LED2LED3LED4SEG1SEG2SEG3SEG400F0H0F0H0F0H0F0H10E1H0F0H0F0H0F0H24620C3H0F0H0F0H0F0H160387H0F0H0F0H0F0H12040FH0F0H0F0H0F0H8050FH0E1H0FH0FH5060FH0C3H0FH0FH2070FH87H0FH0FH1080FH0FH0FH0FH090FH0FH0E1H0FH10100FH0FH0C3H0FH25110FH0FH87H0FH50120FH0FH0FH0FH80130FH0FH0FH0E1H120140FH0FH0FH0C3H160150FH0FH0FH87H240注 :空白处表示不显示任何数据表3.3 数码管七段码显示符号共阳极七段码共阴极七段码显示符号共阳极七段码共阴极七段码00C0H3FH682H7DH10F9H06H70F8H07H20A4H5BH880H7FH30B0H4FH990H6FH499H66H0BFH40H592H6DH全灭FFH00H有3种方法对LED和数码管显示缓冲寄存器写入数据:第一种是采用查表方法,将各个高度值对应的数据预先存入一块缓冲区内,通过对指令指针赋值来访问特定数据单元,返回转换后的数值;第二种是采用逐个比较的方法,将采样结果与015的数逐个比较,若相等则向缓冲区赋相应的值;第三种是根据表的特征来赋值,例如当HEIGHT8时,LED1的值为0FFH时,SEG2没有显示。 3.4 TMR0中断服务程序TMR0中断用于数码管及LED显示,每次中断将两个字节的数据串行发送至移位寄存器,后经74LS244驱动1组LED和1个数码管发光。出于每个LED或数码管两次被选通的时间最大不能超过100 (利用人的视觉暂留现象,否则就会出现闪烁),加之TMR1中断可能占用的时间,所以每次TMR0中断溢出时间不能太长;另一方面,TMR0中断溢出时间又不能太短,必须保证串行发送完毕。综合这两个方面因素,将TMR0溢出时间设为10 。TMR0寄存器初始值计算方法与TMR1初始值计算方法类似,只是分频比设为1:128,计算结果为0D9H。如图3.4所示:清溢出标志位TOIF根据当前显示通道数查询待发送字节TX-LED根据当前显示通道送待发字节数查询TX-LED关闭输出缓冲器74LS244,禁止数据输出发送字节计数器赋初值2选通待显示通道输出缓冲器74LS244允许输出数通道计器减1通道计数器=0?通道计数器赋初值4TMR0赋初值返回回待发送字节TX-LED送暂存寄存器TEMP待发送字节TX-LED送暂存寄存器TEMP发送位计数器赋初值8时钟端置低电平串行数据输出端置低电平串行数据输出端置高电平时钟端置高电平发送数据移一位发送位计数器减1发送计数器=0?发送位计数器减1发送计数器=0?TEMP第七为0?TMR0中断子程序 图3.4 TMR0中断服务程序流程图3.5程序清单及注释*LIST P=16F877INCLUDE P=16F877.INCSTATUSEQU03H;定义状态寄存器地址PLCEQU02H;定义程序计数器低8位指针地址PORTAEQU05H;定义端口RA的数据寄存器地址PORTCEQU07H;定义端口RC的数据寄存器地址PORTDEQU08H;定义端口RC的数据寄存器地址PORTEEQU09H;定义端口RC的数据寄存器地址TRISAEQU85H;定义端口RA的方向控制寄存器地址TRISDEQU87H;定义端口RC的方向控制寄存器地址TRISEEQU88H;定义端口RC的方向控制寄存器地址INTCONEQU89H;定义中断控制寄存器地址TICIONEQU10H;定义TRM1中断控制寄存器TMR0EQU01H;定义TMR0寄存器地址PIR1EQU0CH;定义第一外设中断标志寄存器地址PIE1EQU8CH;定义第一外设中断屏蔽寄存器地址;ADRESHEQU1EH;定义ADC结果寄存器高子节地址ADCON0EQU1FH;定义ADC控制寄存器0地址ADCON1EQU9FH;定义ADC控制寄存器地址T1CONEQU10H;定义TMR1控制寄存器地址TMR1LEQU0EH;定义TMR1低字节地址TMR1HEQU0FH;定义TMR1高字节地址SSPBUFEQU13H;定义SPISSPCONEQU14H;定义同步控制串口寄存器地址SSPSREQU94H;定义同步串口状态寄存器地址;= = = = = = = = = = = = = = = = = = = 变量 = = = = = = = = = = = = = = = = TEMPEQU20H;定义暂存寄存器HEIGHTEQU22H;定义采样结果寄存器,用以标志水位高度SELECT_COUNTEQU 23H;定义翻转计数器,用以标志选通的显示通道AD_COUNT EQU24H;定义翻转计数器,用以标志通的采样通道TX_LEDEQU25H;LED数据串行发送暂存寄存器TX_DATAEQU6H;数码管数据串行发送暂存寄存器LED1EQU29H;发光二极管显示数据寄存器1LED2EQU30H;发光二极管显示数据寄存器2LED3EQU31H;发光二极管显示数据寄存器3LED4EQU32H;发光二极管显示数据寄存器4SEG1EQU33H;数码管显示数据寄存器1SEG2EQU34H;数码管显示数据寄存器2SEG3EQU35H;数码管显示数据寄存器3SEG4EQU36H;数码管显示数据寄存器4;= = = = = = = = = = = = = = = = = = = = = = 常量= = = = = = = = = = = = = = TMR1LBEQU0DCH;定义TMR1低字节寄存器初始值(定时1s)TMR1HBEQU0BH;定义TMR1高字节寄存器初始值TMR0BEQU0D9H;定义TMR0寄存器初始值(定时10ms)GATE_VALUE EQU07FH;定义采样结果门槛值,用以区分水和空气阻值;*复位矢量和中断矢量* ORG 000HNOPGOTOMAINORG004HBTFSCPIR1, 0 ;检测是否是TMR1中断GOTO T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧园区设计方案
- 糖尿病饮食处方
- 保护我们的关节教案反思
- 物联网校园门禁系统
- 预防手足口病喜洋洋
- 城市绿化招投标管理策略
- 工业厂房抹灰施工协议
- 企业重组法律顾问管理办法
- 商业广场绿化工程承揽合同
- 国际学校地暖安装施工协议
- 凯里市舟溪镇3.19较大爆炸事故
- 医院信息化建设项目验收方案
- 结构加固施工方案说明范本
- 爱心助学基金会章程样本
- 药物性肝损伤的药物治疗
- Python绘图库Turtle详解(含丰富示例)
- 2010年408真题及答案解析
- 【课题研究设计与论证报告】深度学习视角下幼儿园自主游戏支持策略的实践研究
- 厨房设备及工具的使用培训
- 0~36个月儿童中医药健康管理服务
- 第三章药物的化学结构与药代动力
评论
0/150
提交评论