上海建站网站的企业,郑州信息港,深圳建筑工地招工,烟台网站建设报价文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介
本项目使用Proteus8仿真51单片机控制器#xff0c;使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。
主要功能#xff1a; 系统运行后… 文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介
本项目使用Proteus8仿真51单片机控制器使用按键、LED、蜂鸣器、LCD1602、PCF8591 ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。
主要功能 系统运行后LCD1602显示温度、浑浊度、PH浓度值 可通过按键K3进入阈值设置模式K3键用于切换选择温度阈值、浑浊度、PH浓度K1和K2用于调节对应阈值K4用于确定并返回主界面。 当温度高于上限温度高指示打开降温蜂鸣器报警 当浑浊高于上限浑浊度高指示蜂鸣器报警 当PH高于上限PH上限指示蜂鸣器报警 当PH低于下限PH下限指示蜂鸣器报警 当PH正常关闭指示和报警。 二、软件设计
/*
作者嗨小易QQ3443792007*///系统数据显示
void sys_data_show(void)
{u8 buf[5];while(1){//正常模式显示if(sys_ctrl.mode0){//温度显示buf[0]sys_ctrl.temp/1000x30;buf[1]sys_ctrl.temp%100/100x30;buf[2].;buf[3]sys_ctrl.temp%100%100x30;buf[4]\0;lcd1602_show_string(5,0,buf);//浑浊度显示lcd1602_show_nums(4,1,sys_ctrl.turbid,2,0);//PH显示buf[0]sys_ctrl.ph/1000x30;buf[1]sys_ctrl.ph%100/100x30;buf[2].;buf[3]sys_ctrl.ph%100%100x30;buf[4]\0;lcd1602_show_string(12,1,buf); }//阈值设置显示else{//PH下限值显示buf[0]sys_ctrl.phl/1000x30;buf[1]sys_ctrl.phl%100/100x30;buf[2].;buf[3]sys_ctrl.phl%100%100x30;buf[4]\0;lcd1602_show_string(3,0,buf);//PH上限值显示buf[0]sys_ctrl.phh/1000x30;buf[1]sys_ctrl.phh%100/100x30;buf[2].;buf[3]sys_ctrl.phh%100%100x30;buf[4]\0;lcd1602_show_string(8,0,buf);//温度阈值显示buf[0]sys_ctrl.temph/1000x30;buf[1]sys_ctrl.temph%100/100x30;buf[2].;buf[3]sys_ctrl.temph%100%100x30;buf[4]\0;lcd1602_show_string(3,1,buf);//浑浊度阈值显示lcd1602_show_nums(13,1,sys_ctrl.turbidh,2,0);//阈值设定数据位置闪烁switch(sys_ctrl.mode){case 1://PH下lcd1602_show_string(3,0, );delay_ms(100);buf[0]sys_ctrl.phl/1000x30;buf[1]sys_ctrl.phl%100/100x30;buf[2].;buf[3]sys_ctrl.phl%100%100x30;buf[4]\0;lcd1602_show_string(3,0,buf);break;case 2://PH上lcd1602_show_string(8,0, );delay_ms(100);buf[0]sys_ctrl.phh/1000x30;buf[1]sys_ctrl.phh%100/100x30;buf[2].;buf[3]sys_ctrl.phh%100%100x30;buf[4]\0;lcd1602_show_string(8,0,buf);break;case 3://温度lcd1602_show_string(3,1, );delay_ms(100);buf[0]sys_ctrl.temph/1000x30;buf[1]sys_ctrl.temph%100/100x30;buf[2].;buf[3]sys_ctrl.temph%100%100x30;buf[4]\0;lcd1602_show_string(3,1,buf);break;case 4://浑浊lcd1602_show_string(13,1, );delay_ms(100);lcd1602_show_nums(13,1,sys_ctrl.turbidh,2,0);break; }}break; }
}//系统数据设置
void sys_data_set(void)
{u8 key0;static oneflag0;keykey_scan(0);//模式设置if(keyKEY3_PRESS){sys_ctrl.mode;if(sys_ctrl.mode5)sys_ctrl.mode1;if(oneflag0){oneflag1;_parm_set_show();//系统参数设置显示}}if(sys_ctrl.mode!0){//在设置模式下加if(keyKEY1_PRESS){ switch(sys_ctrl.mode){case 1://PH下 sys_ctrl.phl;if(sys_ctrl.phl140)sys_ctrl.phl0;break;case 2://PH上 sys_ctrl.phh;if(sys_ctrl.phh140)sys_ctrl.phh0;break;case 3://温度 sys_ctrl.temph;if(sys_ctrl.temph999)sys_ctrl.temph0;break;case 4://浑浊 sys_ctrl.turbidh;if(sys_ctrl.turbidh99)sys_ctrl.turbidh0;break;} }//在设置模式下减else if(keyKEY2_PRESS){switch(sys_ctrl.mode){case 1://PH下 sys_ctrl.phl--;if(sys_ctrl.phl0)sys_ctrl.phl140;break;case 2://PH上 sys_ctrl.phh--;if(sys_ctrl.phh0)sys_ctrl.phh140;break;case 3://温度 sys_ctrl.temph--;if(sys_ctrl.temph0)sys_ctrl.temph999;break;case 4://浑浊 sys_ctrl.turbidh--;if(sys_ctrl.turbidh0)sys_ctrl.turbidh99;break;}}//确定else if(keyKEY4_PRESS){sys_ctrl.mode0;oneflag0;sys_open_show();//系统开机界面显示 } }
}//系统功能控制
void sys_fun_ctrl(void)
{//正常工作模式下if(sys_ctrl.mode0){//温度高于上限温度高指示打开降温蜂鸣器报警if(sys_ctrl.tempsys_ctrl.temph){LED_TPH0;JW_RELAY0;beep_alarm(10,1000);}else{LED_TPH1;JW_RELAY1;}//浑浊高于上限浑浊度高指示蜂鸣器报警if(sys_ctrl.turbidsys_ctrl.turbidh){LED_HZH0;beep_alarm(10,1000); }else{LED_HZH1;}//PH高于上限PH上限指示蜂鸣器报警if(sys_ctrl.phsys_ctrl.phh){LED_PHH0;beep_alarm(10,1000);}//PH低于下限PH下限指示蜂鸣器报警else if(sys_ctrl.phsys_ctrl.phl){LED_PHL0;beep_alarm(10,1000); }else{LED_PHH1;LED_PHL1; } }
} 三、实验现象
B站演示视频https://space.bilibili.com/444388619 联系作者
视频地址https://space.bilibili.com/444388619/video 专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发PCB设计视频分享技术交流。