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

正文內(nèi)容

基于labview的溫度實時顯示與報警系統(tǒng)的設(shè)計畢業(yè)設(shè)計(編輯修改稿)

2025-04-03 09:56 本頁面
 

【文章內(nèi)容簡介】 用 L7805穩(wěn)壓芯片得到穩(wěn)定的正 5V電壓輸出。其中 P5用于接 220V交流轉(zhuǎn) 12V交流的變壓器,對 12V交流經(jīng)過整 流后輸出直流正電壓和直流負(fù)電壓。將整流后的直流電壓經(jīng)過一個 2200uF和一個 。然后通過穩(wěn)壓芯片 L7812和 L7912就可以得到穩(wěn)定的正負(fù) 12V電壓,把穩(wěn)壓管輸出的正 12V作為 L7805的輸入, L7805就可以輸出穩(wěn)定的正 5V電壓。 3 下位機軟件設(shè)計 下位機程序設(shè)計使用 KEIL C的編譯環(huán)境,并使用 C語言進(jìn)行程序的編寫,然后經(jīng)過編譯后生成 .hex文件。此次設(shè)計因為要用到串口通信,所以選擇使用串口下載,將代碼下載到相應(yīng) STC89C52的單片機中去。 主程序框架 下位機程序設(shè)計采用模塊化的設(shè)計思想,主要包括下面幾部分: ( 1) 編寫 LCD1602驅(qū)動程序,實現(xiàn)對 LCD1602的 8字節(jié)寫命令操作函數(shù)、寫數(shù)據(jù)操作函數(shù), 調(diào)用寫命令函數(shù)初始化液晶屏以及通過寫命令和寫數(shù)據(jù)這兩個函數(shù)來編寫在指定的位置顯示單個字符、在指定的位置開始顯示字符串等擴展函數(shù),便于在主程序中調(diào)用。通過在主程序中調(diào)用相應(yīng)的 LCD顯示函數(shù),最終完成 4路溫度值的顯示。 ( 2)編寫 ADC0832驅(qū)動程序,實現(xiàn)對 4通道模擬電壓的采集。程序中包括相應(yīng)通道的選擇和對 A/D轉(zhuǎn)換結(jié)果 1個字節(jié)的讀取。為 了能方便在主函數(shù)中選擇轉(zhuǎn)換通道和讀取相應(yīng)通道的 A/D轉(zhuǎn)換結(jié)果。將程序設(shè)計成有兩個參數(shù)變量和帶返回值的函數(shù),其中一參數(shù)變量用來選擇對那片芯片操作,另一個參數(shù)變量用來選擇轉(zhuǎn)換通道,最后的返回值則為 A/D的轉(zhuǎn)換結(jié)果。 ( 3)編寫串口通信程序,實現(xiàn)將 A/D轉(zhuǎn)換的 8位數(shù)字量通過串口發(fā)送到上位機。串口通信程序包括串口的初始化配置函數(shù),串口 1個字節(jié)發(fā)送函數(shù)。其中串口的初始化配置要特別注意波特率的設(shè)置,應(yīng)該和上位機的波特率設(shè)置成一樣大小,保證串口通信更準(zhǔn)確;而串口發(fā)送則采用查詢法。在主程序中通過調(diào)用發(fā)送子函數(shù)即可以將數(shù)據(jù)發(fā) 送到上位機。 ( 4)編寫主程序,實現(xiàn)在主程序中調(diào)用已編寫好的子程序,即將整個下位機的的功能在主程序中實現(xiàn)。在主函數(shù)中,首先對 LCD160 ADC082和串口進(jìn)行初始化,然后在一個大循環(huán)中不停地采集 A/D轉(zhuǎn)換的數(shù)據(jù),并通過處理通過串口發(fā)送到上位,同時再經(jīng)過適當(dāng)?shù)奶幚?,?LCD上顯示出溫度值。為了使接收到的數(shù)據(jù)更準(zhǔn)確,在取 A/D轉(zhuǎn)換結(jié)果時,連續(xù)讀取 10次,再求取平均值,而 LCD溫度顯示函數(shù)則在定時器中斷調(diào)用,設(shè)置成每隔一段時間對溫度值進(jìn)行刷新一次。下位機的主程序流程圖如圖 31所示。 圖 31 下位機主程序流程圖 ADC0832 驅(qū)動程序 ADC0832未工作時其 CS輸入端應(yīng)為高電平,此時芯片禁止讀寫, CLK、 DO和 DI的電平值可任意。當(dāng)要進(jìn)行 A/D轉(zhuǎn)換時,必須將 CS使能端置低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。使能 CS之后,單片機向芯片時鐘輸入端 CLK輸入時鐘脈沖,數(shù)據(jù)輸入端 DI用于輸入數(shù)據(jù)進(jìn)行 A/D轉(zhuǎn)換通道的選擇,數(shù)據(jù)輸出端 DO用于輸出 A/D轉(zhuǎn)換的結(jié)果。在第一個時 鐘脈沖的下降沿之前 DI必須保持高電平,表示啟動信號,在第二和第三個下降沿之前 DI輸入的數(shù)據(jù)用于選擇 A/D的轉(zhuǎn)換通道。 ADC0832的操作時序如圖 32所示。 圖 32 ADC0832的時序圖 在進(jìn)行 A/D轉(zhuǎn)換時,要用到兩片 ADC0832,在進(jìn)行 A/D轉(zhuǎn)換時,先選擇其中一片芯片進(jìn)行 A/D轉(zhuǎn)換,讀取兩個通道的值,之后再選擇另外一個芯片進(jìn)行 A/D轉(zhuǎn)換,再讀取兩個通道的值。再選擇芯片時只能使能其中的一個芯片,而另外的一個芯片的使能端必須禁止。ADC0832驅(qū)動程序流程圖如圖 33所示。 圖 33 A/D轉(zhuǎn)換程序流程圖 ADC0832在讀取轉(zhuǎn)換結(jié)果時,是在時鐘脈沖下串行輸出的,并且是最高位先輸出。讀取 A/D轉(zhuǎn)換的部分代碼如下: for(i=0。i8。i++) //循環(huán) 8次讀取 1個字節(jié)數(shù)據(jù) { val=val1。 //val用于暫存轉(zhuǎn)換結(jié)果 ,經(jīng)過 8次左移后即為轉(zhuǎn)換結(jié)果 CLK=1。 CLK=0。 //數(shù)據(jù)輸出在下降沿后有效 if(DO) { val=val|0x01。 //若輸出為 1則與 0x01相或 } } 開始 選擇一片 ADC0832 選擇通道 1 選擇通道 2 保存轉(zhuǎn)換結(jié)果 保存轉(zhuǎn)換結(jié)果 選擇另一片 ADC0832 選 擇通道 3 選擇通道 4 保存轉(zhuǎn)換結(jié)果 保存轉(zhuǎn)換結(jié)果 結(jié)束 LCD1602 顯示驅(qū)動程序 LCD顯示驅(qū)動程 序在進(jìn)行數(shù)據(jù)的顯示時,先要對 LCD寫入初始化控制命令字,初始化成功之后,寫入數(shù)據(jù)地址控制命令,再寫入數(shù)據(jù)才能把數(shù)據(jù)顯示出來。程序主要包括寫命令、寫數(shù)據(jù)、數(shù)據(jù)地址指針設(shè)定、顯示單個字符、顯示字符串等。 LCD1602的寫操作時序如圖 34所示。 圖 34 LCD1602寫操作時序 根據(jù) LCD1602寫操作時序圖可知,當(dāng) RS為低電平, RW為高電平時為寫命令操作,控制命令主要是用設(shè)置 LCD顯示模式、光標(biāo)的設(shè)置等,單片機將 8位數(shù)據(jù)送到 LCD并行數(shù)據(jù)總線上,單片機給 E數(shù)據(jù)端一個正脈沖信號,就可以將控制命令字 寫入 LCD。當(dāng) RS為高電平, RW為高電平時為寫數(shù)據(jù)操作, LCD就會將接收到的數(shù)據(jù)在液晶屏上顯示出來。在進(jìn)行數(shù)據(jù)顯示前需要先設(shè)置數(shù)據(jù)地址指針,這樣才能在想要的位置顯示出數(shù)據(jù)。 LCD1602顯示驅(qū)動程序流程圖如圖 35所示。 圖 35 LCD1602顯示驅(qū)動程序流程圖 根據(jù)以上 LCD寫操作時序和 LCD顯示驅(qū)動程序流程圖編寫出相應(yīng)的驅(qū)動函數(shù),部分顯示函數(shù)如下: void Display_LCD_1602_dan_zi(uchar X,uchar Y,uchar Value) //在指定位置 { // 寫入一個字符, X為行, Y為列 ,Value為寫入的數(shù)據(jù) LocationXY( X, Y)。 //確定字符顯示的位置函數(shù) Write__or_dat(Value,1)。 //寫入數(shù)據(jù)函數(shù) } void Display_LCD_1602_duo_zi(uchar X,uchar Y,uchar *P) //顯示字符串函 { //數(shù) ,P指向字符串的首地址 LocationXY( X, Y)。 //設(shè)定初始地址 while(*P){ Write__or_dat(*P,1)。P++。} } 串口通信程序 串口通信程序主要包括串口的初始化、串口數(shù)據(jù)發(fā)送,其中串口的初始化主要是用于設(shè)置波特率。在通信中采用的串口通信波特率為 9600,在程序設(shè)計中采用查詢法發(fā)送數(shù)據(jù),串口通信程序流程圖如圖 36所示。 圖 36 串口通信程序流程圖 在進(jìn)行串口通信程序編寫時,編寫單字節(jié)發(fā)送函數(shù)和字符串發(fā)送函數(shù),其中部分程序代碼如下: void Sent_Byte(uchar dat) //發(fā)送單字節(jié)函數(shù) { SBUF=dat。 //將數(shù)據(jù)送到緩沖器 while(!TI)。 //判斷是否發(fā)送完 TI=0。 //發(fā)送完清標(biāo)志位 } void Sent_Date(uchar *dat) //發(fā)送一個字符串函數(shù) { while((*dat)!= 39。\039。) //如果字符串未結(jié)束,指針 ++指向下一個字符 { Sent_Byte(*dat)。 //發(fā)送單字節(jié)函數(shù) dat++。 //指針 ++ } } 4 上位機軟件設(shè)計 上位機人機交互界面設(shè)計 此次設(shè)計的上位機人機交互界面主要分為兩個窗口,即實時數(shù)據(jù)窗口和歷史數(shù)據(jù)窗口,可以在使用過程中進(jìn)行切換。實時數(shù)據(jù)窗口主要是用于實現(xiàn) 4路溫度數(shù)據(jù)的實時顯示、實時溫度變化曲線顯示及實時溫度強度圖顯示。并且可以在本界面設(shè)定串口的有關(guān)配置,如 波特率、數(shù)據(jù)位、奇偶校驗位等;另外可以設(shè)定設(shè)定溫度采集的速率、報警的溫度上限值、選擇數(shù)據(jù)的數(shù)據(jù)的存儲路徑等;同時可以開始和停止溫度的采集。除此之外,還顯示出模擬的數(shù)控機床熱變形誤差,當(dāng)采集的溫度值超過設(shè)計的溫度上限時,報警指示燈就會閃爍并發(fā)出報警聲。因為實時窗口顯示的數(shù)據(jù)是變動的,鑒于此歷史數(shù)據(jù)窗口主要是用于歷史數(shù)據(jù)的讀取方便數(shù)據(jù)的分析。在進(jìn)行數(shù)據(jù)顯示時,除了顯示溫度值外,還顯示出采集到溫度所對應(yīng)的時間。 圖 41 實時數(shù)據(jù)顯示界面 人機交互界面的實時數(shù)據(jù)顯示窗口設(shè)計如圖 41所示。實時數(shù)據(jù)顯示窗口不僅 可以顯示溫度隨時的變化曲線,以及用強度圖表中用顏色淺深來表示溫度大小。除了用數(shù)值來顯示溫度值外,還用 4個類似于溫度計的柱體來直觀顯示溫度的大小。圖中開始按鈕可以用來控制數(shù)據(jù)的采集和暫停。 上位機程序框圖設(shè)計 主程序框圖設(shè)計 主程序通過串口接收下位機發(fā)送的 4路 A/D轉(zhuǎn)換采集到的 8位數(shù)字量,通過數(shù)據(jù)處理,計算出溫度值、熱變形誤差,同時能在前面板顯示出來。另外還要實現(xiàn)報警、數(shù)據(jù)存儲和相關(guān)數(shù)據(jù)采集參數(shù)設(shè)定等功能。上位機的整體程序設(shè)計流程圖如圖 42所示。 圖 42 上位主程序流程圖 LABVIEW 串口程序設(shè)計 在 LABVIEW程序串程序設(shè)計中,主要用到 VISA配置串口、屬性節(jié)點、 VISA讀取和簡單錯誤處理等幾部分組成,下面分別簡單介紹這幾個節(jié)點的使用。 圖 43 VISA配置串口 如圖 43所示為 VISA配置串口節(jié)點,通過該節(jié)點可以很方便的對串口的參數(shù)進(jìn)行配置,如波特率、奇偶校驗、停止位等,通過配置好相關(guān)參數(shù),即對串口進(jìn)行初始化,上位機才能與下位機通過串口通信。 圖 44 VISA串口數(shù)據(jù)讀取 如圖 44所示為串口緩沖區(qū)讀取節(jié)點,通過該節(jié)點可以讀取下位機發(fā)送到串口數(shù)據(jù)緩沖區(qū)里的數(shù)據(jù)。其中 有一個比較重要的設(shè)置,就是 VISA READ的 “ 字節(jié) 總 數(shù) ” 這個輸入,由于在串口通信中,如果指定讀取 100個串口緩沖區(qū)的字節(jié)數(shù),如果當(dāng)前緩沖區(qū)的數(shù)據(jù)量不足 100個時,程序會一直停在 VISA READ這個節(jié)點上,如果在超時的時間(默認(rèn)是 10秒)內(nèi)還沒有湊足 100個數(shù)據(jù)的話,程序就會報 “Time out” 的錯誤,如果超時時間設(shè)置得太長,有可能導(dǎo)致程序很長時間停止在 VISA READ這個節(jié)點上。解決的辦法是使用 “Bytes at Port” 這個串口的屬性節(jié)點,這個屬性節(jié)點讀取當(dāng)前串口緩沖區(qū)有字節(jié)數(shù),然后將它的輸出連接到 VISA READ的 “ 讀取字節(jié)數(shù) ” 這個輸入端上即可,這樣當(dāng) 前緩沖區(qū)中有多少個字節(jié)就讀回多少個,不會有任何等待 ,該屬性節(jié)點如圖 45所示。 圖 45 Bytes at Port屬性節(jié)點 將以上幾個節(jié)點正確連接起來,再結(jié)合 while結(jié)構(gòu)和判斷結(jié)構(gòu)就可以實現(xiàn)對下位機發(fā)送來的數(shù)據(jù)進(jìn)行不斷的讀取。其部分程序設(shè)計如圖 46所示。 圖 46 串口數(shù)據(jù)讀取部分程序 串口數(shù)據(jù)幀解碼 下位機發(fā)送來的采集到的 4路數(shù)據(jù),在讀取串口的數(shù)據(jù)之后并不知道接收到的數(shù)據(jù)是屬于那一路的,需要將各路的數(shù)據(jù)區(qū)分開來,再進(jìn)行數(shù)據(jù)處理和顯示。上位機程序的編寫要根據(jù)下位機發(fā)送的數(shù)據(jù)幀格式來解碼,這樣才能獲取正確的數(shù)據(jù)。下位機發(fā)送的 數(shù)據(jù)幀包括 3個部分,包括 2個字節(jié)的數(shù)據(jù)幀頭、 4個字節(jié)的數(shù)據(jù)和 1個字節(jié)的數(shù)據(jù)幀尾。將讀取的字符數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組,再對數(shù)組里的數(shù)據(jù)進(jìn)行數(shù)據(jù)幀解析,得出想要的數(shù)據(jù)。在程序設(shè)計中通過編寫數(shù)據(jù)幀解析子 VI來供主 程序調(diào)節(jié),數(shù)據(jù)幀
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1