液位控制系统设计
信息职业技术学院
毕业设计说明书(论文)
设计(论文) 题目:
_ 基于单片机的液位控制系统设计
专 业: 应用电子技术
班 级: 应电08-2
学 号: 6
姓 名: 声
二〇一〇年九月十日
目 录
摘 要 ................................................................... 1
第1章 绪论 ............................................................. 2
第2章 设计方案 ......................................................... 3
2.1 方案举例 ............................................................ 3
2.2 方案比较 ............................................................ 4
2.3 方案确定 ............................................................ 4
第3章 硬件设计 ......................................................... 5
3.1 控制系统 ............................................................ 5
3.1.1 AT89C51单片机 .................................................. 5
3.1.2 AT89C51的信号引脚 .............................................. 7
3.1.3 单片机最小系统 .................................................. 8
3.2 感应系统 ............................................................ 9
3.3 指示系统 ........................................................... 10
3.4 液位控制系统 ....................................................... 11
3.5 电机与报警系统 ..................................................... 12
第4章 软件设计 ........................................................ 13
4.1 延时子程序 ......................................................... 13
4.2 感应系统程序 ....................................................... 13
4.3 指示系统程序 ....................................................... 14
4.4 电机和警报系统程序 ................................................. 15
4.5 液位预选系统程序 ................................................... 15
4.6 系统主流程图 ....................................................... 17
第5章 系统测试 ........................................................ 18
5.1 仿真测试过程 ....................................................... 18
5.2 仿真结果 ........................................................... 21
总 结 .................................................................. 22
参考文献 ................................................................ 23
附录1 系统仿真电路 ..................................................... 24
附录3 元件明细表 ....................................................... 25
附录3 源程序 ........................................................... 26
摘 要
本系统以AT89C51单片机为核心设计一款简易液位控制系统。该系统主要适用于容器内液位高低的检测,由控制系统、显示系统、报警和电机系统组成。系统具有简单清晰的操作界面,能够显示液位高低,可进行液位预设,到达预定液位后自动关闭电机并时报警功能。系统以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高,同时该系统还具有功耗小、成本低的特点,具有很强的实用性。由于该系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有较强的可扩展性。软件程序均采用C 语言编写,便于移植与升级。报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。
关键词 液位控制;AT89C51;单片机
第1章 绪论
21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多品种方向发展,它作为自动控制中的一个核心器件在小型自动控制系统及信号采集方面已被广泛应用,技术也相对成熟,向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展趋势。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
在传统的液位控制系统中,存在着自动化程度低、调节精度差的缺点,已经不符合当今高效、低耗、低劳动强度的要求,同时会产生大量的污染。对于小型测控系统,一般可采用以单片机为核心、配以接口电路和外围设备,在编制应用程式的模式来实现。
下面将介绍一个简单的液位控制系统,可用于容器内液体存储,例工、农用蓄水池,居民社区水箱等方面。此系统采用以单片机为控制中心的技术,不仅能使控制系统具有精度高、功能强、经济性好的特点,还节约能源、利于环保。
第2章 设计方案
2.1 方案举例
方案一:液体流入容量控制方式。对输入容器的液体的管道进行监控,根据流入体积推算出容器内液体液位高度。
图2-1 液体流入容量控制系统结构框图
容量监控系统:对进入容器的液体体积进行监控。
管道控制系统:控制管道对液体的传输情况。
在液体向容器内部输入时,通过对容量的监控知道容器内的液体体积,在液体进入容器内部的体积到达目标时,控制输送液体的管道,使液流停止,最终达到目标液位。
方案二:简单的连通器控制方式。在目标容器内连接连通器,使多余的液体导入副容器,以致目标容器的液位达到目的液位。
图2-2 连通器控制系统结构框图
在目标液位位置给目标容器连接连通器,在观察到多余溢出的液体流入连通器内后,停止液体输送。
方案三:采用单片机技术来实现液位控制的功能。系统以AT89C51单片机为核心控制器件,它除具有灵活强大的控制功能,以便实时检测液位的传递信号、控制液位到达的高低实现自动控制。
图2-3 基于单片机实现的液位控制系统结构框图
感应系统:将感应到的液位信号传递给单片机控制器。
控制指令:将控制信息传递给单片机,使液位到达预定位置。
显示系统:经过单片机辨别后,显示当前系统工作和液位位置指示灯。
电机与报警控制系统:单片机经过信息处理后,决定是否启动电机和报警
2.2 方案比较
方案一结构简单,操作方便。但是自动化程度低,精度不高,控制响应时间慢,且只能单独控制。
方案二结构简单,成本低廉。但精度不高,无法显示,浪费资源,自动化程度低。 方案三不仅结构简单,成本低廉,而且准确度高,自动化高,节省人力资源,更重要的是利用单片机控制后,由于其拥有多个引脚,在为添加功能时更改电路方便快捷,而且内部程序可以进行反复输入和擦除,在以后更改控制方法时只要更改程序内容就可以达到相对应目的,省时省力,及其节约成本。
2.3 方案确定
综合考虑以上方案的优缺点以及题目的基本要求和发挥要求,在本设计中,我采用了第三种方案,即采用单片机来实现液位控制的功能为我此次设计的方案。主控制器AT89C51单片机与MCS51系列单片机产品兼容,内部自带有4KB 的Flash 存储器及256KB RAM 单元,不需另外扩展EEPROM 及静态RAM ,可以在线下载程序,易于日后的升级。
第3章 硬件设计
该系统硬件设计总体思想是以单片机为控制系统,接受感应信息并进行处理后,将控制指令传出,对各个系统进行对应操作。硬件设计总体框图如图3-1所示。
图3-1 硬件设计总体框图 控制系统:根据输入信息进行处理,并将控制数据传出。
感应系统:将感应到的液位信号传递给单片机控制器。
指示系统:经过单片机辨别后,显示当前系统工作和液位位置指示灯。
液位预选系统:将控制信息传递给单片机,使液位到达预定位置。
电机与报警控制电路:单片机经过信息处理后,决定是否启动电机和报警
3.1 控制系统
该系统控制主要为单片机控制。单片机是单片微型计算机的简称,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU 、存储器、基本输入/输出接口电路、定时/计数器和终端系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。
3.1.1 AT89C51单片机
单片机实质上是一个芯片。它具有结构简单、控制功能强、可靠性高、体积小、价格低等优点,单片机技术作为计算机技术的一个重要分支,广泛的应用于工业控制、智能化仪器仪表、家用电器、电子玩具等各个领域。
ATMEL 公司生产的AT89C51单片机采用高性能的静态80C51设计,并采用先进工艺制造,还带有非易失性Flash 程序存储器。它是一种高性能、低功耗的8位CMOS 微处理芯片,市场应用最多。其主要特点如下:8KB Flash ROM,可以擦除1000次以上,数
据保存10年。技术特点有:256字节内部RAM ;电源控制模式;时钟可停止和恢复;空闲/掉电模式;6个中断源;4个中断优先级;4个8位I/O口;全双工增强型TUAR ;3个16位定时/计数器:T0、T1(标准80C51) 和增加的T2(捕获和比较);全静态工作方式:0~24MHZ ;AT89C51单片机的基本结构请参见图3-2,各部分情况介绍如下:
中央处理器(CPU ):中央处理器是单片机的核心,完成运算和控制功能。AT89C51的CPU 能处理8位二进制数或代码。
内部数据存储器(内部RAM ):AT89C51芯片中共有256个RAM 单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM 。
内部程序存储器(内部ROM ):AT89C51共有8KB 掩膜ROM ,用于存放程序、原始数据或表格,因此称之为程序存储器,简称内部ROM 。
定时器/计数器:AT89C51共有2个16位的定时器/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。
图3-2 AT89C51单片机结构框图
并行I/O口:AT89C51共有四个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入输出。
串行口:AT89C51单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同
步移位器使用。
中断控制系统:AT89C51单片机的中断功能较强,以满足控制应用的需要。AT89C51共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。全部中断分为高级和低级共二个优先级别。
时钟电路:AT89C51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6MHZ 和12MHZ 。
从上述内容可以看出,AT89C51虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此实际上它已是一个简单的微型计算机系统了。
3.1.2 AT89C51的信号引脚
AT89C51是标准的40引脚双列直插式集成电路芯片,其引脚排列请参见图3-3。引脚功能见表3-1。
P1.0 VCC P1.1 P0.0 P1.2 P0.1 P1.3 P0.2
8051 P1.4 P0.3
P1.5 P0.4 P1.6 P0.5 P1.7 P0.6 RST/VPD RXD P3.0 PSEN INT1 P3.3 P2.7 T0 P3.4 P2.6 P2.5 P2.4 RD P3.7 P2.3 XTAL2 P2.2 XTAL1 P2.1 表3-1 AT89C51引脚功能
图3-3 MCS–51引脚
ALE :在系统扩展时,ALE 用于控制把P0口输出的低8位地址锁存器锁存起来,以实现低位地址和数
据的隔离。此外由于ALE 是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。
PSEN :外部程序存储器读选通信号。在读外部ROM 时PSEN 有效(低电平),以实
现外部ROM 单元的读操作。
EA :访问程序存储控制信号。当EA 信号为低电平时,对ROM 的读操作限定在外部
程序存储器;而当EA 信号为高电平时,则对ROM 的读操作是从内部程序存储器开始,并可延至外部程序存储器。
RST :复位信号。当输入的复位信号延续2个机器周期以上高电平即为有效,用以完成单片机的复位初始化操作。
XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
VSS :地线。 VCC :+5V电源。
由于工艺及标准化等原因,芯片的引脚数目是有限制的。例如AT89C51系列把芯片引脚数目限定为40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就需要给一些信号引脚赋以双重功能。如果把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。最常用的是P3口线的第二功能详见表3-2。
表3-2 P3口各引脚与第二功能表
3.1.3 单片机最小系统以AT89C51单片机为核心,由单片机、时钟电路、复位电路等组成如图3-4所示。主要负责各个模块的初始化工作,读取并处理时间、按键响应、显示等。
单片机的工作就是执行用户程序、指挥各部分硬件完成既定任务。单片机能够工作的最小电路还包括时钟和复位电路。
时钟电路位单片机工作提供基本始终,复位电路用于将单片机内部各电路的状态恢复到初始值。
单片机是一个负载的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格的按时序进行工作。时钟电路用于产生单片机工作所需要的时钟信号。时钟电路是由XTAL1和XTAL2之间跨接的晶体振荡器和微调电容构成。时钟电路中晶体振荡器的频率高则系统的时钟频率就高,所以该系统采用12MHz 晶振,工作周期为1us 。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。单片机复位是使CPU 和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。本系统中采用的是12MHz 晶振,时钟频率为12MHz ,每个机器周期为1us ,需要加上持续2us 以上时间的高电平。
复位电路有两种形式:手动按键复位和上电复位,在本系统中采用的是手动按键复位。如图3-4所示,R1、C3和KEY1组成系统手动按键复位电路。
图3-4 单片机最小系统
3.2 感应系统
为了使单片机在液位情况不同时进行判定,从而决定工作情况,我们要给单片机传递液位的信息。感应系统目的就是将感应到的液位的信息传递给单片机,所以需要在容器中放置能够感应出液位情况的感应器件,此系统中我们选用浮球液位计。
浮球液位计由浮球、插杆等组成。根据排开液体体积相等原理浮于液面,当容器的液位变化时浮球也随着上下移动,由于磁性作用,浮球液位计的弹簧受磁性吸
合,把液面位置变化成电信号,通过磁耦合作用,使传感器内电阻成线性变化,由智能转换器将电阻变化转换成4~20mA 标准电流信号,传供给控制系统可实现液位的自动检测、控制和记录。该仪器适用于石油、化工、电力、轻工及医药等行业污水处理及各类常压和承压容器内介质液位的测量,尤其对于地下贮槽、贮罐的液位测量最为理想。
通过浮球液位计所传出的电流信号,传递给单片机。如图3-5所示,P1.0、P1.1、P1.2、P1.3为液位检测信号传递的接口。P1.0端口接a 位,P1.1端口b 位,P1.2端口接c 位,P1.3端口接d 位。
图3-5 信号传递系统
3.3 指示系统
为了得知控制系统运转时的情况,我们需要给整个系统添加装置来明示,表明系统的进程、液体的位置,此系统中,采用连接指示灯来提供我们液位控制的必要的信息。如图3-6所示,P0.0、P0.1、P0.2、P0.3、P0.4端口为单片机与液位位置和单片机工作指示灯的控制和通信的数据端口。在单片机工作期间,除了表明工作进行的工作指示D5 会一直保持亮的状态,其它指示灯会为表明液位的情况相应变亮,如表3-3所示。
表3-3 指示灯情况明示表
图3-6 指示系统
3.4 液位控制系统
在液位进入容器时,为了可以控制液体在容器内液位的高度,选择P2.0、P2.1、P2.2为预定液位的控制端口,在P2.0端口、P2.1端口、P2.2端口接入三个开关分别限定液体到达a 位、b 位和c 位,如图3-7所示。开关闭合时单片机会进行判定,然后根据程序进行液位控制,使进入容器的液体停止在相应位置。如果在单片机起动后没有开关闭合,那么液体直到d 位才会停止。
图3-7 液位控制系统
3.5 电机与报警系统
单片机在接受和判断传输进来的信息后根据程序来控制电机的运转和警报的鸣响。如图3-7,P3.0、P3.1为电机和报警器的控制端口,P3.0端口连接电机控制电路,在端口发出高电平时,会启动光耦合器,使电路中得电磁继电器闭合,导通电机电路,使电机转动将液体送入容器。其工作状态如表3-4。
图3-7 电机与报警系统图 表3-4 电动机和报警器工作状态表
第4章 软件设计
系统软件设计的程序编写内容,可以监控液位的不同位置,在液位处于不同状态传递着不同信号而由程序控制指示灯、电机及报警器的状态。系统设制了三个按键,是控制液位位置的。整个系统的软件设计均采用C 语言开发,采用查询的方式进行液位和按键状态进行扫描,确保系统的实时性。系统框图如图4-1。
图4-1 控制系统框图
4.1 延时子程序
电路中我们用的12MHz 的晶体振荡器,所以一个机器周期为1us ,为了使电路中的报警器发出正常的鸣叫声,需要一个延时子程序。内容如下:
void delay(unsigned int z) {
unsigned int x,y; for(y=110;y>0;y--); for(x=z;x>0;x--); }
其中Z 为自定义函数,在调用时插入语句“delay(z)”即可启动延时,而其中的延时时间为 Z×110us 。
4.2 感应系统程序
由硬件系统可知,单片机的P1端口接入的是液位的感应端,由于感应端的关系,在感应高位的端口时低端的感应器一定感应到了液位,
所以端口会由于液位上涨依次接
收到电信号,相对应得函数程序,流程及其相应程序为:
P1==0xf0 //液位无感应无信号。
P1==0xf1 // a位有感应信号。
P1==0xf3 //a位、b 位有感应信号。
P1==0xf7
P1==0xff
//a位、b 位、c 位有感应信号。 //四个液位档均有感应信号。
图4-2 液位感应流程图
4.3 指示系统程序
液位和单片机工作指示灯的控制和通信的数据接入单片机的P0端口。当端口处于高电平时指示灯就会变亮,而控制端口的高低电平就是单片机和其内部的程序,当感应到液位信号后,作出对应指令。
P0.4端口的工作指示灯在单片机工作时一直都要保持亮的状态,所以我们需要P0.4一直为高电平。
P4端口的函数指令、流程及其相应程序如下:
if(P1==0xf0) // 液位指感应无信号 P0=0xf0;
// 只有工作指示灯亮
if(P1==0xf1) // a位有感应信号 P0=0xf1;
// a位指示灯亮
if(P1==0xf3) // a位、b 位有感应信号 P0=0xf3;
// a位、b 位指示灯亮
if(P1==0xf7) //a位、b 位、c 位有感应信号 P0=0xf7;
// a位、b 位、c 位指示灯亮
if (P1==0xff) //四个液位档均有感应信号 P0=0xff;
//四个液位指示灯全亮
图4-3 指示灯系统流程图
4.4 电机和警报系统程序
单片机的P3.0、P3.1为电机和报警器的控制端口, 利用程序语言将这两个端口定义出来,更为方便简单的控制,例: sbit P30=P3^0; sbit P31=P3^1;
//电机端口,将P3.0接口定义为P30。 //报警器端口,将P3.1接口定义为P31。
相应端口为高电平时会导致电机启动,报警器鸣叫,系统流程图如下:
P30=1; P31=0; P30=0; P31=1;
图4-4 电机和警报系统流程图
//电机指示灯D6亮,电机启动
//报警器不响
//电机指示灯D6灭,电机停
//报警器响
4.5 液位预选系统程序
P2.0、P2.1、P2.2为液位预选控制的数据传送端口,不同的感应端口接收到信号后,通过单片机控制电机和报警器。流程图如下:
图4-5 液位控制系统流程图
a 位控制: if(P1==0xf1) { P0=0xf1;
// a位指示灯亮
// a位有感应信号
if(P20==0) // a位预选开关按下 {
P30=0; // P31=1; //
}
}
b 位控制: if(P1==0xf3) // a {
P0=0xf3;
if(P21==0) // b {
P30=0; // P31=1; //
}
}
c 位控制: if(P1==0xf7) // a { P0=0xf7;
if(P22==0) // c { P30=0; // P31=1; //
}
电机停 报警
位、b 位有感应信号
位、b 位指示灯亮
位预选开关按下 电机停 报警
位、b 位、c 位有感应信号
位、b 位、c 位指示灯亮
位预选开关按下 电机停 报警
// a // a
}
液位达到d 位时,点机会自动停止,报警器鸣叫,程序如下: if (P1==0xff) // a位、b 位、c 位、d 位均有感应信号
{
// a位、b 位、c 位、d 位水指示灯全亮
P0=0xff;
{ }
P30=0; //电机停 P31=1; //报警
}
4.6 系统主流程图
系统的软件主流程图如图4-6所示。
图4-6 主程序流程图
系统程序详见附录2。
第5章 系统测试
本设计的核心是采用AT89C51单片机,外部连接电子电路,构成了一个多位控制的液位控制系统。
本系统的仿真采用PROTEUS 软件,由于软件内没有浮球等液位感应器,所以连接简单电路代替。如图5-1所示,设有4个接地开关SW1-SW4,对液位进行仿真控制如果没有开关断开,就相当于液体低于a 位,电机会自动运行。但要注意,在液位处于高液位时液位肯定浸没过低液位,所以在表示高液位开关断开时,低于此液位的开关也要处于断开状态,对应仿真情况如表5-1。
图5-1 信号传递仿真系统 表5-1 液位情况仿真表
5.1 进行系统仿真。
运行系统,开始传感器无感应(如图5-1),P0.4端口保持高电平,D5会保持亮的状态说明系统正在运行(如图5-2所示),此时程序会使P3.0端口为高电平,P3.1端口为低电平,而当P3.1端口为高低电平,会使报警电路导通,才能使报警器会鸣叫。
图5-2 系统运行工作指示灯D5亮
当P3.0端口为高电平,D6会变亮,会启动光耦合器,电流同过电路三极管后会被放大到足够大,以启动电磁继电器使开关吸合,使电机电路导通,如图5-3所示。
图5-3 电机转动
当开关SW1断开时,P1.0端口为高电平(如图5-4),如果开关SW5于闭合状态下,会使P2.0端口为低电平,此时程序会使P3.0端口为低电平,P3.1端口为高电平,则电机会停止,报警器会鸣叫,如图5-5;开关SW5于断开闭合状态下,会使P2.0端口为高电平,此时程序会使P3.0端口为高电平,P3.1端口为低电平,则电机会转动,报警器
不会鸣叫。
图5-4 模拟液位到达a 位,SW1断开
图5-5 a位控制开关闭合
当开关SW2断开时(SW1已处于断开),P1.1端口为高电平(P1.0端口已处于高电平)指示灯D1,D2会变亮,判断此时开关SW6状况,如果此时开关SW6处于闭合状态下,电机则会停止,报警器会鸣叫;否则电机继续转动。
同理,在开关SW3断开时,指示灯D1,D2,D3会变亮,判断开关SW7的状况。 而在开关SW4断开时,液位指示灯会全亮,电机会自动停止且报警器鸣叫。
5.2 仿真结果
系统通过仿真调试后,可以稳定运行,进行液位控置,且可以在系统进行时更改预设液位。但要注意在运用电磁继电器时,要使电路有足够的电压启动它;连接报警器时,要考虑单片机内部时钟始终频率。
总 结
本设计以功能齐全适用于大众为指导思想,选取AT89C51单片机为控制核心。通过外围元件构成了一个具有容器内液位不同位置控制的液位控制系统。
系统拥有指示灯显示液位,键位预选液位,到目的液位的报警功能,软件程序采用均采用C 语言编写,便于移植与升级。
整个系统是根据单片机对液位感应信号和液位控制端口的循环判断后,做出对电机的端口信号控制,控制液体的导入与否进而控制了容器内部的液位。
系统经连接、调试后,可以稳定运行,同时可以对液体进入容器位置进行预先设置。系统具有线路简单、清晰、体积小、价格低等优点,但无法实时监控液位情况,添加或更换不同的液位传感器可以改进这一情况,之后可以根据容器参数计算出液体体积 。
本设计系统主要的控制对象是电机,在不同的情况下来选择电机的启动和停止,没有对液体流入容器的整个系统进行多方面的控制,此系统可以在影响液位的其他方面的因素进行提升和改进,形成多方向控制液位系统。
参考文献
[1] 介华. 电子技术课程设计指导. 北京:高等教育出版社,2003 [2] 诗白. 模拟电子技术基础(第三版). 北京:高等教育出版社,2004 [3] 旭东. 实用电子电路精选. 北京:化学工业出版社,1999 [4] 王汉才. 单片机原理及接口技术. 北京:清华大学出版社,1996 [5] 李伟. 单片机原理及应用. 北京:机械工业出版社,2002 [6] 张平. 单片机原理与接口技术. 北京:电子工业出版社,2003 [7] 王新颖. 单片机原理及应用. 北京:北京大学出版社,2008
[8] 陈忠平. 单片机基础与最小系统实践. 北京:北京航空航天大学出版社,2006 [9] 沈庆阳.8051单片机实践与应用. 北京:清华大学出版社,2003 [10] 何立民. 单片机应用技术选编. 北京:北京航空航天出版社,2006
[11] 杨振江. 单片机实用子程序及应用实例. 西安:西安电子科技大学出版社,2007
四川信息职业技术学院毕业设计说明书(论文)
附录1 系统仿真电路
附录3 元件明细表
附录3 源程序
#include
sbit P30=P3^0; sbit P31=P3^1;
sbit P20=P2^0; sbit P21=P2^1; sbit P22=P2^2;
**************************延时子程序*********************** {
//a位控制 //b位控制 //c位控制
//电机接口 //报警器接口
unsigned int x,y; //延时110*Z us for(y=110;y>0;y--); for(x=z;x>0;x--);
}
****************************主程序************************** void main() {
*******************初始化********************
P30=1; P31=0;
// 电机转 // 工作指示灯亮 // 液位控制开关接通
P0=0x10; P2=0xff;
********************控制*****************
while(1) {
***********情况一 液位无感应信号********
if(P1==0xf0) {
P0=0xf0; } else
{
***********情况二 a位有感应信号******** if(P1==0xf1) { }
***********情况三 a位、b 位有感应信号********
else if(P1==0xf3)
{
P0=0xf3;
// a位 b 位 指示灯亮
// a位 b 位 有感应信号
P0=0xf1;
// a位 指示灯亮
// 没有液位指示灯亮
if(P20==0) // a位 开关按下 { } else { }
P30=1;
//电机转
P30=0; // 电机停 P31=~P31; // 报警 delay(200);
// 延时 0.022s
if(P21==0) // b位开关按下
}
******情况三 a位、b 位、c 位有感应信号****** else if(P1==0xf7) { }
********情况四 四个液位都有感应信号****** else if (P1==0xff) { P0=0xff;
{
// 四个液位均有感应信号 // 四个液位指示灯都亮
P0=0xf7;
// a位、b 位、c 位 指示灯亮 // a位、b 位、c 位 有感应信号
{ } else { }
P30=1; // 电机转
P30=0; // 电机停 P31=~P31; // 报警 delay(200);
// 延时 0.022s
if(P22==0) // c位控制开关按下 { } else { }
P30=1;
// 电机转
P30=0; // 电机停 P31=~P31; // 报警 delay(200);
// 延时 0.022s
P30=0; //电机停 P31=~P31; //报警 delay(200);
// 延时 0.022s
}
}
}
}
}
}
四川信息职业技术学院