资源描述
目 录 第1章 绪论11.1概述11.2设计要求及意义1第2 章 总体方案论证与设计22.1总体设计方案22.2系统组成2第3章 系统硬件设计33.1以8051单片机为例讲解单片机的引脚及相关功能33.2水位检测电路43.3水质检测电路4第4章 系统的软件设计错误!未定义书签。4.1 水位控制程序错误!未定义书签。4.2水质检测程序74.3使用说明与注意事项9第5章 系统调试与测试结果分析105.1软件调试105.2硬件测试10心得体会11参考文献12附录1程序13附录2仿真效果图19第1章 绪论一个应用系统,要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用MCS51汇编语言和结构化程序设计方法进行软件编程。这个系统程序由主控程序、延时子程序组成。其中主控程序是核心。由它控制着整个系统程序的运行和跳转。包括系统初始化,数据处理,故障报警等。1.1概述水位控制在日常生活及工业领域中应用相当广泛,比如水塔、地下水、水电站等情况下的水位控制。而以往水位的检测是由人工完成的,值班人员全天候地对水位的变化进行监测,用有线电话及时把水位变化情况报知主控室。然后主控室再开动电机进行给排水。很显然上述重复性的工作无论从人员、时间和资金上都将造成很大的浪费。同时也容易出差错。因此急需一种能自动检测水位,并根据水位变化的情况自动调节的自动控制系统。水位检测可以有多种实现方法,如机械控制、逻辑电路控制、机电控制等。本实验采用两种方法(单片机和时基集成电路)进行主控制,在水池上安装一个自动测水位装置。利用水的导电性连续地全天候地测量水位的变化,把测量到的水位变化转换成相应的电信号,主控台应用单片微机或时基集成电路对接收到的信号进行数据处理,完成相应的水位显示、控制及故障报警等功能。在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。1.2设计要求及意义 本次课程设计对我有以下意义: 通过这次课程设计,加深对单片机理论方面的理解。第2 章 总体方案论证与设计2.1总体设计方案 现系统的功能,一是水位控制电路,二是水质检测电路,并且对于整个系统我们采用顺序控制。 首先进行水位控制,水位电路根据输入不同的模拟量,转换为不同的数字量,经过和设定的值进行比较,通过P1.2口对电机进行控制。水位控制电路完成其预定功能后,便自动转到延时子程序,系统经过一定的预定延时(本设计设定值为 10S)之后,转去执行水质检测电路。检测电路根据不同的模拟量的输入,转换为不同的数字量,经过和设定的值进行比较后,由单片机产生不同的驱动信号,从而使对应的二极管发光,以显示不同的水质状态。水质检测结束,系统自动返回到程序的入口处,继续进行水位的检测和控制。如此往复循环达到对水塔水位的自动控制和对水塔水质的检测和显示,从而满足水位和水质的要求。2.2系统组成水位检测电路可以通过两个 51 单片机的管脚来感知水位的变化,产生不同的逻辑组合来控制是否进水或是停止进水。输出端可由一个端口来控制电机的运行状态,进而控制水泵的工作。 水质检测的电路主要由 A/D 转换器组成。通过 A/D 转换为数字量作用于单片机,从而控制水质状况的显示。本次设计采用 ADC0808 芯片。用 LED 灯来显示水位的高低。ADC0808 有 8 路模拟量的输入端口,本次设计只要用其中一个,8 路模拟开关无需进行切换选通。设计通过 A/D 转换为数字量作用于单片机,进而控制电机的运转。本次设计采用可调电阻器来控制模拟电信号的输入。通过对电阻器的调节来模拟输入量的变化。通过对比数字量来进行判断水位的高低,不同颜色的信号指示灯显示不同的水质。进而通过输出口对电机进行开关控制。第3章 系统硬件设计3.1以8051单片机为例讲解单片机的引脚及相关功能电源: VCC - 芯片电源,接+5V; VSS - 接地端; 注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平,但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN:外ROM读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线) 5. P3口第二功能 P30 RXD 串行输入口 P31 TXD 串行输出口 P32 INT0 外部中断0(低电平有效) P33 INT1 外部中断1(低电平有效) P34 T0 定时计数器0 P35 T1 定时计数器1 P36 WR 外部数据存储器写选通(低电平有效) 3.2水位检测电路 为了便于实现水位检测功能,用一个两位的浮子开关A,B模拟b、c端的状态(1、0),正电极接+5 V电源,每个负电极分别通过4.7 k的电阻(R1,R2)接地。将单片机的P1.0端口接开关B,P1.1端口接开关A。假设被水淹没的负电极都为高电平,此时开关置1;露在水面的负电极都为低电平,开关此时置为0。单片机通过负电极重复采集检测水位,当缺水时(此时两个开关均置0),电机必须带动水泵抽水;若水位在正常范围内时,检测信号为高,低电平(此时开关B置1,开关A置0);当水位过高时,检测信号为高电平(此时开关A和B都置1),单片机检测到P1.0和P1.1为高电平后,立即停止电动机工作。3.3水质检测电路水质检测电路主要由ADC0808实现,通过A/D转换对比来判断水质的好坏。模拟量由模拟通道IN0输入,通过对可调电阻的调节,模拟输入不同的电压量。数字量的输出端与单片机的P0口相连接。单片机可通过对P0口数据的采集和处理,发出相应的控制信号。P3.0口和P3.6口通过逻辑或非门后,输出端接START与ALE端口。P3.0口和P3.7口也通过逻辑或非门后,输出端接OE端。第4章 系统的软件设计一个应用系统,要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单。以下为设计的具体程序4.1 水位控制程序图4-1水位控制程序流程图由以上流程图,可以得出水位控制程序清单如下:ORG 0000H AJMP MAIN ORG 0030H SJMP LOOP ORG 0050HMAIN: SETB P1.0 CLR P3.0 CLR P3.6 ACALL DELAY SETB P3.0 SETB P3.6WAIT: JB P1.1,DONE1 ;检测转换是否完成 SJMP WAIT ;等待转换完成DONE1 : CLR P3.0 CLR P3.7 MOV A,P0 CLR C SUBB A,#0F4H JNC D1 MOV A,P0 SETB C SUBB A,#0003H JC D2 SJMP LOOP D1: CLR P1.2 SJMP BACK D2: SETB P1.2 SJMP BACK BACK: ACALL D10S SJMP LOOP4.2水质检测程序通过对水质检测电路图的分析,做出以下水质检测程序流程图如图4-2所示。图4-2水质检测流程图由以上流程图,可以得出水质检查系统程序清单如下:ORG 0000H SJMP MAIN ORG 0030MAIN: CLR P3.0 CLR P3.6 ACALL DELAY ;调用延时子程序 SETB P3.0 SETB P3.6WAIT: JB P2.7,DONE ;转换结束则转 SJMP WAIT ;未结束则等待DONE: CLR P3.0 CLR P3.7 MOV A,P0 ;读取数据 CLR C SUBB A,#0AAH ;与设定值比较大小 JNC DONE1 ;大则转 MOV A,P0 SUBB A,#55H ;与设定值比较大小 JNC DONE2 ;大则转 SETB P1.5 ;控制红灯亮 CLR P1.6 CLR P1.7 SJMP MAINDONE1: SETB P1.7 ;控制绿灯亮 CLR P1.6 CLR P1.5 SJMP MAINDONE2: SETB P1.6 ;控制黄灯亮 CLR P1.5 CLR P1.7 SJMP MAINDELAY: MOV R5,#5 ;延时子程序DL1: MOV R6,#10DL2: MOV R7,#10 DJNZ R7,$ DJNZ R6,DL2 DJNZ R5,DL1 RET END 4.3使用说明与注意事项该电路设计比较简单,功能稳定,适合于实际的水塔水位控制中使用。作为一个很实用的自动控制装置,为了工作人员的操作的方便,下面对其使用方法与注意事项作如下简单描述:使用水质和水位检测和调节功能是一个完全自动的过程,不过仿真电路是需要人为改变输入量的变化,在水位的输入量就是通过浮标来改变输入量电压的大小,通过A/D转换,利用浮力原理使浮标带动触头工作,进而影响直流接触器动作,控制交流接触器工作,实现水塔无水时自动开启水泵电动机,水满时自动关闭的自动控制目的,整个由单片机来实现对电机的调节。本次设计中的电机调节电路简单的接了个5V的直流电机来实现控制。水质检测系统的输入量是由一个能够接受发光二极管的感光器来完成的。感光器对不同的水质会感应处不同的电压信号,这些不同的模拟电信号经过A/D转换。由单片机驱动相应的水质指示灯,从而达到检测水质的目的。绿灯表示水质为“良”,黄灯表示水质为“中”,当指示器为红色时,水质等级为“差”,为保证人们的饮水安全,工作人员应立即停止供水再进行检查确定感光器工作是否正常。若操作中水位控制和水质检测不是同时进行的,因为在软件上有一定的时间差,不过在水塔水位和水质检测这种对时间的精确度要求不高的场合,时间差可以忽略不计,一般它不会影响到系统的安全性能和时间特性。第5章 系统调试与测试结果分析5.1软件调试本设计主要是用 proteus 软件绘图以及伟福软件进行编程仿真的。调试步骤由两个部分组成:首先,确定程序中错误的确切性质和位置;然后,对程序代码进行分析,确定问题的原因,并设法改正这个错误。具体地说,由以下步骤组成: 1.从错误的外部表现入手,确定程序中出错的位置; 2.分析有关程序代码,找出错误的内在原因; 3.修改程序代码,排除这个错误; 4.重复进行暴露了这个错误的原始测试以及某些回归测试,以确保该错误确实被排除且没有引入新的错误;5.2硬件测试 对水塔水位自动控制系统测试的要求如下: 1. 必须保障单片机及单片机的外围电路正常工作,给硬件电路提供符合要求的直流电源;保证上位机和单片机核心硬件系统的正常通讯;从而提供上位机正常工作的相应条件;保证监控系统的监控程序成功的下载到上位机内部; 2.必须保证系统的硬件系统和相应的软件系统能够彼此的结合起来; 3.必须把系统的控制程序完整的下载到单片机当中,保障单片机的相应端口和外面的相应被控制设备正确连接。 4.按照自己编写的程序来自己控制水塔里面的水位和水质的情况,从而测试本系统是否能够处于正常工作状态。心得体会回顾起此次单片机课程设计,让我感慨很多,从选题到定稿,从理论到实践,在整整两个星期的日子里,可以说是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多书本上所没有学到过的知识。两周以来,整日埋头于电路程序的设计,分析,组装,绘制,仿真,总结以及打印材料等工作,。其实一开始真不知道该从何入手,短短几天内,在各位老师的耐心知道和同学的帮助之下,开始在脑海里有了大致的模块,就这样整天埋在图书馆,面对电脑搜索资料,一块一块的电路慢慢拼成,于是又开始查找相关的资料,分析电路,根据自己的目的有效地编制程序,对比之下有进一步的完善,在形成电路大致模块下又进一步尽可能的减小成本,知道最终电路以自己最理想的形式出现。在本次设计的过程中,我发现很多的问题,单片机课程设计的重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉得写好一个程序不是一件简单的事情。通过这次实习,我真正学到了不少东西,真正体会到了理论联系实际的重要性。课堂教学考虑到大多数同学的需求,主要强调基本知识,基本理论,基本方法,基本技能。而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。参考文献1、 教材单片微型计算机技术 刘国荣 编 机械工业出版社2、 单片微型计算机原理、应用及接口技术 张迎新 编 国防工业出版社3、 单片机实用系统设计技术 房小翠 编 国防工业出版社4、单片机应用系统设计 何立民 编 北航出版社5、单片机原理及接口技术 曹琳琳编 国防科技大学出版社附录1程序ORG 0000HD5 EQU 33H ;显示缓存区33H-34HD6 EQU 34HWEI1 EQU P1.3 ;位选端口P2.4-P2.7WEI2 EQU P1.4 AJMP MAIN ORG 0030H SJMP LOOP ORG 0050HMAIN: SETB P1.0 CLR P3.0 CLR P3.6 ACALL DELAY SETB P3.0 SETB P3.6WAIT: JB P1.1,DONE1 ;检测转换是否完成 SJMP WAIT ;等待转换完成DONE1 : CLR P3.0 CLR P3.7 MOV A,P0 CLR C SUBB A,#0F4H ;与最高位比较 JNC D1 MOV A,P0 SETB C SUBB A,#0003H ;与最低位比较 JC D2 SJMP LOOP D1: CLR P1.2 SJMP BACK ;电机停转 D2: SETB P1.2 SJMP BACK ;电机转动 BACK: ACALL D10S SJMP LOOP D10S: MOV R3,#19H LOOP3: MOV R1,#85H LOOP1: MOV R2,#0FH LOOP2: DJNZ R2,LOOP2 DJNZ R1,LOOP1 DJNZ R3,LOOP3 RETI LOOP: MOV A,P0 MOV P2,A ACALL TRAN ACALL DISP ;水位显示 CLR P1.0 CLR P3.0 ;水质检测 CLR P3.6 ACALL DELAY SETB P3.0 SETB P3.6WAIT1: JB P1.1,DONE ;检测转换是否完成 SJMP WAIT1 ;等待转换完成DONE: CLR P3.0 CLR P3.7 MOV A,P0 ;读取P0口数字量 CLR C SUBB A,#0AAH ;与设定值#0AAH比较 JNC A1 ;若A值大,则绿灯亮 MOV A,P0 SUBB A,#55H ;与设定值055H比较 JNC A2 ;若A值大,则黄灯亮 SETB P1.5 ;其余情况,则红灯亮 CLR P1.6 CLR P1.7 SJMP MAINA1: SETB P1.7 ;绿灯亮子程序 CLR P1.6 CLR P1.5 SJMP MAINA2: SETB P1.6 ;黄灯亮子程序 CLR P1.5 CLR P1.7 SJMP MAINDELAY: ;延时子程序 MOV R5,#5DL1: MOV R6,#10DL2: MOV R7,#10 DJNZ R7,$ DJNZ R6,DL2 DJNZ R5,DL1 RETITRAN: MOV A,P2 MOV B,#10H DIV AB MOV D5,A MOV D6,B RET DISP: MOV DPTR,#TAB SETB P1.3 MOV A,D5 MOVC A,A+DPTR MOV P2,A ACALL DELAY1 CLR P1.3 SETB P1.4 MOV A,D6 MOVC A,A+DPTR MOV P2,A ACALL DELAY1 CLR P1.4 MOV P2,#0FFH RETDELAY1:MOV R6,#5D0: MOV R7,#200 DJNZ R7,$ DJNZ R6,D0 RETTAB:DB 28H ; 0 DB 0EBH ; 1 DB 32H ; 2 DB 0A2H ; 3 DB 0E1H ; 4 DB 0A4H ; 5 DB 24H ; 6 DB 0EAH ; 7 DB 20H ; 8 DB 0A0H ; 9 DB 60H ; A DB 25H ; B DB 3CH ; C DB 23H ; D DB 34H ; E DB 74H ; F DB 0D7H ; -. DB 0F7H ; - DB 61H ; H DB 70H ; P DB 0DFH ; . DB 27H ; O DB 0FFH ; 全黑END附录2仿真效果图20
展开阅读全文