基于51单片机的智能鱼缸设计

        基于51单片机的智能鱼缸设计利用AT89C51作为系统主控,LCD1602作为系统主控,DS18B20作为本次系统的温度传感器,实时检测鱼缸温度信息,并通过该信息调整加热器件,实现鱼缸的恒温设计,同时还有定时加水功能,为了提高设计的灵活性,使用按键进行模式切换、位置切换、减、加等功能。

一、硬件设计

1、继电器设计

        本次设计利用继电器加NPN三极管进行组合,实现控制,由于加热和水阀一般输入大功能器件,通过NPN三极管的特性,导通电平为高电平,由于Proteus中并没有专门的加热和水阀器件,这里使用led进行代替。

2、DS1302

        DS1302的电路设计主要包括DS1302芯片和32.768khz的晶振。DS1302使用SPI的通信方式。

3、外部中断扩展

        本次设计使用二极管扩展外部中断,因为本次设计对于按键响应具有实时性的要求。

二、软件设计

1、DS1302驱动

#include <REGX52.H>

sbit DS1302_CE=P1^0;
sbit DS1302_SCLK=P1^1;
sbit DS1302_IO=P1^2;

//Write:
#define DS1302_SECOND  0x80
#define DS1302_MINUTE  0x82
#define DS1302_HOUR    0x84
#define DS1302_DATA    0x86
#define DS1302_MONTH   0x88
#define DS1302_DAY     0x8a
#define DS1302_YEAR    0x8c
#define DS1302_WP      0x8e

char DS1302_Time[]={22,1,24,20,01,40,1}; 
void DS1302_Init()
{
	DS1302_CE=0;
	DS1302_SCLK=0;
}	
void DS1302_WriteByte(unsigned char Command,Data)
{
	unsigned char i;
	DS1302_CE=1;
	for(i=0;i<8;i++)
	{
		DS1302_IO=Command&(0x01<<i);
		DS1302_SCLK=1;
		DS1302_SCLK=0;
	}
	for(i=0;i<8;i++)
	{
		DS1302_IO=Data&(0x01<<i);
		DS1302_SCLK=1;
		DS1302_SCLK=0;
	}
	DS1302_CE=0;	
}	
unsigned char DS1302_ReadByte(unsigned char Command)
{
	unsigned char i,Data=0x00;
	Command|=0x01;
	DS1302_CE=1;
	for(i=0;i<8;i++)
	{
		DS1302_IO=Command&(0x01<<i);
		DS1302_SCLK=0;
		DS1302_SCLK=1;
	}
	for(i=0;i<8;i++)
	{
		DS1302_SCLK=1;
		DS1302_SCLK=0;
		if(DS1302_IO){Data|=(0x01<<i);}
	 }
	DS1302_IO=0;
	DS1302_CE=0;

	return Data;
}	
void DS1302_SetTime()
{
	DS1302_WriteByte(DS1302_WP,0x00);
	DS1302_WriteByte(DS1302_YEAR,DS1302_Time[0]/10*16+DS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值