南宁网站制作策划,国际酒店网站建设不好,沈阳看男科哪里医院男科好,校园网站建设的必要性论文文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介
本项目使用STM32F103C8T6单片机控制器#xff0c;使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能#xff1a; 初始化后进入温度显示界面#xff0c;系统初始状态为手动… 文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介
本项目使用STM32F103C8T6单片机控制器使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能 初始化后进入温度显示界面系统初始状态为手动模式关闭定时功能。工作在手动模式下屏幕右上角会显示手图标自动模式则不显示 在手动模式下可通过按键K1调节风扇档位系统支持0-3档0为停止按下K2键停止按下K3键切换自动/手动模式按下K4键进入温度阈值及定时时间设置界面 按下K4键进入设置功能界面可通过K3键切换不同功能设置K1和K2用于调节比如温度阈值设置为26.5C开启定时定时时间设置为0.5小时设置好后可按下K4键退出 此时界面上方会显示一个闹铃图标当定时时间到达风扇则关闭需按下K3键后再按下K4键重新进入定时功能 在系统运行中可通过红外遥控器上的K1-K4位置键操作对应功能 二、软件设计
/*
作者嗨小易QQ3443792007*///系统数据显示
void sys_data_show(void)
{u8 buf[6];u8 settime0;reflash_window_show();//刷新固定窗口显示内容while(1){//未进入设置模式if(sys_ctrl.set0){//显示温度buf[0]sys_ctrl.temp/1000x30;buf[1]sys_ctrl.temp%100/100x30;buf[2].;buf[3]sys_ctrl.temp%100%100x30;buf[4]C;buf[5]\0;u8g2_SetFont(u8g2,u8g_font_ncenB24);u8g2_DrawStr(u8g2,25,50,(char *)buf);//显示档位buf[0]sys_ctrl.lev%100x30;buf[1]\0;u8g2_SetFont(u8g2,u8g2_font_helvB12_tf);u8g2_DrawStr(u8g2,20,12,(char *)buf);}//进入设置模式显示else{//箭头指向位置u8g2_SetFont(u8g2,u8g2_font_helvB12_tf);u8g2_DrawStr(u8g2,0,12sys_ctrl.mode*23,-);//显示温度阈值buf[0]sys_ctrl.templ/1000x30;buf[1]sys_ctrl.templ%100/100x30;buf[2].;buf[3]sys_ctrl.templ%100%100x30;buf[4]C;buf[5]\0;u8g2_DrawStr(u8g2,205*10,12,(char *)buf);//显示定时状态if(sys_ctrl.timeflag0)u8g2_DrawStr(u8g2,207*10,35,OFF);else u8g2_DrawStr(u8g2,207*10,35,ON );//显示定时时间settime((float)sys_ctrl.settime/60)*10;buf[0]settime/100x30;buf[1].;buf[2]settime%100x30;buf[3]H;buf[4]\0;u8g2_DrawStr(u8g2,205*10,58,(char *)buf);}u8g2_SendBuffer(u8g2);break;}
}//系统功能控制
void sys_fun_ctrl(void)
{//自动模式if(sys_ctrl.handflag1 sys_ctrl.time_over0){//如果温度低于下限停止if(sys_ctrl.tempsys_ctrl.templ)sys_ctrl.lev0;//随着温度升高26.5-28.0档位1else if(sys_ctrl.tempsys_ctrl.templ sys_ctrl.temp(sys_ctrl.templ15)) sys_ctrl.lev1;//随着温度升高28.0-29.5档位2else if(sys_ctrl.temp(sys_ctrl.templ15) sys_ctrl.temp(sys_ctrl.templ30))sys_ctrl.lev2;//随着温度升高29.5以上档位3else if(sys_ctrl.temp(sys_ctrl.templ30))sys_ctrl.lev3;}//开启定时if(sys_ctrl.timeflag1){//如果时间到达if(sys_ctrl.minsys_ctrl.settime){sys_ctrl.min0;sys_ctrl.lev0;TIM_Cmd(TIM3,DISABLE); //关闭定时器sys_ctrl.timeflag0;sys_ctrl.time_over1;}}//设置占空比TIM_SetCompare3(TIM4,sys_ctrl.lev*166);
}/*******************************************************************************
* 函 数 名 : TIM3_IRQHandler
* 函数功能 : TIM3中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void TIM3_IRQHandler(void)
{static u8 i0;static u8 sec0;if(TIM_GetITStatus(TIM3,TIM_IT_Update)){LED0!LED0;i;if(i2)//1S{i0;sec;if(sec60){sec0;sys_ctrl.min;} }}TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}//应用控制系统
void sys_app_ctrl(void)
{u8 i10;USART1_Init(115200);LED_Init();OLED_Init();//u8g2初始化u8g2_Setup_ssd1306_i2c_128x64_noname_f(u8g2, U8G2_R0, u8x8_byte_sw_i2c, u8x8_stm32_gpio_and_delay); // init u8g2 structure u8g2结构u8g2_InitDisplay(u8g2); // send init sequence to the display, display is in sleep mode after this,发送init序列到显示器显示器在此之后处于睡眠模式u8g2_SetPowerSave(u8g2, 0); //开启显示sys_open_logo_show();//系统开机LOGO显示DS18B20_Init();//等待温度数据稳定while(i--){sys_ctrl.tempDS18B20_GetTemperture()*10;//保留一位小数delay_ms(100);}KEY_Init();Hwjs_Init();TIM3_Init(1000,36000-1); //定时500msTIM4_CH3_PWM_Init(500,72-1);//频率是2KhTIM_SetCompare3(TIM4,0);sys_parm_init();//系统参数初始化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设计视频分享技术交流。