基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)
- 游戏开发
- 2025-09-07 05:12:01

编号: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安装包
链接: pan.baidu /s/11LNUZ9BJXWvXf1C4dPc3_w 提取码:2756
2、KEIL4 C51软件安装包
链接: pan.baidu /s/1CTZBqDsPsyIbjCIjI_birA 提取码:sy2a
文件下载:链接: pan.baidu /s/1dc3p6yAPAmNC-qTrbB3GJA?pwd=1234 提取码: 1234
基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)”