微孔雾化片单片机自动调整中心频率原理图和软件微孔雾化片单片机自动调整中心频率原理图和软件PAGE微孔雾化片单片机自动调整中心频率原理图和软件/****************扫频函数*************FileName:ProjectName:FunctionDesc:CreateDate:Version:Author:ModifyHistory:Remark:5ms执行一次*****************包含头文件**********************/#include""#include""#include""#include""/*****************定义全局变量*******************//*****************声明全局变量*******************/externbitB_Moistrue;externu8r_adc1,r_adc2,r_adc3;bitB_SF_OK;//是否已经扫过频标志/*******************定义常量*********************/#definePWM1_DUTY_MIN3u#definePWM1_DUTY_MAX253u#definePWM1_CURRENT_MIN10u//#defineM1_Stop_500ms_Set_Value100u/*****************IO口重定义*********************//*******************函数定义*********************//*******************Frepuecy_Sweepfunction******///扫频思路:求取AD值最大的5的占空比的值取最小值做为中心频率可抗四次大的干扰voidFrequency_Sweep(void){staticuint8_tPWM1_Duty,Temp1,Temp2,Temp3;staticuint8_tPWM1_Duty_OK;if(B_Moistrue){if(B_SF_OK==0)//扫频位完成{if(PWM1_Duty
=Temp2){if(Temp2>=Temp1)//连续递减{if(Temp1=PWM1_CURRENT_MIN)//并且都有一定电流{PWM1_Duty_OK=(PWM1_Duty-2);B_SF_OK=1;}}}}}else{if(B_SF_OK==0)//没扫到重来{PWM1_Duty=3;}}}else{staticuint8_tTempa;Tempa++;if(Tempa==1)PWM1_Duty_Update(PWM1_Duty_OK+1);elseif(Tempa==2)PWM1_Duty_Update(PWM1_Duty_OK+2);else{Tempa=0;PWM1_Duty_Update(PWM1_Duty_OK);}}}else{B_SF_OK=0;PWM1_Duty_OK=PWM1_DUTY_MIN;PWM1_Duty_Update(PWM1_DUTY_MIN);PWM1_Duty=PWM1_DUTY_MIN;Temp1=0;Temp2=0;Temp3=0;}}