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

基于单片机空调温度控制测温ds18b20系统Proteus仿真(含全部资料)

 全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等

资料下载:

通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

基于51单片机的空调温度控制系统
由STC89C51单片机+LCD1602液晶显示屏+L298N控制模块+直流电机+DS18B20温度传感器构成
具体功能:
(1)实现L298N对电机的控制,利用LCD1602直接、清晰明了的显示温度;
(2) 基于测得的温度实现对电机转速的控制(利用电机模拟空调变频系统);
(3)在自动模式下,温度越高,占空越高,转数越快。手动模式下,通过按键可以实现电机转速的控制。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

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.万用板一块

五、Keil c语言程序源代码(部分)

#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%            ";// 内容
uchar jd=5;
bit work;	//开关标志
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      //defaultvoid 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);   //精确延时,大于480usDQ = 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]='-';elsexianshi1[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);	}
}

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复“资料”!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

http://www.dtcms.com/a/353447.html

相关文章:

  • React 组件命名规范:为什么必须大写首字母蛊傲
  • HarmonyOS安全开发实战:一套好用的数据加密方案
  • SQL Server 批量插入脚本
  • 中資券商櫃台系統搭建與開發技術分析
  • AI 大模型 “幻觉” 难题:为何会 “一本正经地说错话”,如何让它更靠谱?
  • 基于Cursor AI IDE的Vue3留言板系统实战:从零搭建到智能优化全流程
  • java数据类型获取长度方式总结
  • 【C++】C++11新特性第一弹(列表初始化、新式声明、范围for和STL中的变化)
  • Flutter 开发技巧 AI 快速构建 json_annotation model 的提示词
  • 使用git上传项目的步骤
  • 煤矸石检测数据集VOC+YOLO格式3090张2类别
  • This method can cause UI unresponsiveness if invoked on the main thread.
  • week5-[字符数组]数和
  • 【技巧】PostgreSQL自动转换类型 int转bool 转int
  • 苍穹外卖项目实战(日记十一)-记录实战教程及问题的解决方法-(day3-3)完善菜品分页查询功能
  • 怎么理解API?
  • 用户体验设计 | 什么是 AX?从 UX 到 AX 的演进
  • 数据结构——算法效率的度量(时间复杂度与空间复杂度)
  • Elasticsearch 启动反复重启排查实录:从“内存不足”到“vm.max\_map\_count 过小”
  • 图表可视化地理趋势-Telerik WPF Chart
  • 智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案
  • R语言贝叶斯方法在生态环境领域中的技术应用
  • 攻克 Java 分布式难题:并发模型优化与分布式事务处理实战指南
  • APP与WEB测试的区别?
  • 人工智能在医疗领域中辅助外科手术的应用综述
  • 【VSCode】使用VSCode创建Java C/S架构项目
  • 如何用Renix实现网络测试自动化: 从配置分离到多厂商设备支持
  • 【网络编程】NtyCo协程服务器的框架(轻量级的协程方案,人称 “小线程”)
  • 从浏览器无法访问到Docker容器的 FastAPI 服务地址【宿主机浏览器和容器不在同一个网络层面:端口映射】
  • 前端AI应用实践指南:从基础概念到高级实现