我上傳的是超聲波發風扇的源代碼和一些說明,
可根據是否有人來判斷是否可以打開風扇,并根據距離大小來調節風速。
單片機源程序如下:
- //該產品可以根據人和風扇的距離自動啟動,當人距離風扇的距離小于50CM時,風扇啟動,當大于50CM時,風扇關閉
- #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--);
- }
復制代碼
以上代碼的Keil工程下載,你也可以自己建立工程然后把上面的代碼復制過去就不用下載了:
超聲波風扇.zip
(26.36 KB, 下載次數: 43)
2019-8-23 15:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|