200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【Proteus仿真】【51单片机】空调温度控制系统设计

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

时间:2023-04-18 03:38:10

相关推荐

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

文章目录

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

一、功能简介

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

主要功能:

系统运行后,LCD1602显示温度和空调启动温度阈值及工作模式;

当检测温度高于设置的温度阈值,空调变频器会随温度升高

速度加快。可通过SW1开关切换自动和手动模式,

当系统处于手动模式时,K1和K2用于调节变频器转动速度;

当系统处于自动模式时,K1和K2用于设置温度阈值。

主要功能如下:

1、温度检测

2、LCD1602显示

3、自动/手动控制变频器转速

二、软件设计

/*作者:嗨小易(QQ:344379)*///系统开机界面显示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站演示视频:/444388619

联系作者

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。