智能温控风扇的设计
附 录3:源程序
#include
0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; uc wd,fuhao,ds,a,b,g,b1,f,kg; ui xshu; void xy(ui z) {
ui x;
for(x=z;x>0;x--); }
void chu_shi() {
DQ = 1; xy(16); DQ = 0; xy(140); DQ = 1; xy(100); }
void fa_song(uc f) {
uc i;
for (i=8; i>0; i--) {
DQ = 0;DQ = 0;DQ = 0;DQ = 0;DQ = 0; DQ = 0;DQ = 0;DQ = 0;DQ = 0;DQ = 0; xy(1);
DQ =f&0x01; xy(8); DQ = 1; f=f>>1; } }
uc jie_shou() {
uc i,b;
for (i=8;i>0;i--) {
b=b>>1; DQ = 0;
31
智能温控风扇的设计
DQ = 1; xy(1); if(DQ==1) { b=b|0x80; }
else {b=b|0x00;} xy(8); }
return b; }
void xianshi() {
b=wd/100; a=wd0/10; g=wd; f=xshu/1000; if(fuhao==0) { if(b!=0) { P2=0x01;P0=bmb[b];xy(200); P2=0x00;P0=0xff;xy(30); P2=0x04;P0=bmb[a];xy(200); P2=0x00;P0=0xff;xy(30); } else { if(a!=0) { P2=0x04;P0=bmb[a];xy(200); P2=0x00;P0=0xff;xy(30); } } P2=0x10;P0=bmb[g]&0x7f;xy(200); P2=0x00;P0=0xff;xy(30); P2=0x40;P0=bmb[f];xy(200); P2=0x00;P0=0xff;xy(30); }
if(fuhao==1) { P2=0x01;P0=0xbf;xy(200); P2=0x00;P0=0xff;xy(30); if(a!=0) { P2=0x04;P0=bmb[a];xy(200); P2=0x00;P0=0xff;xy(30);
32
智能温控风扇的设计
} P2=0x10;P0=bmb[g]&0x7f;xy(200); P2=0x00;P0=0xff;xy(30); P2=0x40;P0=bmb[f];xy(200); P2=0x00;P0=0xff;xy(30); } }
void wendu() {
uc w1,w2; chu_shi(); fa_song(0xcc); fa_song(0x44);
for(b1=4;b1>0;b1--)xianshi(); chu_shi(); fa_song(0xcc); fa_song(0xbe); w1=jie_shou(); w2=jie_shou(); if((w2&0xf8)==0) { xshu=w1;fuhao=0; wd=w2;wd=wd<<4; wd=wd&0xf0; w1=w1>>4; w1=w1&0x0f; wd=wd|w1; xshu=xshu&0x0f; xshu=xshu*625; } else { w1=~w1;w2=~w2; xshu=w1;fuhao=1; wd=w2;wd=wd<<4; wd=wd&0xf0; w1=w1>>4; w1=w1&0x0f; wd=wd|w1; xshu=xshu&0x0f; xshu=xshu*625; }
for(b1=4;b1>0;b1--)xianshi(); }
void main() {
kg=0;
33
智能温控风扇的设计
}
while(1) { if(k==0) { xy(4000); if(k==0) { while(!k); kg++; if(kg==2)kg=0; } } if(kg==1) { led=0; wendu(); if(fuhao==0) { if(wd>35)P3=0x0c; if(wd>29&&wd<36)P3=0x24; if(wd>24&&wd<30)P3=0x28; if(wd<25)P3=0x2c; } else P3=0xff; } else { led=1; P3=0xff; P2=0xff; P0=0xff; } }
34
智能温控风扇的设计
附 录4:温控风扇清单
原件 温度传感器 电解电容 LED灯 三极管 电阻 四位一体共阳数码管 单片机 直流电机 字母 18B20 C D Q R Shu M 型号 18B20 9015 1K、100、10K 数码管 AT89C52 数量 1 若干 1 若干 若干 1 1 1 35