我上传的是超声波发风扇的源代码和一些说明,
可根据是否有人来判断是否可以打开风扇,并根据距离大小来调节风速。
单片机源程序如下:
- //该产品可以根据人和风扇的距离自动启动,当人距离风扇的距离小于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)
|