版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 成 績 評 定 表</b></p><p><b> 課程設(shè)計任務(wù)書</b></p><p><b> 摘 要</b></p><p> 本課程設(shè)計制作了一個氣壓/溫度液晶顯示電路。利用Arduino開發(fā)板,外接BMP180芯片和1602LCD液晶顯示屏,設(shè)計Ard
2、uino代碼,將代碼燒到Arduino開發(fā)板中,連接硬件引腳,由BMP180芯片測量出的氣壓和溫度值便可以通過LCD液晶顯示屏顯示出來。另外,在程序中設(shè)定對當(dāng)前測量的溫度值的監(jiān)測,當(dāng)溫度超過一定數(shù)值時,蜂鳴器開始演奏音樂,紅色LED發(fā)光二極管被點(diǎn)亮,提醒現(xiàn)在的溫度超過了設(shè)定的值。</p><p> 關(guān)鍵詞:氣壓;溫度;液晶顯示屏;Arduino開發(fā)板 </p><p><b>
3、 目 錄</b></p><p> 1 課程設(shè)計背景與意義1</p><p> 2 總體方案的設(shè)計1</p><p> 2.1 設(shè)計原理1</p><p> 2.2 設(shè)計方案2</p><p> 3 方案詳細(xì)實(shí)現(xiàn)過程2</p><p> 3.1 硬
4、件器件的選擇2</p><p> 3.1.1 Arduino開發(fā)板2</p><p> 3.1.2 LCD液晶顯示屏3</p><p> 3.1.3 氣壓/溫度傳感器3</p><p> 3.1.4 蜂鳴器與LED發(fā)光二極管4</p><p> 3.2 引腳選擇4</p>
5、<p> 3.3 Arduino代碼設(shè)計5</p><p> 3.4 理論布線10</p><p> 3.5 實(shí)際布線11</p><p> 4 運(yùn)行結(jié)果分析11</p><p><b> 5 結(jié)論12</b></p><p> 6 參考文獻(xiàn)13<
6、;/p><p> 1 課程設(shè)計背景與意義</p><p> 1. 地球上面的空氣層密度不是相等的,大氣壓強(qiáng)不但隨高度變化,在同一地點(diǎn)也不是固定不變的。氣壓傳感器用于測量氣體的絕對壓強(qiáng)。主要適用于與氣體壓強(qiáng)相關(guān)的物理實(shí)驗,也可以在生物和化學(xué)實(shí)驗中測量干燥、無腐蝕性的氣體壓強(qiáng)。</p><p> 2. BMP180氣壓傳感器,可同時測量出當(dāng)前環(huán)境下的氣壓和溫度值。&l
7、t;/p><p> 3. 測量結(jié)果通過LCD液晶顯示屏顯示出來,并且,當(dāng)測量的溫度超過一定數(shù)值時,會使蜂鳴器和LED指示燈報警。</p><p><b> 2 總體方案的設(shè)計</b></p><p><b> 2.1 設(shè)計原理</b></p><p> ?。?)設(shè)計原理方框圖如圖3.1所示:<
8、;/p><p> 圖3.1 方案設(shè)計原理方框圖</p><p><b> ?。?)具體分析</b></p><p> 氣壓/溫度液晶顯示電路的功能是先通過氣壓傳感器測量出當(dāng)前環(huán)境下的氣壓和溫度值,然后通過LCD液晶顯示屏顯示出來。同時,判斷當(dāng)前的溫度是否超過一定溫度值,當(dāng)當(dāng)前溫度超過一定數(shù)值是,蜂鳴器開始演奏音樂,紅色LED指示燈亮起。<
9、/p><p> 本氣壓/溫度液晶顯示電路每10秒鐘更新一次測量結(jié)果。</p><p><b> 2.2 設(shè)計方案</b></p><p> 首先,選擇一款A(yù)rduino開發(fā)板,根據(jù)需求還需要的器件有:氣壓傳感器、LCD液晶顯示屏、蜂鳴器、紅色LED發(fā)光二極管。然后,根據(jù)功能需求選擇各硬件的引腳,根據(jù)方案設(shè)計原理方框圖進(jìn)行Arduino代碼設(shè)計
10、,將代碼燒到Arduino開發(fā)板后,根據(jù)選擇好的引腳進(jìn)行布線連接。</p><p> 3 方案詳細(xì)實(shí)現(xiàn)過程</p><p> 3.1 硬件器件的選擇</p><p> 3.1.1 Arduino開發(fā)板</p><p> Arduino是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的Arduino板)和軟件(Arduin
11、o IDE)。硬件部分是可以用來做電路連接和Arduino電路板; Arduino IDE是計算機(jī)中的程序開發(fā)環(huán)境。</p><p> 本課程設(shè)計使用的是DCcduino uno開發(fā)板,如圖3.2所示。</p><p> 圖3.2 DCcduino uno開發(fā)板</p><p> 3.1.2 LCD液晶顯示屏</p><p> 本課
12、程設(shè)計使用的液晶屏是5V LCD1602藍(lán)屏液晶屏幕。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶模塊。它由若干個5X7或者5X11等點(diǎn)陣字符位組成,每個點(diǎn)陣字符位都可以顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。LCD1602藍(lán)屏液晶屏幕如圖3.3所示。
13、</p><p> 圖3.3 LCD1602藍(lán)屏液晶屏幕</p><p> 3.1.3 氣壓/溫度傳感器</p><p> 氣壓/溫度傳感器選擇的是BMP180芯片。BMP180是一款高精度、小體積、超低能耗的壓力傳感器,可以應(yīng)用在移動設(shè)備中。它的性能卓越,絕對精度最低可以達(dá)到0.03hPa,并且耗電極低,只有3μA。BMP180采用強(qiáng)大的8-pin陶瓷無引
14、線芯片承載(LCC)超薄封裝,可以通過I2C總線直接與各種微處理器相連。BMP180芯片如圖3.4所示。</p><p> 圖3.4 BMP180芯片 圖3.5 無源蜂鳴器和紅色LED發(fā)光二極管</p><p> 3.1.4 蜂鳴器與LED發(fā)光二極管</p><p> 氣壓/溫度液晶顯示電路還需要一個蜂鳴器和一個LED發(fā)光二極管。蜂
15、鳴器選擇5V無源蜂鳴器,發(fā)光二極管用LED紅色發(fā)光二極管。如圖3.5所示。</p><p><b> 3.2 引腳選擇</b></p><p> ?。?)DCcduino uno開發(fā)板</p><p> 開發(fā)板的引腳D2、D3、D4、D5用來與LCD液晶顯示屏進(jìn)行數(shù)據(jù)傳輸,D11做LCD液晶顯示屏的使能信號輸入,D12做LCD液晶顯示屏的輸
16、入指令/數(shù)據(jù)端口。</p><p> ?。?)LCD1602藍(lán)屏液晶屏幕</p><p> 表3.1 LCD1602液晶顯示屏的引腳定義</p><p> ?。?)BMP180芯片</p><p> BMP180的SDA、SCL端分別與DCcduino uno開發(fā)板的A4、A5端連接,同時,BMP180還要連接DCcduino uno開
17、發(fā)板的+5V電源和接地線。</p><p> ?。?)無源蜂鳴器與LED紅色發(fā)光二極管</p><p> 無源蜂鳴器與DCcduino uno開發(fā)板D9端連接,LED紅色發(fā)光二極管連接的是DCcduino uno開發(fā)板的D7端。</p><p> 3.3 Arduino代碼設(shè)計</p><p> Arduino代碼如下:</p&g
18、t;<p> #define NOTE_D0 -1</p><p> #define NOTE_D1 294</p><p> #define NOTE_D2 330</p><p> #define NOTE_D3 350</p><p> #define NOTE_D4 393</p><p&g
19、t; #define NOTE_D5 441</p><p> #define NOTE_D6 495</p><p> #define NOTE_D7 556</p><p> #define NOTE_DL1 147</p><p> #define NOTE_DL2 165</p><p> #def
20、ine NOTE_DL3 175</p><p> #define NOTE_DL4 196</p><p> #define NOTE_DL5 221</p><p> #define NOTE_DL6 248</p><p> #define NOTE_DL7 278</p><p> #define N
21、OTE_DH1 589</p><p> #define NOTE_DH2 661</p><p> #define NOTE_DH3 700</p><p> #define NOTE_DH4 786</p><p> #define NOTE_DH5 882</p><p> #define NOTE_D
22、H6 990</p><p> #define NOTE_DH7 1112</p><p> //以上部分是定義是把每個音符和頻率值對應(yīng)起來,后面可以隨意編寫D調(diào)的各種歌,這里用NOTE_D+數(shù)字表示音符,NOTE_DH+數(shù)字表示上面有點(diǎn)的那種音符,NOTE_DL+數(shù)字表示下面有點(diǎn)的那種音符。</p><p> #define WHOLE 1</p>
23、;<p> #define HALF 0.5</p><p> #define QUARTER 0.25</p><p> #define EIGHTH 0.25</p><p> #define SIXTEENTH 0.625</p><p> //這部分是用英文對應(yīng)了拍子</p><p>
24、 int tune[] = </p><p><b> {</b></p><p> NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0,</p><p> NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6,NOTE_D0,NOTE_D6,</p><p&
25、gt; NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0,NOTE_D6,</p><p> NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6,NOTE_D0,</p><p> NOTE_D1,NOTE_D1,NOTE_D3,</p><p> NOTE_D1,NOTE_D1,NOTE_D3,
26、NOTE_D0,</p><p> NOTE_D6,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,</p><p> NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0,</p><p> NOTE_DH1,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,</p><p> NOTE_D5
27、,NOTE_D1,NOTE_D2,NOTE_D0,</p><p> NOTE_D7,NOTE_D7,NOTE_D5,NOTE_D3,</p><p><b> NOTE_D5,</b></p><p> NOTE_DH1,NOTE_D0,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6,NO
28、TE_D0,NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0,</p><p> NOTE_DH1,NOTE_D0,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6,NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D2,NOTE_D0,</p><p> NOTE_D3,NOTE_D3,NOTE_D1,NOTE_DL
29、6,</p><p><b> NOTE_D1,</b></p><p> NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6,</p><p> NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6,</p><p> NOTE_DH1,NOTE_D0,NOTE_D7,NOTE_D5,&l
30、t;/p><p><b> NOTE_D6,</b></p><p><b> };</b></p><p> //這部分就是整首曲子的音符部分,用了一個序列定義為tune ,整數(shù)</p><p> float duration[]=</p><p><b>
31、 {</b></p><p> 1,1,0.5,0.5,1,</p><p> 0.5,0.5,0.5,0.5,1,0.5,0.5,</p><p> 0.5,1,0.5,1,0.5,0.5,</p><p> 0.5,0.5,0.5,0.5,1,1,</p><p><b> 1,1,
32、1+1,</b></p><p> 0.5,1,1+0.5,1,</p><p> 1,1,0.5,0.5,1,</p><p> 0.5,1,1+0.5,1,</p><p> 0.5,0.5,0.5,0.5,1+1,</p><p> 0.5,1,1+0.5,1,</p><
33、;p> 1+1,0.5,0.5,1,</p><p><b> 1+1+1+1,</b></p><p> 0.5,0.5,0.5+0.25,0.25,0.5+0.25,0.25,0.5+0.25,0.25,</p><p> 0.5,1,0.5,1,1,</p><p> 0.5,0.5,0.5+0.2
34、5,0.25,0.5+0.25,0.25,0.5+0.25,0.25,</p><p> 0.5,1,0.5,1,1,</p><p> 1+1,0.5,0.5,1,</p><p><b> 1+1+1+1,</b></p><p> 0.5,1,0.5,1+1,</p><p> 0
35、.5,1,0.5,1+1,</p><p> 1+1,0.5,0.5,1,</p><p><b> 1+1+1+1</b></p><p><b> };</b></p><p> //這部分是整首曲子的接拍部分,也定義個序列duration,浮點(diǎn)(數(shù)組的個數(shù)和前面音符的個數(shù)是一樣的,一一
36、對應(yīng))</p><p> int length; //這里定義一個變量,后面用來表示共有多少個音符</p><p> int tonePin=9; //蜂鳴器的pin</p><p> int ledPin = 7; </p><p> /*======通用I2C驅(qū)動庫調(diào)用======*/</p><p&g
37、t; #include <Wire.h></p><p> /*========BMP085氣壓計庫調(diào)用=====*/</p><p> #include <Adafruit_BMP085.h></p><p> Adafruit_BMP085 bmp;</p><p> /*==========LCD庫調(diào)用
38、 =======*/</p><p> #include <LiquidCrystal.h></p><p> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //定義傳輸IO口, </p><p> void setup() </p><p><b> {</b>&
39、lt;/p><p> lcd.begin(16, 2); // 定義顯示屏類型,目前定義為1602 每行16個字符共2行</p><p> bmp.begin(); //初始化氣壓計</p><p> pinMode(ledPin, OUTPUT); //使ledPin為輸出模式</p><p> pinMode(tonePin
40、,OUTPUT); //設(shè)置蜂鳴器的pin為輸出模式</p><p> length = sizeof(tune)/sizeof(tune[0]);</p><p> //這里用了一個sizeof函數(shù),可以查出tone序列里有多少個音符</p><p><b> }</b></p><p> void loop
41、() </p><p><b> {</b></p><p> lcd.clear(); //LCD清空屏幕</p><p> /*=====數(shù)據(jù)采集=====*/</p><p> float temp = bmp.readTemperature(); //讀取溫度數(shù)據(jù) (BMP085)</p&
42、gt;<p> long pa = bmp.readPressure(); //讀取氣壓數(shù)據(jù) (BMP085)</p><p> float hpa = pa /100.0 ; //將Pa換算成hPa</p><p> /*=====顯示內(nèi)容=====*/ </p><p> lcd.p
43、rint("Atm:"); </p><p> lcd.print(hpa);</p><p> lcd.print("hPa"); //顯示第一行內(nèi)容,當(dāng)前氣壓值</p><p> lcd.setCursor(0, 1); //換行到第二行開始位置</p><p>
44、 lcd.print("TEMP:"); //顯示第二行內(nèi)容,當(dāng)前溫度值</p><p> lcd.print(temp,1); //保留溫度的1位有效小數(shù)</p><p> lcd.print("C");</p><p> if(temp>10) //判斷當(dāng)前溫度是否滿足一定條件<
45、;/p><p><b> {</b></p><p> for(int x=0;x<length;x++)//循環(huán)音符的次數(shù)</p><p><b> { </b></p><p> digitalWrite(ledPin, HIGH); //點(diǎn)亮LED燈</p><
46、p> tone(tonePin,tune[x]);//此函數(shù)依次播放tune序列里的數(shù)組,即每個音符</p><p> delay(400*duration[x]);//每個音符持續(xù)的時間,即節(jié)拍duration,400是調(diào)整時間的越//大,曲子速度越慢,越小曲子速度越快 </p><p> digitalWrite(ledPin, LOW); //熄滅LED燈</p
47、><p> noTone(tonePin);//停止當(dāng)前音符,進(jìn)入下一音符</p><p><b> }</b></p><p><b> }</b></p><p> delay(10000); //控制屏幕刷新速度,每10秒更新一次</p><p><
48、b> }</b></p><p> 程序分別對BMP180、1602LCD液晶顯示屏、無源蜂鳴器和LED發(fā)光二極管的引腳進(jìn)行了定義。程序執(zhí)行時首先通過BMP180讀取當(dāng)前氣壓和溫度值,然后判斷當(dāng)前溫度是否大于10度,若為真,則開始讓蜂鳴器演奏一首音樂,并且,紅色LED發(fā)光二極管被點(diǎn)亮;同時,1602LCD液晶顯示屏顯示當(dāng)前的氣壓和溫度值。最后,液晶屏幕每10秒更新一次。</p>
49、<p><b> 3.4 理論布線</b></p><p> 根據(jù)前面對各硬件引腳的選擇,氣壓/溫度液晶顯示電路的理論布線圖如圖3.6所示:</p><p> 圖3.6 理論布線圖</p><p><b> 3.5 實(shí)際布線</b></p><p> 根據(jù)理論布線圖,實(shí)際連線后
50、,結(jié)果如圖3.7所示:</p><p> 圖3.7 實(shí)際布線圖</p><p><b> 4 運(yùn)行結(jié)果分析</b></p><p> 在室內(nèi)運(yùn)行后,LCD液晶顯示屏的顯示結(jié)果如圖3.8所示:</p><p> 圖3.8 LCD液晶顯示屏的顯示結(jié)果</p><p> LCD液晶顯示屏第一
51、行顯示當(dāng)前氣壓值,第二行顯示當(dāng)前溫度值。由于當(dāng)前溫度為28.7度,大于程序中的設(shè)定值10度,于是,蜂鳴器演奏音樂,同時,紅色LED發(fā)光二極管點(diǎn)亮。</p><p> 當(dāng)把氣壓/溫度液晶顯示器拿到室外后,由于室外氣溫較低,LCD液晶顯示屏第一行的氣壓值并無大的變化,但第二行的溫度值低于了程序中的設(shè)定值10度,此時,蜂鳴器不響,紅色LED發(fā)光二極管也不被點(diǎn)亮。</p><p><b&g
52、t; 5 結(jié)論</b></p><p> 本課程設(shè)計完成了氣壓/溫度液晶顯示電路的設(shè)計與實(shí)現(xiàn)。通過運(yùn)行調(diào)試,此氣壓/溫度液晶顯示器能顯示出當(dāng)前的氣壓和溫度值,并且,當(dāng)溫度超過一定值后,蜂鳴器演奏音樂,紅色LED發(fā)光二極管被點(diǎn)亮。</p><p> 通過本次課程設(shè)計,我對Arduino硬件開發(fā)板有了更多的理解,只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,
53、連接相應(yīng)外部硬件,便可以實(shí)現(xiàn)各種各樣的功能。</p><p> 在利用BMP180獲取氣壓和溫度參數(shù)時,由于BMP180的驅(qū)動庫并不是arduino IDE內(nèi)置的,需要先下載驅(qū)動,在下載驅(qū)動庫的過程中遇到了一些困難,后來發(fā)現(xiàn)BMP180可以與BMP085公用一個驅(qū)動庫,將下載庫文件解壓縮釋放到< Arduino主目錄>/libraries/下,重新啟動Arduino IDE即可正常調(diào)用此庫,最終成功
54、讀取了數(shù)據(jù)。</p><p> 另外,LCD液晶顯示屏還可以顯示更多的內(nèi)容。例如,電子時鐘,或者通過其他外部傳感器獲得更多的參數(shù),在程序中經(jīng)過運(yùn)算后顯示出來,實(shí)現(xiàn)更加豐富的功能。我還有很多的知識需要學(xué)習(xí)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] Massimo Banzi. 愛上Arduino.第二版.北京:
55、人民郵電出版社,2012:254-301</p><p> [2] 陳呂洲. Arduino程序設(shè)計基礎(chǔ).第一版.北京: 北京航空航天大學(xué)出版,2014:50-95</p><p> [3] Gordon McComb. Arduino機(jī)器人制作指南.第一版.北京:科學(xué)出版社,2014:48-79</p><p> [4] 普德姆. Arduino C語言編程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 液晶顯示驅(qū)動電路的設(shè)計與實(shí)現(xiàn)(4課時).
- 課程設(shè)計----液晶顯示設(shè)計與實(shí)現(xiàn)
- 液晶顯示驅(qū)動電路的研制.pdf
- 液晶顯示驅(qū)動控制電路的設(shè)計與研究.pdf
- 液晶顯示
- 畢業(yè)論文-液晶顯示模塊及其應(yīng)用電路
- 彩色tft液晶顯示控制電路設(shè)計及其asic實(shí)現(xiàn)
- 液晶顯示漢字畢業(yè)論文
- 液晶顯示85422
- 鍵盤掃描與液晶顯示
- 1602液晶顯示仿真設(shè)計
- 1602液晶顯示仿真設(shè)計
- 液晶顯示原理
- 手機(jī)用TFT彩色液晶顯示驅(qū)動電路優(yōu)化設(shè)計.pdf
- 液晶顯示器vga模擬輸入接口電路
- 液晶顯示課程設(shè)計報告
- 液晶顯示系統(tǒng)時序控制器設(shè)計與實(shí)現(xiàn).pdf
- 液晶顯示資料3
- 網(wǎng)絡(luò)液晶顯示終端的硬件實(shí)現(xiàn).pdf
- 液晶顯示器
評論
0/150
提交評論