单片机毕业设计论文鱼缸自动换水系统设计.docx
- 文档编号:26838318
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:35
- 大小:377.69KB
单片机毕业设计论文鱼缸自动换水系统设计.docx
《单片机毕业设计论文鱼缸自动换水系统设计.docx》由会员分享,可在线阅读,更多相关《单片机毕业设计论文鱼缸自动换水系统设计.docx(35页珍藏版)》请在冰豆网上搜索。
单片机毕业设计论文鱼缸自动换水系统设计
河南农业职业学院
毕业设计报告
课题:
鱼缸自动换水系统设计
系部:
电子信息工程系
专业:
电气自动化
班级:
07-1
姓名:
xxx
指导老师:
xxx
2010年6月26日
目录:
第一章总体方案设计……………………………………………………3
第二章硬件设计…………………………………………………4
2.1控制核心AT89S52单片机…………………………………………4
2.2八段四位共阳极数码管…………………………………………7
2.3稳压电路设计……………………………………………………9
2.4电磁阀的结构原理………………………………………………10
2.5热继电器…………………………………………………………10
2.6微型水泵…………………………………………………………11
2.7水位器的选择……………………………………………………11
第三章软件设计…………………………………………………………12
3.1换水时间及换水量选择…………………………………………12
3.2控制过程…………………………………………………………12
3.3程序设置…………………………………………………………14
3.4编程程序…………………………………………………………16
第四章系统安装与调试…………………………………………………26
4.1软件调试…………………………………………………………26
4.2系统调试…………………………………………………………26
结束语……………………………………………………………………27
辞谢………………………………………………………………………27
参考文献…………………………………………………………………28
附录1………………………………………………………………………29
附录2………………………………………………………………………30
摘要:
养鱼的朋友都知道,水质对鱼儿影响是最严重的,好的水质可以使你的鱼儿健康生长,怎样才能保证水质呢?
只有经常换水,对现在上班族来说换水是很麻烦的,占用很长的时间,对鱼缸的市场前景考虑,分析自动换水鱼缸实现的必要性和可行性,选用合适的单片机芯片和多种外围器件,完成硬件和软件的整体设计,最终实现了一个每天按时定量换水控制系统
关键词:
自动换水系统;定时控制;实时显示
第一章总体方案设计
鱼缸自动换水系统的原理图如图1-1所示:
图1-1鱼缸自动换水系统原理图
原理图中的电磁阀
(2)和水位器主要控制水位起到双保险,用单片机控制更精确。
有效防止水流出缸外。
电磁阀
(1)和抽水马达是把想要换的沉水抽出,换水的多少由单片机设定,流量的大小是用微量调控运行的情况。
工作过程为:
用单片机控制电磁阀.电源接通电磁阀就开起,水管就通了。
反之电磁阀电源关闭水管断流。
进水管直接接在自来水管子上。
进水的多少要看想要换多少水(抽掉的水)这也是用单片机控制电磁阀和抽水马达。
排水管接在抽水马达喷水口只要接通电源水就会往外排,如果每天按排水一小时30升水来计算的话,一个星期能换掉210升水(定时器控制排水电磁阀开起电源一小时)。
方法是用定时器设定时间比如下午1-2点排水2-3点进水,这个过程就是自动循环的换水。
定时器设定时间长短和调节电磁阀上的微调是控制换水的多少和水的流量。
水位器是控制水位的高度,进水管接在水位器上起到双重保护,以防水溢出鱼缸。
第二章硬件设计
本章中,我主要介绍组成自动换水鱼缸的硬件,以及它们之间的联系,在这个系统中起到的作用。
2.1控制核心AT89S52单片机
2.1.1功能特性概述
AT89S52是一种低功耗、高性能CMOS8位微控制器,在系统可编程Flash中拥有8k容量的存储器。
它是使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
而且Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节可编程Flash存储器,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工UART串行通道,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.1.2单片机的特点主要有一下几点:
●与MCS-51单片机产品兼容;
●1000次擦写周期;
●全静态操作:
0Hz~33Hz;
●三级加密程序存储器;
●八个中断源;
●低功耗空闲和掉电模式;
●掉电后中断可唤醒;
●掉电标识符;
2.1.3AT89S52的芯片管脚图如图2-1
图2-1AT89S52芯片管脚图
各引脚的功能说明:
VCC:
电源
GND:
接地点
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱;为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),含义如下:
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用;在flash编程和校验时,P3口也接收一些控制信号。
引脚的功能如表2-1所示:
表2-1P3口的特殊功能
引脚名称
含义
P3.0RXD
串行输入
P3.1TXD
串行输出
P3.2INT0
外部中断0
P3.3INT0
外部中断0
P3.4T0
定时器0外部输入
P3.5T1
定时器1外部输入
P3.6WR
外部数据存储器写选通
P3.7RD
外部数据存储器写选通
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期时,高电平将使单片机复位。
当看门狗计时完成后,RST脚输出96个晶振周期的高电平。
另外,在地址8EH上的特殊寄存器AUXR上的DISRTO位可以使此功能无效,当DISRTO处于默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置设置为“1”时,ALE操作将无效。
这一位置为“0”时,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
表示外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期中被激活两次,而在访问外部数据存储器时,PSEN不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.1.4单片机硬件资源的分配
P0.0-P0.7连接四位共阳极数码管;
P2.0连接按键K1;
P2.1连接按键K2;
P2.2连接按键K3;
P2.3连接按键K4;
2.2七段四位共阳极数码管
2.2.1数码管介绍
七段数码管是由7个发光二极管单构成。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
结构图如图2-2所示:
图2-2数码管结构示意
2.2.2数码管的驱动方式
数码管与单片机的连接电路如图2-3所示,数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,每个数码管显示出字形取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就会显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就会使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,能够节省大量的I/O端口,而且功耗更低。
图2-3数码管与单片机连接电路
2.3稳压电路设计
稳压电路中含有元器件H7805,它的外形图如图2-4所示,它是3端正稳压电路,TO-220封装,能提供多种固定的输出电压,应用范围比较广。
内含过流、过热和过载保护电路,带散热片时,输出电流可达1A。
虽然是固定稳压电路,但使用外接元件,可获得不同的电压和电流。
它的各个脚的含义为:
1―输入,INPUT;2―地,GND;3―输出,OUTPUTTO-220。
图2-4元器件H7805的外形图
它的主要特点:
输出电流可达1A;输出电压有5V;内含有过热保护、短路保护、输出晶体管SOA保护;以及一些极限值:
(Ta=25℃)VI——输入电压(VO=5~18V)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯35V;
RθJC——热阻⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5℃/W;
RθJA——热阻⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯65℃/W;
TOPR——工作结温范围⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯0~125℃;
H7805在硬件电路中的使用,起到固定输出电压作用,使按键更好的使用,如图所示2-5所示:
图2-5H7805在电路中的连接
2.4电磁阀的结构原理
直动式电磁阀有常闭型和常开型二种。
在我的鱼缸自动换水的系统中主要采用常闭型,它在断电时呈关闭状态,当线圈通电时产生电磁力,使动铁芯克服弹簧力同静铁芯吸合直接开启阀,介质呈通路;当线圈断电时电磁力消失,动铁芯在弹簧力的作用下复位,直接关闭阀口,介质不通。
此电磁阀结构简单,动作可靠,在零压差和微真空下正常工作。
结构如图2-6所示:
图2-6直动式电磁阀结构图
2.5热继电器
继电器在通俗意义上来说就是开关,在条件满足的情况下关闭或者开启。
继电器的开关特性在很多的控制系统尤其是离散的控制系统中得到广泛的应用。
在我的鱼缸自动换水系统中用到了5V继电器。
它在电路中为交流电动机起到过载保护作用,也起到了开关的作用。
在我的系统电路中,继电器的位置如图2-7所示:
图2-7继电器与原理图
由图中可以看出继电器是用作开关使用的,控制电磁阀开与关,
当K5接通时,电磁阀1运转
当K6接通时,电磁阀2运转
2.6微型水泵
微型水泵,在我鱼缸自动换水系统中起到抽水以及杂质的作用。
选用的水泵抽水量为0.015立方米/min
它的主要特点有:
体积超小;独有水气两用功能,工作介质可以为气体和液体(非油,无强腐蚀),有水抽水、有气抽气;可24小时连续运转;长期空转属正常工作,不会损坏泵;具备可靠自吸功能,吸程:
1.5米,扬程:
3米。
无油、不污染工作介质,免维护、任意方向安装。
2.7水位器的选择
在我的自动换水系统里,定位器其实就是抽水马桶里的定位器,为什么选择它呢?
主要是价格便宜,市场广,在马桶专卖店里就可以买到,定位器的原理很简单,就是靠水的浮力和水的压力来控制的。
把定位器连接进水管上,起到双重保护。
第三章软件设计
我的鱼缸自动换水系统是用单片机控制电磁阀的开与关,每天换水的时间也是经过精确的计算设置的。
可在自动模式中的设置时间,也可以通过手动设置时间。
3.1换水时间及换水量选择
图3-1鱼缸尺寸示意(长2米,宽0.65米,高0.8米)
鱼缸的大小如图3-1所示,首先我们要先求出鱼缸水的体积,公式为:
Vs=2*0.65*0.8*0.85=0.884(立方米)
(注:
0.85的意思是水的体积是鱼缸总体积的85%)
根据有关资料证明,每天换水量占水总体积的15%是最好的,对鱼儿的生长是最有利的,故可以算出每天换水量,所用公式为:
Vh=0.884*0.15=0.1326立方米
根据前面水泵的选择,计算每天只要排15分钟水就可以了。
由于家里自来水每分钟流量是一定的,根据实际考察所得算出进水只需要20分钟。
算出每天换水的时间后,即在系统中设置,本系统开机后显示实时时间,默认是自动控制两个电磁阀。
每天换水一般在中午,所以整个单片机程序设置如下:
电磁阀1接通时间为每天13:
00,断开时间13:
20。
电磁阀2接通时间为每天14:
00,断开时间14:
15。
3.2控制过程:
在自动模式中,系统是根据我自己设定的时间控制两个电磁阀在指定的时间接通和断开。
在手动模式中,即在非设置状态下,可通过按键控制电磁阀的接通与断开,如下:
点按K1键控制电磁阀1接通和断开;
点按K2键控制电磁阀2接通和断开。
自动与手动控制模式的切换方法为:
首先点按K3键可查看状态,自动数码管显示OPEN,手动显示OFF,继续点按K3键切换自动/手动,数码管会有相应的显示。
在设置定时时间状态下:
LED2(out1on)亮表示设置电磁阀1定开时间
LED3(out1off)亮表示设置电磁阀1定关时间
LED4(out2on)亮表示设置电磁阀2定开时间
LED4(out1off)亮表示设置电磁阀2定关时间
详细内容请看图3-2
图3-2
3.3程序设计
3.3.1主程序设计
3.3.2子程序设计
主要控制子程序说明如下:
●Timer2_Server:
定时器2计时中断程序每隔31.25ms中断一次;
●DELAY:
延时子程序;
●feng:
蜂鸣器鸣响处理程序;
●display:
工作LED闪动控制;转换数据为七段显示器显示数据并写入显示内存内
●LED_out:
七段数码管显示程序;
●CONV:
将时及分的数据转换为七段显示器显示数据并写入显示内存内;
●key:
按*键检测包括设置现在的时间小时及分钟,查看/设置定时时间等
3.4编程程序
/**********************************************
P0.0-P0.7与数码管中的ABCDEFGH端口连接。
P1.0-P1.3与数码管中的S1,S2,S3,S4端口。
**********************************************/
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodedispcode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0xFF,0xC0,0x8E,0x8C,0x86,0xC8,};
/*OFPEN*/
uchartimecount,Hour,Cent,Second,qian,bai,shi,ge,THour,TCent,offTH,offTC,
onTH2,onTC2,offTH2,offTC2;
uchardisL,disH,keytemp,mbiao,App,onHour,onCent,offHour,offCent;
ucharonHour2,onCent2,offHour2,offCent2;
bitbiaoA;
sbitled0=P1^0;
sbitled1=P1^1;
sbitled2=P1^2;
sbitled3=P1^3;
sbitled4=P3^7;
sbitK0=P2^0;
sbitK1=P2^1;
sbitK2=P2^2;
sbitK3=P2^3;
sbitBP=P3^2;sbitAout=P1^6;sbitAout2=P1^7;
voiddisplay();
voidkey();
ucharAddReduce(uchardd,ucharmax,charmin);
voidAlarm_clock();
voidLED_out();
voiddelay(uchari)/***延时***/
{uintx;
for(;i>0;i--)
for(x=114;x>0;x--);//22.1184=228,,11.0592=114
}
voidfeng(uchari)/***蜂鸣器***/
{uintx;
for(;i>0;i--){BP=~BP;
for(x=114;x>0;x--);}
BP=1;
}
voidmain(void)
{
Hour=12;Cent=00;//Second=50;
onHour=13;onCent=0;offHour=13;offCent=20;biaoA=1;
onHour2=14;onCent2=0;offHour2=14;offCent2=15;
RCAP2H=0x8F;/*11.0592=8F80,,22.1184=1F00*/
RCAP2L=0x80;
ET2=1;//允许T2定时器中断
TR2=1;//启动T2定时器
EA=1;
while
(1)
{
display();
key();
}
}
/***T2***中***断***函***数***/
voidTimer2_Server(void)interrupt5using3
{
TF2=0;//清除溢出标记
timecount++;
if(timecount==32)
{timecount=0;
Second++;
if(Second==60)
{Second=0;
Cent++;
if(Cent==60)
{Cent=0;
Hour++;
if(Hour==24)
Hour=0;
}
}
Alarm_clock();
}
switch(mbiao)
{
case0:
{disH=Hour;disL=Cent;}
break;
case1:
{disH=100;disL=Second;}
break;
}
}
/***显***示***函***数***/
voiddisplay()
{if(disH==100)
{qian=10;bai=10;shi=disL/10;ge=disL%10;}
else
{if(disL==100)
{qian=disH/10;bai=disH%10;shi=10;ge=10;}
else
{qian=disH/10;bai=disH%10;shi=disL/10;ge=disL%10;}
}
if(mbiao>3)if(timecount>16)
{if(keytemp%2){shi=10;ge=10;}
if(keytemp%2==0){qian=10;bai=10;}}
LED_out();
}
voidLED_out()
{
if(qian){//千位处理
P0=dispcode[qian];
led0=0;delay
(2);led0=1;}
P0=dispcode[bai];//百位处理
led1=0;delay
(2);led1=1;
if((timecount<16)&&(mbiao==0))//十位处理
P0=dispcode[shi]&0x7f;
else
P0=dispcode[shi];
led2=0;delay
(2);led2=1;
if((timecount<16)&&(mbiao==0))//个位处理
P0=dispcode[ge]&0x7f;
else
P0=dispcode[ge];
led3=0;delay
(2);led3=1;
if(mbiao==5){
switch(keytemp)
{
case0:
{P0=0xFE;}
break;
case1:
{P0=0xFE;}
break;
case2:
{P0=0xFD;}
break;
case3:
{P0=0xFD;}
break;
case4:
{P0=0xFB;}
break;
case5:
{P0=0xFB;}
break;
case6:
{P0=0xF7;}
break;
case7:
{P0=0xF7;}
break;
}
led4=0;delay
(2);led4=1;
}
}
/***按***键***检***测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 毕业设计 论文 鱼缸 自动 水系 设计