ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:222.48KB ,
资源ID:9263548      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9263548.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(水位检测仪系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

水位检测仪系统.docx

1、水位检测仪系统目 录第1节 引 言 11.1 设计背景11.2 系统功能说明1第2节 硬件设计基本原理与实现方法22.1 水位检测与数据采集 22.2 数码管LED显示4 2.2.1 相关芯片简介4 2.2.2 显示部分工作原理5第3节 系统软件设计8 3.1 初始化程序83.2 TMR1中断服务程序93.3 数据转换子程序103.4 TMR0中断服务程序113.5 程序清单13第4节 结束语22参考文献 22水位检测仪系统第1节 引 言水位检测和显示仪表装置在工业上有着广泛的应用。本设计采用的是一种低成本的数码管显示驱动方案。在对成本较敏感的小型系统中,该方案有着一定的参考价值。1.1 设计

2、背景键盘和显示器是单片机系统中人机对话不可缺少的一部分。在许多智能仪表的设计中,多用LED数码管来显示。这是因为LED数码管驱动简单,成本较低并且能适应恶劣的环境。用于数码管显示驱动的芯片有很多种,常见的有MAX7219、MAX7221、ZLG7290、IMC7218B以及8279等。这些专用芯片使用方便、功能教强,但价格偏高。本设计中采用的循环扫描的方式,充分利用单片机快速的处理能力对各显示单元分时选通,只需普通的串行移位芯片,就可以达到显示驱动的目的。这种方法对单片机的CPU占用率相对较高,不适宜于CPU任务繁忙的场合,但是对那些功能相对简单,CPU相对空闲的中小型系统非常实用,能够大大降

3、低系统成本。1.2 系统主要功能 该装置对偏离零点的水位进行检测,然后将带符号的水位值(低于或高于零点)用数码管显示出来,并通过双色发光二极管LED阵列对水位高度进行模拟显示。整个装置主要包含水位检测和显示两个部分,现将每部分功能说明如下:(1)水位检测:在0mm、10mm、25mm、50mm、80mm、120mm、160mm、240mm共15点基础上,检测水位偏离零点的大小。(2)水位显示:将上一步检测结果用数码显示出来,显示值以比实际水位小的最近点为准,例如:水位实际高度为35mm,则数码管显示25mm。同时,用15个竖直排列的双色LED阵列直观的模拟当前水位高度,当水位没有达到某点相应的

4、LED显示红色,达到或超过则显示绿色。当水位低于-240mm时报警灯显示绿色,高于+240mm时报警灯显示红色,当水位恢复正常值时报警灯熄灭。第2节 硬件设计基本原理与实现方法2.1 水位检测与数据采集本设计采用电接点水位检测方法,在每一个预定水位检测点处,将两个电极安装在容器壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连,两个电极等高度并间隔一定距离。当水位没有达到该检定点时,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没于水中,由于水的导电性,两个电极导通。通过检测两个电极是否导通就可以检测水位的高度了。对15个检测点相应有15个检测通道,本

5、设计运用了两片8通道的多路开关CD4051,对各通道循环检测来实现数据采集。CD4051是一种双向8通道的多路开关,可以8路选通输入,1路输出;也可1路输入,8路选通输出。通过3为数据位A、B、C进行通道选择。禁止输入输出端INH可以禁止和允许工作。CD4051具有低接通电阻和低关断电流的特点,其引脚定义如图2.1所示,真值表如表2.1所示。 IN/OUT VDD 1 0 3 A B C 16 15 14 13 12 11 10 901 2 3 4 5 6 7 8 4 6 OUT/IN 7 5 INH VEE VSS IN/OUT IN/OUT图2.1 CD4051引脚图 表2.1 CD405

6、1真值表选通通道输入状态INHIBITCBA0000010001200103001140100501016011070111NONE1* 尽管水位检测原理简单,但应用时却不能仅仅用每路的通断来判断水位是否没过该路的电极。实际上,水的电阻因水中所含成分不同有很大的差异,例如蒸馏水就不导电,就不能用这种方法来检测,而本设计所应用的场合经试验测得水阻在几K到几十K不等;另一方面,空气电阻也不是无穷大,也跟其成分有关,例如饱和蒸汽的阻值就大概在1M欧左右。所以,不能通过判断单片机的数据采集引脚输入电平高低来判断水位是否到达某点,否则,对介于高、低电平之间的电平状态就无法做出判断,而这种情况是可能存在的

7、。一个可靠的方法是对输入引脚的数据进行采样,然后将采样结果与一个阈值进行比较,从而得出正确的结论。根据这个原理设计的水位检测电路如图2.2所示。从图中可以看出,通过RD0RD3口进行采样通道地址译码,在不同时刻选通16个通道中的1个。当水位上升到某一对电极高度时,相应通道的采样电压将会较低;若水位没有上升到电极高度,那么上拉电阻将会把采样值钳位到+5V。RA0口作为A/D采样通道输入口。图2.2 水位检测电路原理图2.2 数码管与LED显示模拟水位高度由15个双色发光二极管(LED)来完成,共分为4组。在某一特定时刻,每组LED与一个数码管一起被选通(4组LED对应4个数码管),两个8位的移位

8、寄存器741S164级联,将单片机送出的2个字节串行数据转化为16位并行数据,分别送选通的LED和数码管。在不同时刻,系统对4组LED和数码管快速地循环扫描,就完成了面板显示的功能。2.2.1 相关芯片简介显示部分用到的芯片包括移位寄存器74LS164、数据缓冲器74LS244以及多路开关CD4051。下面就74LS164和74LS244作简单介绍。 (1)移位寄存器74LS164。74LS164引脚定义如图2.3所示,起真值表如表2.2所示,其功能是将外部输入的串行数据转化为8位的并行数据输出具有锁寸功能。A、B端为串行数据输入端,QA QH,CLK为外部时钟输入端,CLR为清零端。74LS

9、164在高电平输出时,为并行数据输出端其输出最大电流为0.4mA;低电平输出时,其输出最大电流为8mA,不足以驱动数码管或发光二极管正常工作,所以在本设计中外加数据缓冲器以增大驱动能力。图2.3 74LS164引脚图表2.2 74LS164真值表 输入输出CLEARCLOCKA BQA QB QHLX X XL L LHL X XQA0 QB0 QH0H H HH QAn QGnH L XL QAn QGnH X LL QAn QGn注 QA0、 QB0、QH0为在稳态输入条件建立之前QA 、QB 和QH相应的电平;QAn 、QGn 为在最近的时钟转换前QA或QG的电平,表示移1位。(2)数据

10、缓冲器74LS244。74LS244 缓冲器常用作三态缓冲或总线驱动,+5V供点,其高电平时输出最大电流可达15mA,低电平输出时最大电流可达24mA,足以驱动数码管和LED工作。74LS244共8个输入输出通道,通过门控端G1和G2来选择其通断,其功能原理及引脚如图2.4所示。 图2.4 74LS244内部结构及引脚图从图中可以看出,当引脚1G为低电平时,输入通道1A1A4与输出通道1Y11Y4连通;当引脚1G为高电平时则截止。同理引脚2G控制着输入通道2A12A4与输出通道2Y12Y4的通断。2.2.2显示部分工作原理首先介绍一下双色二极管的功能和用法。如图1.5所示,1个双色二极管有3个

11、引脚,引脚1、2均为信号“+”端,引脚3为GND端(信号“”端)。引脚电平(TTL电平)与LED显示颜色如表1.6所示。表1.5 双色二极管功能表引脚1引脚2二极管状态00熄灭01绿色10红色11混合色图1.5 双色二极管外观图 数码管及LED显示电路如图1.6所示,RC5口作为串行数据的同步时钟端,与74LS164的数据输入端相连;RC3口作为串行数据的同步时钟端,与74LS164的同步时钟输出端均与SPI方式时端口一样;实际应用中,若不用SPI方式,而用第5章中提到的模拟数据串行口时,可以用任何普通I/O端口代替)。两片移位寄存器74LS164的并行数据输出端则分别与两片数据缓冲器74LS

12、244的输入端相连,RD7口作为数据缓冲器74LS244的门控信号输出端,控制74LS244的通断。图1.6 数码管和LED显示电路每4个双色二极管和1个数码管一组,二极管的8个信号“+”端分别与第一片74LS244的8位数据输出端相连,数码管的8位数据输入端分别与第二片74LS244的8位数据输入端相连,每组二极管和数码管的GND端都与CD4051的1个输入通道相连,CD4051的输出端与系统的“地”相连。RE0RE1口作为地址译码输出端口,用于多路开关CD4051的4路通道选择,每一时刻只有一组共4个二极管和1个数码管被选通,其GND端同系统的“地”构成通路,其他的二极管与数码管则不能构成

13、通路。每向74LS164传送完两个字节共16位数据,通过RD7口使能74LS244,将数据送到二极管和数码管的输入口,然后通过RE0RE1口打开一条通道,则被选通的数码管和二极管就会按照接收的数据进行相应的显示。不断地发送新数据并利用CD4051循环的扫描4个通道,则所有的二极管和数码管 就会持续的发光显示。 另外由一个双色二极管作为报警灯,RD5口与二极管的引脚1相连,RD4口与二极管的引脚2相连。第3节 系统的软件设计本系统的软件的核心是两个不断循环执行的中断程序:TMR0中断用于驱动数码管和LED显示:TMR1中断用于采集水位值并且将采集结果送缓冲寄存器供显示部分读取,同时对采集结果进行

14、简单的分析,判断其是否超过水位上限或下限,若超过则点亮相应的报警灯。整个软件部分大体可分为初始化程序、TMR1中断服务程序、数据转化子程序、TIMR0中断服务程序4个部分,以下分别加以描述。31 初始化程序初始化程序位于主程序开始部分,主要对3个部分进行初始化:I/0端口、TMR1和TMR0各部分初始化步骤如下描述,不再给出流程图。1.I/O端口方向控制寄存器A/D输入端口RA0设置为输入方式,串行时钟及串行数据输出端口RC,采样通道地址译码端口RD、显示部分地址译码及报警输出端口RE均设置为输出方式。2. TIMR1初始化 TIMR1初始化步骤如下:将第一位外设中断标志寄存器PIR1中的中断

15、标志位TMR1IF清零。将第一位外设中断屏蔽寄存器PIE1中的中断允许位TMR1IE置位。通过TMR1中断控制器I1CON设置时钟及分频比等给TMR1计数器TMR1H、TMR1L赋初值。将中断控制寄存器INTCON中的全局中断屏蔽位GIE置位。将外设中断屏蔽位PEIE置位。3. TIMR0初始化 TIMR0初始化步骤如下:通过选项寄存器OPTIONREG设置TMR0的分频比及时钟。将INTCON寄存器中的TMR0中断标志位清零并将中断屏蔽位置位。给TMR0计数器赋初值。32 TMR1中断服务程序设计系统的水位值刷新时间为1s,即单片机每秒钟对采样通道一遍A/D转换。软件上则设定TMR1定时器每

16、秒产生一次中断,执行数据采样程序,从最高水位采样通道向下执行,并不断将每次采样结果与系统设定的门限值比较,当检测到水位超过某一对电极时,则退出采样程序。接下来判断水位是否越限,若是则点亮相应的报警灯,否则使报警灯灭。然后调用数据转换子程序,将水位采样结果转化为相应数码管和LED显示段码值,存入显示数据缓冲寄存器。由于PIC单片机的中断矢量只有一个,而本设计用到两个中断,故而在中断服务程序入口处,需要对中断源进行判断,这是通过判断相应的中断标志寄存器俩实现的。设置TMR1定时器分频比为1:8,采用内部时钟源,系统采用2M晶振。那么TMR1的时钟脉冲周期为2 s,由于分频比为1:8,则每16s计数

17、一次,1s需要计数62500次,即从计时开始到62500个计数周期后,TMR1寄存器达到上限65536并产生溢出,所以TMR1寄存器初始值为65536-62500=3036,即0BDCH。TMR1中断服务程序流程图如图3.7所示。图3.7 TMR1中断服务程序流程图 33 数据转换子程序 在进行水位检测后,会产生一个水位的高度值(设为HEIGHT),但它并不是一个真实的水位值,只是一个标志水位高度的通道号,其值为015中的某个数,分别表示没有水以及15种水位高度共16种情况。故而需要将其转化为LED和数码管的实际显示段码值。表3.6列出了高度值HEIGHT、LED段码值LED1LED4和数码管

18、显示数据SEG1SEG4d的对应关系,表3.7则为数码管的七段码值与显示符号对应关系。 表3.6 高度值与显示段码对照表HEIGHTLED1LED2LED3LED4SEG1SEG2SEG3SEG40OFOHOFOHOF0HOF0H10E1H0F0H0F0H0F0H24620C3H0FOH0F0H0F0H160387H0F0H0F0H0F0H12040FH0F0H0F0H0F0H8050FH0E1H0F0H0F0H5060FH0C3H0F0H0F0H2070FH87H0F0H0F0H1080FH0FH0FOH0F0H090FH0FH0E1H0F0H10100FH0FH0C3H0F0H25110F

19、H0FH87H0F0H50120FH0FH0FH0F0H80130FH0FH0FH0E1H120140FH0FH0FH0C3H160150FH0FH0FH87H240注 空白处表示不显示任何数据。 表3.7 数码管七段码显示符号共阳极七段码共阴极七段码显示符号共阳极七段码共阴极七段码00C0H3FH682H7DH10F9H06H70F8H07H20A4H5BH880H7FH30B0H4FH990H6FH499H66H0BFH40H592H6DH全灭FFH00H有3种方法对LED和数码管显示缓冲寄存器写入数据:第一钟是采用查表方法,将各个高度值对应的数据预先存入一块缓冲区内,通过对指令指针赋值来

20、访问特定数据单元,返回转换后的数值;第二种是采用逐个比较的方法,将采样结果与015的数逐个比较,若相等则向缓冲区赋相应的值;第三种方法是根据表的特征来赋值,例如当HEIGHT8时,LED1的值为0FFH,SEG2没有显示。很显然,第二种、三种方法比较费时间,第一种方法虽然程序代码量较大,但执行起来速度快,本设计采用第一种方法,具体可参见查表子程序的程序代码。34 TMR0中断服务程序TMR0中断用于数码管及LED显示,每次中断将两个字节的数据串行发送至移位寄存器,后经74LS244驱动1组LED和1个数码管发光。由于每个LED或数码管两次被选通的时间最大不能超过100ms(利用人的视觉暂留现象

21、,否则就会出现闪烁),加之TMR1中断可能占用的时间,所以每次TMR0中断溢出时间不能太长;另一方面,TMR0中断溢出时间又不能太短,必须保证串行发送完毕。综合这两个方面因素,将TMR0溢出时间设为10ms。TMR1寄存器初始值计算方法与TMR1初始值计算方法类似,只是分频比设为1:128,计算结果为0D9H。图3.8所示为TMR0中断服务程序流程图。 图3.8 TMR0中断服务程序流程图35 程序清单及注释;*;水位检测仪 程序清单;程序文件名为: Leval_TEST.ASM;*LIST P=16F877INCLUDE P16F877.INCSTATUS EQU 03H ;定义状态寄存器地

22、址PCL EQU 02H ;定义程序计数器低8位指针地址PORTA EQU 05H ;定义端口RA的数据寄存器地址PORTC EQU 07H ;定义端口RC的数据寄存器地址PORTD EQU 08H ;定义端口RC的数据寄存器地址PORTE EQU 09H ;定义端口RC的数据寄存器地址TRISA EQU 85H ;定义端口RA的方向控制寄存器地址TRISD EQU 87H ;定义端口RC的方向控制寄存器地址TRISE EQU 88H ;定义端口RC的方向控制寄存器地址INTCON EQU 89H ;定义中断控制寄存器地址T1CON EQU 10H ;定义TMR1中断控制寄存器TMR0 EQU

23、 01H ;定义TMR0寄存器地址PIR1 EQU 0CH ;定义第一外设中断标志寄存器地址PIE1 EQU 8CH ;定义第一外设中断屏蔽寄存器地址ADRESH EQU 1EH ;定义ADC结果寄存器高子节地址ADCON0 EQU 1FH ;定义ADC控制寄存器0地址ADCON1 EQU 9FH ;定义ADC控制寄存器1地址T1CON EQU 10H ;定义TMR1控制寄存器地址TMR1L EQU 0EH ;定义TMR1低字节地址TMR1H EQU 0FH ;定义TMR1高字节地址SSPBUF EQU 13H ;定义SPI收发缓冲寄存器地址SSPCON EQU 14H ;定义同步控制串口寄存

24、器地址SSPSR EQU 94H ;定义同步串口状态寄存器地址;=变量=TEMP EQU 20H ;定义暂存寄存器HEIGHT EQU 22H ;定义采样结果寄存器,用以标志水位高度SELECTCOUNT EQU 23H ;定义翻转计数器,用以标志选通的显示通道ADCOUNT EQU 24H ;定义翻转计数器,用以标志选通的采样通道TXLED EQU 25H ;LED数据串行发送暂存寄存器TXDATA EQU 6H ;数码管数据串行发送暂寄存器LED1 EQU 29H ;发光二极管显示数据寄存器1LED2 EQU 30H ;发光二极管显示数据寄存器2LED3 EQU 31H ;发光二极管显示数

25、据寄存器3LED4 EQU 32H ;发光二极管显示数据寄存器4SEG1 EQU 33H ;数码管显示数据寄存器1SEG2 EQU 34H ;数码管显示数据寄存器2SEG3 EQU 35H ;数码管显示数据寄存器3SEG4 EQU 36H ;数码管显示数据寄存器4;=常量=TMR1LB EQU 0DCH ;定义TMR1低字节寄存器初始值(定时1s)TMR1HB EQU 0BH ;定义TMR1高字节寄存器初始值TMR0B EQU 0D9H ;定义TMR0寄存器初始值(定时10ms)GATEVALUE EQU 07FH ;定义采样结果门槛值,用以区分水和空气阻值;*复位矢量和中断矢量* ORG 0

26、00H NOP GOTO MAIN ORG 004H;*中断服务程序* BTFSC PIR1,0 ;检测是否是TMR1中断 GOTO TMR1INT ;是,则转TMR1中断 BTFSC INTCON,2 ;否,检测是否是TMR0中断 GOTO TMR0INT ;是,则转TMR0中断REFIE ;否,中断返回;=TMR1中断服务程序=TMR1INT BCF PIR1,0 ;清TMR1中断标志位 BCF STATUS,5 MOVLW 0FH MOVWF ADCOUNT ;通道数送翻转计数器TESTLOOP DECF ADCOUNT,0 IORLW OFOH ;屏蔽高4位 ANDWF PORTD,1 ;输出到CD4051通道译码端,以选通某一采样通道 BSF STATUS,5 MOVLW 41H MOVWF ADCON0 ;选择系统时钟8分

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1