实现功能:
1.检测与人距离自动开启风扇
2.随温度升高自动调节风扇转速
3.在液晶屏上显示当前环境温度
4.显示当前电机转速
5.根据按键调节设定温度值(可选)
所用元器件:
1.普中科技HC6800——EM3 V2.2开发板(STC89C52)
2.温度传感器DS18B20(开发板上接口,连接P3.7)
3.液晶显示LCD1602(开发板上接口,data连接P0口,E=P2.7,RW=P2.5,RS=P2.6)
4.德飞来直流电机模块(直流电机、电机控制芯片L9110S)
5.电机驱动芯片(开发板上步进电机驱动芯片,或使用L298N[需要外接供电])
整体程序框图
部分重要代码及详细注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
void Time0(void) interrupt 1 { TH0 = 0xF0; TL0 = 0x00; timer0++; if(22>Temperature_0 && Temperature_0>=20){pwm_set=0;} else if(25>Temperature_0 && Temperature_0>=22){pwm_set=2;} else if(28>Temperature_0 && Temperature_0>=25){pwm_set=4;} else if(32>Temperature_0 && Temperature_0>=28){pwm_set=8;} else if(Temperature_0>=32){pwm_set=10;} else{pwm_set = 0;} if(timer0>100) { timer0=0; } if(timer0 <pwm_set*10) { PWM=1; } else { PWM=0; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
void Time2(void) interrupt 5 { int flag =0; float x=0; TF2 = 0; TH2 = 0x3C; TL2 = 0xB0; flag++; if(flag=10){ flag = 0; num = TH1; num <<= 8; num |= TL1; x = num*30; num = x; TL1 = 0; TH1 = 0; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
void main(void) { TimeConfig(); Time2Config(); LcdInit(); LcdWriteCom(0x8B); while(F0==1){ void Key_Check(); EA = 0; Temperature_0 = Ds18b20ReadTemp(); TChange(); EA = 1; LcdDisplay(Temperature_0); Delay500ms();
|
最终成果
视频就不展示了,太紧张说的语无伦次。