找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 3119|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)超聲波風(fēng)扇源程序 根據(jù)距離大小來調(diào)節(jié)風(fēng)速

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:603085 發(fā)表于 2019-8-23 15:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我上傳的是超聲波發(fā)風(fēng)扇的源代碼和一些說明,
可根據(jù)是否有人來判斷是否可以打開風(fēng)扇,并根據(jù)距離大小來調(diào)節(jié)風(fēng)速。

單片機(jī)源程序如下:
  1. //該產(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)閉
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #include <stdio.h>
  5. #define uint unsigned int
  6. #define uchar unsigned char

  7. sbit IN1=P1^3;
  8. sbit IN2=P1^4;
  9. sbit ENA=P1^5;
  10. sbit TRIG=P1^2;
  11. sbit ECHO=P1^1;

  12. int time;
  13. float s;
  14. bit flag;
  15. void fasong();
  16. void jisuan();
  17. void delay(int x);
  18. void main()
  19. {
  20.         TMOD=0X21;
  21.         SCON=0X50;
  22.         TH1=0XFD;
  23.         TL1=0XFD;
  24.         TH0=0;
  25.         TL0=0;
  26.         TR0=1;
  27.         TR1=1;
  28.         ET0=1;
  29.         TI=1;
  30.         EA=1;
  31.         while(1)
  32.         {
  33.                 fasong();
  34.                 while(!ECHO);
  35.                 TR0=1;
  36.                 while(ECHO);
  37.                 TR0=0;
  38.                 jisuan();
  39.                 delay(100);
  40.                 IN1=0;
  41.                 IN2=1;
  42.                 if(s<50)
  43.                 ENA=1;
  44.                 else
  45.                 ENA=0;        
  46.         }
  47. }
  48. void fasong()
  49. {
  50.         uint i;
  51.         TRIG=1;
  52.         for(i=0;i<20;i++)
  53.         _nop_();
  54.         TRIG=0;
  55. }
  56. void jisuan()
  57. {
  58.         time=TH0*256+TL0;
  59.         TH0=0;
  60.         TL0=0;
  61.         time*=12/11.0592;
  62.         s=time*0.017;
  63.         if(flag==1)
  64.         {
  65.                 flag=0;
  66.                 printf("-----\n");
  67.         }
  68.         printf("S=%f\n",s);
  69. }
  70. void TIME_0 () interrupt 1
  71. {
  72.         flag=1;
  73. }
  74. void delay(int x)
  75. {
  76.         int i,j;
  77.         for(i=x;i>0;i--)
  78.                 for(j=110;j>0;j--);
  79. }
復(fù)制代碼

以上代碼的Keil工程下載,你也可以自己建立工程然后把上面的代碼復(fù)制過去就不用下載了:
超聲波風(fēng)扇.zip (26.36 KB, 下載次數(shù): 43)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:956395 發(fā)表于 2021-8-13 21:21 | 只看該作者
仿真不動(dòng)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1009518 發(fā)表于 2022-3-14 17:27 | 只看該作者
IN1 IN2 是什么
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表