基于51單片機的溫室大棚控制系統(tǒng)畢業(yè)設計設計_第1頁
基于51單片機的溫室大棚控制系統(tǒng)畢業(yè)設計設計_第2頁
基于51單片機的溫室大棚控制系統(tǒng)畢業(yè)設計設計_第3頁
基于51單片機的溫室大棚控制系統(tǒng)畢業(yè)設計設計_第4頁
基于51單片機的溫室大棚控制系統(tǒng)畢業(yè)設計設計_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

畢業(yè)設計(論文)原創(chuàng)性聲明和使用授權說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得及其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導教師簽名:日期:使用授權說明本人完全了解大學關于收集、保存、使用畢業(yè)設計(論文)的規(guī)定,即:按照學校要求提交畢業(yè)設計(論文)的印刷本和電子版本;學校有權保存畢業(yè)設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學??梢圆捎糜坝?、縮印、數(shù)字化或其它復制手段保存論文;在不以贏利為目的前提下,學校可以公布論文的部分或全部內容。作者簽名:日期:

學位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本人完全意識到本聲明的法律后果由本人承擔。作者簽名: 日期:年月日學位論文版權使用授權書本學位論文作者完全了解學校有關保留、使用學位論文的規(guī)定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權大學可以將本學位論文的全部或部分內容編入有關數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。涉密論文按學校規(guī)定處理。作者簽名: 日期:年月日導師簽名:日期:年月日

注意事項1.設計(論文)的內容包括:1)封面(按教務處制定的標準封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關鍵詞4)外文摘要、關鍵詞5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結論7)參考文獻8)致謝9)附錄(對論文支持必要時)2.論文字數(shù)要求:理工類設計(論文)正文字數(shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字數(shù)不少于1.2萬字。3.附件包括:任務書、開題報告、外文譯文、譯文原文(復印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求,無錯別字,不準請他人代寫2)工程設計類題目的圖紙,要求部分用尺規(guī)繪制,部分用計算機繪制,所有圖紙應符合國家技術標準規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印4)圖表應繪制于無格子的頁面上5)軟件工程類課題應有程序清單,并提供電子文檔5.裝訂順序1)設計(論文)2)附件:按照任務書、開題報告、外文譯文、譯文原文(復印件)次序裝訂

指導教師評閱書指導教師評價:一、撰寫(設計)過程1、學生在論文(設計)過程中的治學態(tài)度、工作精神□優(yōu)□良□中□及格□不及格2、學生掌握專業(yè)知識、技能的扎實程度□優(yōu)□良□中□及格□不及格3、學生綜合運用所學知識和專業(yè)技能分析和解決問題的能力□優(yōu)□良□中□及格□不及格4、研究方法的科學性;技術線路的可行性;設計方案的合理性□優(yōu)□良□中□及格□不及格5、完成畢業(yè)論文(設計)期間的出勤情況□優(yōu)□良□中□及格□不及格二、論文(設計)質量1、論文(設計)的整體結構是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設計)任務(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設計)水平1、論文(設計)的理論意義或對解決實際問題的指導意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設計是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設計說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績:□優(yōu)□良□中□及格□不及格(在所選等級前的□內畫“√”)指導教師:(簽名)單位:(蓋章)年月日

評閱教師評閱書評閱教師評價:一、論文(設計)質量1、論文(設計)的整體結構是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設計)任務(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格二、論文(設計)水平1、論文(設計)的理論意義或對解決實際問題的指導意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設計是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設計說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績:□優(yōu)□良□中□及格□不及格(在所選等級前的□內畫“√”)評閱教師:(簽名)單位:(蓋章)年月日西昌學院畢業(yè)論文(設計)-②、透明通道數(shù)據(jù)傳輸模式,應用在非Modbus協(xié)議的情況下;3、設置簡單,可通過超級終端使用串口或以太網(wǎng)設置、也可使用TELNET通過以太網(wǎng)設置;設置內容包括IP地址、串口參數(shù)、工作模式等;4、支持24VDC電源冗余,可接入2路24VDC電源,實現(xiàn)電源冗余。7.2Fameview組態(tài)特點1.FameView軟件最適合工業(yè)PLC應用;

2.面向設備數(shù)據(jù)表的監(jiān)控;

3.真正的VBScript編譯腳本(高級用戶自由編程);

4.靈活簡單的數(shù)據(jù)存儲、報表和數(shù)據(jù)分析(制作報表方便);

5.具有特色的畫面編程技術(漫游、透明位圖、靜態(tài)圖形轉位圖等);

6.集成靈活的可擴展功能塊(CA塊、FB塊);

7.集成GSM手機短信、GPRS、CDMA、寬帶、ADSL數(shù)據(jù)處理和報警;

8.網(wǎng)絡服務器、串口服務器、ADSL動態(tài)IP服務器、短信數(shù)據(jù)服務;

9.通訊速度快、畫面刷新快(每幅畫面上百個位圖);

10.靈活的用戶管理(級別可到按鈕);

11.集成視頻監(jiān)控、遠程調試、WEB功能;

12.OEM定制(為行業(yè)定制、VC二次開發(fā))。7.3Fameview組態(tài)性能指標設備通訊2、運行數(shù)據(jù)庫3、畫面顯示4、變量報警歷史存檔6、配方7、實時報表8、用戶管理全局腳本10、數(shù)據(jù)庫連接11、實時數(shù)據(jù)連接雙機冗余13、全局變量14、變量組15、網(wǎng)絡服務器串口服務器17、ADSL服務器18、短信服務器遠程連接服務器20、OPC服務器7.4Fameview組態(tài)軟件設計步驟安裝通信驅動程序(圖28),如下:圖28安裝通信驅動程序B、定制系統(tǒng)(圖29),選擇所需功能,如下:圖29定制系統(tǒng)C、設置系統(tǒng)啟動選項(圖30),如下:圖30設置系統(tǒng)啟動選項D、選擇啟動系統(tǒng)任務(圖31),如下:圖31設置系統(tǒng)啟動選項E、制定設備數(shù)據(jù)表(圖32):圖32制定設備數(shù)據(jù)表F、設定模擬只讀變量(圖33):圖33設定模擬只讀變量G、設定模擬致只寫變量(圖34):圖34設定模擬致只寫變量H、定義變量報警(圖35):圖35定義變量報警I、設置串口服務器(圖36),選擇需要使用的串口:圖36設置串口服務器J:GSM手機短信設置a、設置短信服務(圖37)(設置/連接短信模塊):圖37設置短信服務b、自定義短信內容(圖38):圖38自定義短信內容K、制作組態(tài)顯示畫面(圖39):圖39制作組態(tài)顯示畫面L、溫室大棚遠程控制系統(tǒng)組態(tài)畫面(圖40)設置如下:圖40溫室大棚遠程控制系統(tǒng)組態(tài)畫面8TeamViewer遠程控件設計8.1TeamViewer簡介TeamViewer是一個能在任何防火墻和NAT代理的后臺用于遠程控制,桌面共享和文件傳輸?shù)暮唵吻铱焖俚慕鉀Q方案。為了連接到另一臺計算機,只需要在兩臺計算機上同時運行TeamViewer即可,而不需要進行安裝(也可以選擇安裝,安裝后可以設置開機運行)。該軟件第一次啟動在兩臺計算機上自動生成伙伴ID。只需要輸入你的伙伴的ID到TeamViewer,設置一個預定義密碼,然后就會立即建立起連接。8.2建立TeamViewer遠程連接在遠程監(jiān)控計算機上輸入控制室計算機TeamViewer上生成的伙伴標ID(圖41):圖41TeamViewer上生成的伙伴標IDB、給控制室計算機設置預定義密碼,以被遠程計算機控制:單擊密碼后的圖標->單擊“設置預定義密碼(圖42)”;圖42設置預定義密碼b、在TeamViewer選項對話框的“安全性”下單擊“管理附加密碼(圖43)”;圖43管理附加密碼c、在彈出的密碼管理對話框中單擊“添加”,然后彈出的添加新密碼對話框,輸入標識符和密碼后單擊“添加”,則密碼添加成功(圖44);圖44添加密碼C、在控制室計算機的TeamViewer選項對話框的“常規(guī)”下勾選“隨Windows一同啟動TeamViewer”(圖45);圖45設置TeamViewer隨Windows一同啟動D、在遠程監(jiān)控計算機單擊“連接到伙伴”(圖46);圖45啟動遠程連接E、在TeamViewer驗證對話框中輸入設置的預定義密碼,登錄后便可遠程監(jiān)控(圖46)。圖45登陸TeamViewer遠程連接9系統(tǒng)調試9.1硬件電路調試液晶顯示的調試:焊接好硬件電路,燒寫簡單LCD1602和LCD12864顯示程序到相應的單片機,查看液晶顯示屏能否正常顯示。如果不能顯示,嘗試調節(jié)液晶顯示的對比度,查看顯示程序的接口是否正確,檢查電路線路連接是否正確等。并依次解決問題。AMS117的3.3V穩(wěn)壓調試:用萬用表測量AMS1117的輸出腳和接地腳之間的電壓是否為3.3V左右。如果不是,檢查AMS1117的各腳線路是否連接正確,AMS1117是否被燒壞等。并依次解決問題。無線模塊調試確定AMS1117的輸出電壓為3.3V后,接好nRF905無線模塊,燒入nRF905的測試程序,查看能否正常發(fā)送和接收。如果不能,檢查電路線路連接是否正確,nRF905無線模塊是否被燒壞等。并依次解決問題。D、PCF8591的A/D轉換調試插好A/D轉換芯片,燒入檢測程序,查看能否準確進行A/D轉換。如果不能,檢查電路線路連接是否正確,PCF8591芯片是否被燒壞等。并依次解決問題。9.2軟件調試硬件調試成功之后,依次對DS18B20的溫度采集程序,DHT11的溫濕采集程序,光敏電阻和濕敏電阻的A/D轉換程序,溫度、濕度、光照等的液晶顯示程序,nRF905無線模塊對采集量的傳輸程序,繼電器控制程序,串口程序等進行調試。9.3軟硬件結合調試硬件調試和軟件調試成功之后,將各部分程序進行揉合處理,將大棚控制系統(tǒng)各部分的程序分別寫入相應的單片機,看看整個系統(tǒng)能否正常按預期目標工作。如果不能,還要從硬件和軟件部分找出相應的原因,并依次解決問題。結論通過半個學期地全心投入和辛苦努力,終于完成了西昌學院農業(yè)設施大棚遠程控制系統(tǒng)的設計,設計的過程就是綜合運用所學知識和學習新知識的過程。由于經(jīng)驗不足,難免出現(xiàn)一些小的失誤,但無論怎樣,本次畢業(yè)設計對于我來說都是一次難得的鍛煉機會,使我積累了許多寶貴的經(jīng)驗。本文設計實現(xiàn)對溫室大棚的空氣溫度、空氣濕度、土壤溫度、土壤濕度和光照進行采集顯示和控制并能將大棚的實際狀態(tài)傳輸?shù)浇M態(tài)的畫面中,讓控制顯得更加直觀。但設計上還留有進一步改善的余地,如可以增加溫室大棚二氧化碳的采集控制,可以美化組態(tài)畫面,讓組態(tài)中各部分關聯(lián)更加緊密等。畢業(yè)設計的整個開發(fā)過程是曲折的,首先在硬件設計上,由于開始對NRF905無線模塊的多對一傳輸、GSM短信模塊和PCF8590的模數(shù)轉換過程不熟悉,加之其程序量較多,所以,在設計的過程中,不免有些困難,通過我多方面的查找資料,并不斷的向老師和同學請教,結合網(wǎng)絡資源,最終找出比較完善的方案,在理論上能夠實現(xiàn)功能要求。經(jīng)過幾個月的前期學習,我積累了很多的關于無線傳輸和GSM短信傳輸方面的知識,并對電路的整合有了一個基本的概念,最后設計出總的電路圖,經(jīng)過不斷的硬件測試和軟硬件的結合調試最終完善了電路的設計。當然由于我在理論和實踐方面存在一定的不足,所以在設計思路和實現(xiàn)功能上難免有不足和沒有想到的地方,還請各位老師給予指正。參考文獻[1]高遲.基于單片機的智能溫室大棚控制系統(tǒng).機電產品開發(fā)與創(chuàng)新[J],2005(06)[2]溫吉珍,劉洪山.基于單片機的溫室大棚檢測系統(tǒng)原理性裝置研制,科技創(chuàng)新導報[J].2010(20)[3]李莉,張彥娥,汪懋華,等.現(xiàn)代通信技術在溫室中的應用[J].農業(yè)機械學報,2007,38(2):195-200[4]薄新維.STC系列單片機在溫室大棚中的應用[J].儀表技術與傳感器,2009[5]施智雄,胡放鳴等.實用模擬電子技術[M].電子科技大學出版社,2006[6]胡振宇,劉魯源,杜振輝.DS18B20接口的C語言程序設計[J].單片機與嵌入式系統(tǒng)應用,2002(07)[7]周劍利,郭建波等.具有I2C總線接口的A/D芯片PCF8591及其應用[J].微計算機信息,2005,70[8]門少杰,王寶珠.基于nRF905的溫室環(huán)境無線測控系統(tǒng)研究[J].電子測量,2010[9]李言武.應用組態(tài)軟件實現(xiàn)B/S與C/S模式遠程監(jiān)控功能[J].工業(yè)控制計算機,2008[10]葉衛(wèi),胡俊達.基于TC35iGSM模塊的短消息收發(fā)系統(tǒng)設計[J].測試測量技術,2008(5):27-29[11]趙亮.液晶顯示模塊LCD1602應用[J].電子制作,2007(3)[12]張義和,王敏男,許宏昌,余長春.例說51單片機(C語言版)[M].北京:人民郵電出版社,2010,6[13]唐為義,王艷霞,劉蕾.便攜式多點溫度采集系統(tǒng)[J].儀表技術與傳感器,2007附錄附錄一:大棚遠程控制系統(tǒng)組成框圖附錄二:大棚遠程控制系統(tǒng)各部分原理圖附錄三:大棚遠程控制系統(tǒng)各部分PCB圖附錄四:大棚遠程控制系統(tǒng)組態(tài)圖附錄五:大棚遠程控制系統(tǒng)uPLC梯形圖附錄六:大棚遠程控制系統(tǒng)實物圖附錄七:大棚遠程控制系統(tǒng)部分程序附錄一:大棚遠程控制系統(tǒng)的組成框圖附錄二:大棚遠程控制系統(tǒng)的各部分原理圖附錄三:大棚遠程控制系統(tǒng)各部分的PCB圖附錄四:大棚遠程控制系統(tǒng)的組態(tài)圖附錄五:大棚遠程控制系統(tǒng)uPLC梯形圖附錄六:大棚遠程控制系統(tǒng)的實物圖采集板程序:#include<reg52.h>#include<I2C.H>#include<intrins.h>#definePCF85910x90//PCF8591地址typedefbitBOOL;sbitio=P3^4;sbitE=P2^7; //1602使能引腳sbitRW=P2^6; //1602讀寫引腳 sbitRS=P2^5; //1602數(shù)據(jù)/命令選擇引腳//配置口定義//sbitTXEN=P1^0;sbitTRX_CE=P3^1;sbitPWR=P1^1;//SPI口定義//sbitMISO=P1^7;sbitMOSI=P1^4;sbitSCK=P1^6;sbitCSN=P1^5;//狀態(tài)輸出口//sbitCD=P1^2;sbitAM=P3^0;sbitDR=P1^3;sbitDQ=P3^5;//DS18B20接在P30#defineuintunsignedint#defineucharunsignedcharuchardata_byte;ucharRH,RL,TH,TL;unsignedcharAD_CHANNEL;unsignedintD[32];unsignedcharxuzu[11];uchardis_buf[4];//溫度傳感器發(fā)射數(shù)據(jù)緩存voidDelayMs(uintn)//j=115@F=11.0592MHz{ucharj;while(n--){for(j=0;j<115;j++);}}voiddelayUs(ucharus)//15us延時{for(;us>0;us--);}ucharreset(void)//DS18B20復位{ucharyes;DQ=0;delayUs(29);//延時480usDQ=1;delayUs(3);yes=DQ;delayUs(25);return(yes);//yes=0有芯片,}ucharread_byte(void)//從單總線上讀一個字節(jié){uchari;ucharvalue=0;for(i=8;i>0;i--){value>>=1;DQ=0;DQ=1;delayUs(1);//延時15usif(DQ)value|=0x80;delayUs(6);}return(value);}voidwrite_byte(ucharval)//向單總線上寫一個字節(jié){uchari;for(i=8;i>0;i--){DQ=0;DQ=val&0x01;delayUs(5);DQ=1;val=val/2;}delayUs(5);}uintRead_Temp(void)//讀取溫度{union{uchartc[2];uinttx;}temp;reset();write_byte(0xCC);//SkipROMwrite_byte(0xBE);//ReadScratchPadtemp.tc[1]=read_byte();temp.tc[0]=read_byte();reset();write_byte(0xCC);//SkipROMwrite_byte(0x44);//StartConversionreturntemp.tx;}voidDo_Temp(void)//溫度數(shù)據(jù)處理{uinttx;tx=Read_Temp();if(tx>=0x0800)//溫度為負值{tx=~(tx)+1;dis_buf[3]=(tx&0x000f)*625/1000;//小數(shù)部分tx=tx>>=4;//負值符號和整數(shù)部分dis_buf[0]=0x13;dis_buf[1]=tx/10;dis_buf[2]=tx%10;}else{dis_buf[3]=(tx&0x000f)*625/1000;//小數(shù)部分tx=tx>>=4;//正值整數(shù)部分dis_buf[0]=tx/100;dis_buf[1]=(tx%100)/10;dis_buf[2]=(tx%100)%10;}} voiddelay_cler(uintcnt){while(--cnt);}voiddelayms_cler(uinttime){uinti;for(i=0;i<time;i++)delay_cler(120);}voidclear_scr(void){RS=0; RW=0; delay_cler(1); E=1; delay_cler(1); P0=0x01; delay_cler(5); E=0; delayms_cler(5);}/*********************************************************************名稱:write(uchardel)*功能:1602寫數(shù)據(jù)函數(shù)*輸入:需要寫入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidwrite(uchardel){P0=del; RS=1; RW=0; E=0; delay(); E=1; delay();}/*********************************************************************名稱:L1602_init()*功能:1602初始化,請參考1602的資料*輸入:無*輸出:無***********************************************************************/voidL1602_init(void){enable(0x01); enable(0x38); enable(0x0c); enable(0x06); enable(0xd0);}/*********************************************************************名稱:L1602_char(ucharhang,ucharlie,charsign)*功能:改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b",調用該函數(shù)如下 L1602_char(1,5,'b')*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){uchara; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; enable(a); write(sign);}/*********************************************************************名稱:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"abcdef",調用該函數(shù)如下L1602_string(1,5,"abcdef;")*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){uchara; if(hang==1)a=0x80; if(hang==2)a=0xc0; a=a+lie-1; enable(a); while(1) {if(*p=='\0')break; write(*p); p++;}}/*******************************************************************DAC變換,轉化函數(shù)*******************************************************************/bitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal){Start_I2c();//啟動總線SendByte(sla);//發(fā)送器件地址if(ack==0)return(0);SendByte(c);//發(fā)送控制字節(jié)if(ack==0)return(0);SendByte(Val);//發(fā)送DAC的數(shù)值if(ack==0)return(0);Stop_I2c();//結束總線return(1);}/*******************************************************************ADC發(fā)送字節(jié)[命令]數(shù)據(jù)函數(shù)*******************************************************************/bitISendByte(unsignedcharsla,unsignedcharc){Start_I2c();//啟動總線SendByte(sla);//發(fā)送器件地址if(ack==0)return(0);SendByte(c);//發(fā)送數(shù)據(jù)if(ack==0)return(0);Stop_I2c();//結束總線return(1);}/*******************************************************************ADC讀字節(jié)數(shù)據(jù)函數(shù)*******************************************************************/unsignedcharIRcvByte(unsignedcharsla){unsignedcharc;Start_I2c();//啟動總線SendByte(sla+1);//發(fā)送器件地址if(ack==0)return(0);c=RcvByte();//讀取數(shù)據(jù)0Ack_I2c(1);//發(fā)送非就答位Stop_I2c();//結束總線return(c);}/****************************DHT11測試模塊******************************************/voiddelayDHT11(ucharms){ uchari; while(ms--) { for(i=0;i<250;i++);}}/********************************************延時模塊*********************************/voiddelay1()//延時10us{uchari; i--;i--;i--;i--;i--;i--;}voidstart()//開始信號{io=1; delay1(); io=0; delayDHT11(20);//>18ms io=1; delay1();//20-40usdelay1();delay1();delay1();delay1();}ucharreceive_byte()//接收一個字節(jié){uchari,temp,count; for(i=0;i<8;i++) { count=2; while((!io)&&count++)//等待50us低電平結束 temp=0; delay1();delay1();delay1();delay1(); if(io==1)temp=1; count=2; while((io)&&count++); if(count==1)break; data_byte<<=1; data_byte|=temp;} returndata_byte;}voidreceive()//接收數(shù)據(jù){ucharT_H,T_L,R_H,R_L,check,num_check; ucharcount; start();//開始信號 io=1; if(!io)//讀取DHT11響應信號 { count=2; while((!io)&&count++);//DHT11高電平80us是否結束 count=2; while((io)&&count++); io=0;//拉低延時50us delay1();delay1();delay1();delay1();delay1(); io=1; num_check=R_H+R_L+T_H+T_L; if(num_check=check) {RH=R_H; RL=R_L; TH=T_H; TL=T_L; check=num_check;}}}//RF寄存器配置//unsignedcharidataRFConf[11]={0x00,//配置命令//0x6C,//CH_NO,配置頻段在433.2MHZ0x0C,//輸出功率為10db,不重發(fā),節(jié)電為正常模式0x44,//地址寬度設置,為4字節(jié)0x0A,0x0A,//接收發(fā)送有效數(shù)據(jù)長度為10字節(jié)0xE7,0xE7,0xE7,0xC1,//接收地址0xDE,//CRC充許,16位CRC校驗,外部時鐘信號使能,16M晶振};voidDelay(uintx){uinti;for(i=0;i<x;i++){_nop_();}}//用SPI口寫數(shù)據(jù)至NRF905voidSpiWrite(ucharb){uchari=8;while(i--){Delay(10);/*;寫發(fā)射數(shù)據(jù)命令:20H;讀發(fā)射數(shù)據(jù)命令:21H;寫發(fā)射地址命令:22H;讀發(fā)射地址命令:23H;讀接收數(shù)據(jù)命令:24H*/voidTxPacket(void){TXEN=1;CSN=0;SpiWrite(0x22);//寫發(fā)送地址,后面跟4字節(jié)地址//SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xC2);CSN=1;_nop_();_nop_();CSN=0;SpiWrite(0x20);//寫發(fā)送數(shù)據(jù)命令//SpiWrite(xuzu[0]);//四字節(jié)數(shù)據(jù),符號位或百位SpiWrite(xuzu[1]);//十位SpiWrite(xuzu[2]);//個位SpiWrite(xuzu[3]);//小數(shù)位SpiWrite(xuzu[4]);SpiWrite(xuzu[5]);SpiWrite(xuzu[6]);SpiWrite(xuzu[7]);S//使能發(fā)射模式//Delay(50);//等待發(fā)送完成TRX_CE=0;while(!DR);}//初始化配置寄存器voidIni_System(void){uchari;CSN=1;SCK=0;PWR=1;TRX_CE=0;TXEN=0;_nop_();CSN=0;for(i=0;i<11;i++){SpiWrite(RFConf[i]);}CSN=1;PWR=1;Delay(1000);}voidfuzhi(void){xuzu[0]=D[0]%10000/1000; xuzu[1]=D[0]%1000/100&0x7f; xuzu[7]=RH/10; xuzu[8]=RH%10; xuzu[9]=TH/10; xuzu[10]=TH%10;}//*****顯示*****voidxianshi(void){L1602_char(1,1,0x30+xuzu[0]);L1602_char(1,2,0x30+xuzu[1]); L1602_char(1,3,0x30+xuzu[2]);L1602_char(1,4,0x30+xuzu[3]);L1602_char(1,6,0x30+xuzu[4]);L1602_char(1,7,0x30+xuzu[5]);L1602_char(1,8,'.');L1602L1602_string(2,1,"R:"); L1602_char(2,3,xuzu[7]+0x30); L1602_char(2,4,xuzu[8]+0x30); L1602_char(2,5,'%'); L1602_string(2,7,"T:"); L1602_char(2,9,xuzu[9]+0x30); L1602_char(2,10,xuzu[10]+0x30); L1602_char(2,11,0xdf);//display(0x44,0xdf); L1602_char(2,12,'C');//display(0x45,0x43); }//******************************************************************/main(){unsignedchark=1;L1602_init();clear_scr();L1602_string(1,3,"Waitting");L1602_string(2,3,"Rx:0xC2");Ini_System();while(1){/********以下AD-DA處理*************/ receive(); DelayMs(1000); Do_Temp(); DelayMs(1000);switch(AD_CHANNEL){case0:ISendByte(PCF8591,0x41);D[0]=IRcvByte(PCF8591)*2;//ADC0模數(shù)轉換1 break; case1:ISendByte(PCF8591,0x42);D[1]=IRcvByte(PCF8591)*2;//ADC1模數(shù)轉換2 break; case2:ISendByte(PCF8591,0x43);D[2]=IRcvByte(PCF8591)*2;//ADC2 模數(shù)轉換3 break; case3:ISendByte(PCF8591,0x40);D[3]=IRcvByte(PCF8591)*2;//ADC3模數(shù)轉換4 break; case4:DACconversion(PCF8591,0x40,D[4]/4);//DAC 數(shù)模轉換 break;} //D[4]=400;//數(shù)字>>模擬輸出 D[4]=D[3];if(++AD_CHANNEL>4)AD_CHANNEL=0; fuzhi();TxPacket(); if(k==1){clear_scr();k=0;} xianshi();}}附錄七:大棚遠程控制系統(tǒng)部分程序主控板程序:#include"reg52.h"#include<intrins.h>#include<absacc.h>#include<stdio.h>typedefunsignedcharuchar;typedefunsignedintuint;sbitRS=P2^5;sbitRW=P2^6;sbitE=P2^7;sbitRES=P2^3;//狀態(tài)輸出口//sbitCD=P1^2;sbitAM=P3^2;sbitDR=P1^3;//SPI口定義//sbitMISO=P1^7;sbitMOSI=P1^4;sbitSCK=P1^6;sbitCSN=P1^5;#defineDataPortP0//MCUP0<>LCMunsignedcharvalue;unsignedintflag=0;voidInit_Timer0();voidInitUART(void){SCON=0x50; //SCON:模式1,8-bitUART,使能接收TMOD|=0x20;//TMOD:timer1,mode2,8-bit重裝TH1=0xFD;//TH1:重裝值9600波特率晶振11.0592MHzTR1=1;//TR1:timer1打開EA=1;//打開總中斷ES=1;//打開串口中斷}voidDelayUs2x(unsignedchart){while(--t);}voidDelayMs2x(unsignedchart){while(t--){//大致延時1mSDelayUs2x(245); DelayUs2x(245);}}/*檢測忙位*/voidCheck_Busy(){RS=0;RW=1;E=1;DataPort=0xff;while((DataPort&0x80)==0x80);//忙則等待E=0;}/*寫命令*/voidWrite_Cmd(unsignedcharCmd){ DelayUs2x(5);}/*寫數(shù)據(jù)*/voidWrite_Data(unsignedcharData){ Check_Busy(); RS=1; RW=0; E=1; DataPort=Data; DelayUs2x(5); E=0; DelayUs2x(5);}/*液晶屏初始化*/voidInit_ST7920(){DelayMs2x(20);//大于40MS的延時程序PSB=1;//設置為8BIT并口工作模式DelayMs2x(1);//延時RES=0;//復位DelayMs2x(1);//延時RES=1;//復位置高DelayMs2x(10);Write_Cmd(0x30);//選擇基本指令集DelayUs2x(30);//延時大于100usWrite_Cmd(0x30);//選擇8bit數(shù)據(jù)流DelayUs2x(20);//延時大于37usWrite_Cmd(0x0c);//開顯示(無游標、不反白)DelayUs2x(30);//延時大于100usWrite_Cmd(0x01);//清除顯示,并且設定地址指針為00HDelayMs2x(15);//延時大于10msWrite_Cmd(0x06);//指定在資料的讀取及寫入時,設定游標的移動方向及指定顯示的移位,光標從右向左加1位移動DelayUs2x(30);//延時大于100us}voidLcd_Pst(unsignedcharx,unsignedchary){switch(y){case1:Write_Cmd(0x80+x);break;case2:Write_Cmd(0x90+x);break;case3:Write_Cmd(0x88+x);break;case4:Write_Cmd(0x98+x);break;default:break;}}voidLcd_Putstring(unsignedcharcode*s){while(*s>0){Write_Data(*s);s++;DelayUs2x(50);}}/*清屏*/voidDelay(uintx){uinti;for(i=0;i<x;i++){_nop_();}}////RF寄存器配置//unsignedcharidataRFConf[11]={0x00,//配置命令0x6C,//CH_NO,配置頻段在433.2MHZ0x0C,//輸出功率為10db,不重發(fā),節(jié)電為正常模式0x44,//地址寬度設置,為4字節(jié)0x06,0x0A,//接收發(fā)送有效數(shù)據(jù)長度為4字節(jié)0xE7,0xE7,0xE7,0xC2,//接收地址0xDE,//CRC充許,16位CRC校驗,外部時鐘信號使能,16M晶振}; //SPI口寫數(shù)據(jù)到nRF905voidSpiWrite(ucharb){uchari=8;while(i--){Delay(10);SCK=0;MOSI=(bit)(b&0x80);b<<=1;Delay(10);SCK=1;Delay(10);SCK=0;}SCK=0;}//由nRF905讀數(shù)據(jù)ucharSpiRead(void)_nop_();_nop_();}SCK=0;returnddata;}//接收數(shù)據(jù)包voidRxPacket(void){uchari;i=0;while(DR){TxRxBuffer[i]=SpiRead();i++;}}/*;寫發(fā)射數(shù)據(jù)命令:20H;讀發(fā)射數(shù)據(jù)命令:21H;寫發(fā)射地址命令:22H;讀發(fā)射地址命令:23H;讀接收數(shù)據(jù)命令:24H*/voidTxPacket(void){TXEN=1;CSN=0;SpiWrite(0x22);//寫發(fā)送地址,后面跟4字節(jié)地址//SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xE7);SpiWrite(0xC5);CSN=1;_nop_();_nop_();CSN=0;SpiWrite(0x20);//寫發(fā)送數(shù)據(jù)命令//SpiWrite(xuzu[0]);//四字節(jié)數(shù)據(jù),符號位或百位SpiWrite(rxBuffer[0]);//十位SpiWrite(rxBuffer[1]);//個位SpiWrite(rxBuffer[2]);//小數(shù)位SpiWrite(rxBuffer[3]);SpiWrite(rxBuffer[4]);SpiWrite(rxBuffer[5]);CSN=1;_nop_();_nop_();TRX_CE=1;//使能發(fā)射模式//Delay(50);//等待發(fā)送完成TRX_CE=0;whil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論