基于51单片机智能鱼缸控制系统

一、系统方案
1、本设计采用51单片机作为主控器。
2、液晶1602显示。
3、采集温度值,水质大小、水位值、DS1302显示年月日时分秒。
4、自动加热、定时喂食,自动换水、水泵加热。
5、按键设置。
在这里插入图片描述

二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
delay_1ms(150);
P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1
// init_time0(); //初始化定时器
//init_ds1302(); //ds1302初始化
init_1602(); //lcd1602初始化
init_1602_dis_csf(); //lcd1602初始化显示
//init_eeprom(); //开始初始化保存的数据
temperature = read_temp(); //先读出温度的值
delay_1ms(650);
2、液晶显示程序
/lcd1602写命令函数*/
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/lcd1602写数据函数*/
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}

/lcd1602初始化设置*/
void init_1602() //lcd1602初始化设置
{
write_com(0x38); //
write_com(0x0c);
write_com(0x06);
}

/lcd1602上显示两位十进制数*/
void write_sfm1(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(table_num[date % 10]);
}

/lcd1602上显示温度*/
void write_sfm3_18B20(uchar hang,uchar add,uint date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/100%10);
write_data(0x30+date/10%10);
write_data(‘.’);
write_data(0x30+date%10);
}

//
// 液晶光标定位函数
/
/
void LcdGotoXY(uchar line,uchar column)
{
// 第一行
if(line1)
write_com(0x80+column);
// 第二行
if(line
2)
write_com(0x80+0x40+column);
}
//
// 液晶输出多位数字
/
/
void LCD_Write_Char(uchar x,uchar y,uint s,uchar l)
{
LcdGotoXY(x,y) ;

if(l>=5)
	write_data(0x30+s/10000%10);	//万位
if(l>=4)
	write_data(0x30+s/1000%10);		//千位
if(l>=3)
	write_data(0x30+s/100%10);		//百位
if(l>=2)
	write_data(0x30+s/10%10);			//十位
if(l>=1)
	write_data(0x30+s%10);		//个位

}
/lcd1602上显示两位十进制数*/
void write_sfm2_ds1302(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(table_num[date/16]);
write_data(table_num[date%16]);
}

/lcd1602上显示这字符函数*/
void write_string(uchar hang,uchar add,uchar *p)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
while(1)
{
if(*p == ‘\0’) break;
write_data(*p);
p++;
}
}

/控制光标函数***/
void write_guanbiao(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
if(date == 1)
write_com(0x0f); //显示光标并且闪烁
else
write_com(0x0c); //关闭光标
}

/lcd1602上显示特定的字符*/
void write_zifu(uchar hang,uchar add,uchar date)
{
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(date);
}

/开机液晶显示函数 初始化液晶的内容****************/
void init_1602_dis_csf() //初始化液晶
{

write_string(1,0,"   -     :  :   ");	
write_string(2,0,"00.0 C        % ");	
write_zifu(2,4,0xdf);  //显示度	

}
3、核心算法
/主函数***/
void main()
{

delay_1ms(150);
P0 = P1 = P2 = P3 = 0xff;		//单片机IO口初始化为1

// init_time0(); //初始化定时器
//init_ds1302(); //ds1302初始化
init_1602(); //lcd1602初始化
init_1602_dis_csf(); //lcd1602初始化显示
//init_eeprom(); //开始初始化保存的数据
temperature = read_temp(); //先读出温度的值
delay_1ms(650);
while(1)
{
//P2=0X00;
key(); //按键程序
if(key_can < 10)
{
key_with();
}

     if(menu_1==0)
		 {
				read_time();		  //读时间
				temperature = read_temp();	//先读出温度的值


				hunzhuozhi=Adc0832(0);				//读取AD值
				hunzhuozhi=hunzhuozhi/2.5;
				if(hunzhuozhi>=100)
						hunzhuozhi=99;
				hunzhuozhi=100-hunzhuozhi;
				write_sfm3_18B20(2,0,temperature);	   //显示温度
				LCD_Write_Char(2,12,hunzhuozhi,2) ;  ///显示浑浊度值
				init_1602_ds1302();   //显示时钟 
		}

		wendujiarekongzhi();温度加热控制函数
		ziwaixianedinshikongzhi();///喂食定时自动函数
		zengyangdinshikongzhi();   灯光继电器控制函数
		wenduzhilengkongzhi();注水泵继电器控制函数
		hunzhuodukongzhi();过滤泵继电器控制函数
 if(shuiwei_L!=0&&shuiwei_H!=0)/两个水位传感器都没监测到水 低水位 启动水泵
	 {
		Key5_shuibeng =0;启动水泵
	 }
	 if(shuiwei_L!=1&&shuiwei_H!=1)/两个水位传感器都监测到水 高水位 停止水泵
	 {
		Key5_shuibeng =1;停止水泵
	 }
	 delay_1ms(100);
}

}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

  • 16
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
基于单片机智能鱼缸设计与实现毕业设计 目 录 摘 要 I Abstract II 1 绪论 1 1.1课题背景 1 1.2国内外研究现状 1 1.3研究目的 2 2 开发技术与原理简介 4 2.1嵌入式技术 4 2.2传感器技术 4 2.3 Android技术 4 2.3.1 Android智能手机平台概述 4 2.3.2 Android手机平台的特点 5 2.3.3 Android系统软件架构 5 3 需求分析 6 3.1功能需求 6 3.1.1系统的特点及功能描述 6 3.1.2系统流程分析 6 3.2用例分析 7 3.3 开发工具 11 3.3.1 底层硬件电路开发工具 11 3.3.2底层系统开发工具 12 3.3.3 Android客户端开发工具 12 4 概要设计 13 4.1系统总体方案与功能 13 4.1.1系统功能组成 13 4.1.2系统控制参数 14 4.2系统的硬件结构 14 4.3系统的软件设计 15 5 详细设计 17 5.1单片机系统设计 17 5.1.1单片机选型 17 5.1.2单片机最小系统设计 18 5.1.3详细说明 21 5.2温度传感器模块设计 22 5.2.1温度传感器选型 22 5.2.2温度传感器电路设计 23 5.3蓝牙串口模块设计 23 5.3.1串口技术 23 5.3.2蓝牙串口电路设计 25 5.3.3系统通讯协议设计 25 5.3.4系统通讯详细说明 26 5.4时钟模块设计 27 5.4.1时钟芯片选型 27 5.4.2时钟模块电路设计 27 5.5 Android客户端设计 28 5.5.1 Android蓝牙通信设计 28 5.5.2 Android界面设计 29 6 系统实现 31 6.1 底层设备软件实现 31 6.1.1系统软件流程图 31 6.1.2底层系统算法设计 32 6.2手机端软件实现 35 6.2.1手机端软件流程图 35 6.2.2底手机端软件算法设计 36 6.3软硬件设备实物图 38 6.3.1硬件设备实物图 38 6.3.2手机端软件截图 40 7 系统测试 41 7.1LED灯光变换测试 41 7.2检测温度测试 42 7.3水循环控制系统测试 42 7.4充氧模块测试 43 结束语 44 致 谢 45 参 考 文 献 46 摘 要 近年来嵌入式发展迅速,智能家居也进入了人们的生活。智能鱼缸却没有快速发展。我 根据市场上相关设备现状的分析和研究,从系统集成角度进行设计和开发,提出了一套 多功能的智能观赏鱼缸控制系统设计方案。 该控制系统以STC12C5A60S2单片机为控制核心,结合传感器技术,集多种控制功能于一 体,包括检测温度、自动充氧、自动换水、灯光变换和自动喂食等,同时在系统设计 一个蓝牙通信模块,可实现对鱼缸的远程控制和管理。整个系统分为两个部分:第一部 分是以STC12C5A60S2为核心的控制部分,实现对各种控制参数的设置、存储、和处理。 第二部分是手机安卓部分,通过手机端APP可以对鱼缸进行实时控制、参数设置等,实现 人机交互。两个部分之间采用蓝牙通讯技术,将数据信息在上位机与下位机之间交互传 输。 该系统根据当前市场上的需求进行设计和开发,形成了一套自动充氧、自动换水、灯光 变换和自动喂食等功能为一体的集成控制系统。同时该系统设计灵活、成本低廉,便于 量产,可广泛用于家庭和宾馆等安装观赏鱼缸的场所。 关键词:鱼缸,自动控制,单片机,蓝牙通讯,APP Abstract In recent years, with the development of embedded, intelligent household also entered people's lives. The intelligent aquarium is not development. I according to the current market analysis and research status quo of related equipment, system integration from the perspective of design and development, a set of multi-functional intelligent fish tank control system design. The control system STC12C5A60S2 microcontroller core. Combined with sensor technology. Set a variety of control functions. Including temperature detection, a

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bbxyliyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值