《水位检测仪设计毕业设计.doc》由会员分享,可在线阅读,更多相关《水位检测仪设计毕业设计.doc(29页珍藏版)》请在三一办公上搜索。
1、目 录摘要11 引言2 1.1水位检测仪器的现状和发展前景2 1.2 本文的结构安排22 水位监测仪的基本原理3 2.1功能说明3 2.2整体架构33 硬件设计5 3.1水位检测与数据采集5 3.2数码管与LED显示7 3.2.1 相关芯片简介7 3.2.2 显示部分工作原理94 系统软件设计12 4.1 初始化程序12 4.1.1 I/O端口方向控制寄存器12 4.1.2 TMR1初始化12 4.1.3 TMR0初始化13 4.2 定时/计数器13 4.2.1 TMR1中断服务程序14 4.2.2 TMR0中断服务程序15 4.3 数据转换子程序17结束语19致谢20参考文献21附录22 附
2、录 程序清单及注释22水位检测仪设计摘要:水位检测和显示仪表装置在工业上有着广泛的应用,本文设计了一种能实时检测并显示水位的仪器-水位检测仪。设计主要论述对水位数据采集系统的设计与实现,其主要功能是完成数据采集、处理、显示、数据存储等。根据对数据采集系统体系结构及功能要求的分析,以PIC16F877单片机为核心设计并实现的采集系统,结合CD4051实现对水位的检测,结构简单,实现可靠。在PIC单片机中实现了数据存储和处理,获取了当前的水位,并设计实现了数码管的驱动显示电路。该设计是基于单片机技术设计实现的低功耗水位数据采集装置,是一个具有一定实用性的实时数据采集系统。最后的实验结果验证了水位监
3、测仪的总体设计思路及硬件、软件设计方案正确,能够准确地实现了水位的自动检测。关键词:PIC单片机;水位检测;LED显示 第1章 引言 1.1 水位检测仪器的现状和发展前景 随着科学技术的不断发展,我国的监测仪器已具有一定研究、开发和生产能力,特别是各种仪器的数据处理系统及自动控制系统的最新研究成果,使我国仪器研制和在用仪器改造的升级,迈上了一个新的台阶。目前国产仪器在功能齐全、性能稳定等方面,与国际上较为先进的同类产品不相上下,完全能够满足水位检测的需要,且价格比国外进口仪器便宜得多。 虽然我国的地下水环境监测仪器,从工艺力量和工艺装备,从行业生产水平和专业化水平等方面来看,与发达国家相比有较
4、大差距,但在某些方面,已具有一定的优势,特别是各种仪器数据处理系统及自动控制系统的最新研究成果,使我国仪器研制和在用仪器改造的升级,迈上了一个新的台阶,而就功能设置与软件编辑来说,更适合我国的国情。在水位检测仪器方面,国外具有较为先进产品,但不适合我国国情,突出表现在:仪器设备昂贵,操作步骤复杂,质控程序繁琐。我们应采取有效措施,扬长避短,将国外的先进技术引入国内消化吸收,建立既适合我国国情又尽可能与国际接轨的监测方法。在地下水监测仪器的研制中,要在多品种和提高技术水平上下功夫,真正做到能准确、及时、真实的数据反映地下水状况和变化规律1。水位检测和显示仪表装置在工业上有着广泛的应用2-9。为了
5、适应我国自动检测的发展现状,本文设计了一种能实时检测并显示水位的仪器-水位监测仪1.2 本文的结构安排本文主要分三个章节介绍水位监测仪的开发流程:第二章介绍水位监测仪的基本原理,简单介绍水位监测仪的功能以及整体架构第三章介绍硬件设计,从数据采集和显示两个方面分别介绍第四章介绍软件设计,从TMR1中断服务程序、子程序转换程序、TMR0中断服务程序三部分进行系统分析。 水位监测仪的基本原理2.1 功能说明对偏离零点的水位进行检测,然后将带符号的水位置(低于或高于零点)用数码管显示出来,并通过双色发光二极管LED阵列对水位高度进行模拟显示。(1) 水位检测:在0mm、10mm,20mm、30mm共点
6、的基础上,检测水位偏离零点的大小。(2) 水位显示:将上一步检测结果用数码管显示出来,显示值以比实际水位小的最近点为准,同时用7个竖直排列的双色LED阵列直观地模拟当前水位高度,当水位没有达到某点时相应的LED显示红色、达到或超过则显示绿色。当水位低于-30mm时报警灯显示绿色,高于30mm是报警灯显示红色,当水位恢复正常时报警灯熄灭。2.2 整体架构水位监测仪主要由三部分组成:水位检测与数据采集电路、PIC16F877单片机以及数码管与LED显示电路。整体框图如图xa2.1所示。电源数码管及LED显示电路PIC16F877水位数据采集电路图2.1 水位监测仪整体构架框图水位数据采集电路将采集
7、到的数据通过采样通道输入口传输给PIC16F877单片机,PIC单片机对数据进行处理后信号输出给显示电路,数码管及LED显示电路将水位显示出来。本设计引入一种独特的扫描思想-循环扫描,由于水位检测的数据采集及显示的实时性要求不是很高,而单片机的的运行速度相对很快,如果分时选通各个采样及显示通道,整体开来近似为同时进行的,只要不断的重复这一扫描过程,就可以完成无间隔数据采集和无闪烁显示。水位检测与数据采集电路部分采用电接点水位检测方法,在每一个预定水位检测点处,将两个电极安装在容器壁,使其一端能够与没过该点的水充分接触,另一端引出到容器外面同检测电路相连接,两个电极等高度并间隔一定距离。当水位没
8、有达到该检定点是,两个电极间电阻为无穷大;而一旦水位上升到该点高度,则两个电极同时没入水中,由于水的导电性,两个电极导通。通过检测两个电极是否导通就可以检测水位的高度了。数码管与LED显示电路部分主要由15个双色发光二极管和4个数码管组成。模拟水位高度由15个双色发光二极管(LED)来完成,共分4组。数字水位高度显示由四个数码管来完成,分别表示正负、百位、十位和各位。在某一特定时刻,每组LED与一个数码管一起被选通(4组LED对应4个数码管),两个8位的移位寄存器74LS164级联,将单片机送出的2个字节串行数据转化为16位并行数据,分别送选通的LED和数码管。在不同时刻,系统对4组LED和数
9、码管快速的循环扫描,就完成了面板显示的功能。 第3章 硬件设计本部分介绍多通道水位循环检测的硬件设计、利用串行芯片扩展I/O端口的方法以及循环扫描方式实现面板显示的硬件结构。水位检测仪的电路原理图如图3.1所示。图3.1 水位监测仪电路原理图3.1 水位检测与数据采集本设计采用电接点水位检测方法,通过检测两个电极是否导通就可以检测水位的高度了。对15个检测点相应有15个检测通道,本设计运用两片8通道的多路选择开关CD4051,对各个通道循环检测来实现数据采集。CD4051是一种双向8通道的多路开关,可以8路选通输入,1路输出;也可以1路输入,8路选通输出。通过3为数据位A,B,C进行通道选择。
10、禁止输入输出端INH可以禁止和允许工作。其引脚定义如图3.2所示,真值表如表1所示。 IN/OUT VDD 1 0 3 A B C 16 15 14 13 12 11 10 90 1 2 3 4 5 6 7 84 6 OUT/IN 7 5 INH VEE VSS IN/OUT IN/OUT 图3.2 CD4051引脚图表1 CD4051真值表选通通道输入状态INHIBITCBA0000010001200103001140100501016011070111NONE1*尽管水位检测原理简单,但应用时却不能仅仅用每路的通断来判断水位时否没过该路的点击。实际上水的电阻因水的所含成分不同有很大的差异,
11、例如蒸馏水就不到点,就不能用这种方法来检测。另一方面,空气电阻也不是无穷大的,也跟其成分有关,例如饱和蒸汽的组织大概有1M欧左右。所以,不能通过判断单片机的数据采集引脚输入电平高低来判断水位是否到达某点,否则介于高低电平之间的电平状态就无法做出判断,而这种情况可能存在。一个可靠的方法就是对输入引脚的数据进行采样,然后将结果与一个阀值电压进行比较,从而得出结论。根据这个原理设计的水位检测仪数据采集部分的电路如图3.3所示。从图中可以看出,RD3口是地址扩展口,其与一个非门连接,结合INH引脚,将2个8路选通开关扩展为一个16路选通开关。通过RD03口进行采样通道地址译码,在不同时刻选通15个通道
12、中的1个,循环扫描15个通道。当水位上升到某一对电极高度时,相应通道的采样电压将会较低;若没有上升到电极高度,那么上拉电阻将会把采样值箝位到+5V。通过判断采样电压的高低,就可以判断选通的通道是否没于水中,进而判断水位高度,RA0口作为A/D采样的通道输入口。POLE014为15对模拟水位高度的电极。图3.3 数据采集原理图3.2 数码管与LED显示键盘和显示器是单片机系统中人机对话不可缺少的一部分。在许多智能仪表的设计中,多用LED数码管来显示。这是因为LED数码管驱动简单,成本较低并且能适应恶劣的环境。用于数码管显示驱动的芯片有很多种,常见的有MAX7219、MAX7221、ZLG7290
13、、ICM7218B以及8279等。这些专用芯片使用方便,功能较强,但价格偏高。本设计中采用循环扫描的方式,充分利用单片机快速的处理能力对各显示单元分时选通,只需普通的串行移位芯片,就可以达到显示驱动的目的。3.2.1 相关芯片的介绍显示部分用到的芯片包括移位寄存器74LS164、数据缓冲器74LS244以及多路开关CD4051。下面就74LS164和74LS244作简单介绍。(1) 移位寄存器 74LS164。74LS164引脚定义如图3.4所示,起真值表如表2所示,其功能是将外部输入的串行数据转化为8位的并行数据输出,+5V供电,串行传输的频率由外部时钟控制,其数据输出具有锁存功能。A,B端
14、为穿行数据输入端,QAQH为并行数据输出端,CLK为外部时钟输入端,CLR为清零端。当清除端CLEAR为低电平时,输出端(QAQH)均为低电平。串行数据输入端(A、B)可控制数据,当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下QA为低电平。当A、B有一个为高电平则另一个就允许数据输入,并在CLOCK上升沿作用下决定QA的状态。 图3.4 74LS164引脚图10表2 74LS164的真值表输入输出CLEARCLOCKA BQA QB QHLXX XL L LHLX XQA0 QB0 QH0HH HH QAn QGnHL XL QAn QGnHX LL QAn
15、 QGn注: QA0、 QB0、QH0为在稳态输入条件建立之前QA 、QB 和QH相应的电平;QAn 、QGn 为在最近的时钟转换前QA或QG的电平,表示移1位。(2) 数据缓冲器74LS244。由于74LS164在高电平输出时,其输出最大电流为0.4mA;低电平输出时,起输出最大电流为8mA,不足以驱动数码管或发光二极管正常工作,所以在本设计中外加数据缓冲器以增大驱动能力,使数码管和二极管可以正常工作。 74LS244缓冲器常用作三态缓冲或总线驱动,+5V供电,其高电平时输出最大电流可达15mA,低电平输出时最大电流可达24mA,足以驱动数码管和LED工作。74LS244共8个输入输出通道,
16、通过门控端1G和2G来选择其通断,其引脚图如图3.5所示。图3.5 74LS244内部结构及引脚图从图中可以看出,当引脚1G为低电平时,输入通道1A11A4与输出通道1Y11Y4连通;当引脚1G为高电平时则截止。当引脚2G为低电平时,输入通道2A12A4与输出通道2Y12Y4连通;当引脚2G为高电平时,输入通道2A12A4与输出通道2Y12Y4截止。3.2.2 显示部分工作原理首先介绍一下双色二极管的功能和用法。如图3.6所示,1个双色二极管有3个引脚,引脚1,2均为信号“+”端,引脚3为GND端(信号“-”端)。引脚电平(TTL电平)与LED显示颜色如表3所示。图3.6 双色二极管外观图表3
17、 双色二极管的功能表引脚1引脚2二极管状态00熄灭01绿色10红色11混合颜色数码管及LED显示电路如图3.7所示,其主要功能流程是:将单片机输出的串行数据通过74LS164移位寄存器转化并行数据,经74LS244数据缓冲器驱动数码管及LED显示。RC5口作为串行数据输出端,与74LS164的数据输入端相连,当单片机输出的串行数据输入74LS164;RC3口作为串行数据的同步时钟端,与74LS164的时钟同步输入端相连。两片移位寄存器74LS164的并行数据输出端则分别与两片数据缓冲器74LS244的输入端相连,两片74LS244分别驱动数码管和LED的显示,RD7口作为数据缓冲器74LS24
18、4的门控信号输出端,控制74LS244的通断。图3.7 数码管及LED显示电路每4个双色二极管和1个数码管一组,二极管的8个信号“+”端分别与第一片74LS244的8位数据输出端相连,数码管的8为数据输入端分别与第二片74LS244的8为数据输出端相连,每组二极管和数码管的GND端都与CD4051的1个输入通道相连,CD4051的输出端与系统的“地”相连。RE0RE1口作为地址译码输出端口,用于多路开关CD4051的4路通道选择,每一时刻只有一组共4个二极管和一个数码管被选通,其GND端同系统的“地”构成通路,其他的二极管与数码管则不能构成通路。每向74LS164传送完2个字节共16位数据,通
19、过RD7口使能74LS244,将数据送到二极管和数码管的输入口,然后通过RE0RE1口打开一条通道,则被选通的数码管和二极管就会按照接收的数据进行相应的显示。不断的发送新数据并利用CD4051循环的扫描4个通道,则所有的二极管和数码管就会持续的发光显示。利用人的视觉暂留现象,每个LED或数码管两次被选通的时间间隔不能大于100ms。另外由一个双色二极管作为报警灯,RD5口与二极管引脚1相连,作为上限报警灯;RD4口与二极管的引脚2相连,作为上限报警灯。 第4章 系统软件设计本设计关键的核心是两个不循环执行的中断程序:TMR0中断用于驱动数码管和LED显示;TMR1中断用于采集水位值并且将采集结
20、果送缓冲寄存器供显示部分读取,同时对采集结果进行简单的分析,判断其是否超过水位上限和下限,若超过则点亮相应的报警灯。整个软件大体可以分为初始化程序、TMR0中断服务程序、数据转换子程序、TMR1中断服务程序4个部分,以下分别加以描述。4.1 初始化程序初始化程序位于主程序开始部分,主要对3部分进行初始化:I/O端口、TMR1和TMR0。各部分的初始化步骤如下描述。4.1.1 I/O端口方向控制寄存器u RA0端口用于将采集到的数据输入,故将A/D端口RA0设置为输入方式u 串行数据同步端口RC3,设置为输出方式u 串行数据输出端口RC5,设置为输入方式u 采样通道地址译码端口RD0RD3,设置
21、为输出方式u 显示部分地址译码端口RE0RE1,设置为输出方式u 报警输出端口RD4RD5,设置为输出4.1.2 TMR1初始化TMR1初始化步骤如下:l 将第一外设中断标志寄存器PIR1(地址为0CH)中的TRM1溢出中断标志位TMR1IF(Bit0)清零。l 将第一外设中断屏蔽寄存器PIE1(地址为8CH)中的TMR1溢出中断屏蔽位TMR1IE(Bit0)置位。l 通过TMR1中断控制寄存器T1CON(地址为10H)设置时钟及分频比等。 即:时钟源选择位TMR1CS(Bit1)清零,选择内部时钟源 分频比选择位T1CKPS0T1CKPS1(Bit54)置位11,选择分频比1:8l 给TMR
22、1计数器TMR1H(地址为0FH)、TMR1L(地址为0EH)赋初值l 将中断控制寄存器INTCON(地址为0BH)中的全局中断屏蔽位GIE(Bit7)置位,响应所有外围设备模块产生的中断请求l 将中断控制寄存器INTCON(地址为0BH)中的外设中断屏蔽位PEIE(Bit6)置位,开放第二级别的外围中断4.1.3 TMR0初始化TMR0初始化步骤如下:n 通过选项寄存器OPTION_REG(地址为81H)设置TMR0的分频比及时钟 即:时钟选择位T0CS(Bit5)清零,由内部提供的指令周期信号作为时钟源 分频器分配为PSA(Bit3)清零,分频器分配给TMR0 分频器分频比选择位PS2PS
23、0(Bit20)置位111,选择分频比1:128n 将INTCON寄存器(地址为0BH)中的TMR0中断标志位T0IF(Bit2)清零并将中断屏蔽位T0IE(Bit5)置位n 将中断控制寄存器INTCON(地址为0BH)中的全局中断屏蔽位GIE(Bit7)置位,响应所有外围设备模块产生的中断请求n 将中断控制寄存器INTCON(地址为0BH)中的外设中断屏蔽位PEIE(Bit6)置位,开放第二级别的外围中断n 给TMR0计数器赋初值4.2定时/计数器定时/计数器其功能都是靠寄存器计数值的累积来实现的,PIC单片机采用递增方式,计数值累加到上限后会产生溢出,相应的会在溢出中断标志位上反映出来。计
24、数值的累加又是靠时钟来触发的,它可以是单片机内部时钟,也可以来自外部。定时的长短以及数值的上限都是定时/计数器的位宽、分频器的分频值有关。PIC16F87X系列单片机集成3个定时/计数器模块TMR0、TMR1、TMR2。在结构和功能上不尽相同,其定时长短,计数上限因此也不一样,应用场合也不同11。TMR0为8位宽,与WDT共用一个可选的预分频器,用于一般的通用目的。TMR1为16位宽,附带一个可编程的预分频器以及一个可选的低频时基振荡器,不仅可以用来计数,还可与CCP模块一起实现输入捕捉与输出比较功能。TMR2也是一个8位宽的定时/计数器,附带一个可编程的预分频器,一个可编程的后分频器,一个周
25、期寄存器和比较器,只能用于定时,不能用于计时,可与CCP模块一起实现PWM功能(即产生脉宽调制信号)。TMR0的特点:u 8位宽定时/计数器u 计数器TMR0内容可读可写u 8位软件可编程预分频器u 内部/外部时钟可选,外部时钟触发边沿可选u 溢出中断功能TMR1的特点:u 16位宽定时/计数器u 计数器TMR1内容可读可写u 3位软件可编程预分频器u 累加计数信号源可选内部时钟、外部触发信号或自带时基振荡器信号u 溢出中断功能TMR2的的特点:u 8位宽的定时器u 计数器TMR2内容可读可写u 2位软件可编程与预分频器,4位软件可编程后分频器u 累加计数信号源可选内部时钟信号,因此只能工作在
26、定时器模式u 8位周期寄存器u 溢出次数经过分频后溢出中断u 可以由用户软件关闭退出定时 本设计应用到了TRM0和TMR14.2.1 TMR1中断服务程序 设定系统的水位刷新时间为1S,即单片机每秒钟对采样通道进行一遍A/D转换、软件上则设定TMR1定时器每秒产生一次中断,执行数据采样程序,从最高水位采样通道向下执行,并不断将每次采样结果与系统设定的门限值比较(采样结果如果小于门限值,说明电平低,即电容两极同时没于水中,水位已经超过该电极)当检测到水位超过某一对电极时,则退出采样程序。接下来判断水位是否越限,若是则点亮相应的报警灯,否则使报警灯熄灭。然后调用数据转换子程序,将水位采样结果转化为
27、相应数码管和LED显示段码值存入显示数据缓冲寄存器。由于PIC单片机的中断矢量只有一个,而本设计中用到两个中断(TMR1和TMR0),故而在中断服务程序入口处,需要对中断源进行判断,这是通过判断相应的中断标志寄存器来实现的。TMR1中断服务程序流程图如图4.1所示。 设置TMR1定时器分频比为1:8,采用内部时钟源,系统采用2M晶振。那么TMR1的时钟脉冲周期为2s,由于分频比为1:8,则每16s计数一次,1s需要计数62500次,即从计时开始到62500个计数周期后,TMR1寄存器达到上限65536并溢出,所以TMR1寄存器初始值65536-62500=3036,即0BDCH。下面对流程图中
28、的关键部分进行简单说明:(1) 关于ADC控制寄存器ADCON0的设置:AD转换时钟选择位Bit76置位01,选择系统时钟,频率为fosc/8,模拟输入通道选择位Bit53置位000,选择通道0(RA0/AN0)。(2) 关于ADC控制器ADCON1的设置:A/D转换结果格式选择位(Bit7)清零,A/D转换结果左对齐,ADRESH有效,ADRESL的低六位为0,A/D端口控制位(Bit30)置位1110,选择RA0口为模拟输入口(3) 采样开始部分,要先关闭A/D转换器(Bit0=0),令其退出工作状态,等待采样值稳定后在重新开启A/D转换器(Bit0=1),开始采样。并通过检测A/D转换状
29、态位GO/DONE(Bit2)是否为0,确定采样是否结束。图4.1 TMR1中断服务程序流程图4.2.2 TMR0中断服务程序TMR0中断用于数码管及LED显示,每次中断将两个字节的数据串行发送发送至以为寄存器,后经74LS244驱动一组LED和1个数码管发光。由于每个LED或数码管两次被选通的时间最大不能烧过100ms(利用人的视觉暂留现象,否则就会出现闪烁),加之TMR1中断可能占用的时间,所以每次TMR0中断溢出时间不能太长;两一方面,TMR0中断溢出时间又不能太短,必须保证串行发送正常发送完毕。综合两方面因素,将TMR0溢出时间设定为10ms。TMR0中断服务程序流程图如图4.2所示。
30、设置TMR0定时器分频比为1:128,采用内部时钟源,系统采用2M晶振。那么TMR0的时钟脉冲周期为1s,由于分频比为1:128,则每256s计数一次,10ms需要计数39次,即从计时开始到39个计数周期后,TMR0寄存器达到上限256并产生溢出,所以TMR0寄存器初始值256-39=217,即0D9H。图4.2 TMR0中断服务程序流程图下面对流程图中的关键部分进行简单说明:(1) 发送的两个字节,根据硬件电路原理可知,先发送的字节经过移位寄存器74LS164及数据缓冲器74LS244驱动一组LED;后发送的字节经过移位寄存器74LS164及数据缓冲器74LS244驱动一个数码显示管。(2)
31、 发送字节过程中,需清74LS244使能位,暂时禁止数据输出显示,待发送完毕后,置74LS244使能位,允许数据输出显示。(3) 当使用SPI来进行数据发送时,采用软件对标志位查询的方式来完成。(4) 关于同步串口控制寄存器SSPCON的设置:同步串行口允许位SSPEN(Bit5)置位,允许串口工作;同步串行口工作模式选择位SSPM30(Bit30)置位0000,选择SPI主控模式,并且时钟频率为系统时钟的1/4。4.3 数据转换子程序在进行水位检测后,会产生一个水位的高度值(设置为HEIGHT),但它并不是一个真实的水位值,只是一个标识水位高度的通道号,其值为015中的某个数,分别表示没有水
32、以及15种水位高度共16种情况。故而需要将其转化为LED和数码管的实际显示段码值。表4列出了高度值HEIGHT、LED段码值LED1LED4和数码管显示数据SEG1SEG4的对应关系,表5则为数码管的七段码值遇显示符号的对应关系。表4 高度值与显示段码对照表HEIGHTLED1LED2LED3LED4SEG1SEG2SEG3SEG400F0H0F0H0F0H0F0H-10E1H0F0H0F0H0F0H-24020C3H0F0H0F0H0F0H-160387H0F0H0F0H0F0H-12040FH0F0H0F0H0F0H-8050FH0E1H0F0H0F0H-5060FH0C300F0H0F0
33、H-2570FH87H0F0H0F0H-1080FH0FH0F0H0F0H090FH0FH0E1H0F0H10100FH0FH0C3H0F0H25110FH0FH87H0F0H50120FH0FH0FH0F0H80130FH0FH0FH0E1H120140FH0FH0FH0C3H160150FH0FH0FH87H240表5 数码管七段码显示符号共阳极七段码共阴极七段码显示符号共阳极七段码待添加的隐藏文字内容1共阴极七段码00C0H3FH682H7DH10F9H06H70F8H07H20A4H5BH880H7FH30B0H4FH990H6FH499H66H-0BFH40H592H6DH全灭FFH
34、00H有三种方法对LED和数码管显示缓冲寄存器写入数据:第一种是采用查表的方法,将各个高度值对应的数据预先存入一块缓冲区内,通过对指令指针赋值来访问特定数据单位,返回转换后的数值;第二种是采用逐个比较的方法,将采样结果与115的数逐个比较,若相等则向缓冲区赋相应值;第三种方法是根据表的特征来赋值,很显然,第二、三种方法比较费时间,第一种方法虽然程序代码最大,但执行起来速度快,本设计采用第一种方法,具体可参见查表子程序的程序代码。 结束语由于许多数据采集、显示的实时性要求不是很高,因此单片机的执行速度相对于这些过程要快得多,若分时选通各个采样或显示通道,虽然单片机对各个通道的处理是依次进行的,但
35、是只要这一过程达到一定速度,总的看来几乎同时执行,不断重复这一过程,就产生了循环扫描的思想,它在单片机系统设计中得到了广泛的应用。本设计中的水位采样通道设计以及数码管、LED显示都是基于这一思想。主要是通过移位的方法,用74LS164芯片将每个通道的串行数据转化为并行方式,在通过数据缓冲器74LS244输出,用CD4051循环对每个通道选通,从而实现对数码管的驱动。串行通信上则利用PIC的CCP模块,采用硬件SPI方式进行串行通信。软件上采用了两个中断程序分别进行采样和显示。 致谢 本次毕业设计历时两个多月,从选题、开题答辩到设计的完成,设计的完稿。其间每一过程都得到指导教师王灵矫老师的悉心指
36、导,在此表达我对他的深深的敬意和由衷的感谢! 同时,我要向我的家人表达我深深的感激!在我的求学生涯中,他们给了我最无私的关怀和鼓励。如果没有他们无限的支持和帮助,我也不能在我的学习之路上勇往直前。最后,我要感谢一同学习了4年的同学们和所有关心我的朋友们,他们给予了我大量的帮助和支持,在我犹豫和困惑的时候,他们的支持帮我坚定了目标,走出了困境,他们是我一生的财富。 参考文献1史云.我国地下水监测仪器的现状与发展电子文献北京:地质环境信息网,2005年 2杨恢先、黄辉先.单片机原理及应用M.北京:人民邮电出版社,2006年 3罗翼、张宏伟.PIC单片机应用系统开发典型实例M.北京:中国电力出版,2
37、005年 4李学海. PIC单片机实用教程-基础篇M. 北京:北京航空航天大学出版设,2007年 5李学海. PIC单片机实用教程-提高篇M. 北京:北京航空航天大学出版设,2007年. 6李学海.PIC单片机原理M北京:北京航空航天大学出版社,2004年 7彭树生.PIC单片机原理及应用M机械工业出版社,2002年 8杨圣.PIC系列单片机的原理与实践M合肥:中国科学技术大学出版社,2003 9刘启中、李荣正等.PIC单片机原理及应用M.北京:北京航空航天大学出版社,2003 10阎石.数字电子技术基础M.北京:高等教育出版社,2005年 11求是科技. PIC单片机典型模块设计实例导航M.
38、 北京:人民邮电出版社,2005年 附录附录 程序清单及注释LIST P=16F877INCLUDE P16F877.INCSTATUS EQU 03H;定义状态寄存器地址PCL EQU 02H ;定义程序计数器低8位指针地址PORTA EQU 05H;定义端口RA的数据寄存器地址PORTC EQU 07H ;定义端口RC的数据寄存器地址PORTD EQU 08H ;定义端口RD的数据寄存器地址PORTE EQU 09H ;定义端口RE的数据寄存器地址TRISA EQU 85H;定义端口RA的方向控制寄存器地址TRISC EQU 87H;定义端口RC的方向控制寄存器地址TRISD EQU 88
39、H;定义端口RD的方向控制寄存器地址TRISE EQU 89H;定义端口RE的方向控制寄存器地址INTCON EQU 0BH;定义中断控制寄存器地址T1CON EQU 10H ;定义TMR1中断控制寄存器TMR0 EQU 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控制寄存器地址TMR
40、1L EQU 0EH ;定义TMR1低字节地址TMR1H EQU 0FH;定义TMR1高字节地址SSPBUF EQU 13H ;定义SPI收发缓冲寄存器地址SSPCON EQU 14H ;定义同步串口控制寄存器地址SSPSTAT EQU 94H ;定义同步串口状态寄存器地址OPTION_REG EQU 81H ;定义选项寄存器;=变量声明=TEMP EQU 20H ;定义暂存寄存器HEIGHT EQU 22H ;定义采样结果寄存器,用以标识水位高度SELECT_COUNT EQU 23H ;定义翻转计数器,用以标识选通的显示通道AD_COUNT EQU 24H ;定义翻转计数器,用以标识选通的采样通道TX_LED EQU 25H ;LED数据串行发送暂存寄存器TX_DATA EQU 26H ;数码管数据串行发送暂存寄存器LED1 EQU 29H ;发光二极管显示数据寄存器1LED2 EQU 30H ;发光二极管显示数据寄存器2LED3 EQU 31H ;发光二极管显示数据寄存器3LED4 EQU 32H ;发光二极管显示数据寄存器4SEG1 EQU 33H