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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6402|回復: 11
打印 上一主題 下一主題
收起左側(cè)

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

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:429540 發(fā)表于 2020-10-30 15:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
/*本風速傳感器采用小型直流有刷電機與三杯式旋轉(zhuǎn)風杯組裝
  而成,其工作原理為,當環(huán)境有水平流動風時,旋轉(zhuǎn)風杯能夠產(chǎn)生旋轉(zhuǎn),并帶動小型電機產(chǎn)生電壓,其電壓與旋轉(zhuǎn)速度基本成正比。利用此信號電壓,可以對環(huán)境風速進行測量。這款風速傳感器采用海洋軍用的高精度測量風速傳感器,與傳統(tǒng)產(chǎn)品先別,具有更高精度;是建筑機械(起重機、履帶吊、門吊、塔吊)、鐵路、港口、碼頭、風力發(fā)電、光伏發(fā)電、電廠、氣象、索道、環(huán)境、溫室、養(yǎng)殖等領域不可缺少的風速檢測裝置。用它可以實現(xiàn)設備風速指示數(shù)字化及自動化,是相關設備不可缺少的風速檢測設備。*/

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

#冠拓電子
#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 轉(zhuǎn)換控制寄存器
#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采集后的數(shù)字量
unsigned char disbuff[10]={0}; //顯示字符數(shù)組
void FX_Value_Conversion();  //風向處理顯示函數(shù)

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



/*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()        //風速測量顯示函數(shù)
{
          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;         //取整數(shù)位并顯示
                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()  //風向處理顯示函數(shù)
{
  FX_Value=(FX_NUM*5.0)/1024;//數(shù)字量轉(zhuǎn)換為電壓值顯示,10為ADC,所以除以1024
        
                //轉(zhuǎn)換為電壓值字符,單位毫伏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轉(zhuǎn)換
{
        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;
}
//延時函數(shù)//
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, 下載次數(shù): 133)

51hei截圖20201030153343.png

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

51hei圖片編輯_20201015180912.jpg

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

51hei圖片_20201015180313.jpg

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

感謝您的評論
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清在线免费观看 | 美女久久 | 日韩高清一区二区 | 久久免费精品 | 亚洲精品自在在线观看 | 在线午夜 | 国产羞羞视频在线观看 | 日韩精品在线免费观看视频 | h视频网站在线观看 | 日韩电影中文字幕在线观看 | 日韩在线视频一区二区三区 | 九色一区| 91久久国产综合久久91精品网站 | 久久久久久久电影 | 久久久久国产精品 | av性色全交蜜桃成熟时 | 韩国av一区二区 | www.嫩草 | 国产成人精品久久 | 亚洲国产精品久久 | 国产精品亚洲一区 | 欧美一区二区 | 91精品国产91久久久久久三级 | 国产激情免费视频 | 91av在线免费播放 | 久久久久久久久久久一区二区 | 狠狠操狠狠操 | 欧产日产国产精品99 | 国产精品欧美一区二区三区不卡 | 亚洲一区二区在线播放 | 精品成人一区二区 | 美女中文字幕视频 | 91精品国产乱码久久久久久久久 | 91在线视频网址 | 欧美8一10sex性hd | 亚洲国产一区二区三区 | 婷婷综合网 | 久久99视频免费观看 | 亚州激情| 亚洲午夜一区二区 | 区一区二区三在线观看 |