|
我上傳的是超聲波發(fā)風(fēng)扇的源代碼和一些說明,
可根據(jù)是否有人來判斷是否可以打開風(fēng)扇,并根據(jù)距離大小來調(diào)節(jié)風(fēng)速。
單片機(jī)源程序如下:
- //該產(chǎn)品可以根據(jù)人和風(fēng)扇的距離自動(dòng)啟動(dòng),當(dāng)人距離風(fēng)扇的距離小于50CM時(shí),風(fēng)扇啟動(dòng),當(dāng)大于50CM時(shí),風(fēng)扇關(guān)閉
- #include <reg52.h>
- #include <intrins.h>
- #include <stdio.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit IN1=P1^3;
- sbit IN2=P1^4;
- sbit ENA=P1^5;
- sbit TRIG=P1^2;
- sbit ECHO=P1^1;
- int time;
- float s;
- bit flag;
- void fasong();
- void jisuan();
- void delay(int x);
- void main()
- {
- TMOD=0X21;
- SCON=0X50;
- TH1=0XFD;
- TL1=0XFD;
- TH0=0;
- TL0=0;
- TR0=1;
- TR1=1;
- ET0=1;
- TI=1;
- EA=1;
- while(1)
- {
- fasong();
- while(!ECHO);
- TR0=1;
- while(ECHO);
- TR0=0;
- jisuan();
- delay(100);
- IN1=0;
- IN2=1;
- if(s<50)
- ENA=1;
- else
- ENA=0;
- }
- }
- void fasong()
- {
- uint i;
- TRIG=1;
- for(i=0;i<20;i++)
- _nop_();
- TRIG=0;
- }
- void jisuan()
- {
- time=TH0*256+TL0;
- TH0=0;
- TL0=0;
- time*=12/11.0592;
- s=time*0.017;
- if(flag==1)
- {
- flag=0;
- printf("-----\n");
- }
- printf("S=%f\n",s);
- }
- void TIME_0 () interrupt 1
- {
- flag=1;
- }
- void delay(int x)
- {
- int i,j;
- for(i=x;i>0;i--)
- for(j=110;j>0;j--);
- }
復(fù)制代碼
以上代碼的Keil工程下載,你也可以自己建立工程然后把上面的代碼復(fù)制過去就不用下載了:
超聲波風(fēng)扇.zip
(26.36 KB, 下載次數(shù): 43)
2019-8-23 15:42 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|