系统采用51单片机作为控制平台对风扇转速进行控制。可由用户设置高、低温度值,测得温度值在高低温度之间时打开风扇弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动关闭风扇。风扇控制状态随外界温度而定,并通过PWM的方式控制风扇的转速。
整体电路主要由51单片机最小系统,数码管显示模块,数码管驱动模块,温度采集模块,人体感应模块,风扇模块,按键模块等构成;原理图如下:
PCB及仿真图如下:
三.软件设计
主程序源码
/****************主函数***************/
void main()
{static uchar value;time_init(); //初始化定时器 pwm=1;hw = 1;while(1){ key(); //按键程序if(key_can < 10){key_with(); //设置温度 }if(flag_200ms == 1) //200ms 处理一次温度程序{ flag_200ms = 0; temperature = read_temp()%1000; //先读出温度的值if(menu_1 == 0){ smg_i = 3;dis_smg[0] = smg_du[temperature % 10]; //取温度的小数显示dis_smg[1] = smg_du[temperature / 10 % 10] & 0xdf; //取温度的个位显示dis_smg[2] = smg_du[temperature / 100 % 10] ; //取温度的十位显示}fengshan_kz(); //风扇控制函数value ++;if(value >= 4){value = 0;if(miao != 0){miao --; //时间减1}if(miao == 0)flag_en = 0;}if(hw == 1) //感应到人{miao = 30;flag_en = 1;}}}
}/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{ static uchar value; //定时2ms中断一次TH0 = 0xf8;TL0 = 0x30; //2msvalue++; display(); //数码管显示函数if(value >= 150){value = 0; flag_200ms = 1;}if(flag_lj_en == 1) //按下按键使能{key_time ++;if(key_time >= 250) //500ms{key_time = 0;key_500ms = 1; //500mskey_value ++;if(key_value > 3){key_value = 10;flag_lj_3_en = 1; //3次后1.5秒连加大些} }}
}
资料链接:https://pan.baidu.com/s/1TAN-I-XEUopsmbODRRPvzg?pwd=e9ri
提取码:e9ri
下一篇:教你打造gRPC框架