基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

这篇具有很好参考价值的文章主要介绍了基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于51单片机的智能空调控制系统

1 开发环境

仿真图:proteus8.9以上

程序代码:KEIL4/KEIL5

原理图/PCB:AD

设计编号:A0003

讲解演示视频

视频

基于51单片机的智能空调控制系统视频讲解

2 功能说明介绍

基于51单片机的空调温度控制系统

由STC89C51单片机+LCD1602液晶显示屏+L298N控制模块+直流电机+DS18B20温度传感器构成

具体功能:

(1)实现L298N对电机的控制,利用LCD1602直接、清晰明了的显示温度;

(2) 基于测得的温度实现对电机转速的控制(利用电机模拟空调变频系统);

(3)在自动模式下,温度越高,占空越高,转数越快。手动模式下,通过按键可以实现电机转速的控制。

3 仿真图

基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

4 程序

4.1 工程文件

基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

4.2 代码

基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

主函数

#include<REG52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;
bit flang;
sbit IN1=P3^5;
sbit IN2=P3^6;
sbit PWM1 =P3^7;//风扇控制引脚

uchar xianshi1[] ="TEMP       00.0C";// 内容
uchar xianshi2[] ="000%            ";// 内容
uint    wendu=0;
uchar count;
uchar jd=5;
bit work;	//开关标志

sbit k1=P1^0; //
sbit k2=P1^1; //
sbit k3=P1^2; //
sbit DQ=P2^0; //定义DS18B20总线I/O

//Port Definitions**********************************************************
sbit LcdRs		= P2^5;
sbit LcdRw		= P2^6;
sbit LcdEn  	= P2^7;
sfr  DBPort 	= 0x80;		//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
	void delay(uint z)
{
   uint a,b;
   for(a=z;a>0;a--)
     for(b=120;b>0;b--);
}
//向LCD写入命令或数据************************************************************
#define LCD_COMMAND			0      // Command
#define LCD_DATA			1      // Data
#define LCD_CLEAR_SCREEN	0x01      // 清屏
#define LCD_HOMING  		0x02      // 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
	LcdEn=0;
	LcdRs=style;
	LcdRw=0;		_nop_();
	DBPort=input;	_nop_();//注意顺序
	LcdEn=1;		_nop_();//注意顺序
	LcdEn=0;		_nop_();
 delay(1);
}

//设置显示模式************************************************************
#define LCD_SHOW			0x04    //显示开
#define LCD_HIDE			0x00    //显示关	  

#define LCD_CURSOR			0x02 	//显示光标
#define LCD_NO_CURSOR		0x00    //无光标		     

#define LCD_FLASH			0x01    //光标闪动
#define LCD_NO_FLASH		0x00    //光标不闪动

void LCD_SetDisplay(unsigned char DisplayMode)
{
	LCD_Write(LCD_COMMAND, 0x08|DisplayMode);	
}
//设置输入模式************************************************************
#define LCD_AC_UP			0x02
#define LCD_AC_DOWN			0x00      // default

#define LCD_MOVE			0x01      // 画面可平移
#define LCD_NO_MOVE			0x00      //default

void LCD_SetInput(unsigned char InputMode)
{
	LCD_Write(LCD_COMMAND, 0x04|InputMode);
}
//初始化LCD************************************************************
void LCD_Initial()
{
	LcdEn=0;
	LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
	delay(5);
	LCD_Write(LCD_COMMAND,0x38);
	delay(5);
	LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
	delay(5);
	LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
	delay(5);
	LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
	delay(5);
}
//液晶字符输入的位置************************
void GotoXY(unsigned char x, unsigned char y)
{
	if(y==0)
		LCD_Write(LCD_COMMAND,0x80|x);
	if(y==1)
		LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
//将字符输出到液晶显示
void Print(unsigned char *str)
{
	while(*str!='\0')
	{
		LCD_Write(LCD_DATA,*str);
		str++;
		delay(1);
	}
}
void init()// 定时器初始化
{
	TMOD=0x01;
  TH0=TL0=(256-200); 
  ET0=1;//开定时器0中断
	TR0=1;
	EA=1;//开总中断
}

void Delay_DS18B20(int num);

/*****初始化DS18B20*****/  //探头1
void Init_DS18B20()
{
  unsigned char x;
  DQ=1;                //DQ复位
  Delay_DS18B20(8);    //稍做延时
  DQ = 0;         //单片机将DQ拉低
  Delay_DS18B20(80);   //精确延时,大于480us
  DQ = 1;         //拉高总线
  Delay_DS18B20(14);
  x = DQ;           //稍做延时后,如果x=0则初始化成功,x=1则初始化失败
  Delay_DS18B20(20);
}


/*****延时子程序*****/
void Delay_DS18B20(int num)
{
  while(num--) ;
}


/*****写一个字节*****/
void WriteOneChar(unsigned char dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
    DQ = 0;
    DQ = dat&0x01;
    Delay_DS18B20(5);
    DQ = 1;
    dat>>=1;
  }
}

/*****读一个字节*****/
unsigned char ReadOneChar(void)
{
  unsigned char i=0;
  unsigned char dat = 0;
  for (i=8;i>0;i--)
  {
    DQ = 0;     // 给脉冲信号
    dat>>=1;
    DQ = 1;     // 给脉冲信号
    if(DQ)
    dat|=0x80;
    Delay_DS18B20(4);
  }
  return(dat);
}



/*****读取温度*****/
unsigned int ReadTemperature(void)	 //读取温度并转换
{
  unsigned char a=0;
  unsigned char b=0;
  unsigned int t=0;
	 unsigned int tempb20;
  float f_temp=0;
	
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳过读序号列号的操作
  WriteOneChar(0x44);  //启动温度转换
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳过读序号列号的操作
  WriteOneChar(0xBE);  //读取温度寄存器
  a=ReadOneChar();     //读低8位
  b=ReadOneChar();    //读高8位
  
 tempb20=b;
	tempb20<<=8;
	tempb20=tempb20|a;
  
	if((b&0xfc)==0xfc)//负温度
   {
	    flang=1;
	   	tempb20=((~tempb20)+1);
			  f_temp=tempb20*0.0625;
		 		tempb20=f_temp*10+0.5;

  }
  else//正温度
  {
		flang=0;
		f_temp=tempb20*0.0625;
		tempb20=f_temp*10+0.5;

 }
	 return tempb20;
}

main()
{	

	uchar k;
	LCD_Initial();
	
	PWM1=0;
	IN1=0;
	IN2=1;
	init();

while(1)
{			
	  if(k==0)
			{
				EA=0;
        wendu=ReadTemperature();//读取温度数据
				EA=1;
	 	  } 
		if(k++>25) k=0;

	if(k1)
	{		
		if(wendu>=270)
		{
		 jd=(wendu/10)-27;
		}
		else jd=0;
	}
	else
	{
	

		 if(k2==0)//PWM+
	    {
		   delay(10);	
	 	    jd++;
				if(jd>=10)jd=10;
			 while(k2==0);
			}
			
			if(k3==0)//PWM-
	    {
		    delay(10);
			  if(jd>0) jd--;
			  while(k3==0);
			}		
	}

		if(flang==1)
		xianshi1[10]='-';
		else
		xianshi1[10]=' ';	

    xianshi1[11]=wendu/100+0x30;
	  xianshi1[12]=wendu/10%10+0x30;
	  xianshi1[14]=wendu%10+0x30;
		
		
	  xianshi2[0]=jd/10+0x30;
	  xianshi2[1]=jd%10+0x30;
	 

		GotoXY(0,0);
		Print(xianshi1);
		GotoXY(0,1);
		Print(xianshi2);	
		
 }
}

5 原理图

原理图由AD绘制,原理图和仿真图有出入,原理图需要电源,电源开关模块。此设计资料详细,硬件手册资料图片详细,不对硬件调试负责,做实物需要一定的基本功。

基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

6 元器件清单

  1. 万用板9*15

  2. DC电源插口

  3. 自锁开关

  4. 2.2K电阻*1

  5. STC89C51单片机

  6. 40脚IC座

  7. DC电源线

  8. L298N驱动芯片

  9. LCD1602液晶显示屏

  10. 10K排阻(103)

  11. 10K电阻*2

  12. 10uF电容

  13. 按键*2

  14. 单刀双掷开关

  15. 12M晶振

  16. 30Pf瓷片电容*2

  17. 3.3V直流电机

  18. 导线

  19. 焊锡

  20. DS18B20温度传感器

  21. 万用板一块

7 视频讲解

代码讲解+仿真讲解+仿真演示+原理图讲解

基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

8 资料清单

基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)下载地址:看文章最上面的视频。文章来源地址https://www.toymoban.com/news/detail-416618.html

到了这里,关于基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机练习3——智能电梯控制系统2】

    书接上回,我们完成了步进电机和按键扫描的组合,接下来就是要实现智能电梯控制系统的各相任务需求了。 为了方便阅读,硬件介绍和软硬件原理图我再Ctrl C V一下(并没有水字数)。 2019年安徽省机器人大赛单片机与嵌入式系统应用技能竞赛试题 设计并制作智能电梯控制

    2024年02月06日
    浏览(22)
  • 基于单片机的空调智能控制器的设计

    ** 单片机设计介绍,基于单片机的空调智能控制器的设计   基于单片机的空调智能控制器需要具备输入输出端口、定时器、计数器等模块,以便对空调进行精确控制。下面是一个基于单片机的空调智能控制器的设计介绍: 拟定设计需求:确定控制器的功能需求,包括控制

    2024年01月16日
    浏览(20)
  • 基于单片机的智能空调系统的设计与实现

       功能介绍 以51单片机作为主控系统; LCD1602液晶显示当前水温,定时提醒,水量变化 DS18B20检测当前水体温度; 水位传感器检测当前水位; 继电器驱动加热片进行水温加热; 定时提醒喝水,蜂鸣器报警; 红外传感器检测是否有人拿去水杯; 整个电路以5v供电;  电路图

    2024年02月13日
    浏览(14)
  • 基于 51 单片机室内灯光控制系统

    目录 1. 功能介绍 2. 硬件介绍 3. 设计思路与相关硬件介绍 3.1 主程序设计 3.2 光敏传感器 3.3 声音检测、人体感应传感器 4. 项目代码 4.1 BH1750 传感器代码 这是基于 STC89C52 单片机设计的灯光控制系统,实现对室内灯光的控制,采集光敏传感器,红外线热释电传感器,声音传感器

    2024年02月03日
    浏览(23)
  • 51单片机的智能鱼缸控制系统【proteus仿真+程序+报告+原理图】

    该系统由AT89C51单片机+LCD1602+DS18B20温度传感器+DS1302时间模块+ADC0832采集模拟水位、浑浊度信息+继电器控制电机和加热器模块+蜂鸣器模块构成。 可实现功能: 1、LCD1602显示各种信息 2、DS1302获取北京时间,用户通过按键设定1个喂食时间,默认时间12:30:00。到时间后自动喂食,

    2024年02月07日
    浏览(17)
  • 51单片机WIFI手机APP智能窗户窗帘控制系统手动自动定时

    功能介绍:     了解更多尽请观看视频讲解。。。

    2024年02月10日
    浏览(15)
  • 51单片机的智能温室大棚控制系统【proteus仿真+程序+报告+原理图】

    该系统由AT89C51单片机+LCD1602模块+DS18B20温度传感器模块+DS1302时间模块+继电器驱动模块+电位器模块构成。本方案适用于智能温室大棚、蔬菜大棚等各类设计中。 版本一: 1、 DS18B20 温度传感器检测大棚温度 2、光照/湿度电位器模拟,ADC0832进行转换 3、水泵/风扇/加热丝/补光灯

    2023年04月20日
    浏览(20)
  • 51单片机的智能台灯控制系统仿真( proteus仿真+程序+原理图+报告+讲解视频)

    51单片机的红外光敏检测智能台灯控制系统仿真( proteus仿真+程序+原理图+报告+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0050 基于51单片机的红外检测光照检测智能台灯仿真设计 1、检测光照强度并显示在数码管上。 2、具备红外检测

    2024年02月09日
    浏览(14)
  • 基于51单片机的温度报警控制系统Protues仿真设计

    目录 一、设计背景 二、实现功能 三、总体硬件设计 四、仿真演示 四、源程序         随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与了解环境温度。特别地,高温情况下极易造成火灾,例如,在机房中,电脑等设备发热快,若在短时间内

    2024年01月22日
    浏览(20)
  • 基于51单片机直流电机转速数码管显示控制系统

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月12日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包