freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于avr單片機和nrf905無線環(huán)境監(jiān)測系統(tǒng)設(shè)計(參考版)

2025-07-01 10:10本頁面
  

【正文】 最后衷心地感謝在百忙之中評閱論文和參加答辯的各位老師。感謝我的父母家人,他們殷切的希望和默默的支持是我學(xué)業(yè)得以順利完成的動力。在此謹向高老師表示衷心的感謝和誠摯的敬意。致謝本論文是在我的導(dǎo)師高老師的精心指導(dǎo)和悉心關(guān)懷下完成的,在我論文的研究工作中無不傾注著高老師辛勤的汗水和心血。但是,對該系統(tǒng)的研究還存在一些問題需要解決。系統(tǒng)結(jié)構(gòu)采用模塊化設(shè)計,主要由兩大部分構(gòu)成:第一部分為系統(tǒng)的從機,以ATMEGA16L單片機和一片nRF905無線收發(fā)芯片為核心,與單總線溫度傳感器 DS18B20和電位器組成溫度采集點和模擬濕度采集點,完成溫度和濕度數(shù)據(jù)的采集和無線發(fā)送,并通過液晶顯示器LCD1602顯示;第二部分為系統(tǒng)的主機,以ATMEGA16L單片機和一片nRF905無線收發(fā)芯片為核心,通過RS232接口模塊,完成溫度數(shù)據(jù)的無線接收、顯示和上傳功能。(7)采用AVR Studio編寫了主機串口通信程序,實現(xiàn)了主機與PC機之間通過串口進行數(shù)據(jù)的傳輸,從而實現(xiàn)了溫度數(shù)據(jù)的上傳。(5)采用數(shù)字式溫度傳感器DS18B20,應(yīng)用傳感技術(shù)、無線收發(fā)技術(shù)及計算機技術(shù),實現(xiàn)溫度數(shù)據(jù)的采集和短距離無線數(shù)據(jù)傳輸并用液晶顯示器LCD1602顯示無線發(fā)送和接收的溫度數(shù)據(jù)。(3)完成了系統(tǒng)主機和從機的電路原理圖的繪制和電路板的制作。做了以下幾方面的工作:(1)深入地分析研究了Atmega16L單片機。結(jié)論本文通過對AVR單片機Atmega16L和無線數(shù)傳模塊nRF905的研究,提出了一種基于AVR單片機的無線環(huán)境監(jiān)測系統(tǒng)的總體設(shè)計方案。 VB程序設(shè)計中遇到的問題與解決方法在系統(tǒng)設(shè)計中出現(xiàn)了無法接收、接收亂碼、接收數(shù)據(jù)不完整等現(xiàn)像。如果延時不正確就讀不出正確的溫度值;(2)讀出的溫度數(shù)據(jù)處理錯誤。二、溫度傳感器 DS18B20讀出的溫度值不是正確的溫度值,通過檢查程序發(fā)現(xiàn)問題如下:(1)延時設(shè)置不正確。 DS18B20設(shè)計過程中遇到的問題既解決方法一、單片機檢測不到溫度傳感器 DS18B20,通過檢查電路和程序發(fā)現(xiàn)問題如下:(1)程序中的端口設(shè)置錯誤,和電路連接的不符;(2)DS18B20對時序要求特別高,時序發(fā)生錯誤。導(dǎo)致電壓、電流不穩(wěn)定,使nRF905不能正常工作。 nRF905設(shè)計過程中遇到的問題既解決方法 nRF905不能正常通信,通過檢查電路發(fā)現(xiàn)問題如下:單片機電源和nRF905電源不統(tǒng)一。二、串口通信正常,但出現(xiàn)亂碼,通過檢查程序發(fā)現(xiàn)問題如下:程序編寫不正確。 串口設(shè)計過程中遇到的問題既解決方法一、串口不能正常通信,通過檢查電路和程序發(fā)現(xiàn)問題如下:(1)電路RS232芯片焊接錯誤;(2)程序編寫不正確,比如波特率設(shè)置錯誤。二、LCD顯示器顯示的字符看不清楚經(jīng)過硬件電路的檢查,問題有如下:LCD對比度調(diào)節(jié)端電壓沒調(diào)好。圖51 PC機接收溫度值軟件界面6 調(diào)試 液晶顯示器LCD1602設(shè)計過程中遇到的問題既解決方法一、LCD不能正常顯示經(jīng)過對程序的調(diào)試和硬件電路的檢查,問題有如下幾個:(1)對單片機延時不熟悉,延時程序錯誤;(2)LCD1602背光設(shè)置不合適,字體看不清。 VB程序設(shè)計 程序詳細設(shè)計VB程序詳細設(shè)計請見附錄1。當(dāng)CommEvent屬性值變化時將發(fā)生OnComm事件,指示發(fā)生一個通訊事件或錯誤。當(dāng)其值是EvReceive時表示接收到數(shù)據(jù)。CommEvent屬性:返回最近的通訊事件或錯誤。OutBufferCount:設(shè)置輸出寄存器所存儲的字符數(shù),當(dāng)將其值設(shè)為0時,則輸出寄存器將被清空。InputMode:設(shè)置從輸入寄存器中讀取數(shù)據(jù)的形式。Ouput:發(fā)送數(shù)據(jù)到輸出寄存器。Portopen:設(shè)置串口狀態(tài),值為True時打開串口,值為False時關(guān)閉串口。其默認值Setting:對串口通訊的相關(guān)參數(shù)。Commport:設(shè)置通訊所占用的串口號。 MSComm控件的主要屬性、事件Control(簡稱MSComm)的通訊控件。Basic中有一個名為Microsoft實際上,只要我們借助相關(guān)ActiveX控件的幫助,即使是在底層操作一向不被人看好的VB中,一樣能夠?qū)崿F(xiàn)串口通訊,甚至其實現(xiàn)方法和C、匯編相比,要更加快捷方便。提到串口通訊的編程,人們往往立刻想到C、匯編等對系統(tǒng)底層操作支持較好的編程語言以及大串繁瑣的代碼。 MSComm控件串口通訊作為一種古老而又靈活的通訊方式,被廣泛地應(yīng)用于PC機間的通訊以及PC機和單片機之間的通訊之中。四、結(jié)構(gòu)化的程序設(shè)計語言  ,眾多的內(nèi)部函數(shù),是模塊化、結(jié)構(gòu)化程序設(shè)計語言,結(jié)構(gòu)清晰,簡單容易學(xué)習(xí)。每個事件都可以驅(qū)動一段程序的運行,程序員只要編寫響應(yīng)用戶動作的代碼,各個動作之間不一定有聯(lián)系。三、事件驅(qū)動的編程機制 面向過程的程序是由一個主程序和個子程序及函數(shù)組成的,程序運行時總是先從主程序開始,由主程序調(diào)用若干個子程序和函數(shù),程序員在編程時必須事先確定整個程序的執(zhí)行順序。“畫”出窗口、菜單、命令按鍵等不同類型的對象,并為每個對象設(shè)置屬性。二、可視化上設(shè)計平臺 采用傳統(tǒng)的程序設(shè)計語言編程時,一般需要通過編寫程序來設(shè)計應(yīng)用程序的界面(如界面的外觀、位置等),在設(shè)計過程中看不見界面的實際效果。結(jié)束 開始轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換完成?處理數(shù)據(jù)NY圖46 ADC流程圖5 PC機通信及數(shù)據(jù)處理顯示程序設(shè)計,利用MSm控件接收單片機發(fā)送的數(shù)據(jù),完成接收數(shù)據(jù)的顯示并通過Access寫入數(shù)據(jù)庫。得到的結(jié)果是一個十六位的數(shù),還要通過處理才可以得到我們需要的十進制的數(shù)。其中通道選擇的是單通道通道0,參考電壓選擇的是AREF為基準(zhǔn)電壓,轉(zhuǎn)換結(jié)果右對齊。初始化檢測DS18B20存在?轉(zhuǎn)換溫度讀溫度數(shù)據(jù)輸出數(shù)據(jù)返回跳過ROM溫度數(shù)據(jù)處理NY圖45 DS18B20采集溫度流程圖其主要程序中的主要函數(shù)如下:Init_DS18b20(void) //DS18B20初始化void DS18b20_write_byte(unsigned char dat) //寫18b20溫度uint8_t DS18b20_read_byte(void) //讀DS18b20溫度void ReadTemp(void) //讀取DS18b20當(dāng)前溫度void temp_to_str() //溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示詳細程序見附錄1。跳過ROM后調(diào)用溫度轉(zhuǎn)換函數(shù),然后讀溫度數(shù)據(jù),讀完溫度數(shù)據(jù)后處理溫度數(shù)據(jù),最后輸出溫度數(shù)據(jù)。LCD初始化 LCD清屏顯示字符串返回圖44 LCD1602程序流程圖 DS18b20軟件設(shè)計首先DS18B20初始化,接著從機檢測DS18B20是否存在,如存在則跳過DS18B20的ROM,因為本程序中只接一個DS18B20,故不需要讀DS18B20的序列號和匹配DS18B20。=~(12) //拉低使能信號選擇。=~(12) //拉高使能信號選擇。=~(11) //拉低數(shù)據(jù)/命令選擇。=~(11) //拉高數(shù)據(jù)/命令選擇。 nRF905軟件設(shè)計同上文的主機NRF905軟件設(shè)計相同。 RecvProc()。 LCD_write_string(4,1,ad)。 //開啟濕度轉(zhuǎn)換 LCD_write_string(4,0,TempBuffer)。 //開啟溫度采集程序 temp_to_str()。 LCD_write_string(0,1,H=)。 nrf905_Init()。 //AD初始化 Init_DS18b20()。其程序如下:int main(void) { LCD_init()。然后調(diào)用DS18B20溫度采集子程序,數(shù)據(jù)處理后將采集的溫度值送LCD1602顯示并通過nRF905發(fā)送給主機,如此循環(huán)往復(fù)。發(fā)送數(shù)據(jù)返回發(fā)送結(jié)束?NY開始圖 42 單片機的串口通信子程序流程圖 主程序的設(shè)計從機程序開始后首先進行初始化設(shè)置。置位UCSRB寄存器的接收允許位TXEN將啟動USART的數(shù)據(jù)接收器,通過讀取UDR寄存器就可以獲得接收緩沖器的內(nèi)容。發(fā)送數(shù)據(jù)時,按照幀格式在所需發(fā)送的數(shù)據(jù)前加上幀頭、幀長、幀標(biāo)志,組幀發(fā)送。二、數(shù)據(jù)發(fā)送和接收數(shù)據(jù)發(fā)送采用查詢方式。通過設(shè)置UCSRB寄存器,設(shè)置數(shù)據(jù)格式為8位數(shù)據(jù)位和1位停止位。 串口軟件的設(shè)計一、初始化初始化操作包括波特率設(shè)置、數(shù)據(jù)格式和UCSRB寄存器設(shè)置。 return temp。(1SPIF))==0)。 SPDR=val。 nRF905軟件的設(shè)計由于ATMEGA16L單片機自身帶有SPI硬件通信接口可以直接和nRF905的SPI接口相連。 //!!! temp = SPDR。 //SPI允許,主機模式,MSB,極性方式00,1/16系統(tǒng)時鐘速率 SPSR = 0x00。 uchar temp。以下是SPI口初始化程序:void spi_init(void)//spi初始化{ PORTB |= (1MOSI)|(0MISO)|(1SCK)|(1SS)。我們選擇先發(fā)送MSB,同時接收到的數(shù)據(jù)傳送到接收緩沖寄存器,CPU進行右對齊從接收緩沖器中讀取接收到的數(shù)據(jù)。ATMEGA16L通過將從機的CSN引腳置低實現(xiàn)與從機的同步。ATMEGA16L與nRF905同時進行雙向數(shù)據(jù)傳輸。 }}開始NRF905初始化串口初始化置NRF905為發(fā)送狀態(tài)置NRF905為發(fā)送狀態(tài)調(diào)用ShockBust發(fā)送子程序調(diào)用ShockBust發(fā)送子程序發(fā)送節(jié)點2地址發(fā)送節(jié)點1地址置NRF905為接收狀態(tài)置NRF905為接收狀態(tài)NN有數(shù)據(jù)接收?有數(shù)據(jù)接收?YY調(diào)用ShockBust接收子程序調(diào)用ShockBust接收子程序 N接收完成?N接收完成?YY送PC機顯示送PC機顯示圖41 主機程序流程圖 SPI接口軟件的設(shè)計本設(shè)計中SPI配置為主機模式,nRF905為從設(shè)備。 RfRecvProc()。 nrf905_SendData(Address_2)。 RfRecvProc()。//nrf905初始化 while(1) { nrf905_SendData(Address_1)。//spi初始化 uart_init(9600)。主機程序流程圖見圖41。然后置nRF905為發(fā)送狀態(tài),輪流發(fā)送多個從機的地址,發(fā)送一個地址后改為接收狀態(tài),nRF905判斷是否有接收數(shù)據(jù),沒有數(shù)據(jù)接收繼續(xù)查詢,有則接收對應(yīng)地址從機通過nRF905發(fā)送回來的環(huán)境數(shù)據(jù),單片機將接收的數(shù)據(jù)通過串口發(fā)送給PC機,顯示在VB編寫的界面上,直到一組數(shù)據(jù)接收完畢。 式()式中:——輸入電壓 ——參考電壓 ADC——轉(zhuǎn)換結(jié)果單片機和HM1500的硬件連接圖見圖39,HM1500電壓輸出口與接單片機ATMEGA16L 的PA0端口連接,詳細原理圖見附錄2。單端電壓輸入以0V為基準(zhǔn)。這里只用它的端口PA0 端口A 做為A/D 轉(zhuǎn)換器的模擬輸入端口,Atmega16L有一個10位的卓此逼近型ADC。本設(shè)計選擇了Atmega16L內(nèi)部自帶的ADC為數(shù)模轉(zhuǎn)換。表314 HM1500引腳定義引線顏色定義W1白地W2藍電源W3黃輸出其參考輸出電壓見表315。 HM1500具有以下突出優(yōu)點:一、 體積小 二、不受水浸影響 三、完全互換性 四、可靠性高、長期穩(wěn)定性好 五、5VDC供電時0—100%RH對應(yīng)1—4VDC輸出 六、55%RH時修正精度在177。線性放大的電壓輸出可使傳感器與控制器相連。詳細原理圖見附錄2。表312 字節(jié)分配溫度低位溫度高位THTL配置保留保留保留8位CRC表313 DS18B20溫度數(shù)據(jù)表表313所列是DS18B20溫度采集轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8bit的RAM中,二進制的前5位是符號位,如果測的溫度大于或等于0,這五位為0,;如果溫度小于0,這五位為1。比較器斜率累加器預(yù)置預(yù)置+1=0計數(shù)器低溫度系數(shù)振蕩器溫度寄存器=0計數(shù)器高溫度系數(shù)振蕩器停止圖 37 DS18B20方框圖表311 數(shù)據(jù)格式低字節(jié)2^32^22^12^02^12^22^32^4高字節(jié)SSSSS2^62^52^4 DS18B20的數(shù)據(jù)處理DS18B20的高速暫存存儲器由
點擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1