单片机课程设计 葛满强 08923.docx
《单片机课程设计 葛满强 08923.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 葛满强 08923.docx(11页珍藏版)》请在冰豆网上搜索。
单片机课程设计葛满强08923
单片机课程设计
题目:
水塔水位控制设计
班级:
自控084
姓名:
葛满强
学号:
200808923
指导教师:
林海香
设计时间:
2011年1月
评语:
成绩
一引言
本设计为一个实际应用系统的水塔水位控制部分。
在此水塔水位控制系统中,检测信号来自插入水中的3个金属棒,以感知水位变化情况。
工作正常情况下,应保持水位在某一范围内,当水位变化发生故障的时候,及时关断电机电源,发出声、光报警信号。
单片机自20世纪70年代问世以来,以其极高的性价比,受到人们的重视和关注的应用广、发展快。
而MCS-51单片机是各单片机中最为典型和最具代表性的一种。
水塔供水的主要问题是塔内水位应始终保持在一定范围,避免“空塔”、“溢塔”现象发生。
目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现自动运行,使水塔内水位保持恒定,以保证连续正常地供水。
实际供水过程中要确保水位在允许的范围内浮动,应采用电压控制水位。
首先通过实时检测电压,测量水位变化,从而控制电动机,保证水位正常。
因此,这里给出以Atmel公司的80C5l单片机为核心器件的水塔水位检测控制系统仿真设计,实现水位的检测控制、电机故障检测、处理和报警等功能,并在Proteus软件环境下实际仿真。
实验结果表明,该系统具有良好的检测控制功能,可移植性和扩展性强。
本次设计以8031芯片为核心,辅以必要的外围电路,设计了一个简易的水塔水位控制系统,它由5V直流电源供电。
在硬件方面,除了CPU外,使用了2732芯片对8031的ROM进行4K扩展,并且使用74LS07芯片对外部电路驱动。
软件方面采用汇编语言编程,整个水塔水位控制系统能根据水塔水位的高低来决定水泵电机的运转状态,并且在发生故障时由外部电路的LED发光管点亮报警。
水塔水位控制系统是我国住宅小区广泛应用的供水系统,传统的控制方式存在控制精度低、能耗大的缺点,而自动控制原理,依据用水量的变化自动调节系统的运行参数,保持水压恒定以满足用水要求,从而提高了供水系统的质量。
而且成本低,安装方便,经过多次实验证明,灵敏性好,是节约水源,方便家庭和单位控制水塔水位的理想装置。
水塔水位控制系统采用交流电压检测水位,水位低于下限点水位时,水泵抽水,水位达到最高水位线时,水泵停止抽水,水位下降到最低水位线以下时,恢复运行抽水,从而实现自动控制。
本次课程设计由王红平同学负责搜集资料,葛满强同学负责整理排版,马海丽同学负责程序部分,张田和杨洁同学负责画图部分。
二设计方案及原理
图中虚线表示允许水位变化的上下限。
在正常情况下,应保持水位在虚线范围之内。
为此,在水塔内的不同高度安装3根金属棒,以感知水位的变化情况。
其中A棒处于水塔底部,C棒处于上限水位上,B棒处于下限水位上。
A棒接+5V电源,B棒、C棒各通过一个电阻与地相连。
水塔由电机带动水泵供水,单片机控制电机转动以达到对水位控制的目的。
供水时,水位上升,当达到上限时,由于水的导电作用,B、C棒连通+5V,因此,b、c两端均为“1”态,这时应停止电机和水泵的工作,不再给水塔供水。
当水位降到下限时,B、C棒都不能与A棒导通,因此b、c两端均为“0”状态。
这时应启动电机,带动水泵工作,给水塔供水。
当水位处于上下限之间时,B棒与A棒导通,因C棒不能与A棒导通,b端为“1”状态,c端为“0”状态。
这时,无论是电机已在带动水泵给水塔加水,水位在不断上升;或者是电机没有工作,用水使水位不断下降,都应该继续维持原有的工作状态。
图1水塔水位控制原理图
三硬件设计
由于所采用的信号是频率随水位变化而变的脉冲信号(开关量),因此电路设计中省去了A/D转换部分,这不仅降低了硬件电路的成本,而且由于采用数字脉冲信号通信,提高了系统的抗干扰能力、稳定性和精度。
输入的可变脉冲信号送到8031的P1.0和P1.1脚电平,当接收到信号时,输入脉冲使其输出高电平,而无信号输入时,无触发脉冲,此时翻转为低电平。
程序控制8031周期性地对P1.1和P1.0脚电平进行采样,达到控制的目的。
(1)接受电路得到的是频率随水位变化的调频脉冲,它反映了贮水池水位的高度,对其进行信号处理,便能实现对水位的控制及故障报警等功能。
要完成此一工作,最佳的选择是采用微机控制,实验中是以MCS—51系列单片机8031作CPU。
其中8031的时钟频率为6MHz。
由于8031没有内部ROM,因此需外扩展程序存储器。
本系统采用2732EPROM扩展4K程序存储器,对应地址空间为0000H~0FFFH。
(2)74LS373作为地址锁存器。
74LS373片内是8个输出带三态门的D锁存器,其结构示意图见图4所示。
当使能端G呈高点平时锁存器中的内容可更新,而在返回低电平瞬间实现锁存。
如此时芯片的输出控制端为低,也即输出三态门打开,锁存器中的地址信息便可经由三态门输出。
(3)两个水位信号由P1.0和P1.1输入,这两个信号共有四种组合状态。
如表3—1所示。
其中第三种组合(b=1、c=0)正常情况下是不能发生的,但在设计中还是应该考虑到,并作为一种故障状态。
(4)控制信号由P1.2端输出,去控制电机。
为了提高控制的可靠性,使用了光电耦合。
(5)由P1.3输出报警信号,驱动一只发光二极管进行光报警。
(6)水位检测接口电路。
为了便于实现水位检测功能,用一个两位的拨码开关模拟b、c端的状态(1、0),正电极接+5V电源,每个负电极分别通过4.7kQ的电阻(尺1,R2)接地。
将单片机的P1.0端口接开关1,P1.1端口接开关2。
假设被水淹没的负电极都为高电平,此时开关置1;露在水面的负电极都为低电平,开关此时置为0。
单片机通过负电极重复采集检测水位,当缺水时(此时两个开关均置0),电机必须带动水泵抽水;若水位在正常范围内时,检测信号为高,低电平(此时开关1置1,开关2置0);当水位过高时,检测信号为高电平(此时开关l和2都置1),单片机检测到P1.0和P1.1为高电平后,立即停机。
表1水位信号状态表
c(P1.1)
b(P1.0)
操作
0
0
电机运转
0
1
维持原状
1
0
故障报警
1
1
电机停转
(7)报警接口电路,为了避免系统发生故障时,水位失去控制造成严重后果,在超出、低于警戒界水位时,报警信号直接从高、低警界水位电极获得。
单片机P1.7端口为启动电机命令输出端口,P1.7=0为低电平,经过非门后与电机的另一端接地导通,启动电机工作;P1.7=l为高电平,反之,电机停止工作。
电机故障报警由单片机控制,电机故障报警信号由P1.0和P1.1输人。
当P1.5为高电平时蜂鸣器报警。
水位超过高警戒水位,单片机控制系统使电机停止转动,向水塔内供水工作也停止。
(8)存储器扩展接口电路,为了便于系统扩展,存放大容量应用程序,系统设计扩展一片程序存储器,用于存放源程序代码。
74LS373用于锁存地址,单片机的P0.0~P0.7通过复用方式分别接锁存器74LS373的DO~D7和存储器2732的D0~D7端,地址锁存信号线ALE接锁存器的G端,通过软件设置实现地址和数据信息的传输,锁存器的输出端Q0~Q7与存储器地址线A0~A7相连,剩余的3根地址线A8~A11接P2.0~P2.2。
图2水塔水位控制程序流程图
四软件设计
水位控制系统主要由CPU(80C51)、水位检测接口电路、报警接口电路、存储器扩展接口电路、复位电路、时钟振荡等部分组成.
表2真值表
一个应用系统,要完成各项功能,首先必须有较完善的硬件作保证。
同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。
甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。
因此充分利用其内部丰富的硬件资源和软件资源,采用MCS—51汇编语言和结构化程序设计方法进行软件编程。
这个系统程序由主控程序、延时子程序组成。
其中主控程序是核心。
由它控制着整个系统程序的运行和跳转。
流程图如图2所示。
包括系统初始化,数据处理,故障报警等。
电路具体工作情况如下:
①当水位低于B时,由于极棒A和C、A和B之间被空气绝缘,P1.0和P1.1得到低电平,全置0,单片机控制电路使P1.2置零,继电器吸合,启动水泵向水塔灌水;
②当水位高于B低于C时,P1.0置1,P1.1置0,继电器常开触电自保,因此升到B以上时,继电器并不立即释放,电极仍然供水;
③当水位达到C时,P1.0、P1.1均置1,单片机控制电路使P1.2置1,继电器释放,水泵停止工作;
④用水过程中,水位降到C以下,P1.1置0,P1.0置1,维持原状,电机不工作,直到降到B以下,如此循环往复。
系统出现故障时,由P1.3置零,输出报警信号,驱动一支发光二极管进行光报警。
五总结
该系统设计是基于在单片机嵌入式系统而设计的,充分利用单片机强大控制功能和方便通信接口,该检测控制系统在实验室某实验水冷却系统得到成功实践,实现水位检测、电机故障检测、处理和报警等功能,提高了实验的自动控制能力。
进一步优化系统软硬件设计,可为实时实现远端控制,因此,该系统在农村水塔,城市水源检测控制等领域有着广阔的应用前景。
这次课程设计首先让我对于单片机有了更深一层的认识,对它的意义也有了一定的了解,单片机在数字产品中大放光彩,好多的核心技术都是建立在它的基础上的。
其次对于单片机程序也有了进一步的掌握,在前面单片机课程的学习中编写程序是我的大难题,我总是将一些知识点混淆,而这次的课程设计将所学得知识都综合起来,因此我的编写程序的水平也比原来好一点了。
同时我也熟悉了一些芯片的使用,很多芯片我在做单片机实验时也用到了,这次的设计让我对80c51芯片的使用有了更详细的了解。
当然,在此期间我也遇到了许多困难,开始调试程序时出现了一大堆错误,有语法错误,也有逻辑错误。
在老师的指导下,我们一起合作,耐心的排除了所有的错误,成功的调试出了结果。
六参考文献
[1]李广弟,朱月秀,王秀山.单片机基础北京:
航空航天大学出版社,2000.147~156
[2]康华光,陈大钦.电子技术基础模拟部分武汉:
高等教育出版社,1998.57~116
[3]谢自美.电子线路设计·实验·测试(第二版)武汉:
华中理工出版社,2000
[4]杨恢先,黄辉先.单片机原理及应用[M].人民邮电出版社,2006.
[5]曾一江.单片机微机原理与接口技术[M].科学出版社,2006.
附录
附录一:
水塔水位控制电路
附录二:
主程序
ORG8000H
AJMPLOOP
LOOP:
ORLP1,#03H;为检查水位状态做准备
MOVA,P1
JNBACC.0,ONE;P1.0=0则跳至ONE
JBACC.1,TWO;P1.1=1则跳至TWO
BACK:
ACALLD10S;延时10S
AJMPLOOP
ONE:
JNBACC.1,THREE;P1.1=0则跳至THREE
CLR93H;P1.3←0,启动报警装置
SETB92H;P1.2←1,停止电机工作
FOUR:
SJMPFOUR
THREE:
CLR92H;启动电机
AJMPBACK
TWO:
SETB92H;停止电机工作
AJMPBACK
D10S:
ORG8030H;延时子程序D10S(延时10秒)
MOVR3,#19H
LOOP3:
MOVR1,#85H
LOOP1:
MOVR2,#0FAH
LOOP2:
DJNZR2,LOOP2
DJNZR1,LOOP1
DJNZR3,LOOP3
RET
END
附录三:
芯片介绍
图38031引脚图
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O引脚。
<1>电源:
a.VCC-芯片电源,接+5V;
b.VSS-接地端;
<2>时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
<3>控制线:
控制线共有4根
a.ALE/PROG:
地址锁存允许/片内EPROM编程脉冲
①ALE功能:
用来锁存P0口送出的低8位地址
②PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
b.PSEN:
外ROM读选通信号。
c.RST/VPD:
复位/备用电源。
1RST(Reset)功能:
复位信号输入端。
②VPD功能:
在Vcc掉电情况下,接备用电源。
d.EA/Vpp:
内外ROM选择/片内EPROM编程电
1EA功能:
内外ROM选择端。
②Vpp功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
<4>I/O线
8031共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。