当前位置: 首页 > news >正文

基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)

编号:71

基于51单片机的的鸡笼补光和恒温系统的设计与实现

功能描述:

       本设计由89C52单片机+液晶12864显示模块+声光报警电路+温湿度传感器电路+风扇电路+LED照明电路+光照检测电路+GSM电路+DS1302时钟电路

1.实现的功能
(1)采用DHT11温湿传感器、光敏电阻捕捉空气中的湿度,温度以及光照强度,把这些信息通过AT89C52在12864显示温度,湿度,光照强度并且显示指导老师的姓名,当前日期,
(2)如果外接环境发生变化,比如光照太强(弱),湿度太潮(干),温度过热(低),则蜂鸣器开始报警,12864显示当前温度并显示已发送报警消息;
并且通过GSM给手机发短信报警,短信显示当前的温湿度,光照强度;
发短信的同时并自动采取补救实施,比如温度太高~散热器转动,温度太低~小灯泡光照强度加强,光照强度太低~小灯泡的强度加强,
(蜂鸣器报警,显示屏显示当前参数,发短信报警,实施措施是几乎同时完成的)
(3)如果系统能自动的消除这些问题,也一切恢复正常,并且给手机发短信,当前的参数以及恢复正常字样

视频演示链接:

71、基于51单片机的的鸡笼补光和恒温系统的设计与实现

仿真图:

实物图:

电路图:

程序源码:

/***********************************************

***********************************************/
#include "reg52.h"
#include "intrins.h"
#include "delay.h"
#include "lcd12864.h"
#include "adc0832.h"
#include "ds1302.h"
#include "PWM.h"
#include "uart.h"
#include "shtxx.h"


sbit BEEP = P1^1;		//蜂鸣器
sbit FAN = P2^0;		//风扇
sbit Deng = P1^3;		//灯泡

sbit JD = P1^2;			//继电器

sfr T2MOD = 0xc9;       //timer2 mode register

void Timer2Init(void)	//50毫秒@11.0592MHz   用来报警
{
	T2MOD = 0;			//初始化模式寄存器
	T2CON = 0;			//初始化控制寄存器
	TL2 = 0x00;			//设置定时初值
	TH2 = 0x4C;			//设置定时初值
	RCAP2L = 0x00;		//设置定时重载值
	RCAP2H = 0x4C;		//设置定时重载值
	TR2 = 1;			//定时器2开始计时
	ET2 = 0;			//使能T2中断
}

void main(void)
{
		value humi_val,temp_val;		//定义两个共同体,一个用于湿度,一个用于温度
	unsigned char error;		    //用于检验是否出现错误
	unsigned char checksum;			//CRC			 
	unsigned int temp,humi;
	bit d_flag=1;
	xdata unsigned char dat[100];
	unsigned char res = 1;
	bit flag = 0;				   //DHT11 读取标志

	unsigned char light;
	DS1302_Init();  			   //DS1302初始化
//  	DS1302_Set_Time(0x80,&Byte,7); //设置初始时间函数
	
	DisplayOn();
	clear();
	Disp_Init();
	
	delay_ms(200);
	clear();
	EA = 1;
	Timer0Init();				   //定时器PWM初始化
	Timer2Init();
	Uart_Init();				   //串口初始化
	PWM_Set(0);
	JD = 1;
	Deng = 1;
	DIS_top();
	s_connectionreset();			//启动连接复位
	
	PWM_Set(4);
	while(1)
	{
		error=0;					//初始化error=0,即没有错误
		error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP); //温度测量
		error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); //湿度测量
    	if(error!=0) s_connectionreset();                 	//如果发生错误,系统复位
    	else
    	{ 
			humi_val.f=(float)humi_val.i;                   //转换为浮点数
     		temp_val.f=(float)temp_val.i;                   //转换为浮点数
			
     		calc_sth10(&humi_val.f,&temp_val.f);            //修正相对湿度及温度
			
   			temp=temp_val.f*10;
     		humi=humi_val.f*10-40;							//补偿	

    	}  
		
		light=ADC0832(1,0)*100/255;
		DS1302_Get_Time(0x81,time_buf,7); //读取时间
//		DS1302_Time();					  //格式化输出日期时间信息
		
		dis_time(temp/10,humi/10,light);
		if((temp/10)>30)
		{	
			FAN = 0;
		}
		else
			FAN = 1;
		if((temp/10)>30||(humi/10)>80||light>80||(temp/10)<15||(humi/10)<20||light<20)	//温湿度光照超标
		{
			ET2 = 1;				
		}
		else 
		{
			BEEP = 1;
			ET2 = 0;
		}
		/********************这里只负责措施动作*************/
			//风扇动作 温度超标 或者湿度太高 开启风扇
			if((temp/10)>30||(humi/10)>80)		//温度或者湿度  太高
			{
				FAN = 0;				//温度或者湿度  太高 开风扇
			}
			else
			{
				FAN =1;					//关风扇
			}
			//灯泡动作 温度太低	灯泡打开
			if((temp/10)<15)
			{
				Deng = 0;
			}
			else
			{
				Deng = 1;
			}
			//继电器动作  
			if((humi/10)<20)					//湿度过低
			{
				JD = 0;
			}
			else
			{
				JD = 1;
			}
			//led灯光
			if(light>80)		//光照过高
			{
				PWM_Set(1);
			}
			else if(light<20)
			{
				PWM_Set(4);
			}
			else
			{
				PWM_Set(2);
			}
		
	}
}
void tm2_isr() interrupt 5 using 1
{
    static unsigned char n = 0;
	TF2 = 0;
	TL2 = 0x00;			//设置定时初值
	TH2 = 0x4C;			//设置定时初值
	RCAP2L = 0x00;		//设置定时重载值
	RCAP2H = 0x4C;		//设置定时重载值
	n++;
	if(n>5)
	{
		n = 0;
		BEEP =~BEEP;
	}
}

软件免费下载地址:

1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包

链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w 
提取码:2756

2、KEIL4 C51软件安装包

链接:https://pan.baidu.com/s/1CTZBqDsPsyIbjCIjI_birA 
提取码:sy2a 

文件下载:

链接: https://pan.baidu.com/s/1dc3p6yAPAmNC-qTrbB3GJA?pwd=1234 提取码: 1234

相关文章:

  • python opencv基础使用总结
  • 41.日常算法
  • 介绍两本学习智谱大模型的入门图书
  • Java小白入门基础知识(二)
  • 晶闸管主要参数分析与损耗计算
  • JavaScript 内置对象-日期对象
  • Ubuntu 系统 LVM 逻辑卷扩容教程
  • Hive之分区表
  • 【大模型系列】Windows系统上运行大语言模型方式
  • SpringBoot+微信小程序+数据可视化的宠物到家喂宠服务(程序+论文+讲解+安装+调试+售后等)
  • HCIA项目实践(网络)---NAT地址转化技术
  • frp-tool,客户端frp命令行工具
  • 【苍穹外卖】学习
  • LeetCode 1299.将每个元素替换为右侧最大元素:倒序遍历,维护最大值,原地修改
  • WPS的AI助手进化跟踪(灵犀+插件)
  • 【NLP251】BertTokenizer 的全部 API 及 使用案例
  • shell脚本备份mysql数据库和库下表
  • 算法刷题--哈希表--字母异位词和两个数组的交集
  • linux运行kettle 遇到问题汇总
  • 【区块链】零知识证明基础概念详解
  • 徐徕任上海浦东新区副区长
  • 工业富联一季度净利增长25%,云计算业务营收增长超50%
  • 打工人的“小长假模式”,已经迫不及待地开启了
  • 上海通报5起违反中央八项规定精神问题
  • 银川市长信箱被指“已读乱回”,官方通报:对相关责任人问责处理
  • 民航局:预计五一假期民航旅客运输量创同期历史新高,将加强价格管理