文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者

一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用继电器加热/保温模块、数码管模块、按键模块、电机驱动模块等。

主要功能:
系统运行后,LCD1602显示温度和空调启动温度阈值及工作模式;
当检测温度高于设置的温度阈值,空调变频器会随温度升高
速度加快。可通过SW1开关切换自动和手动模式,
当系统处于手动模式时,K1和K2用于调节变频器转动速度;
当系统处于自动模式时,K1和K2用于设置温度阈值。
主要功能如下:
1、温度检测
2、LCD1602显示
3、自动/手动控制变频器转速


二、软件设计

/*
作者:嗨小易(QQ:3443792007)
*///系统开机界面显示
void sys_open_show(void)
{lcd1602_clear();lcd1602_show_string(0,0,"Temp:    C");lcd1602_show_string(0,1,"TempH:  C");lcd1602_show_string(11,1," Auto");
}//系统数据显示
void sys_data_show(void)
{u8 buf[5];while(1){//温度显示buf[0]=sys_ctrl.temp/100+0x30;buf[1]=sys_ctrl.temp%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temp%100%10+0x30;buf[4]='\0';lcd1602_show_string(5,0,buf);//温度阈值显示lcd1602_show_nums(6,1,sys_ctrl.temph,2,0);//手动状态显示if(sys_ctrl.auto_flag)lcd1602_show_string(11,1,"Manul");else lcd1602_show_string(11,1," Auto"); break;          }
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//自动/手动模式if(AUTO_PIN==0)sys_ctrl.auto_flag=0;    elsesys_ctrl.auto_flag=1;//自动模式下if(sys_ctrl.auto_flag==0){//加if(key==KEY1_PRESS){sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;}//减else if(key==KEY2_PRESS){sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;}}//手动模式下else{//加速if(key==KEY1_PRESS){sys_ctrl.gear++;if(sys_ctrl.gear>5)sys_ctrl.gear=5;}//减速else if(key==KEY2_PRESS){sys_ctrl.gear--;if(sys_ctrl.gear<0)sys_ctrl.gear=0;}  }
}//系统功能控制
void sys_fun_ctrl(void)
{//手动模式下,速度控制if(sys_ctrl.auto_flag==1){pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比  }//自动模式下,速度控制else{//如果温度高于阈值,温度越高,风扇越快if(sys_ctrl.temp>=sys_ctrl.temph*10){if(sys_ctrl.temp>=sys_ctrl.temph*10 && sys_ctrl.temp<sys_ctrl.temph*10+20)sys_ctrl.gear=1;else if(sys_ctrl.temp>=sys_ctrl.temph*10+20 && sys_ctrl.temp<sys_ctrl.temph*10+40)sys_ctrl.gear=2;else if(sys_ctrl.temp>=sys_ctrl.temph*10+40 && sys_ctrl.temp<sys_ctrl.temph*10+60)sys_ctrl.gear=3;else if(sys_ctrl.temp>=sys_ctrl.temph*10+60 && sys_ctrl.temp<sys_ctrl.temph*10+80)sys_ctrl.gear=4;else if(sys_ctrl.temp>=sys_ctrl.temph*10+80)sys_ctrl.gear=5;           }//如果温度低于阈值,风扇停止else sys_ctrl.gear=0;pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比}
}//应用控制系统
void appdemo_show(void)
{u8 i=10;ENA=0;//关闭电机输出sys_parm_init();//系统参数初始化lcd1602_init();ds18b20_init();//间隔一段时间,等待数据稳定while(i--){//温度获取sys_ctrl.temp=ds18b20_read_temperture()*10;delay_ms(100);   }pwm_init(0XFF,0XD1,100,0);//初始时,PWM占空比为0dc_motor_dir_ctrl(0);sys_open_show();//系统开机界面显示while(1){    sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制}
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619




联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

【Proteus仿真】【51单片机】空调温度控制系统设计相关推荐

  1. Proteus仿真51单片机生日快乐音乐播放器

    实验名称:基于51单片机音乐播放器 实验目的: 声音的音调不同是因为声音的频率不同造成的.那么,就可以通过单片机发送不同频率的脉冲信号给蜂鸣器,来达到让蜂鸣器发出不同音调声音的目的.不同频率的脉冲信号 ...

  2. 使用proteus仿真51单片机来实现十字路口红绿灯

    一.实验内容 1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯. 2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯.南北向红绿灯,红灯亮60秒, ...

  3. Proteus仿真--51单片机最小系统

    1.单片机的最小系统是由组成单片机系统必需的一些元件构成的,除了单片机之外,还需要包括电源供电电路.时钟电路.复位电路. 下面着重介绍时钟 电路和复位电路. 1)时钟电路 单片机工作时,从取指令到译码 ...

  4. proteus仿真-51单片机定时器程序

    定时器0初始化和定时器中断函数 void Timer0Init() {TMOD|=0x01;//0000 0001,最后2位-工作方式的选择,这里选择16位定时器'01'TH0 = (65536-10 ...

  5. 51单片机温度控制C语言程序详解,基于单片机的温度控制系统设计(附程序清单及原理图).doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp电子工程/通信技术&nbsp>&nbsp电子设计 基于单片机的温度控制系统设计(附程序清单及 ...

  6. 【Proteus】51单片机交通灯信号模拟仿真示例二

    [Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...

  7. 51单片机控制的LOVE心形创意彩灯 PROTEUS 和51单片机教程(附仿真文件+源代码)

    51单片机控制的LOVE心形创意彩灯 PROTEUS 和51单片机教程附仿真文件截图 单片机控制的LOVE心形创意彩灯 参考源代码 ORG 0000H LJMP START ORG 0030H ;初始 ...

  8. 单片机控制蜂鸣器唱生日快乐歌曲 PROTEUS 和51单片机教程(附仿真文件+源代码)

    功能:按一下开关后,单片机控制蜂鸣器唱生日快乐歌曲 PROTEUS 和51单片机教程 单片机控制蜂鸣器唱生日快乐歌曲 程序源代码如下: /* 生日歌 */ #include <reg51.h&g ...

  9. hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下

    1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下 1.1. 实验目的 本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念. ...

最新文章

  1. FLV 封装格式解析
  2. 单帧风景照变延时摄影,分分钟搞定,还能有昼夜变化,这是来自日本的开源动画景观算法...
  3. 如何在移动硬盘上安装Linux
  4. YAML基础知识及搭建一台简洁版guestbook
  5. PWN-PRACTICE-BUUCTF-13
  6. Bootstrap(一)——简介、布局容器和工具类使用(flex布局)
  7. 【LiteOS】STM32F103-LiteOS移植教程(详细篇)
  8. Python--网络编程
  9. IE8 下 select option 内容过长 , 展开时信息显示不全问题解决办法
  10. MYSQL生成日历表,通常在做报表的时候需要用来生成一个临时表,用来左连接等。...
  11. Java的GUI学习十二(文件的打开和保存)
  12. 变频器供电高频电子变压器电源电压检测
  13. 在Vmware 14 pro 中安装中兴新支点操作系统
  14. 删除双系统遗留的efi
  15. [论文笔记]Rob-GAN: Generator, Discriminator, and Adversarial Attacker(CVPR 2019)
  16. ruby调用python_ruby与python
  17. Idea21.1.3版本中Scala默认设置带类型
  18. 毕业设计 - 题目_ 基于单片机的智能小车 - 嵌入式 物联网 本科毕设
  19. SpringMVC基础二
  20. python刷问卷星

热门文章

  1. go学习 --- gorm使用
  2. Delphi程序员的“Unity3D”:开源跨平台游戏开发引擎Castle Game Engine(CGE)
  3. stc51单片机串口接收多字节数据
  4. c语言字母翻译,C语言实现翻译功能
  5. Oracle APEX 系列文章6:Oracle APEX 到底适不适合企业环境?
  6. 后台:转义英文小括号
  7. android path 画虚线,Android实现画虚线的控件
  8. oracle销售云 客户成功,励销云销售干货分享,销售成功必备的六大心态
  9. 漫画 | 因为用了C语言,Linux内核代码一团糟
  10. 66套可视化数据分析PPT图表,帮你一键提升PPT逼格