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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

風速風向傳感器在單片機上的應用

  [復制鏈接]
跳轉到指定樓層
樓主
/*本風速傳感器采用小型直流有刷電機與三杯式旋轉風杯組裝
  而成,其工作原理為,當環境有水平流動風時,旋轉風杯能夠產生旋轉,并帶動小型電機產生電壓,其電壓與旋轉速度基本成正比。利用此信號電壓,可以對環境風速進行測量。這款風速傳感器采用海洋軍用的高精度測量風速傳感器,與傳統產品先別,具有更高精度;是建筑機械(起重機、履帶吊、門吊、塔吊)、鐵路、港口、碼頭、風力發電、光伏發電、電廠、氣象、索道、環境、溫室、養殖等領域不可缺少的風速檢測裝置。用它可以實現設備風速指示數字化及自動化,是相關設備不可缺少的風速檢測設備。*/

//使用該程序和電路再搭配我們的風速風向傳感器就可以實時顯示風速風向數據

#冠拓電子
#include <stc89c52.h>
#include <lcd.h>
#include <intrins.h>
#define        uchar        unsigned char
#define uint        unsigned int
        
#define MAIN_Fosc                11059200L        //定義主時鐘, 模擬串口和和延時會自動適應。5~35MHZ  22118400L
//                                                                7       6      5       4         3      2    1    0   Reset Value
//sfr ADC_CONTR = 0xBC;                ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000        //AD 轉換控制寄存器
#define ADC_OFF()        ADC_CONTR = 0
#define ADC_ON                (1 << 7)
#define ADC_90T                (3 << 5)
#define ADC_180T        (2 << 5)
#define ADC_360T        (1 << 5)
#define ADC_540T        0
#define ADC_FLAG        (1 << 4)        //軟件清0
#define ADC_START        (1 << 3)        //自動清0
#define ADC_CH0                0
#define ADC_CH1                1
#define ADC_CH2                2
#define ADC_CH3                3
#define ADC_CH4                4
#define ADC_CH5                5
#define ADC_CH6                6
#define ADC_CH7                7

//sbit k1 = P2^0;
//sbit buzzer = P3^7;
/************* 本地變量聲明 **************/
int wind_set = 50;
float wind_speed = 0.0;
float wind_ppm = 0.0;
void wind_Value_Conversion();        


float FX_Value=0.0;//風向傳感器輸出的模擬電壓值
//int dir_set = 1;
//int dir_set1;                        /*1=N\2=S\3=W\4=E\5=EN\6=ES\7=WN\8=WS*/
unsigned int FX_NUM=0;//AD采集后的數字量
unsigned char disbuff[10]={0}; //顯示字符數組
void FX_Value_Conversion();  //風向處理顯示函數

void Delay1(unsigned int time);  //延時子函數
void DelayUs(unsigned int time);                 //延時主程序
uint        adc10_start(uchar channel);        //channel = 0~7                   AD轉換



/*void press_k1(void)
{
        if(k1 == 0)
        {
                Delay1(100);
                if(k1 == 0)
                {
                        dir_set += 1;
                        if(dir_set>8)
                        {
                                dir_set = 1;
                        }
                }
        }
}


/*void press_k2()
{
        if(k2 == 0)
        {
                Delay1(100);
                if(k2 == 0)
                {
                        wind_set -= 1;
                        if(wind_set<0)
                        {
                                wind_set = 999;
                        }
                }
        }
}
         */
// void display_set()                                        //按鍵設置顯示
//
//{
//        if(dir_set == 1)                                                   /*1=N\2=S\3=W\4=E\5=EN\6=ES\7=WN\8=WS*/
//                   {
//                DisplayString(0x09,0,"set:N ");
//                }
//           else if(dir_set == 2)
//                {
//                DisplayString(0x09,0,"set:S ");        
//                }
//        else if(dir_set == 3)
//                {
//        DisplayString(0x09,0,"set:W ");
//                }
//        else if(dir_set == 4)
//                {
//                DisplayString(0x09,0,"set:E ");
//                }
//        else if(dir_set == 5)
//                {
//                DisplayString(0x09,0,"set:EN");
//                }
//        else if(dir_set == 6)
//                {
//                DisplayString(0x09,0,"set:ES");
//                }
//        else if(dir_set == 7)
//                {
//                DisplayString(0x09,0,"set:WN");
//                }
//        else if(dir_set == 8)
//                {
//                DisplayString(0x09,0,"set:WS");
//                }
//           }                                          
/*void display_set()                //按鍵設置顯示
{
        uchar num1, num2, num3;
        num1 = wind_set/100+'0';
        num2 = wind_set%100/10+'0';
        num3 = wind_set%10+'0';        
        DisplaySingleChar(0x04,1,num1);        
        DisplaySingleChar(0x05,1,num2);        
        DisplaySingleChar(0x06,1,num3);
        DisplayString(0x7,1,"km/h");               
}          */
//void buzzer_on()
//{
//         if(dir_set==dir_set1)                           /*從1****8取值*/
//                        {
//                                buzzer = 0;
//                        }
//                        else
//                        {
//                                buzzer = 1;
//                        }
//}                                 

void main()
{
        P1ASF = 0x07;                        //12C5A60AD/S2系列模擬輸入(AD)選擇
        ADC_CONTR = ADC_360T | ADC_ON;
        LCDInit();                              //顯示屏初始化
        DisplayString(0x0,0,"  Welcome...  ");
        Delay1(500);
    //DisplayString(0x0,0,"Wind Speed");
                //DisplayString(0x0,1,"dir:");
        //Delay1(500);
        WriteCmd(LCD_CLS);
        //DisplayString(0x0,0,"Speed:");
         //DisplayString(0x0,1,"dir:");
                DisplayString(0x0,0,"    mv");
                //DisplayString(0x0b,0,"set:");
                //DisplayString(0x0,1,"dir:");
        //DisplayString(0x0,1,"Set:");        
        while(1)
        {
                 
                        //press_k1();
                //        press_k2();
                        
                        
                        
                        wind_speed = adc10_start(0);                                
                        wind_Value_Conversion();
                        FX_NUM = adc10_start(1);//P1.1口采集模擬電壓        
                    FX_Value_Conversion();               
                         //display_set();
                         //buzzer_on();

}
}
void wind_Value_Conversion()        //風速測量顯示函數
{
          uchar num1, num2, num3;
                wind_speed=(wind_speed*5)/1024;           
          wind_ppm = 0.027*1000*3.6*wind_speed ;         //公式:風速F=0.027*V(電壓)*3.6  km/h


                num1 = (int)(wind_ppm)/100;         //取整數位并顯示
                num2 = (int)(wind_ppm)%100/10;
                num3 = (int)(wind_ppm)%10;
          DisplaySingleChar(0x09,1,num1+0x30);        
          DisplaySingleChar(0x0a,1,num2+0x30);        
          DisplaySingleChar(0x0b,1,num3+0x30);
          DisplayString(0x0c,1,"km/h");        

}
void FX_Value_Conversion()  //風向處理顯示函數
{
  FX_Value=(FX_NUM*5.0)/1024;//數字量轉換為電壓值顯示,10為ADC,所以除以1024
        
                //轉換為電壓值字符,單位毫伏mv
        disbuff[0]=(int)(FX_Value*1000)/1000+'0';
        disbuff[1]=(int)(FX_Value*1000)%1000/100+'0';        
        disbuff[2]=(int)(FX_Value*1000)%100/10+'0';
        disbuff[3]=(int)(FX_Value*1000)%10+'0';
        
                //顯示電壓值
        DisplaySingleChar(0x00,0,disbuff[0]);
        DisplaySingleChar(0x01,0,disbuff[1]);
        DisplaySingleChar(0x02,0,disbuff[2]);
        DisplaySingleChar(0x03,0,disbuff[3]);               
        
        if(FX_Value<=0.35) //北風                                                          /*1=N\2=S\3=W\4=E\5=EN\6=ES\7=WN\8=WS*/
        {
    DisplayString(0x00,1,"dir:N "); //北風
        //dir_set1 = 1;
        }
        else if(FX_Value>0.35&&FX_Value<=1.05)
        {
    DisplayString(0x00,1,"dir:EN");//東北風
        //dir_set1 = 5;
        }
        else if(FX_Value>1.05&&FX_Value<=1.75)
        {
    DisplayString(0x00,1,"dir:E ");        //東風
        //dir_set1 = 4;        
        }
        else if(FX_Value>1.75&&FX_Value<=2.45)
        {        
    DisplayString(0x00,1,"dir:ES"); //東南風
        //dir_set1 = 6;
        }
        else if(FX_Value>2.45&&FX_Value<=3.2)
        {        
    DisplayString(0x00,1,"dir:S "); //南風
        //dir_set1 = 2;
        }
        else if(FX_Value>3.2&&FX_Value<=3.85)
        {
    DisplayString(0x00,1,"dir:WS"); //西南風
        //dir_set1 = 8;
        }
                else if(FX_Value>3.85&&FX_Value<=4.6)
        {
    DisplayString(0x00,1,"dir:W "); //西風
        //dir_set1 = 3;
        }
        else if(FX_Value>4.6)
        {
    DisplayString(0x00,1,"dir:WN"); //西北風
        //dir_set1 = 7;
        }
}
uint        adc10_start(uchar channel)        //channel = 0~7                   AD轉換
{
        uint        adc;
        uchar        i;

        ADC_RES = 0;
        ADC_RESL = 0;

        ADC_CONTR = (ADC_CONTR & 0xe0) | ADC_START | channel;

        i = 250;
        do{
                if(ADC_CONTR & ADC_FLAG)
                {
                        ADC_CONTR &= ~ADC_FLAG;
                        adc = (uint)ADC_RES;
                        adc = (adc << 2) | (ADC_RESL & 3);
                        return        adc;
                }
        }while(--i);
        return        1024;
}
//延時函數//
void Delay1(unsigned int time)
{
    unsigned int timeCounter = 0;
        for (timeCounter = time;timeCounter > 0 ;timeCounter --)
                DelayUs(255);
}

void DelayUs(unsigned int time)
{
        unsigned int timeCounter = 0;
        for (timeCounter = 0;timeCounter < time;timeCounter ++)
                _nop_();
}


51hei截圖20201030153343.png (72.83 KB, 下載次數: 133)

51hei截圖20201030153343.png

51hei圖片編輯_20201015180912.jpg (123.3 KB, 下載次數: 94)

51hei圖片編輯_20201015180912.jpg

51hei圖片_20201015180313.jpg (127.27 KB, 下載次數: 112)

51hei圖片_20201015180313.jpg

評分

參與人數 1黑幣 +12 收起 理由
龍奧 + 12 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:328014 發表于 2020-10-30 16:01 | 只看該作者
好東東 能分享一下 程序壓縮包嗎 缺少頭文件
回復

使用道具 舉報

板凳
ID:429540 發表于 2020-10-30 16:11 | 只看該作者
51hei團團 發表于 2020-10-30 16:01
好東東 能分享一下 程序壓縮包嗎 缺少頭文件

可以的。你有硬件支持嗎
回復

使用道具 舉報

地板
ID:796670 發表于 2020-11-2 20:19 | 只看該作者
LCL000 發表于 2020-10-30 16:11
可以的。你有硬件支持嗎

大佬可以把源程序頭文件打包發論壇嗎?感激不盡!想學習一下這個,非常非常感謝
回復

使用道具 舉報

5#
ID:825397 發表于 2020-11-3 21:18 | 只看該作者
比較實用
回復

使用道具 舉報

6#
ID:429540 發表于 2020-11-4 18:16 | 只看該作者

感謝您的評論
回復

使用道具 舉報

7#
ID:826942 發表于 2020-11-4 19:48 | 只看該作者
大佬我最近在做一個氣象站的實驗,但是風速是脈沖的 現在在風速的測量這里卡住了,就是只有風速一轉動有脈沖12864顯示就白屏,大佬能幫忙找下原因嗎?不勝感激。謝謝你幫忙找找原因,用的是60S2芯片
回復

使用道具 舉報

8#
ID:848767 發表于 2021-7-21 21:34 來自手機 | 只看該作者
這不是用的485信號嗎,怎么和單片機連接的呀
回復

使用道具 舉報

9#
ID:848767 發表于 2021-7-21 22:03 來自手機 | 只看該作者
風速風向怎么用的杜邦線,某一個寶沒看見有杜邦線的呀,這是怎么轉換的呀
回復

使用道具 舉報

10#
ID:1005524 發表于 2022-3-1 19:22 | 只看該作者
大佬可以 可以也分享一下完整的程序壓縮包嗎 感謝
回復

使用道具 舉報

11#
ID:1017646 發表于 2022-4-13 10:13 | 只看該作者
您好 想要一下頭文件 萬分感謝
回復

使用道具 舉報

12#
ID:1029701 發表于 2022-5-26 15:54 | 只看該作者
您好,請問可以分享一下完整的程序壓縮包嗎?謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久热免费在线 | 美国十次成人欧美色导视频 | 久久久久久久国产精品视频 | 黄色网址在线免费观看 | 成人二区 | 日韩一级不卡 | 欧美一区二区三区在线 | 在线欧美一区 | 亚洲精品中文字幕 | 在线欧美小视频 | 亚洲第一av| 婷婷桃色网| 精品中文视频 | 日韩高清一区 | 在线免费小视频 | 午夜小电影 | 国产精品免费在线 | 欧美一区二区小视频 | 97久久精品午夜一区二区 | 久久av.com | 真人女人一级毛片免费播放 | 国产精品欧美一区二区 | 天天操天天射天天舔 | 国产精品精品3d动漫 | 日韩成人av在线播放 | 一区在线播放 | 国产高清在线视频 | 日韩综合网 | 亚洲精品一区二区二区 | 在线亚洲人成电影网站色www | 国产综合精品 | 日韩成人在线视频 | 四季久久免费一区二区三区四区 | 午夜无码国产理论在线 | 久久久久久av | 激情a| 日韩二区 | 毛片在线看看 | 中文字幕在线播放不卡 | 久久精品成人 | 中文字幕一区二区三区精彩视频 |