【基于PLC與單片機的智能牧場實時監測系統設計與實現13000字(論文)】_第1頁
【基于PLC與單片機的智能牧場實時監測系統設計與實現13000字(論文)】_第2頁
【基于PLC與單片機的智能牧場實時監測系統設計與實現13000字(論文)】_第3頁
【基于PLC與單片機的智能牧場實時監測系統設計與實現13000字(論文)】_第4頁
【基于PLC與單片機的智能牧場實時監測系統設計與實現13000字(論文)】_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

基于PLC與單片機的智能牧場實時監測系統設計與實現摘要畜牧業的生產力取決于品種、飼料、環境以及是否有合理有效的管理方案,不適宜的環境條件,比如:光照、水分、溫度、空氣質量、衛生情況等不合適都會使畜牧生產力下降,牧場的實時監控和檢測可以有效地應對場內的突發情況,合理高效的管理方弌、智能的處理系統對保證牧場高產、高效運轉具有積極意義。本創意作品能夠針對智能農場的實際情況,綜合運用智能傳感器模塊、單片機STC89C52系統、PLC、NRF24L01P射頻芯片、無線傳輸技術進行實時的適當調節,是能夠對牧場的溫濕度、食物重量、飲用水水位等參數進行實時監測、具有日常管理功能的智能牧場。關鍵詞:單片機STC89C52系統;無線傳輸;NRF24L01P射頻芯片;PLC目錄TOC\o"1-3"\h\u1引言 智能牧場系統軟件設計對于智能牧場系統的整體設計,編程以C語言和三菱PLC編程語言為主。C語言是面向過程的、抽象化的編程語言。它是一種以簡易的方式\t"/item/c%E8%AF%AD%E8%A8%80/_blank"編譯、處理低級\t"/item/c%E8%AF%AD%E8%A8%80/_blank"存儲器,并在不需要任何運行環境下僅通過產生少量的\t"/item/c%E8%AF%AD%E8%A8%80/_blank"機器碼便能運行的編程語言。同時,C語言具有語言簡潔、數據類型豐富、可讀性好、易于\t"/item/c%E8%AF%AD%E8%A8%80/_blank"調試、修改和移植的優點,不僅能夠直接對硬件進行操作,還能用于開發系統軟件和編寫程序。三菱PLC編程語言一共有六種,分別是指令表編程、梯形圖編輯、步進梯形圖、結構文本語言、結構化梯形圖和FBD功能模塊表。其中,最常用的就是梯形圖編輯,它是通過在圖示的畫面上使用順序符號和軟元件編號畫順控梯形圖的編輯方式。由于觸點符號和線圈符號是順控回路的主要特點,所以程序的內容會讓人更容易理解。4.1編程軟件介紹4.1.1Keil軟件Keil是51系列兼容單片機C語言軟件開發系統,它提供了完整的開發方案。它通過一個集成開發環境,把C編譯器、鏈接器、宏匯編、庫管理以及一個功能強大的仿真調試器等組合在一起,這樣可以極大地提高在生成目標代碼上的效率,并且可以讓其語句形成的匯編代碼更有邏輯、更緊湊、更能讓別人理解代碼的功能意義。4.1.2GXWorks2軟件GXWorks2是三菱公司推出的\t"/item/GX%20Works2/_blank"PLC編程軟件,它是一款致力于PLC設計、調試、維護的編程工具。這款軟件編程主要用于機械設備,一些指令的輸入和設置將通過軟件編程來完成,從而達到讓機械具備執行邏輯運算、順序控制、定時等功能。相對于傳統的GXDeveloper軟件,提高了功能及操作性能,變得更加容易使用。4.2軟件設計本設計采用C語言和PLC編程程序進行編程。本設計的程序分為兩部分。一部分是由單片機所控制的牧場的基本飼養、消毒等功能的實現,另一部分是由PLC控制的牧場防盜方面的實現。4.2.1自動喂糧程序設計首先,由稱重傳感器讀取當前食物重量,基于原理需求,需要通過一個轉換函數讀取此刻的重量值,并通過線性方程轉換獲取此時的食物重量,計算食物重量程序如下所示:zxc=HX711_Read();zxc=(unsignedint)((float)zxc/GapValue); //計算實物的實際重量當前采集的食物的重量與沒放食物前的重量的差值,若少于給定值則發出低電平,觸發電磁閥加糧;若大于給定值,則不加糧,持續檢測食物重量,其程序如下所示:voiddflt(u16te)//te為當前食物重量與沒放食物前的重量的差值{ if(te>=0&&te<9999) { Tx_Buf1[0]=te/100; Tx_Buf1[1]=te%100; } else { Tx_Buf1[0]=99; Tx_Buf1[1]=99; } if(a1==0) { if(te<500) { pwm1=0; } else { pwm1=1; } }}4.2.2自動喂水程序設計飲用水的水位由水位傳感器檢測,檢測得到的模擬信號傳給XPT2046模塊進行AD轉換,轉換成數字量后傳給單片機,單片機把得到的數值與給定值比較。當飲用水低于某一規定值時,將發出低電平信號,驅動水泵抽水,直至水位達到規定水位則停止抽水。自動喂水程序如下所示:ad1=Read_AD_Data(0xE4); //讀取水位傳感器模擬量并轉為數字量Tx_Buf1[2]=ad1/100;Tx_Buf1[3]=ad1%100;if(a2==0) { if(ad1<200) { pwm2=1; } else { pwm2=0; } } 4.2.3定時通風消毒程序設計本設計的通風消毒采用中斷函數每間隔15s,輸出一次低電平驅動外接元器件進行消毒通風一次,每次持續5s的時間,定時通風消毒程序如下:voidTimer0()interrupt1using0{ xianshi+=1; if(xianshi==mubiao) { pwm6=0; } if(xianshi==20000) { xianshi=0; pwm6=1; } TH0=(65536-1000)/256; TL0=(65536-1000)%256;}4.2.4藍牙控制程序設計本設計使用的是HC-05藍牙模塊,在編程時,需要初始化串口,設置好串口的通信波特率,開啟串口中斷,編寫串口中斷函數。當手機藍牙與本設計藍牙配對成功后,藍牙模塊接收手機發送的信號,將信號通過串口發送給單片機,單片機接收到信號后,執行相應的操作。串口初始化的程序函數如下所示:voidUsartInit(){SCON=0X50; //設置為工作方式1TMOD&=0X0F;//清0T1的控控制位TMOD|=0X20; //設置計數器工作方式2PCON|=0X80; //波特率加倍TH1=0XF3; //計數器初始值設置TL1=0XF3; ET1=0;//禁止T1中斷ES=1; //打開接收中斷 EA=1; //打開總中斷TR1=1; //打開計數器}串口通信中斷函數的程序如下所示:voidUsart()interrupt4{if(RI){ receiveData=SBUF;//出去接收到的數據RI=0;//清除接收中斷標志位SBUF=receiveData;//將接收到的數據放入到發送寄存器Tx_Buf1[8]=receiveData-'0'+0;}while(!TI); //等待發送數據完成TI=0; //清除發送完成標志位} 藍牙控制元器件實現自動喂糧、自動喂水、通風、遮陽擋雨功能的程序如下所示: if(receiveData=='0') { a0=0;a1=0;a2=0;a3=0;a4=0; } if(receiveData=='a')//停止放糧 { AS='a'; a1=1;pwm1=1;a0=1; } elseif(receiveData=='b')//放糧 { AS='a'; a1=1;pwm1=0;a0=1; } if(receiveData=='c') { a2=1; AS='b';pwm2=1;a0=1; } elseif(receiveData=='d') { a2=1; AS='b';pwm2=0;a0=1; } if(receiveData=='e') { a3=1; AS='c';pwm3=1;a0=1; } elseif(receiveData=='f') { a3=1; AS='c';pwm3=0;a0=1; } if(receiveData=='g')//正轉 { a4=1; AS='d';pwm4=1;a0=1; } elseif(receiveData=='h')//停止正轉 { a4=1; AS='d';pwm4=0;a0=1; } if(receiveData=='i')//停止反轉 { a4=1; AS='e';pwm5=0;a0=1; } elseif(receiveData=='j')//反轉 { a4=1; AS='e';pwm5=1;a0=1; }4.2.5溫濕度檢測程序設計本設計采用DHT11溫濕度傳感器來自動檢測牧場溫濕度,并將溫濕度的數據顯示在屏幕上,溫濕度傳感器數據處理與顯示的程序如下所示:voidDHT11_receive(){ucharR_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;DHT11_start();if(Data==0){while(Data==0);DHT11_delay_us(40);R_H=DHT11_rec_byte();R_L=DHT11_rec_byte();T_H=DHT11_rec_byte();T_L=DHT11_rec_byte();revise=DHT11_rec_byte();DHT11_delay_us(25);if((R_H+R_L+T_H+T_L)==revise){RH=R_H;RL=R_L;TH=T_H;TL=T_L;}rec_dat[0]=RH/10+'0';rec_dat[1]=(RH%10)+'0';rec_dat[2]='%';rec_dat[3]='R';rec_dat[4]='H';rec_dat[5]='';rec_dat[6]='';rec_dat[7]=(TH/10)+'0';rec_dat[8]=(TH%10)+'0';rec_dat[9]='^';rec_dat[10]='C';Tx_Buf1[4]=RH;Tx_Buf1[5]=TH; }}4.2.6無線傳輸模塊程序設計GT-24無線傳輸模塊程序根據官方的庫文件以及數據手冊進行編程設置。通過進行設置接收地址、裝載數據、發送指令等一系列操作,從而達到無線傳輸數據。GT-24無線傳輸模塊程序如下所示:voidNRF24L01TxPacket(u8*tx_buf){ CE=0; //StandByI模式 Spi24L01WriteBuf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//裝載接收端地址 Spi24L01WriteBuf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); //裝載數據 CE=1; //置高CE,激發數據發送}4.2.7密碼輸入程序當按下輸入密碼按鍵X12后,輔助繼電器M26線圈和定時器T1線圈得電,定時器T1開始計時,M26常開接點閉合,由于定時器T1的時鐘脈沖為100ms,而設定值K為1,即100ms后,定時器T1的常開接點閉合,開始調用執行指針標號為P0的子程序,此時開始輸入第一個數字,按下數字按鍵X0~X11中的一個,即把對應的數字輸入到寄存器D4中,并使輔助繼電器M13線圈和定時器T2線圈得電,此時定時器T2的常閉觸點立刻斷開,T2的常開觸點立即閉合,輔助繼電器M13常開觸點也閉合,從而導致定時器T2線圈將持續得電,在定時時間結束后,其常閉觸點則一直在斷開狀態,而定時器T2的常開觸點仍然閉合,導致定時器T1的線圈失電,其常開觸點斷開,此時跳出指針編號為P0的子程序,開始執行指針編號為P1的子程序。同樣地,剩下的三個數字的輸入與此類似。在執行指針編號為P1的子程序時,按下要輸入的數字按鍵后數值就被存入寄存器D5,輔助繼電器M14線圈和定時器T3線圈就會通電,此時定時器T3的常閉觸點立即斷開,跳出指針編號為P1的子程序,而定時器T3的常開觸點立即閉合,開始執行指針編號為P2的子程序。再次按下需要的數字按鍵后數值被存入寄存器D6,并使輔助線圈M15線圈和定時器T4線圈得電,此時定時器T4的常閉觸點立即斷開,跳出指針編號為P2的子程序,常開接點立即閉合,開始執行指針編號為P3的子程序。按下需要的數字按鍵后數值被存入寄存器D7,至此,輸入的數字將分別存放在寄存器D4~D7中,下一步將與正確的密碼進行驗證。這樣的操作使得在輸入下一個數字時,不會改變前面存入寄存器數字,使輸入的數字得以保存來進行密碼識別。密碼輸入程序如圖4.1所示:圖4.1密碼輸入程序4.2.8密碼檢驗程序由四位數字組成開鎖密碼,當輸入密碼后,按下確認密碼按鍵X13開始驗證密碼,比較指令將從輸入的第一個數字開始驗證,與真實密碼的第一個數值進行比較,比較指令中,當被比較值大于比較值,M0=1,被比較值等于比較值,M1=1,被比較值小于比較值,M2=1,即只有數值相同時,才能使常開觸點M1閉合,從而才能繼續驗證輸入的第二個數字。若有一個數值不相同,則不開鎖并記錄錯誤次數。只有當四位數字全部驗證成功,才會開門。密碼檢驗程序如圖4.2所示:圖4.2密碼檢驗程序4.2.9修改密碼程序當輸入正確密碼驗證成功開門后,常開觸點M10的閉合使得輔助繼電器M20線圈得電,常開觸點M20閉合,此時按下修改密碼按鍵X14才能修改密碼,按下X14后,輔助繼電器線圈M25得電,觸發常開接點M25閉合,開始執行指針編號為P4的子程序,此時按下修改的密碼的第一個數字對應的按鍵后,寄存器D200中的數值就會被改變,與此同時,輔助繼電器M16線圈和定時器T5線圈得電,觸發了常開觸點M16和T5閉合,常閉觸點T5斷開,此時跳出指針編號為P4的子程序,開始執行指針標號為P5的子程序,此時按下數字按鍵,將不會改變寄存器D200中的密碼值,而是改變寄存器D201中的值并使輔助繼電器M17線圈和定時器T6線圈得電,觸發了常開觸點M17和T6閉合,常閉觸點T6斷開,從而跳出指針編號為P5的子程序,開始執行指針標號為P6的子程序,按下需要改變的數字按鍵后,會保存在寄存器D202中并觸發輔助繼電器M18和定時器T7的常閉接點斷開,常開接點閉合,從而跳出指針編號為P6的子程序,開始執行指針標號為P7的子程序,輸入需要改變的密碼后,寄存器D203中的數值被改變,定時器T8的線圈被觸發,它的常閉接點將會斷開,從而不再進入修改密碼的代碼中,此時再次按下修改密碼按鍵X14,密碼就修改完成了,此時修改密碼程序中的定時器和輔助繼電器將復位,以用于下一次修改密碼。修改密碼程序如圖4.3所示:圖4.3修改密碼程序4.2.10防盜報警程序只有當輸入的密碼與寄存器中的真實密碼一致時,才能使對應輔助接點閉合,由于密碼錯誤時,常開的輔助接點M0、M2、M3、M5、M6、M8、M9、M11均有可能閉合,此時其常閉的輔助接點斷開,在經過取反指令后,將會觸發輔助繼電器M12,從而使得計數器C100計數一次并清零定時器T0~T8和輔助繼電器M0~M15,當輸錯三次密碼后,計數器C100將得電觸發,其常開接點C100閉合,觸發閃蜂鳴器Y1報警,此時位于檢驗密碼程序的Y1的常閉觸點斷開,不再執行檢驗密碼的程序,直至警報解除才能檢驗密碼開鎖。防盜報警程序如圖4.4所示:圖4.4防盜報警程序4.2.11污水處理程序低液位由下液位傳感器開關X16檢測,高液位由上液位傳感器開關X17檢測。當污水水位低于低液位時,下液位傳感器開關X16斷開,無需開啟水泵抽水;當污水水位高于低液位,且低于高液位時,下液位傳感器開關X16閉合,開啟水泵1處理污水;當污水高于高液位時,上、下液位傳感器開關都將會閉合,水泵1、水泵2共同啟動處理污水,若污水量減少,污水液位低于高液位時,上液位傳感器開關將會斷開,水泵2將停止工作,以節省能源。污水處理程序如圖4.5所示:圖4.5污水處理程序5智能牧場系統調試調試即為將寫好的程序對應下載到單片機和PLC編程軟件中,通過實踐操作和系統仿真,逐步驗證。根據系統的任務目標來判斷實際是否達到要求,若沒有達到要求,則再次對硬件和軟件進行修改。5.1硬件調試首先,對照原理圖、I/O接線圖將元器件進行接線,首先進行主機元器件的連接,把溫濕度傳感器、稱重傳感器、水位傳感器、雨滴傳感器、無線通信模塊、藍牙模塊按照原理圖的接線接到主機的對應的IO口,從電源模塊中接出的直流正極和負極中各接出端子排,供給水泵、風扇、藍牙、水位傳感器、雨滴傳感器、同步電機、電磁閥等使用。接下來進行從機的連接,把TFTLCD屏幕接在從機對應IO口上,并把無線通信模塊接到對應的IO口。在上電之前,先測量各主路、分路電源是否短路,避免燒毀芯片。接著要檢查各線路是否存在接線錯誤,是否存在線路接觸不良的情況。上電之后,觀察各器件指示燈是否亮起,若有器件指示燈未亮起,斷電之后仔細檢查接線是否正確。在多次運行調試過程中,發現了以下問題:(1)當要在PLC輸入點接入有源開關時,需要接上電源,若AC型有源開關工作電壓為24V,則可以連接PLC內部24V電源,也可以采用外部電源。但對于DC型有源開關則不要連接PLC內部24V電源。(2)有一些線路接好之后沒有進行加固,線路容易松動造成線路接觸不良,使器件無法運行,因此在上電之前一定要檢查線路。(3)因為一些負載的工作電壓不一致,因此采用電源適配器模塊統一輸出12V的直流電壓后通過降壓模塊使其降到所需的5V工作電壓,但由于降壓模塊質量問題影響了輸出電壓的穩定,從而導致了系統的穩定性,在發現問題后,迅速更換模塊,提高系統穩定性的同時解決這個供電不穩定而帶來的安全隱患。(4)在初步調試硬件時,把單片機輸出端與負載直接連接,通電后發現負載根本不能運行,經過逐步查找原因,從而發現單片機輸出電壓只有5V,輸出電流有限,無法驅動大功率的負載,若要使負載運行,需要連接一個繼電器來驅動負載。5.2軟件調試通過逐步編譯,檢查編寫的程序是否存在邏輯錯誤,在仔細檢查過程中沒有發現錯誤并成功編譯后,把代碼分別重新燒錄到單片機和PLC中,在調試過程中注意觀察,與單片機相連接的繼電器的燈亮起時,相對應連接的元器件是否正確動作,器件均能正確動作后,才證明代碼可行。首先,打開電源,把PLC的指針撥到運行,PLC電源指示燈和運行指示燈亮起,其余指示燈均熄滅,說明程序無邏輯錯誤,可以開始輸入密碼驗證,密碼鎖能正確動作,則證明程序編寫無誤。用物體靠近接在PLC的X16、X17輸入端的接近開關,電容式接近開關的指示燈亮起,隨機水泵開啟,說明傳感器無損壞,水泵可正常工作。PLC調試運行圖如圖5.1所示。圖5.1PLC調試運行單片機上電之后,連接在P26接口的風扇在間隔15s后開啟并在工作5s后停止,控制風扇的繼電器隨著它工作而亮起,停止而熄滅,如此循環。在稱重傳感器上加上些許重物,觀察TFTLCD屏幕上的食物重量的數值是否發生變化,然后再慢慢減少稱重傳感器上的重物,使其達到可驅動電磁閥打開的閾值,與電磁閥相連的繼電器工作指示燈亮起,電磁閥正確動作。慢慢減少水槽里的水,使其達到動作閾值后,與水泵相連的繼電器工作指示燈亮起,水泵開始抽水。打開手機藍牙,與單片機藍牙進行配對,發送字母b,與電磁閥相連的繼電器工作指示燈亮起,電磁閥打開;發送字母a,電磁閥關閉,與電磁閥相連的繼電器工作指示燈熄滅。發送字母c,與水泵相連的繼電器工作指示燈亮起,水泵開始工作,發送字母d,水泵停止工作,與水泵相連的繼電器工作指示燈熄滅;發送字母e,開啟風扇,與風扇相連的繼電器工作指示燈亮起;發送字母f,風扇停止工作,與風扇相連的繼電器工作指示燈熄滅;發送字母g,控制卷簾的電機正轉,控制電機正轉的繼電器工作指示燈亮起,發送字母h,電機正轉停止,控制電機正轉的繼電器工作指示燈熄滅;發送字母j,控制卷簾的電機反轉,控制電機反轉的繼電器工作指示燈亮起,發送字母i,電機反轉停止,控制電機反轉的繼電器工作指示燈熄滅。調試結果如圖5.2所示。圖5.2調試結果實物圖在調試過程中,也曾出現過很多次調試失敗的情況。比如,在編譯代碼的時候,總是報錯沒有定義reg52.h文件里的一些IO口,通過檢查后在主函數文件中添加引用了reg52.h文件。再比如,通過按鍵輸入密碼的時候,在輸入下一個數字時,總會覆蓋前面輸入的數字,因此我采用了定時器和輔助繼電器相結合的方法解決這個問題,我設計程序使得定時器的常閉觸頭與控制輸入第一個數字的子程序調用指令相連,常開觸頭與控制第二個數字的子程序調用指令相連,當輸入數字后,第一個定時器開始計時,并觸發輔助繼電器線圈動作,使輔助繼電器常開觸頭自鎖,從而使得定時器線圈持續通電,此時定時器的常閉觸頭立即斷開,輸入第一個數字的指令也將立即斷開,不再執行,而常開觸頭迅速閉合,接通輸入第二個數字的指令。這樣的設計在輸入下一位數字時就不會再改變上一位寄存器中存儲的數字。6結語通過對課題的應用、目前的市場需求以及相關的研究進行大致的了解后,對要實現的設計有了整體的構想,通過系統硬件的搭建、系統軟件中程序的編寫、以及軟硬件的聯合調試等方面工作的開展,基本完成了初期的任務要求,設計出的智能牧場系統基本上能夠達到預期的效果。本設計采用PLC和STC89C52單片機作為核心器件,使得設計出來的牧場能夠智能、可靠、有效地運行,實現了牧場的自動化喂養、智能環境消毒以及智能防盜,能夠從一定程度減少養殖畜產品的成本的同時實現畜產品養殖的高效、高質。總結這整個設計的實踐過程,我覺得最重要的還是代碼的編程與學習。雖然以前在課堂上也學習過單片機和PLC的程序編程,但是課堂上的學習只是比較系統地去學習這方面的知識,但真正去編寫程序實現功能的時候,一些代碼編寫的細節上的規則,以及一些代碼的編寫順序對功能實現的影響都是在發現錯誤的時候通過逐步修改調試,才能夠真正地清楚這些細節部分對實現功能的影響。所要運用的元器件都必須先去了解它的原理,然后再慢慢地去讀透它的驅動程序,才能真正地把它運用好。其實整個編程的過程就是在不斷學習和積累經驗的過程。本設計雖然基本上達到了預期的目標,但仍存在許多不足之處,系統在實際使用過程中仍存在一些問題需要不斷完善和改進,比如:系統功能也有待增加和改善;系統檢測存在一定的延時等。所以,本設計尚未真正達到投入市場的應用的標準仍,還需要自己從各個方面對設計進行完善和提升。

參考文獻[1]阮友德.PLC、變頻器、觸摸屏綜合應用實訓[M].北京:中國電力出版社,2019[2]徐航.關于發展畜牧業的現狀及前景分析[J].今日財富,2019,000(004):P.191-191.[3]張國鋒,肖宛昂.智慧畜牧業發展現狀及趨勢[J].中國國情國力,2019(12).[4]吳靜進,何尚平,萬彬.MCS-51單片機原理與應用[M].重慶:重慶大學出版社,2019[5]金成龍,李青.OLED顯示技術概要及應用領域的發展趨勢[J].數字技術與應用,2020,v.38;No.362(08):226-229.[6]海濤,黃清寶,肖根福,陳雪云,易澤仁,趙晚昭,陳柏軒.電氣控制與PLC實驗教程[M].重慶:重慶大學出版社,2020[7]孫加軍,王相宇.由國外養殖業發展看我國畜牧業規模化養殖[J].農業開發與裝備,2016,000(008):59-59.[8]歐陽晨星.基于物聯網的智能牧場[J].數碼世界,2019(6).[9]潘銀松顏燁高瑜張強.C語言程序設計基礎教程[M].重慶:重慶大學出版社,2019[10]HuiWang.OptimalDesignofSingleChipMicrocomputerMulti-machineSerialCommunicationbasedonSignalVerificationTechnology[J].InternationalJournalofIntelligentInformationandManagementScience,2020,9(1)[11]SensorResearch;FindingsfromNationalResearchTomskPolytechnicUniversityYieldsNewDataonSensorResearch(Single-chipSolutionforElectronicsUnitofaSmartPressureSensor)[J].JournalofEngineering,2020.[12]WangZG,ZhangY,Yan-MinLI.ControlApplicationofPLCTechnologyinElectricalAutomation[J].WorldNonferrousMetals,2019.

附錄附錄A實物圖本文設計作品的單片機控制部分的實物圖如A1所示,PLC控制部分的實物圖如A2所示。圖A1單片機控制部分的實物圖圖A2PLC控制部分的實物圖附錄B單片機部分源程序#include"Hummerbot.h"#include"BluetoothHandle.h"#include"ProtocolParser.h"#include"KeyMap.h"#include"reg52.h" #include"XPT2046.h" //AD轉換#include"HX71101.h"http://壓力傳感器#include"DHT11.h"http://溫濕度傳感器#include"keydown.h"http://按鍵#include"2401.h"http://無線傳輸#ifndefu8#defineu8unsignedchar//對數據類型進行聲明定義#endif#ifndefu16#defineu16unsignedint#endif#ifndefu32#defineu32unsignedint#endif#ifndeful#defineulunsignedlong#endif#ifndefuchar#defineucharunsignedchar//對數據類型進行聲明定義#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endifexternunsignedinttarget;externunsignedintpgus;externunsignedintpgms;externunsignedintpgs;unsignedcharKeyalce[10];sbitpwm1=P2^3;sbitpwm2=P2^4;sbitpwm3=P3^3;sbitpwm4=P3^2;sbitpwm5=P2^7;sbitpwm6=P2^6;bita0,a1,a2,a3,a4;#defineGapValue400u16jnsm=0;u16ad1;//水位傳感器u16ad2;//光敏電阻u16ad3;//雨滴傳感器u8JOV[4];u8x,y;ulzxc,vbn;u8receiveData;//串口u8AS;u16aa12aa=0;u8Tx_Buf1[13]={1}; //24L01發送的數組unsignedintmubiao=15000,xianshi=0;voiddatapros();voidDigDisplay();voiddflt(u16te);//1122voidUsartInit();//串口voiddelay_ms2401(u16z); //2401延時函數voidTimer0Initial();voidinitial_Timer();voiddelay(unsignedintx);voidkeyscan();voidUsartInit(){ SCON=0X50; //設置為工作方式1 TMOD&=0X0F;//清0T1的控控制位 TMOD|=0X20; //設置計數器工作方式2 PCON|=0X80; //波特率加倍 TH1=0XF3; //計數器初始值設置 TL1=0XF3; ET1=0;//禁止T1中斷 ES=1; //打開接收中斷 EA=1; //打開總中斷 TR1=1; //打開計數器}voidmain(){ u16as2401=0; intbs2401=0;initial_Timer(); UsartInit(); zxc=0; vbn=HX711_Read(); vbn=(unsignedint)((float)vbn/GapValue); InitNRF24L01(); while(NRF24L01Check()) //檢查不到24l01則小燈閃爍提示報警 { } while(1) { zxc=HX711_Read(); zxc=(unsignedint)((float)zxc/GapValue);//計算實物的實際重量 zxc=zxc-vbn; dflt(zxc); //壓力數據處理與顯示函數 datapros(); //AD數據處理與顯示函數 DHT11_receive();//溫濕度數據處理與顯示函數 if(a3==0) { if(Tx_Buf1[4]>=50||Tx_Buf1[5]>=27) { pwm3=1; } else { pwm3=0; } } if(receiveData=='0') { a0=0;a1=0;a2=0;a3=0;a4=0; } if(receiveData=='a')//停止放糧 { AS='a'; a1=1;pwm1=1;a0=1; } elseif(receiveData=='b')//放糧 { AS='a'; a1=1;pwm1=0;a0=1; } if(receiveData=='c') { a2=1; AS='b';pwm2=1;a0=1; } elseif(receiveData=='d') { a2=1; AS='b';pwm2=0;a0=1; } if(receiveData=='g')//正轉 { a4=1; AS='d';pwm4=1;a0=1; } elseif(receiveData=='h')//停止正轉 { a4=1; AS='d';pwm4=0;a0=1; } if(re

溫馨提示

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

評論

0/150

提交評論