久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5874|回復: 5
打印 上一主題 下一主題
收起左側

單片機智能風扇設計與制作 有人在附近,溫度高自動開啟風扇 附源程序

  [復制鏈接]
跳轉到指定樓層
樓主
智能風扇
一、任務
設計并制作一個基于MCS51系列單片機控制的小風扇。
二、要求
1.基本部分:
(1)按鈕開關可以控制風扇的啟停及調速;
(2)自動隨溫度的高低調節風扇的風速。

2.擴展部分:

(2)有人在附近,且溫度較高時,自動開啟風扇。

設計思路
1.本設計采用機械開關控制風扇啟停,采用PWM加減調速按鍵控制調速。
2.本設計采用DS18B20獲取溫度并顯示在1602屏幕上,并把溫度值賦給PWM參數。
3.本設計采用熱釋電傳感器檢測人體。
設計圖


實物圖





熱釋電傳感器



主程序
#include<reg52.h>            //注:本題所用為5V電機(實際可以為l298n可以輸出的30多V)
#include"18b20.h"               //溫度顯示有問題————解決方法為1.提高晶振頻率到24mhZ之前運行速度較慢(提高cpu運行速度即可)。
#include"1602.h"                //temp最好變成全局變量
#define uint  unsigned int      //現在是40攝氏度以上風速達到最大,0-40攝氏度自動調速的風扇.
#define uchar unsigned char     //關于紅外控制————可以設置按下按鍵后,某個值加一,if判斷為(1or2or3or4后執行某種操作互不沖突)
sbit in1=P1^0;          //L298N輸入1
sbit in2=P1^1;         //L298N輸入2
sbit ena=P1^2;          //L298N PWM輸入
sbit led1=P1^3;          //減速到最低后紅燈亮  
sbit led2=P1^4;          //加速到最高后綠燈亮
sbit s1=P1^5;           //加速按鍵
sbit s2=P1^6;           //減速按鍵
sbit s3=P1^7;           //按鍵調速總開關----一直按下后才可以加減速,防止與自動溫度控制沖突
sbit renti=P3^6;        //人體識別輸入
sbit s4=P0^4;                  //溫度自動控制總開關  
uint pwm,sum;             //待比較數
void LcdDisplay(int temp);    //lcd顯示
void delay(uint t);       //延時聲明
void anjian();          //按鍵處理函數
void ledone();          //減速到最低后紅燈閃
void ledtwo();          //加速到最高后綠燈閃
void main()
{  
initialize();         //1602初始化
EA=1;              //總中斷
ET0=1;             //T0開
TMOD=0X01;          //工作方式16位定時
TH0=(65536-400)/256;
TL0=(65536-400)%256;     //200us
TR0=1;            //開始定時
sum=0;
pwm=0;            //此處不可更改    ————     解決了之前按減速時會加速的問題
while(1)
{   
  renti=1;                    //51讀引腳時先把那個引腳拉高
  delay(10);
  LcdDisplay(Ds18b20ReadTemp());   //溫度顯示及自動控制風速  
  anjian();               //按鍵速度控制函數
}
}

void anjian()           //按鍵處理函數
{
if(s2==0&s3==0&s4!=0)           //減速
{
  delay(10);
  if(s2==0&s3==0&s4!=0)
  {
   in1=0;            //正轉條件
   in2=1;
   if(pwm>0)
   {
    pwm--;
    delay(10000);//100ms
   }
   else
   {
    ledone();
   }
  }
}
if(s1==0&s3==0&s4!=0)                 //加速
{
  delay(10);
  if(s1==0&s3==0&s4!=0)
  {
   in1=0;             //正轉條件
   in2=1;
   if(pwm<41)
   {
    pwm++;
    delay(10000);      //100ms
   }
   else
   {
    ledtwo();
   }
  }
}
}
void delay(uint t)       //延時函數
{
while(t--);
}
void ledone()          //減速到最低后紅燈閃
{
led1=0;
delay(10000);
led1=1;
delay(10000);
}
void ledtwo()          //加速到最高后綠燈閃
{
led2=0;
delay(10000);
led2=1;
delay(10000);
}
void time0() interrupt 1     //定時器0
{
TR0=0;
TH0=(65536-400)/256;
TL0=(65536-400)%256;     //200s
sum++;
if(sum>40)
{
  sum=0;            //如果num的值大于40,歸0
}
if(sum<pwm)                   //注:此處不可更改---否則會出現減速或加速加減不到最大或最小的情況
{
   ena=1;           //pwm信號
}
else
{
  ena=0;           //pwm占空比
}
TR0=1;             //起動定時器0
}

void LcdDisplay(int temp)     //lcd顯示
{
  unsigned char datas[] = {0,0,0,0,0}; //定義數組
float tp;
float xujia;         //自動溫控變量
  if(temp>0)          //當溫度為負值時
   {   
   Writecommanda(0x80);  //寫地址 80表示初始地址
   Writedata('+');   //顯示正
  tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
  //如果溫度是正的那么,那么正數的原碼就是補碼它本身
  xujia=tp*0.0625*1+0.5;
  temp=tp*0.0625*100+0.5;
  //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
  //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
  //算加上0.5,還是在小數點后面。
   if(renti==1&xujia>30&s1!=0&s2!=0&s3!=0&s4!=0)//人體檢測&溫度大于30度時風扇轉程序其中一條不滿足風扇不轉
   {
    in1=0;             //正轉條件
    in2=1;
    pwm=40;
    delay(10000);
   }
   else if(renti==0&xujia>30&s1!=0&s2!=0&s3!=0&s4!=0)
   {
    in1=0;             //正轉條件
    in2=1;
    pwm=0;
    delay(10000);
   }
   else if(renti==1&xujia<30&s1!=0&s2!=0&s3!=0&s4!=0)
   {
    in1=0;             //正轉條件
    in2=1;
    pwm=0;
    delay(10000);
   }
   if(s4==0&s3!=0)                  //溫度檢測風速自動跟隨程序
   {
   
    if(s4==0&s3!=0)
    {
     if(xujia>pwm)        //加速              溫度提高1攝氏度————轉速提高約100轉
     {
      in1=0;            //正轉條件
      in2=1;
      pwm++;
      delay(10000);       //還可以加一個按鍵控制&s4==0
     }
     if(xujia<pwm)        //減速
     {
      in1=0;            //正轉條件
      in2=1;
      pwm--;
      delay(10000);       //還可以加一個按鍵控制&s4==0
     }   
    }
   }
  }
datas[0] = temp / 10000;
datas[1] = temp % 10000 / 1000;
datas[2] = temp % 1000 / 100;
datas[3] = temp % 100 / 10;
datas[4] = temp % 10;
  
Writecommanda(0x81);    //寫地址 80表示初始地址
Writedata('0'+datas[0]); //百位

Writecommanda(0x82);   //寫地址 80表示初始地址
Writedata('0'+datas[1]); //十位
Writecommanda(0x83);  //寫地址 80表示初始地址
Writedata('0'+datas[2]); //個位
Writecommanda(0x84);  //寫地址 80表示初始地址
Writedata('.');   //顯示 ‘.’
Writecommanda(0x85);   //寫地址 80表示初始地址
Writedata('0'+datas[3]); //顯示小數點  
Writecommanda(0x86);   //寫地址 80表示初始地址
Writedata('0'+datas[4]); //顯示小數點
}



全部資料51hei下載地址:
完整版HC-SR501人體感應模塊.zip (696.46 KB, 下載次數: 94)
程序.zip (44.5 KB, 下載次數: 97)
仿真不知道為什么有錯,求大神指導.7z (26.69 KB, 下載次數: 86)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發
ID:599674 發表于 2019-10-25 11:26 | 只看該作者
1.所用為5V電機(實際可以為l298n可以輸出的30多V)
2.s3和s4是開關,s1和s2是按鈕。
3.L298N是模塊,沒有畫出模塊圖。
4.人體檢測模塊,檢測到人后輸出3.3v,
經2個NPN三極管(開關)輸入到51 IO口,
轉化為高電平5V,低電平0V.
5.熱釋電傳感器是5V以上到15V以上供電,我用5V.

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:829602 發表于 2020-10-19 09:17 | 只看該作者
L298N模塊加入仿真之后會顯示錯誤 請問怎那么解決
回復

使用道具 舉報

地板
ID:869719 發表于 2020-12-28 22:32 | 只看該作者
仿真錯誤,誰能解決一下:

51hei.png (10.52 KB, 下載次數: 34)

51hei.png
回復

使用道具 舉報

5#
ID:869719 發表于 2020-12-28 23:23 | 只看該作者
這個有邏輯圖嗎
回復

使用道具 舉報

6#
ID:871749 發表于 2021-1-1 13:25 | 只看該作者
程序寫的不錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区四区国产 | 日本一区二区在线视频 | 国产精品视频二区三区 | 干狠狠| 韩国av电影网 | 日韩在线免费播放 | 久久青 | 久久久久成人精品亚洲国产 | 男人的天堂在线视频 | 亚洲精品在线免费 | 欧美日韩大片 | 超碰在线播 | 亚洲视频免费播放 | 做a视频在线观看 | 美美女高清毛片视频免费观看 | 日韩成人性视频 | 国产综合久久久久久鬼色 | 精品一区二区三区四区在线 | 欧美精品一区二区三区在线播放 | 国产精品久久久久久52avav | 亚州一区二区三区 | 欧美精品久久久久 | 国产一区91精品张津瑜 | 在线观看免费av网 | 久久性av| 天堂视频中文在线 | 国产精品亚洲精品 | 婷婷激情综合 | 国产综合精品一区二区三区 | 国产福利91精品 | 韩国毛片一区二区三区 | 狠狠色香婷婷久久亚洲精品 | 精品免费国产视频 | 国产激情视频 | 日韩三区 | 久久久久国产精品一区二区 | 日韩欧美在线播放 | 欧美精品一二三 | 国产日韩欧美在线观看 | 久久久精品一区 | 久久国产精品99久久久久久丝袜 |