找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12235|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于單片機的風速風向畢業(yè)設(shè)計論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:201968 發(fā)表于 2017-5-17 22:04 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本科生畢業(yè)設(shè)計
(申請學(xué)士學(xué)位)

論文題目風速風向數(shù)據(jù)采集實驗
裝置的設(shè)計

作者姓名 劉江

所學(xué)專業(yè)名稱  自動化

指導(dǎo)教師  呂承啟

   月  

學(xué)       生:                  (簽字)
學(xué)       號:
答 辯 日 期:      年   月   日
指 導(dǎo) 教 師:                  (簽字)

目錄
摘要
Abstract              2
1 緒論              3
     1.1 研究背景及意義              3
     1.2 研究內(nèi)容              3
     1.3 國內(nèi)外發(fā)展現(xiàn)狀              4
2 系統(tǒng)整體方案設(shè)計              5
     2.1 系統(tǒng)問題分析              5
     2.2 系統(tǒng)框架論證與比較              6
3 硬件設(shè)計              8
     3.1 電源的選擇與設(shè)計              8
     3.2 單片機選型與設(shè)計              8
            3.2.1 AT89S52單片機簡介              8
            3.2.2 AT89S52單片機引腳特性              9
     3.3 顯示模塊設(shè)計              11
     3.4 風速風向電路設(shè)計              12
            3.4.1 風速風向儀簡介
            3.4.2 風速儀工作原理
            3.4.3 風向儀工作原理
            3.4.4 光電編碼器原理圖              13
4 軟件設(shè)計              14
     4.1 風向檢測軟件設(shè)計              14
     4.2 風速檢測軟件設(shè)計              14
     4.3 主程序設(shè)計              15
5 系統(tǒng)測試與評價              17
     5.1 測試方法              17
     5.2 測試結(jié)果與分析              17
參考文獻              19
致 謝
附 錄

風速風向數(shù)據(jù)采集實驗裝置的設(shè)計

摘要:風速風向采集儀主要應(yīng)用在一些動作單一,工作強度大或者環(huán)境比較嚴峻的場合,例如沙漠,軍區(qū)等。通過自動控制技術(shù)達到對儀器的類人工控制,使得對區(qū)間的測量更加有效和便捷。本文結(jié)合自動控制技術(shù)和光電探測技術(shù),設(shè)計了一款自動風速風向采集儀。通過多個傳感器模塊將風速風向跟核心控制器聯(lián)接在一起,定義了自己的通信協(xié)議。我們可以通過風速傳感器對風速進行精確測量。也可以通過風向傳感器對風向進行精確檢測。然后由核心控制器對其進行顯示。同時考慮到工作現(xiàn)場的復(fù)雜性,為本系統(tǒng)設(shè)計了濾波部分,使得當有異常波動時,系統(tǒng)不會偏離正常狀態(tài),而只有系統(tǒng)檢測到正常變化時,才允許顯示。
系統(tǒng)整體包括核心控制部分,風速檢測部分,風向檢測部分以及顯示部分。通過這幾大模塊的綜合作用,我們的系統(tǒng)可以應(yīng)對大部分的場景以及突發(fā)狀況。本設(shè)計成本低廉,功耗較小同時功能豐富,具有相當?shù)睦碚摵蛯嵺`指導(dǎo)。系統(tǒng)采用keil編譯軟件進行代碼的編寫,使用protues進行軟件仿真,整體效果穩(wěn)定。



1 緒論
1.1 研究背景及意義
隨著人工智能技術(shù)的不斷提高,傳統(tǒng)的探測技術(shù)已經(jīng)無法滿足社會的需求。雖然我們的生活條件相比以前有了很大的改善。物質(zhì)生活發(fā)生了翻天覆地的變化。人類對自己生存環(huán)境已經(jīng)具有了相當?shù)母脑炷芰。但是我們(nèi)匀簧嬖谝粋不方面的地球上。我們的計算機技術(shù)已經(jīng)有了很大的提高,但是在一些傳統(tǒng)行業(yè)中,仍然使用較為原始的探測技術(shù)。這些測量技術(shù)在過去的生產(chǎn)生活中占有很大的比重,應(yīng)用范圍也十分廣泛。但是隨著我們對科學(xué)技術(shù)的不斷發(fā)展,對這些技術(shù)的依賴性已經(jīng)開始呈現(xiàn)出一種降低趨勢。而如何將傳統(tǒng)測量理論結(jié)合現(xiàn)代科學(xué)技術(shù),已經(jīng)成為了當今的發(fā)展趨勢。
風作為一種大自然的饋贈,可以給人類提供豐富的生產(chǎn)動力。近年來隨著人們對環(huán)境友好型社會建設(shè)理念的不斷加強,我們已經(jīng)將能源發(fā)展的目光從石油,煤炭等化石材料轉(zhuǎn)移向了風能,太陽能等這些純凈的能源。由于這些能源無污染,成本低的特點,人類已經(jīng)研制出了一大批可以收集這些能源的設(shè)備。雖然這一趨勢是科學(xué)發(fā)展所必然的結(jié)果。但是目前來看,這些研究領(lǐng)域仍然處于初級階段。相比于傳統(tǒng)的燃煤,燃油技術(shù),這些新興的技術(shù)仍然存在效率低的缺點。如何加強這些能源的轉(zhuǎn)化效率已經(jīng)成了一些工程師們著重研究的領(lǐng)域。將傳統(tǒng)理論結(jié)合計算機等技術(shù)似乎成為了一塊不錯的敲門磚。  
雖然智能化技術(shù)在我們生活中已經(jīng)普及開來,但是這些技術(shù)主要是一些弱智能技術(shù),我們確實已經(jīng)進入了弱智能時代,但是對智能技術(shù)的追求我們從沒放慢過自己的腳步,各國也將發(fā)展的重頭戲放在了相關(guān)產(chǎn)業(yè)鏈上,比如物聯(lián)網(wǎng)就是我們正在大力發(fā)展的技術(shù)。我國每年對相關(guān)IT人員尤其是嵌入式開發(fā)人員的需求也是年年供不應(yīng)求。各國之間的角力將會發(fā)生在這些領(lǐng)域之中。因此,我們自動風速風向采集儀不管是在民用領(lǐng)域還是在軍事領(lǐng)域都具有相當?shù)臐摿σ约拔磥,對我國人員安全以及科研都有十分重大的推動作用。
1.2 研究內(nèi)容
我們結(jié)合社會需求與現(xiàn)有理論,在實際可行的基礎(chǔ)上進行了本次課題設(shè)計。在經(jīng)過充分的研究與討論之后,我們完成了對本系統(tǒng)的電路設(shè)計。代碼編寫與實驗仿真。在整個項目期間,我們先對需要用到的各個模塊進行了充分調(diào)研與設(shè)計。在硬件電路方面,我們對轉(zhuǎn)壓模塊,驅(qū)動模塊,控制模塊,風速風向檢測模塊進行了設(shè)計與仿真,在protues仿真與理論切合的基礎(chǔ)上,我們進行了實際的電路制作。對于軟件部分,我們對單片機進行了深入的學(xué)習,包括用到的中斷系統(tǒng),輪詢部分,A/D轉(zhuǎn)換與pwm部分進行了重點學(xué)習。經(jīng)過系統(tǒng)的學(xué)習之后,我們對軟硬件進行了綜合。在確保原理正確的基礎(chǔ)上,我們不斷對軟硬件進行聯(lián)調(diào)。最終,我們的設(shè)計成功地實現(xiàn)了設(shè)計要求,并有了一定的相關(guān)擴展,可以在此基礎(chǔ)上進行二次研發(fā)。

1.3 國內(nèi)外發(fā)展現(xiàn)狀
人工智能技術(shù)被視為未來科技領(lǐng)域,尤其是嵌入式行業(yè)的重點發(fā)展方向。隨著物聯(lián)網(wǎng)的興起,人工智能也逐漸被人們撥開了迷霧,人們開始越來越關(guān)注這一領(lǐng)域的發(fā)展。從“小米之家”的興起到智能家居的廣泛應(yīng)用,我們已經(jīng)開始進入了一個智能化的時代。說到科技領(lǐng)域的發(fā)展,走在前沿的國家主要有美國,日本,韓國以及中國。領(lǐng)導(dǎo)這一發(fā)展趨勢的公司主要是美國的蘋果,谷歌,日本的索尼,韓國的三星以及中國的華為,小米等科技公司。這些國家在智能化技術(shù)領(lǐng)域有著不可忽視的作用。
基于單片機的風速風向采集儀屬于人工智能技術(shù)領(lǐng)域的一種。一直被各國視為發(fā)展的重頭戲,各大公司也早早地進行了戰(zhàn)略布局。從20世紀90年代以來,日本的機器人技術(shù)便一直領(lǐng)先于世界,無論是從娛樂家用型機器人還是工業(yè)型機器人,日本都完成了重大的戰(zhàn)略布局,每年的機器人大會也主要在日本舉行。而美國韓國則在便攜式設(shè)備領(lǐng)域領(lǐng)先于世界,無論是蘋果公司還是三星,都在科技領(lǐng)域占有舉足輕重的地位。
我國在這一領(lǐng)域的發(fā)展起步也較早,早在2000年左右,我國便在物聯(lián)網(wǎng)方面有了自己的認識,國家也大力培養(yǎng)這一方面的人才,在各大高校開設(shè)了各類IT專業(yè),但即使如此,也遠遠跟不上國內(nèi)外對這一領(lǐng)域人才的需求,去年在嵌入式方面的人才空缺仍然在幾十萬以上,相關(guān)專業(yè)人員的薪水也遙遙領(lǐng)先于其他行業(yè)。近幾年國內(nèi)比較熱門的互聯(lián)網(wǎng)之家,小米之家便是其中的典范。無論是從日常使用,還是工業(yè)級產(chǎn)業(yè)鏈,人工智能都將是未來必不可少的。而隨著我們科技高度發(fā)展的同時,各類相關(guān)產(chǎn)業(yè)也如雨后春筍幫設(shè)立起來,智能風速風向采集儀以其高度智能化以及便利性,成為了民用以及軍事領(lǐng)域必不可少的技術(shù)之一。


2 系統(tǒng)整體方案設(shè)計
2.1 系統(tǒng)問題分析
我們首先考慮本系統(tǒng)架構(gòu)的問題。在研發(fā)初期,我們對別人的設(shè)計模型進行了實地研究,觀看了一些視頻,對該儀器的設(shè)計有了一些基本的理念。具體來說,我們開發(fā)本系統(tǒng)所具有的問題主要來源于三個方面:系統(tǒng)結(jié)構(gòu)的設(shè)計,硬件電路焊接以及軟件代碼的編寫。針對這些問題,我們進行了任務(wù)分配與階段性安排。首先我們對系統(tǒng)的結(jié)構(gòu)進行了剖析,認真討論完成本系統(tǒng)需要哪些方面的知識,其次,在對風速風向采集有了充分的了解與認識后,我們開始制作該儀器的硬件框架,最后,完成上兩步的設(shè)計之后,我們開始編寫代碼?傮w來說,在我們對系統(tǒng)進行分割之后,系統(tǒng)的制作難度有了一定的降低,但還是有一些問題存在,比如說模塊之間的貼合,軟硬件的聯(lián)調(diào)問題,這在我們的文章中會有相應(yīng)講述。
本系統(tǒng)開發(fā)的第一個問題是系統(tǒng)結(jié)構(gòu)的設(shè)計。我們在拿到任務(wù)的時候,由于對風速風向采集的了解不深,也沒有過相關(guān)的制作經(jīng)驗,所以在此進行了相當時間的糾結(jié)。最后,還是在班級里一位參加過競賽的同學(xué)的幫助下,解決了這個問題。我們在經(jīng)過認真剖析之后,將本系統(tǒng)劃分為了三個層次,自頂向下進行安排。首先是控制層,這里涉及到人機的交互問題,主要是控制人員與系統(tǒng)之間指令的傳輸與數(shù)據(jù)的回饋問題。由于系統(tǒng)在遇到突發(fā)狀況時,需要等待控制人員的控制指令,同時也會傳遞數(shù)據(jù)給控制人員進行分析,所以這一部分的設(shè)計至關(guān)重要,設(shè)計到我們系統(tǒng)將來的穩(wěn)定性。其次,信息采集層。系統(tǒng)在運行過程中,需要采集一些數(shù)據(jù)進行風速風向的顯示。系統(tǒng)這一層次的設(shè)計關(guān)系到風速儀各種功能的完成,對提高本設(shè)計性能有很大幫助。最后一個層次為顯示層。系統(tǒng)在完成各方面的工作后,需要對風速風向進行顯示,所以本部分主要負責信息的傳達。系統(tǒng)層次劃分如下:

        表2.1 系統(tǒng)層次劃分

系統(tǒng)層次

在體系中的劃分

功能剖析

控制層

頂層

提高系統(tǒng)穩(wěn)定性

信息采集層

中層

完善系統(tǒng)功能

顯示層

底層

顯示信息


如上表所示,我們的系統(tǒng)劃分成頂層,中層以及底層等三個層次,各層次也有其相應(yīng)的功能劃分。
在完成系統(tǒng)層次劃分之后,我們需要考慮的第二個問題是硬件電路的設(shè)計。具體的設(shè)計方案在后續(xù)章節(jié)介紹,在這里我們重點講解開發(fā)過程中所遇到的問題。在硬件制作上,由于以前沒有進行過系統(tǒng)的練習,所以對電路焊接方面缺乏完善的技能。在本系統(tǒng)中,在電路制作上的困難主要體現(xiàn)在轉(zhuǎn)壓模塊,風速風向轉(zhuǎn)換模塊,電源驅(qū)動模塊,控制模塊等。由于核心控制電路我們選擇已經(jīng)集成好的單片機,所以只需設(shè)計外圍電路即可,最后進行各個模塊的集成聯(lián)調(diào)。其中,轉(zhuǎn)壓模塊所遇到的問題在于復(fù)雜的電壓要求,單片機需要5V供電,驅(qū)動模塊需要12V供電。所以選擇一款合適的轉(zhuǎn)壓芯片勢在必行。電源驅(qū)動的問題主要在于選型。至于控制器件則相對簡單,有現(xiàn)成的模塊供我們使用。在完成了綜合設(shè)計之后,我們對硬件的需求進行了綜合分析,列出了我們所需的硬件模塊。所需器件如下表所示:

      表2.2 器件選型

器件

價格(元)

功能

單片機一塊

80

核心控制

LCD1602

10

顯示

5號電池4節(jié)

20

供電

風速檢測模塊

700

檢測風速

風向檢測模塊

600

檢測風向

如上表所示為我們選擇的器件類型,各個器件在淘寶均有銷售。最后一部分是我們的軟件功能分析。一個穩(wěn)定的系統(tǒng)離不開完善的代碼輔助。在本系統(tǒng)中,由于將系統(tǒng)架構(gòu)分為了控制層,信息采集層以及顯示層,所以代碼也相應(yīng)的分為自動控制層代碼,信息采集層代碼以及顯示層代碼。其中比較復(fù)雜的是信息采集層軟件的設(shè)計?刂颇K所需的軟件主要是分析風速風向模塊采集的數(shù)據(jù)以及控制顯示屏的顯示,我們在參考相關(guān)例程之后已經(jīng)有了深入的了解。信息采集層我們主要是對風速風向進行定時采集,得出當前場景的風速風向的信息。而顯示層則需要我們對各種數(shù)據(jù)進行顯示。在后續(xù)章節(jié)中,我們會重點進行講解

2.2 系統(tǒng)框架論證與比較
在設(shè)計前期,我們對可實現(xiàn)的方案進行了論證,基于風速風向采集儀的功能以及穩(wěn)定性,我們進行了以下兩方面的設(shè)想。
方案一,采用相關(guān)數(shù)字電路來完成本次設(shè)計。通過設(shè)計相關(guān)編碼電路來完成系統(tǒng)的控制,通過核心控制電路和周邊電路的綜合作用,可以實現(xiàn)系統(tǒng)的設(shè)計。該方案實行難度大,效率低,周期長,成本較高。
方案二,采用基于單片機的核心控制,自主設(shè)計外圍電路,包括風速風向采集電路,顯示電路,轉(zhuǎn)壓電路等周邊模塊。通過對單片機進行編程,控制這些外圍模塊一起工作。在此方案中,我們所需要的只是用軟件將這些傳感器建進行通信,不管是在實現(xiàn)難度上還是在成本上都有很大程度的降低,并且對我們的編程能力也有很大的提高。
通過上述論證,我們采用了方案二來完成本次畢業(yè)設(shè)計,整體思路是采用單片機作為我們的控制核心,通過對單片機的編程,將周邊傳感器采集的數(shù)據(jù)進行分析與計算,并在自動控制模塊的基礎(chǔ)上,完成系統(tǒng)穩(wěn)定可靠的運行。
系統(tǒng)整體框圖如下圖2.1所示:



圖2.1 系統(tǒng)框圖
由上述系統(tǒng)框圖,我們分為了三大模塊進行分工合作,在今后的敘述中,我們將對這幾個模塊進行分別敘述。

3 硬件設(shè)計
3.1 電源的選擇與設(shè)計
電源是系統(tǒng)穩(wěn)定工作的前提,由于任何非電量的控制都要轉(zhuǎn)換為電量進行測量與控制,所以我們首先對電源進行設(shè)計。在本系統(tǒng)中,需要兩種不同的電壓,主要分為單片機供電電壓(5V)與風速風向模塊電壓(12V),主要有以下兩種方案:
方案一,采用兩種電源供電。單片機及外圍電路采用5V供電,外部模塊采用12V供電,將兩種電壓完全隔離開,獨立工作。此種方法的好處是設(shè)計簡單,但是需要增加道閘負載。
方案二,采用單一電源供電。首先使用12V電壓對外部模塊供電,再有12V電壓源引入轉(zhuǎn)壓芯片進行5V轉(zhuǎn)壓,給單片機及外圍電路供電。此種方法設(shè)計較為復(fù)雜,但是可以減少系統(tǒng)的負載。
考慮到本次設(shè)計的主要目的為提高能力,增強自己的電路制作能力,也考慮到系統(tǒng)的靈敏性,我們選擇了第二種方案,對系統(tǒng)進行單一供電。并且由于本次設(shè)計可能會進行反復(fù)地測試,我們決定采購可充電電池。
如下為電壓轉(zhuǎn)化模塊:


圖3.1 轉(zhuǎn)壓模塊

在上圖中,我們對12V和5V電壓進行了轉(zhuǎn)化,使得可以對風速風向模塊和單片機分別供電。
3.2 單片機選型與設(shè)計
3.2.1 AT89S52單片機簡介
52單片機是51系列單片機的一種。該款單片機芯片具有較低的工作電壓,而性能通常比較高,單片機內(nèi)部包含8k bytes的可以重復(fù)使用的Flash(即只讀存儲器)以及256 比特的隨機存儲器(RAM)。該MCU基于先進的存儲技術(shù)和強大的計算能力。對上一代單片機進行了升級。但對傳統(tǒng)的51單片機的指令也能夠兼容。該芯片內(nèi)置了通用的8位cpu以及Flash存儲單元,因此該單片機的強大的運算能力和控制能力可以應(yīng)用在廣泛的場合中。
該單片機有40個引腳。32個外部雙向輸入/輸出(I/O)端口。同時內(nèi)含2個外中斷口。3個16位的可以通過程序編程的定時器。兩個全雙工的串行口。2個讀寫引腳。可以通過常規(guī)編程方法進行控制。但不可以在線編程。該單片機通過將常用的MCU和Flash結(jié)合在了一起,尤其通過使用可重復(fù)擦寫的Flash存儲器,不僅在功耗上還是在效率上都具有相當?shù)膶嵱眯浴?/div>
該單片機的基本組成框圖見圖3.2.1。

           

圖3.2.1 單片機組成框圖
3.2.2 AT89S52單片機引腳特性
AT89S52有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。主要功能特性:
兼容MCS51指令系統(tǒng)
· 8k可反復(fù)擦寫(>1000次)Flash ROM
· 32個雙向I/O口
· 256x8bit內(nèi)部RAM
· 3個16位可以通過編程設(shè)置的定時器。
· 時鐘頻率0-24MHz
· 2個串行中斷
· 可編程UART串行通道
· 2個外部中斷源
· 共6個中斷源
· 2個讀寫中斷口線
· 3級加密位
· 低功耗空閑和掉電模式
· 軟件設(shè)置睡眠和喚醒功能

                           

                                        圖3.2.2 單片機引腳圖
部分引腳說明:
(1)時鐘電路引腳XTAL1 和XTAL2:
XTAL2(18 腳):可以外接晶體振蕩器?梢詷(gòu)成內(nèi)部系統(tǒng)的振蕩電路,振蕩器的振蕩頻率等于系統(tǒng)的固有頻率。當需要外部時鐘提供信號時,可以從該端口輸入所需信號。在驗證該部分是否處于正常狀態(tài)時,可將示波器的輸入引腳連接該端口,在示波器上觀察系統(tǒng)的輸出信號。
XTAL1(19 腳):同上述18腳連接方式相同。系統(tǒng)的內(nèi)部時鐘振蕩器。如果使用內(nèi)部時鐘時,將該腳接地。若要使用外部時鐘,則將時鐘信號加到該引腳即可。
(2)控制信號引腳RST,ALE,PSEN 和EA:
復(fù)位引腳:復(fù)位信號輸入端,高電平有效。該引腳為備用電源引腳,可以由外部電源進行供電。在該引腳上輸入兩個時鐘周期的高電平,便完成了對MCU的復(fù)位。同時RST 端口具有另外一種功能,即當接入RST接口時,可以作為RAM 備用電源,以使系統(tǒng)在突然掉電時,在寄存器內(nèi)的數(shù)據(jù)不會丟失,在系統(tǒng)復(fù)位之后仍可以繼續(xù)運行。
ALE/PROG:地址鎖存允許信號端。51單片機在正常上電之后,該引腳對外輸出高電平,頻率是振蕩電驢振蕩頻率的1/6。MCU讀取外部存儲器。作為低8 位地址的鎖存信號。該引腳會輸出相應(yīng)的信號。
單片在在不訪問外部ROM時,該引腳則以內(nèi)部振蕩器1/6 的頻率固定輸出高電平信號,所以該引腳的輸出信號可以用來給外部電路提供工作時鐘。在驗證單片機的性能時,可以示波器的輸入端外界ALE引腳,觀察示波器是否顯示對應(yīng)信號。當輸出正常的信號時。芯片正常。
ALE 端的驅(qū)動能力較強,可以帶動多個負載。
同時這個引腳可以作為單片機的地址輸入端口。進行地址選擇時,可以在此端口進行。
PSEN:輸出使能信號。完成對相應(yīng)功能的使能。該引腳外界存儲器的使能端口,后續(xù)會有相應(yīng)原理圖展示。PSEN 端有效,即允許讀出EPROM/ROM 中的指令碼。PSEN 端同樣可驅(qū)動8 個LS 型TTL 負載。
EA/Vpp(31 腳):該引腳是單片機的程序輸入使能引腳。該引腳外接高電平時,MCU只在內(nèi)部存儲其中進行尋址,即只能執(zhí)行內(nèi)部命令。在地址選擇器的值大于內(nèi)部存儲器時。單片機會自動去外部存儲器中讀取指令。即0x0FFF是內(nèi)外存儲器的區(qū)分點。當給該引腳接地時,MCU將脂肪紋外部程序存儲器的內(nèi)容,而忽略內(nèi)部存儲器的內(nèi)容。對于無片內(nèi)ROM 的8031 或8032,需外擴EPROM,此時必須將EA 引腳接地。
(3)輸入/輸出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32 腳):P0口是一個漏極開路的8 位準雙向I/O口。該引腳的構(gòu)成方式為漏極開路模式,一共可以對8個負載進行驅(qū)動。當P0用作輸入引腳時,必須先向口鎖存器(地址80H)寫入0XFFFF,導(dǎo)致P0口引腳成為懸浮狀態(tài),成為了高阻態(tài)。該引腳作為輸入端使用時,需要配置相應(yīng)的寄存器。即先由該引腳進行寫出,再進行讀入。即具有雙向的特性。
P1口(P1.0~P1.7,1~8 腳):P1口是一個帶內(nèi)部上拉電阻的8 位準雙向I/O口。P1口每位能驅(qū)動4 個LS 型TTL 負載。當將P1端作為輸入端使用時,同樣應(yīng)該向控制端寫入控制信號,不同于P0,此時P1端自動進入上拉狀態(tài),顯示高電平。
P2口(P2.0~P2.7,21~28 腳):P2口是一個帶內(nèi)部上拉電阻的8 位準雙向I/O口。該引腳可以同時驅(qū)動四個負載。在訪問片外寄存器時,它輸出高地址。
P3口(P3.0~P3.7,10~17 腳):P3口是一個帶內(nèi)部上拉電阻的8 位準雙向I/O口。如下:
P3.0:(RXD)串行數(shù)據(jù)接收。
P3.1:(RXD)串行數(shù)據(jù)發(fā)送。
P3.2:(INT0#)外部中斷0輸入。
P3.3:(INT1#)外部中斷1輸入。
P3.4:(T0)定時/計數(shù)器0的外部計數(shù)輸入。
P3.5:(T1)定時/計數(shù)器1的外部計數(shù)輸入。
P3.6:(WR#)對外部的數(shù)據(jù)存儲器進行使能。
P3.7:(RD#)選擇片外存儲器。
3.3 顯示模塊設(shè)計
系統(tǒng)采用1602作為顯示器件,可以較為清晰地顯示我們需要的字符與數(shù)字,相比其他顯示器件,具有功耗低,成本低的特點。液晶的命令操作腳是RS、RW、EN接在單片機的P1^1、P1^2、P1^3腳。顯示屏的數(shù)據(jù)輸入端應(yīng)該分別接單片機的的P0口。在顯示特定字符時,單片機通過這些引腳對顯示內(nèi)容進行控制。具體電路圖如圖下所示:
圖3.3 顯示模塊原理圖
3.4 風速風向電路設(shè)計
3.4.1 風速風向儀簡介
風速儀用來檢測風的速度,而風向儀可以測量風的方向。兩者結(jié)合起來使用可以確定環(huán)境中風的特性。在對風的常規(guī)測量中,經(jīng)常將這兩者結(jié)合起來使用,以達到對環(huán)境中風的檢測。在風速儀模塊電路中,因為需要檢測風的速度,所以通常包括一個風杯(三杯),該風杯在受到環(huán)境中風的作用時發(fā)生旋轉(zhuǎn),帶動下級檢測電路運動,下級檢測電路根據(jù)風杯的運動即可檢測到風的速度。為了在任何角度都能檢測到風,所以經(jīng)常采用三個風杯來組成檢測模塊。而風向儀用來測量環(huán)境中風的方向,所以在檢測電路中包括一個由風向標組成的指示模塊。風向儀在受到風的作用后受力旋轉(zhuǎn),但不同于風速計的不斷旋轉(zhuǎn),風向儀會達到一個平衡狀態(tài),在平衡狀態(tài)時,風向標指示的即為風當前的方向。
風速風向儀在檢測到當前環(huán)境中的風速和風向后,將采集的數(shù)據(jù)傳遞給單片機,單片機對這些數(shù)據(jù)進行濾波處理,通常為求均值后,將這些信息顯示在顯示屏上,用戶即可得到當前環(huán)境中風的特性。通常將風向以讀數(shù)表示,而風速以等級或者m/s的形式展示。用戶在得到這些信息后,便可以據(jù)此安排自己的生產(chǎn)生活,提高自己的作業(yè)水平。
3.4.2 風速儀工作原理
本系統(tǒng)采用的風速儀是基于光電編碼器的原理工作的。光電編碼器的傳動軸與風杯連接在一起,在風的吹動下,編碼器傳動軸跟隨轉(zhuǎn)動,由此不停地產(chǎn)生出脈沖信號。外部電路檢測到脈沖信號后,根據(jù)脈沖信號產(chǎn)生的頻率,即可計算出風的速度。
在工作時,我們將光電編碼器即風速儀的輸出引腳連接至單片機的中斷引腳處,配置單片機為上升沿觸發(fā)中斷。則由于風的轉(zhuǎn)動,風速儀的引腳會源源不斷地產(chǎn)生脈沖信號。這些脈沖信號傳遞給單片機后,單片機進入中斷。由于風的速度不同,導(dǎo)致編碼器脈沖信號的頻率也不盡相同,所以單片機內(nèi)部根據(jù)這些信號的頻率,即可得到風速儀的轉(zhuǎn)速。按照動量守恒原理,風的速度便可以得到。
3.4.3 風向儀工作原理
風速儀在工作工程中,三個風杯在風的作用下不斷旋轉(zhuǎn),由此得到風的速度。而風向儀的工作原理與此不同。由于我們需要采集環(huán)境中風的方向,當環(huán)境中風的方向比較穩(wěn)定時,風向儀的風標不會有大幅度的波動。
風向儀的核心元器件同樣采用光電編碼器。但是與風速儀不同的是,風速儀根據(jù)光電編碼器脈沖產(chǎn)生的頻率工作,而風向儀根據(jù)編碼器轉(zhuǎn)動方向的不同而工作。由于編碼器在進行正轉(zhuǎn)或者反轉(zhuǎn)時,產(chǎn)生脈沖信號的電平不同。在正轉(zhuǎn)時,編碼器輸出高電平,而反轉(zhuǎn)時,輸出低電平。由此根據(jù)編碼器輸出電平的正負,我們便可以得知風向標正轉(zhuǎn)或者反轉(zhuǎn)過的角度,經(jīng)過初始定位,便得到了風的方向。
3.4.4 光電編碼器原理圖
光電編碼器原理圖如下所示:

                    

                             圖3.4.4 光電編碼器原理圖

如上圖所示為系統(tǒng)采用的光電編碼器原理圖。傳感器通過外部轉(zhuǎn)子的帶動,產(chǎn)生不同頻率,不同電平的脈沖。單片機根據(jù)脈沖頻率得到轉(zhuǎn)速,根據(jù)電平高低得到轉(zhuǎn)角。便可以精確地測量風的轉(zhuǎn)速和轉(zhuǎn)向。


4 軟件設(shè)計
4.1 風向檢測軟件設(shè)計
在進行風向檢測時,我們設(shè)計系統(tǒng)中斷來對風向進行檢測。將風向儀的A相引腳接至單片機的INT0中斷引腳,而將B相接至普通輸入引腳。配置INT0為下降沿中斷,即外部引腳產(chǎn)生下降沿時觸發(fā)中斷,程序進入中斷服務(wù)函數(shù)進行處理。風向儀在正常工作時,A相產(chǎn)生中斷,系統(tǒng)進入中斷程序后判斷B引腳的電平。若該引腳電平為低,則表示風向標反轉(zhuǎn),將其計數(shù)減一。而如果該引腳為高電平,則代表風向標正轉(zhuǎn),計數(shù)值加一。
光電編碼器具有自己的轉(zhuǎn)值,即旋轉(zhuǎn)一周產(chǎn)生的脈沖個數(shù)。本系統(tǒng)采用的風向儀的轉(zhuǎn)數(shù)為500.即風向標每轉(zhuǎn)過一圈,產(chǎn)生五百個脈沖。所以風向標的角度為N/500*360度。在程序中設(shè)計計數(shù)值N的絕對值小于500,當大于500時,減去500。而當小于-500時,加上500即可。
該部分的軟件流程圖如下:


                              圖4.1 風向檢測流程圖

4.2 風速檢測軟件設(shè)計
在進行風速的測量時,我們需要采集風速儀在一定時間內(nèi)產(chǎn)生脈沖的個數(shù)。設(shè)計定時器T0作為定時器,定時時間為1s,即檢測在1s內(nèi)產(chǎn)生脈沖的個數(shù),我們即可得到風速儀的轉(zhuǎn)速。設(shè)計N1為脈沖計數(shù)個數(shù),連接至中斷引腳INT1。風速儀在進行工作時,不斷有脈沖產(chǎn)生。當產(chǎn)生脈沖時,我們在中斷程序中對計數(shù)值N進行加1操作。每當1s的定時到達時,對脈沖計數(shù)個數(shù)進行計算。由此我們得到了以脈沖個數(shù)表達的轉(zhuǎn)速。即v=N1。每秒轉(zhuǎn)過的度數(shù)為:N1/500*360。乘以風速儀的半徑,即為風的速度。
風速檢測部分流程圖如下:





圖4.2 風速檢測流程圖
由上圖所示,我們剛開始先初始化定時器T0,以及中斷引腳INT1。
初始化計數(shù)值N1為0.每當有脈沖產(chǎn)生時,計數(shù)值加1。
定時器的定時周期為1s。每當1s定時到達時,計算當前風速,并用顯示屏進行顯示。
4.3 主程序設(shè)計
系統(tǒng)的軟件主要包括風速檢測,風向檢測,與數(shù)值顯示。在上文中,我們討論了風速和風向的檢測部分的軟件流程。
顯示部分僅僅是對各個數(shù)值進行顯示,比較簡單,故在此不再贅述。
系統(tǒng)在工作時,處于等待狀態(tài),等待風向儀的中斷或者風速儀的中斷的脈沖到來,系統(tǒng)轉(zhuǎn)去執(zhí)行相應(yīng)的處理函數(shù)。
在完成對各部分的處理之后,驅(qū)動顯示屏顯示對應(yīng)的風速和風向。
整體流程采用順序流程,原理也比較簡單。整體流程圖如下所示:





















         圖4.3 整體流程圖
如上所示系統(tǒng)的整體流程圖,在程序中,主程序一直等待外部脈沖的到來。在有脈沖產(chǎn)生后,系統(tǒng)判斷脈沖的來源,并轉(zhuǎn)而去執(zhí)行各自的處理程序。在完成處理后,驅(qū)動顯示屏進行顯示。

5 系統(tǒng)測試與評價
5.1 測試方法
所需儀器:測試儀器主要包括數(shù)字萬用表,秒表,量角器,示波器,USB轉(zhuǎn)TTL設(shè)備。
所需軟件:keil編譯軟件,串口調(diào)試軟件,protues仿真軟件。
調(diào)試前準備工作:
數(shù)字萬用表測量電壓源(5V和12V)輸出電壓是否為標準電壓,測量標準電阻是否標稱(本文用到的電阻為1k,5k,10k和100k)。示波器檢查風速儀和風向儀輸出波形是否準確。用量角器檢測風向儀的精準度是否足夠。
測試步驟:
給各模塊上電,用數(shù)字萬用表檢查各個模塊是否處于正常工作電壓。其中單片機,顯示屏模塊等標準電壓應(yīng)處于4~6V,檢查電壓源電壓,防止發(fā)生泄露,電壓源電壓位于12V左右,誤差不超過1V。
各模塊檢查無誤,對各模塊組裝供電。用萬用表檢查各模塊電壓是否標準,LED指示是否正確。
打開單片機開關(guān),讓系統(tǒng)處于等待狀態(tài)。首先對風速儀進行檢測。
打開電源開關(guān),模擬外界環(huán)境產(chǎn)生風源,檢測風速儀的輸出,測量10次,每次測試1分鐘。
進而對風向儀進行檢測。
讓風從不同角度吹動風向標,觀察顯示屏顯示的角度是否精確。測量5次,每次30s。
5.2 測試結(jié)果與分析
表5-1 風速儀檢測狀況(10次)

次數(shù)

理論(m/s)

實際(m/s)

1

5

4.5

2

10

9

3

15

14

4

20

19

5

15

15

6

13

13

7

12

12

8

10

10

9

5

4.7

   10

3

3


         表5-2 風向儀檢測


理論

實際

第一次

10

11

第二次

50

49

第三次

100

103

第四次

150

145

第五次

200

202



誤差分析:我們進行了兩類的系統(tǒng)測試:驗證系統(tǒng)風速儀狀態(tài)的正確性和風向儀檢測精準度。在速度檢測準確性方面,我們可以達到百分之九十以上的準確性,這是由兩方面因素決定的:代碼健壯性以及編碼器模塊的穩(wěn)定性。由于我們在代碼中只是測試指令的數(shù)值,并沒有進行大量的運算,所以其精準度會很高。
在風向檢測方面,其誤差出現(xiàn)的原因主要包括:編碼器精度不夠,風向波動較大,以及單片機定時器的誤差。即使存在這些影響因素,我們的精準度也達到了百分之九十以上,已經(jīng)足夠面對日常使用了。


參考文獻
[1] 何立民. 單片機應(yīng)用系統(tǒng)設(shè)計. 北京:航天航空大學(xué)出版社,2002.22-33
[2] 李廣弟. 單片機基礎(chǔ).北京:北京航空航天大學(xué)出版社,2001.1-3
[3] 何希才. 新型實用電子電路400例. 電子工業(yè)出版社,2000.7-9
[4] 趙負圖. 傳感器集成電路手冊. 第一版,化學(xué)工業(yè)出版社,2004.12-14
[5] 陳伯時. 電力拖動自動控制系統(tǒng). 第二版,北京:機械工業(yè)出版社,2000.15-19
[6] 張毅剛,彭喜元. 新編 MCS-51 單片機應(yīng)用設(shè)計. 第一版,哈爾濱工業(yè)大學(xué)出版社,2003.1-9
[7] 邵貝貝. 單片機嵌入式應(yīng)用的在線開發(fā)方法, 清華大學(xué)出版社,2004.12-19
[8] 楊寧,胡學(xué)軍. 單片機與控制技術(shù),北京航空航天大學(xué)出版社,2005.44-46
[9] 趙亮,侯國銳.單片機C語言編程與實例,人民郵電出版社,2003.43-48
[10] 黃開勝,金華民,蔣狄南. 韓國智能模型車技術(shù)方案分析,2006.33-39
[11] 胡漢才. 單片機原理及系統(tǒng)設(shè)計.北京:清華大學(xué)出版社,2003.13-15
[12] 李朝青. 單片機原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,2003.22-25
[13]《8051 單片機課程設(shè)計實訓(xùn)教材》陳明熒編著,北京:清華大學(xué)大學(xué)社,2005.16-18
[14]《單片機實訓(xùn)教程》張迎軍,貢雪梅,北京:北京大學(xué)出版社,2005.34-35
[15]《單片機應(yīng)用實訓(xùn)教程》袁啟昌,王宏宇,北京:科學(xué)出版社,2006 .46-49
[16] 胡漢才. 單片機原理及系統(tǒng)設(shè)計.北京:清華大學(xué)出版社,2003.55-56
[17] 李朝青. 單片機原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,2003.65-66
[18]黃家升. 基于IAP的單片機軟件遠程升級[J]. 艦船電子對抗, 2007,(03) 41-44 .
[19]楊美仙. 單片機的發(fā)展及其應(yīng)用[J]. 科技信息(學(xué)術(shù)研究), 2007,(35) 26-28.
[20]陳壽元. 單片機多機通信網(wǎng)絡(luò)改進及數(shù)據(jù)通信容錯技術(shù)[J]. 山東師范大學(xué)學(xué)報(自然科學(xué)版), 2006,(02) . 23-28
[21]栗欣,周東輝,孫曉苗,李立. 單片機程序遠程升級的設(shè)計[J]. 微計算機信息, 2006,(32) 33-35.
             致 謝
在我完成本科畢業(yè)設(shè)計的幾個月時間里,我的指導(dǎo)老師呂承啟在學(xué)習上給予了悉心的指導(dǎo)和極大的幫助,在生活上給予了無微不至的關(guān)懷與照顧。呂承啟老師深厚的理論功底、嚴謹?shù)闹螌W(xué)態(tài)度、科學(xué)的思維方式,務(wù)實的工作作風令我收益非淺。值此論文完成之際,向呂承啟老師致以最崇高的敬意和衷心的感謝。此外,同時還要感謝同實驗室和同班的各位同學(xué)給我的無私的幫助,是他們使我在本科階段的學(xué)習和生活充滿樂趣,受益良多,在這里向他們表示由衷的感謝。最后要特別感謝我的父母,在我多年的求學(xué)生涯中,不斷的支持和鼓勵我,承受了各種的壓力,付出了最真摯的愛。謹以此文獻給所有關(guān)心我的老師、同學(xué)、朋友。
最后,向評閱本文的專家、教授致敬!


附錄


單片機源程序如下:
  1. #include<reg52.h>
  2. #define  uchar  unsigned  char
  3. #define  uint   unsigned  int    //宏定義
  4. sbit lcdrs=              P1^0;
  5. sbit lcden=P1^1;            
  6. #define Da P2     //液晶1602數(shù)據(jù)口
  7. uint temp;    //保存檢測到的電平數(shù)據(jù)以便比較      
  8. uint count;   //用于計數(shù)
  9. uint aa,bb;                //用于計數(shù)
  10. uint speed;   //用來計算轉(zhuǎn)速
  11. void delay(uchar z);
  12. void time_init();                                          //定時器的初始化
  13. void write_com(uchar com);              //液晶寫指令
  14. void write_data(uchar date); //液晶寫數(shù)據(jù)
  15. void lcd_init();                                          //液晶初始化
  16. void display(uint rate);              //顯赫速度
  17. void int0_init();                                          //定時器0初始化
  18. void main()
  19. {
  20.   time_init();                                          //定時器的初始化
  21.   lcd_init();                                          //液晶初始化
  22.   int0_init();                                          //外部中斷初始化
  23.    while(1)
  24.    {
  25.   }
  26. }
  27. void time_init()
  28. {
  29.   TMOD=0x11;              //兩個定時器都設(shè)定為工作方式1   十六位定時計數(shù)器
  30.   EA=1;                            //開啟總中斷

  31.   TH0=(65536-50000)/256;
  32.   TL0=(65536-50000)%256;   //定時初值
  33.   ET0=1;
  34.   TR0=1;       //開中斷

  35. }
  36. void int0_init()   //加個防偽
  37. {
  38.    EX0=1;  //外部中斷源可以申請中斷
  39.    IT0=1;  //外部中斷源下降沿觸發(fā)
  40. }
  41. void  timer0()   interrupt 1 using 0
  42. {
  43.   TH0=(65536-50000)/256;
  44.   TL0=(65536-50000)%256;              //裝載初值  50ms
  45. aa++;
  46.   if(aa==20)                                               //1s 時間內(nèi)統(tǒng)計脈沖個數(shù)
  47.    {
  48.       aa=0;
  49.                 temp=count*10/16;                  //計算風速,每米轉(zhuǎn)多少圈,每圈設(shè)定多少個脈沖進行計算
  50.                          //(若設(shè)定風速為1m/s時,葉片每秒轉(zhuǎn)2圈,每圈給傳感器8個脈沖,屏幕顯示的值為count/16)
  51.                 count=0;                                                                         //重新開始計數(shù)脈沖數(shù)
  52.                 display(temp);                                          //把計算得的結(jié)果顯示出來
  53.    }
  54.   }
  55. /*******外部中斷*******************/
  56. void  service_int0()                interrupt                 0
  57. {
  58.                 count++;                 //來一個下降沿沿就計一個脈沖數(shù)
  59. }
  60. /*******顯示函數(shù)***********/
  61. void display(uint rate)
  62. {
  63.    uchar wan,qian, bai,shi,ge;
  64.    wan=rate/10000;   //萬轉(zhuǎn)
  65.    qian=rate/1000%10; //
  66.    bai=rate/100%10;
  67.    shi=rate/10%10;
  68.    ge=rate%10;
  69.    write_com(0x80);
  70.    write_data('0'+wan);
  71.    write_data('0'+qian);
  72.    write_data('0'+bai);
  73.    write_data('0'+shi);
  74.    write_data('.');
  75.    write_data('0'+ge);
  76.    write_data('m');  //單位
  77.    write_data('/');
  78.    write_data('s');
  79. }
  80. /******延時函數(shù)********/
  81. void delay(uint z)
  82. {
  83.    uint x,y;
  84.    for(x=z;x>0;x--)
  85.       for(y=110;y>0;y--) ;
  86. }
  87. /************寫指令************/
  88. void write_com(uchar com)
  89. {
  90.               lcdrs=0;
  91.               Da=com;
  92.               delay(1);
  93.               lcden=1;
  94.               delay(1);
  95.               lcden=0;
  96. }
  97. /************寫數(shù)據(jù)**********/
  98. void write_data(uchar date)
  99. {
  100.               lcdrs=1;
  101. ……………………

  102. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

完整論文下載(word格式 可編輯):
03-(設(shè)計論文-自動化-2013211320-劉江)風速風向數(shù)據(jù)采集實驗裝置的設(shè)計(呂承啟老師).doc (510.92 KB, 下載次數(shù): 124)




評分

參與人數(shù) 1黑幣 +5 收起 理由
拾浪. + 5 很給力!

查看全部評分

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

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:327163 發(fā)表于 2018-5-10 21:20 | 只看該作者
為什么沒有總圖啊
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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