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

正文內(nèi)容

溫度監(jiān)控系統(tǒng)設(shè)計(jì)的設(shè)計(jì)論文-文庫吧

2025-06-13 20:35 本頁面


【正文】 5 溫度控制系統(tǒng)軟件設(shè)計(jì) Microchip 。檢測與變送A/D轉(zhuǎn)換工程量變換溫度非線性轉(zhuǎn)換發(fā)送數(shù)據(jù)到串口比較判斷算法溫度預(yù)設(shè)值溫度調(diào)節(jié) 電路執(zhí)行器從串口接受數(shù)據(jù)命令識(shí)別控制程序 單片機(jī)控制流程圖開始初始化PIC16F877A單片機(jī)端口地址讀入預(yù)設(shè)溫度值啟動(dòng)A/D轉(zhuǎn)換A/D轉(zhuǎn)換結(jié)果送入NX單元NXFF0F0NX0降溫加熱工程量變換溫度非線性溫度轉(zhuǎn)換發(fā)送數(shù)據(jù)到串口命令識(shí)別程序從串口接受數(shù)據(jù)YYYNNN 溫度變換程序模塊溫度傳感器在12℃到60℃—,溫度起點(diǎn)為12℃,滿量程為48℃。Micro Chip PIC16F877A單片機(jī)內(nèi)嵌的10位A/D轉(zhuǎn)換器對應(yīng)輸出的數(shù)字量為0000000000B~1111111111B(0~5V),應(yīng)用以下變換公式進(jìn)行變換:AX=A0+(AMA0)(NXN0)/(NMN0)式中,A0為一次測量儀表的下限。AM為一次測量儀表的上限。AX實(shí)際測量值。N0儀表下限對應(yīng)的數(shù)字量。NM儀表上限對應(yīng)的數(shù)字量。NX測量值對應(yīng)的數(shù)字量。 溫度非線性轉(zhuǎn)換程序模塊采用折線擬合法進(jìn)行線性化處理,分為以下幾段:≤Ax,T℃=*WN+12≤WN,T℃=*WN+25≤WN,T℃=*WN+40≤WN,T℃=+50 溫度曲線實(shí)際測量數(shù)據(jù)溫度(℃)12131415161718電壓(V)溫度(℃)19202122232425電壓(V)溫度(℃)26272829303132電壓(V)溫度(℃)33343536373839電壓(V)溫度(℃)40414243444546電壓(V)溫度(℃)47484950515253電壓(V)溫度(℃)54555657585960電壓(V) 圖51 溫度分段線限等效圖 6 通信協(xié)議的設(shè)計(jì)由于溫度采集和實(shí)施控制是通過單片機(jī)控制系統(tǒng)實(shí)現(xiàn),而微機(jī)完成溫度監(jiān)控,所以需要采用單片機(jī)和微機(jī)之間的通信協(xié)議。本設(shè)計(jì)應(yīng)用條件為傳輸距離不超過15米的短距離數(shù)據(jù)傳輸,且傳輸數(shù)據(jù)量較小,所以采用在控制領(lǐng)域里應(yīng)用較廣泛RS232C串行通信方式。 針對近程小批量的數(shù)據(jù)通信,設(shè)計(jì)時(shí)采用3 線制(RXD ,TXD ,GND)軟握手的零MODEM方式。即:將PC機(jī)和單片機(jī)的“發(fā)送數(shù)據(jù)線(TXD)”與“接收數(shù)據(jù)(RXD)”交叉連接,二者的地線(GND)直接相連而其它信號(hào)線如握手信號(hào)線均不用,而采用軟件握手。這樣即可以實(shí)現(xiàn)預(yù)定的任務(wù),又可以簡化電路設(shè)計(jì)節(jié)約了成本。由于RS232C是早期為促進(jìn)公用電話網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信而制定的標(biāo)準(zhǔn),其邏輯電平與TTL, MOS 邏輯電平不同。邏輯0 電平規(guī)定為+5~+15V之間,邏輯1是電平為5 ~15V 之間。因此在將PC機(jī)和單片機(jī)的RXD和TXD交叉連接時(shí),必須進(jìn)行電平轉(zhuǎn)換。下圖即為通信時(shí)的硬件連接圖,其中器件MAX232完成邏輯電平轉(zhuǎn)換的任務(wù)。 電平轉(zhuǎn)換電路圖注:在PC機(jī)中9針RS232接口中:2線:RXD, 3線:TXD, 5線:GND而在25針的RS232接口中:3線:RXD, 2線:TXD, 7線:GND 軟件設(shè)計(jì)在進(jìn)行數(shù)據(jù)通信的軟件設(shè)計(jì)時(shí),必須解決好兩個(gè)方面的問題:一是可靠性,二是速度。而這兩方面的問題,可靠性是第一位的,速度只能是在可靠的基礎(chǔ)上的速度??煽靠焖俎D(zhuǎn)輸?shù)膶?shí)現(xiàn),需要PC單片機(jī)軟件以及通信協(xié)議等各個(gè)環(huán)節(jié)的可靠和其間的相互配合。 通信協(xié)議概述在設(shè)計(jì)PC單片機(jī)通信協(xié)議時(shí),需說明一點(diǎn):在本系統(tǒng)的實(shí)際通信中,PC機(jī)是主控者單片機(jī)只是被動(dòng)接收者。采用這種通信協(xié)議較雙方互為主控者時(shí)簡單。本通信協(xié)議的設(shè)計(jì)思想是基于幀傳輸方式。即在向RS232串口發(fā)送命令信號(hào),應(yīng)答信號(hào)及數(shù)據(jù)信號(hào)時(shí),是一幀一幀地發(fā)送的。為了使數(shù)據(jù)快速可靠地傳輸,將每一幀數(shù)據(jù)唯一對應(yīng)一命令幀。此時(shí)傳輸數(shù)據(jù)即執(zhí)行命令具體如下:(1) 在PC讀數(shù)據(jù)時(shí),遵循“讀命令等數(shù)據(jù)報(bào)告”,即PC下達(dá)一命令,等待接收數(shù)據(jù),根據(jù)所接收數(shù)據(jù)的正誤向應(yīng)用程序報(bào)告此命令的執(zhí)行情況。(2) 在PC寫數(shù)據(jù)時(shí),遵循“寫命令等回應(yīng)報(bào)告”,即PC下達(dá)一寫命令(此時(shí)所要寫的數(shù)據(jù)含于此命令中),等待單片機(jī)發(fā)來的“已正確接收”的回應(yīng)信號(hào),并向應(yīng)用程序報(bào)告此命令執(zhí)行完畢。(3) 如果在轉(zhuǎn)輸過程中,其間PC或MCU所接收任何一幀信號(hào)出現(xiàn)錯(cuò)誤時(shí),均會(huì)向?qū)Ψ桨l(fā)送重發(fā)此幀信號(hào)的請求。如果連續(xù)三次轉(zhuǎn)輸失敗,則退出通信并向應(yīng)用程序報(bào)告。 通信協(xié)議說明(1) 讀命令幀:當(dāng)PC讀數(shù)據(jù)時(shí),PC向PIC16F877A發(fā)送的命令信號(hào)。(2) 寫命令幀:當(dāng)PC寫數(shù)據(jù)時(shí),PC向PIC16F877A發(fā)送的命令信號(hào)(內(nèi)含所要寫的數(shù)據(jù))。(3) 數(shù)據(jù)幀:當(dāng)PC讀數(shù)據(jù)時(shí),PIC16F877A向PC發(fā)送的內(nèi)含數(shù)據(jù)信息的信號(hào)。(4) 正回應(yīng)幀:當(dāng)PC寫數(shù)據(jù)時(shí),PIC16F877A向PC報(bào)告數(shù)據(jù)已正確接收的信號(hào)。(5) 重發(fā)命令幀:當(dāng)PC讀/寫數(shù)據(jù)時(shí),PIC16F877A所接收的信號(hào)幀(讀/寫命令幀)有誤時(shí)向PC發(fā)出的請求重發(fā)信號(hào)。(6) 放棄命令幀:當(dāng)PC讀/寫數(shù)據(jù)時(shí)出現(xiàn)了使程序無法正常執(zhí)行時(shí)PC或PIC16F877A向?qū)Ψ桨l(fā)出的退出通信的通知信號(hào)。(1) 讀命令幀格式幀頭標(biāo)志幀類型器件地址起始地址長度校驗(yàn)和幀尾標(biāo)志幀頭標(biāo)志(1 Bit): 表示此數(shù)據(jù)包屬于本串口通信協(xié)議,并為是否接收此包數(shù)據(jù)的標(biāo)志。幀類型(1 Bit): 所用信號(hào)幀的識(shí)別標(biāo)志, 信號(hào)幀分類中的各類型信號(hào)的標(biāo)志字節(jié)。器件地址(1Byte): PC所要訪問的外部器件的地址即是哪一個(gè)外部器件。起始地址(2Byte): PC所要訪問的器件的存貯器起始地址。長度(1Byte): 一次命令所轉(zhuǎn)輸?shù)臄?shù)據(jù)長度。校驗(yàn)和(1Byte): 此幀信號(hào)的校驗(yàn)字節(jié),為異或校驗(yàn)。幀尾標(biāo)志(1Byte): 此幀信號(hào)的結(jié)束標(biāo)志。(2) 寫命令幀幀頭標(biāo)志幀類型器件地址起始地址長度數(shù)據(jù)區(qū)校驗(yàn)和幀尾標(biāo)志數(shù)據(jù)區(qū):所要寫的數(shù)據(jù)信息。其它分析同上。(3) 數(shù)據(jù)幀幀頭標(biāo)志幀類型長度數(shù)據(jù)區(qū)校驗(yàn)字幀尾標(biāo)志長度:所轉(zhuǎn)輸數(shù)據(jù)的長度。數(shù)據(jù)區(qū):所轉(zhuǎn)輸?shù)臄?shù)據(jù)信息。其它分析同上。(4) 正響應(yīng)幀幀頭標(biāo)志幀類型空校驗(yàn)字幀尾標(biāo)志空無意義:為了PIC16F877A編程的方便而加入。其它分析同上。(5) 重發(fā)幀幀頭標(biāo)志幀類型空校驗(yàn)字幀尾標(biāo)志其它分析同上。(6) 放棄幀幀頭標(biāo)志幀類型錯(cuò)誤碼校驗(yàn)字幀尾標(biāo)志錯(cuò)誤碼:00H 執(zhí)行PC命令發(fā)放棄幀回應(yīng)被動(dòng)退出通訊。01H PIC16F877A 單片機(jī)方寫入芯片發(fā)生錯(cuò)誤主動(dòng)通知PC退出通訊。 通信協(xié)議處理流程(1) 數(shù)據(jù)分幀與數(shù)據(jù)重組 將應(yīng)用程序發(fā)送過來的數(shù)據(jù)作為一個(gè)數(shù)據(jù)流放在發(fā)送緩沖區(qū)中,通過通信協(xié)議進(jìn)行分幀──切割──發(fā)送。在接收端,分幀的數(shù)據(jù)去掉幀頭重新組合到接收緩沖區(qū)中,交給應(yīng)用程序處理。單片機(jī)串口通信軟件設(shè)計(jì)流程圖串口接受到一幀數(shù)據(jù)此幀是否正確連續(xù)3次不正確退出通信并報(bào)告讀命令信號(hào)退出等待下一幀重發(fā)命令幀寫命令信號(hào)分析此命令開始執(zhí)行分析此命令取出數(shù)據(jù)信息發(fā)數(shù)據(jù)幀發(fā)正回應(yīng)數(shù)據(jù)幀退出通信并報(bào)告退出等待下幀命令NYYNYYNN 應(yīng)用程序通知通信開始讀還是寫發(fā)送讀命令發(fā)送寫命令串口收到命令此幀是否正確?連續(xù)三次否退出通信是幀數(shù)據(jù)嗎?重發(fā)命令幀等待下幀信號(hào)處理數(shù)據(jù)是正回應(yīng)幀嗎命令執(zhí)行完畢是重發(fā)幀嗎退出通信并報(bào)告重發(fā)命令幀等待下幀信號(hào)讀寫NPC接收數(shù)據(jù)軟件設(shè)計(jì)流程 N N Y Y Y Y Y Y N PC串口通信軟件設(shè)計(jì)流程圖 PC 上位機(jī)的軟件設(shè)計(jì) PC軟件設(shè)計(jì)方法的選擇在開發(fā)PC上位機(jī)的通信程序中,人們常用的編程語言可分為3類:(1) 直接面向底層硬件的匯編語言。(2) DOS環(huán)境下的高級(jí)編程語言,如: C語言等。(3) Windows環(huán)境下的高級(jí)編程語言,如:VC++等。而在這3種方式中Windows環(huán)境下的串口編程以其設(shè)備無關(guān)性,可移植性以及界面友好等特征而得到廣泛應(yīng)用。同時(shí)在Windows操作系統(tǒng)已經(jīng)占據(jù)統(tǒng)治地位的情況下,欲開發(fā)良好的通信程序,利用Windows環(huán)境下的高級(jí)語言已漸成為必然的選擇。開發(fā)Windows環(huán)境下的串口通信程序主要有以下2種方法:(1) 利用Windows API(Application Program Interface)用戶程序接口函數(shù);(2) 利用ActiveX控件;后者的主要特點(diǎn)是簡單易學(xué),但前者的功能更為強(qiáng)大控制手段更為靈活。 PC軟件通信方式的選擇在Win32環(huán)境下串行通信有兩種:主要方式即同步方式,異步方式兩種方式有各自的特點(diǎn)。在軟件設(shè)計(jì)時(shí)應(yīng)根據(jù)實(shí)際情況選擇合適的方式。(1)同步方式在同步方式中,讀串口的函數(shù)試圖在串口的接收緩沖區(qū)中讀取規(guī)定數(shù)目的數(shù)據(jù),直到規(guī)定數(shù)目的數(shù)據(jù)全部被讀出或設(shè)定的超時(shí)時(shí)間已到時(shí)才返回。例如:(以C++ Builder編程語言為例下同)…………………………………………COMMTIMEOUTS cto。int timeConstant, timeMutiplier。 = timeConstant。 //設(shè)置總超時(shí)常數(shù) = timeMutiplier。 //設(shè)置總超時(shí)系數(shù)SetCommTimeouts(m_hFile,amp。cto)。 //超時(shí)設(shè)置……………………………………………………ReadFile (hComport,inBuffer,nWantRead,amp。nRealRead,NULL)
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1