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

正文內(nèi)容

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

2024-08-08 20:35本頁(yè)面
  

【正文】 WN+40≤WN,T℃=+50 溫度曲線實(shí)際測(cè)量數(shù)據(jù)溫度(℃)12131415161718電壓(V)溫度(℃)19202122232425電壓(V)溫度(℃)26272829303132電壓(V)溫度(℃)33343536373839電壓(V)溫度(℃)40414243444546電壓(V)溫度(℃)47484950515253電壓(V)溫度(℃)54555657585960電壓(V) 圖51 溫度分段線限等效圖 6 通信協(xié)議的設(shè)計(jì)由于溫度采集和實(shí)施控制是通過(guò)單片機(jī)控制系統(tǒng)實(shí)現(xiàn),而微機(jī)完成溫度監(jiān)控,所以需要采用單片機(jī)和微機(jī)之間的通信協(xié)議。 針對(duì)近程小批量的數(shù)據(jù)通信,設(shè)計(jì)時(shí)采用3 線制(RXD ,TXD ,GND)軟握手的零MODEM方式。這樣即可以實(shí)現(xiàn)預(yù)定的任務(wù),又可以簡(jiǎn)化電路設(shè)計(jì)節(jié)約了成本。邏輯0 電平規(guī)定為+5~+15V之間,邏輯1是電平為5 ~15V 之間。下圖即為通信時(shí)的硬件連接圖,其中器件MAX232完成邏輯電平轉(zhuǎn)換的任務(wù)。而這兩方面的問(wèn)題,可靠性是第一位的,速度只能是在可靠的基礎(chǔ)上的速度。 通信協(xié)議概述在設(shè)計(jì)PC單片機(jī)通信協(xié)議時(shí),需說(shuō)明一點(diǎn):在本系統(tǒng)的實(shí)際通信中,PC機(jī)是主控者單片機(jī)只是被動(dòng)接收者。本通信協(xié)議的設(shè)計(jì)思想是基于幀傳輸方式。為了使數(shù)據(jù)快速可靠地傳輸,將每一幀數(shù)據(jù)唯一對(duì)應(yīng)一命令幀。(2) 在PC寫(xiě)數(shù)據(jù)時(shí),遵循“寫(xiě)命令等回應(yīng)報(bào)告”,即PC下達(dá)一寫(xiě)命令(此時(shí)所要寫(xiě)的數(shù)據(jù)含于此命令中),等待單片機(jī)發(fā)來(lái)的“已正確接收”的回應(yīng)信號(hào),并向應(yīng)用程序報(bào)告此命令執(zhí)行完畢。如果連續(xù)三次轉(zhuǎn)輸失敗,則退出通信并向應(yīng)用程序報(bào)告。(2) 寫(xiě)命令幀:當(dāng)PC寫(xiě)數(shù)據(jù)時(shí),PC向PIC16F877A發(fā)送的命令信號(hào)(內(nèi)含所要寫(xiě)的數(shù)據(jù))。(4) 正回應(yīng)幀:當(dāng)PC寫(xiě)數(shù)據(jù)時(shí),PIC16F877A向PC報(bào)告數(shù)據(jù)已正確接收的信號(hào)。(6) 放棄命令幀:當(dāng)PC讀/寫(xiě)數(shù)據(jù)時(shí)出現(xiàn)了使程序無(wú)法正常執(zhí)行時(shí)PC或PIC16F877A向?qū)Ψ桨l(fā)出的退出通信的通知信號(hào)。幀類型(1 Bit): 所用信號(hào)幀的識(shí)別標(biāo)志, 信號(hào)幀分類中的各類型信號(hào)的標(biāo)志字節(jié)。起始地址(2Byte): PC所要訪問(wèn)的器件的存貯器起始地址。校驗(yàn)和(1Byte): 此幀信號(hào)的校驗(yàn)字節(jié),為異或校驗(yàn)。(2) 寫(xiě)命令幀幀頭標(biāo)志幀類型器件地址起始地址長(zhǎng)度數(shù)據(jù)區(qū)校驗(yàn)和幀尾標(biāo)志數(shù)據(jù)區(qū):所要寫(xiě)的數(shù)據(jù)信息。(3) 數(shù)據(jù)幀幀頭標(biāo)志幀類型長(zhǎng)度數(shù)據(jù)區(qū)校驗(yàn)字幀尾標(biāo)志長(zhǎng)度:所轉(zhuǎn)輸數(shù)據(jù)的長(zhǎng)度。其它分析同上。其它分析同上。(6) 放棄幀幀頭標(biāo)志幀類型錯(cuò)誤碼校驗(yàn)字幀尾標(biāo)志錯(cuò)誤碼:00H 執(zhí)行PC命令發(fā)放棄幀回應(yīng)被動(dòng)退出通訊。 通信協(xié)議處理流程(1) 數(shù)據(jù)分幀與數(shù)據(jù)重組 將應(yīng)用程序發(fā)送過(guò)來(lái)的數(shù)據(jù)作為一個(gè)數(shù)據(jù)流放在發(fā)送緩沖區(qū)中,通過(guò)通信協(xié)議進(jìn)行分幀──切割──發(fā)送。單片機(jī)串口通信軟件設(shè)計(jì)流程圖串口接受到一幀數(shù)據(jù)此幀是否正確連續(xù)3次不正確退出通信并報(bào)告讀命令信號(hào)退出等待下一幀重發(fā)命令幀寫(xiě)命令信號(hào)分析此命令開(kāi)始執(zhí)行分析此命令取出數(shù)據(jù)信息發(fā)數(shù)據(jù)幀發(fā)正回應(yīng)數(shù)據(jù)幀退出通信并報(bào)告退出等待下幀命令NYYNYYNN 應(yīng)用程序通知通信開(kāi)始讀還是寫(xiě)發(fā)送讀命令發(fā)送寫(xiě)命令串口收到命令此幀是否正確?連續(xù)三次否退出通信是幀數(shù)據(jù)嗎?重發(fā)命令幀等待下幀信號(hào)處理數(shù)據(jù)是正回應(yīng)幀嗎命令執(zhí)行完畢是重發(fā)幀嗎退出通信并報(bào)告重發(fā)命令幀等待下幀信號(hào)讀寫(xiě)NPC接收數(shù)據(jù)軟件設(shè)計(jì)流程 N N Y Y Y Y Y Y N PC串口通信軟件設(shè)計(jì)流程圖 PC 上位機(jī)的軟件設(shè)計(jì) PC軟件設(shè)計(jì)方法的選擇在開(kāi)發(fā)PC上位機(jī)的通信程序中,人們常用的編程語(yǔ)言可分為3類:(1) 直接面向底層硬件的匯編語(yǔ)言。(3) Windows環(huán)境下的高級(jí)編程語(yǔ)言,如:VC++等。同時(shí)在Windows操作系統(tǒng)已經(jīng)占據(jù)統(tǒng)治地位的情況下,欲開(kāi)發(fā)良好的通信程序,利用Windows環(huán)境下的高級(jí)語(yǔ)言已漸成為必然的選擇。 PC軟件通信方式的選擇在Win32環(huán)境下串行通信有兩種:主要方式即同步方式,異步方式兩種方式有各自的特點(diǎn)。(1)同步方式在同步方式中,讀串口的函數(shù)試圖在串口的接收緩沖區(qū)中讀取規(guī)定數(shù)目的數(shù)據(jù),直到規(guī)定數(shù)目的數(shù)據(jù)全部被讀出或設(shè)定的超時(shí)時(shí)間已到時(shí)才返回。int timeConstant, timeMutiplier。 //設(shè)置總超時(shí)常數(shù) = timeMutiplier。cto)。nRealRead,NULL)。inBuffer 為輸入緩沖區(qū)大小。nRealRead 為實(shí)際讀出的字節(jié)數(shù)。(2)異步方式異步方式中,利用Win32 的多線程結(jié)構(gòu),可以讓串口的讀寫(xiě)操作在后臺(tái)進(jìn)行,而應(yīng)用程序的其它部分在前臺(tái)執(zhí)行例如:………………………………………………………………CreateFile(lpszPort, //打開(kāi)串口GENERIC_READ|GENERIC_WRITE,0,0,…………………………………………OPEN_EXISTING,FILE_FLAG_OVERLAPPED, //允許異步操作0)。COMMTIMEOUTS cto。 = timeConstant。 //設(shè)置總超時(shí)系數(shù)SetCommTimeouts(m_hFile,amp。 //超時(shí)設(shè)置=CreateEvent (,FALSE,NULL)。nRealRead,amp。 //讀串口……………………lpOverlapped 是1個(gè)OVERLAPPED 結(jié)構(gòu)變量,OVERLAPPED 結(jié)構(gòu)用于指出讀寫(xiě)操作與其它操作的重疊為了實(shí)現(xiàn)線程間同步與通信,上面的代碼中用CreateEvent 函數(shù)產(chǎn)生1 個(gè)人工復(fù)位事件,并將其句柄賦予lpOverlapped的hEvent成員這樣,在異步讀寫(xiě)完成時(shí),Windows95發(fā)送該事件信號(hào)。一旦通信線程查詢到數(shù)據(jù)已發(fā)送到串口上,線程自動(dòng)向應(yīng)用程序發(fā)送一個(gè)數(shù)據(jù)接收到的消息,應(yīng)用程序可用該消息來(lái)讀取通信設(shè)備傳來(lái)的數(shù)據(jù)。因此在對(duì)系統(tǒng)強(qiáng)壯性要求較高的場(chǎng)合下應(yīng)采用異步方式。使用同步方式時(shí)容易發(fā)生線程阻塞,從而使系統(tǒng)性能下降。如果不考慮Win95的進(jìn)程和線程的問(wèn)題,僅在串口有數(shù)據(jù)時(shí),去讀串口緩沖區(qū)就可以了??梢圆捎猛睫D(zhuǎn)輸方式的場(chǎng)合有如下一些特點(diǎn):① 何時(shí)轉(zhuǎn)輸數(shù)據(jù)由PC機(jī)來(lái)決定,下位機(jī)只是被動(dòng)接收并執(zhí)行命令。而不會(huì)使PC機(jī)處于長(zhǎng)時(shí)間等待。我們?cè)陂_(kāi)發(fā)串行通信程序時(shí),分別應(yīng)用這兩種方式開(kāi)發(fā)都獲得了成功。串口的打開(kāi)并閉讀取以及寫(xiě)入所用的函數(shù)與操作文件的函數(shù)相同。還是同步操作方式調(diào)用該函數(shù)打開(kāi)串口進(jìn)行讀寫(xiě)操作的例子如下:mHandle = CreateFile(lpszPort, //串口名GENERIC_READ|GENERIC_WRITE, //允許讀/寫(xiě)0, //獨(dú)占方式串口不能共享NULL, //安全性屬性一般設(shè)為0OPEN_EXISTING, //串口是已存在的不能建新端口lpOverlapped, //異步方式0 //串口無(wú)模板文件應(yīng)設(shè)為0)。(2)初始化串口對(duì)串口的初始化工作包括對(duì)波特率,數(shù)據(jù)位,停止位,奇偶校驗(yàn)位I/O 緩沖大小以及超時(shí)等參數(shù)的設(shè)置。要修改串行口的配置應(yīng)該先修改DCB結(jié)構(gòu),然后再調(diào)用SetCommState函數(shù)用指定的DCB結(jié)構(gòu)來(lái)設(shè)置串行口。GetCommState(mHandle, amp。 // 每個(gè)字符有8位=NOPARITY。 // 一個(gè)停止位SetCommState(hCom, amp。如果通信的速率較高則應(yīng)該設(shè)置較大的緩沖區(qū)。如果在指定的時(shí)間內(nèi)沒(méi)有讀出或?qū)懭胫付〝?shù)量的字符,那么ReadFile 或WriteFile 的操作就會(huì)結(jié)束。該函數(shù)會(huì)填充一個(gè)COMMTIMEOUTS 結(jié)構(gòu)調(diào)用SetCommTimeouts 可以用某一個(gè)COMMTIMEOUTS結(jié)構(gòu)的內(nèi)容來(lái)設(shè)置超時(shí)。TimeOuts)??偝瑫r(shí)的計(jì)算公式是:總超時(shí)=時(shí)間系數(shù)要求讀/寫(xiě)的字符數(shù)+ 時(shí)間常數(shù)異步方式讀寫(xiě)串行口時(shí)雖然ReadFile()和WriteFile() 在完成操作以前就可能返回但超時(shí)仍然是起作用的。(3)讀寫(xiě)串口初始化工作完成以后便可以根據(jù)通信協(xié)議合理安排讀/寫(xiě)函數(shù)ReadFile()和WriteFile()以讀寫(xiě)各種握手信息和數(shù)據(jù)信息等。此時(shí)采取的是事件驅(qū)動(dòng)法,即:設(shè)置通信資源上的事件掩碼為EV_RXCHAR 。//PC發(fā)送一組命令至單片機(jī)WriteFile(mHandle, //串口句柄pDataBuff, //存放數(shù)據(jù)緩種區(qū)iLen, //所寫(xiě)數(shù)據(jù)的長(zhǎng)度pdwWritten, //已寫(xiě)長(zhǎng)度操作前應(yīng)置為0lpOverlapped) //異步方式//設(shè)置通信事件掩碼DWORD dwMask=EV_RXCHAR。memset( amp。=CreateEvent(NULL TRUE FALSE NULL)if(!WaitCommEvent(m_hFile, amp。os)) // 重疊操作if(GetLastError()==ERROR_IO_PENDING){// 無(wú)限等待重疊操作結(jié)果GetOverlappedResult(mHandle, amp。dwTrans, true)。如果通信事件一直沒(méi)有發(fā)生則系統(tǒng)將不會(huì)繼續(xù)執(zhí)行。 //關(guān)閉mHandle為打開(kāi)串口時(shí)返回的句柄 單片機(jī)軟件設(shè)計(jì)我們知道影響數(shù)據(jù)轉(zhuǎn)輸產(chǎn)生錯(cuò)誤的因素有:轉(zhuǎn)輸線分布參數(shù)上下位機(jī)間的波特率誤差現(xiàn)場(chǎng)干擾等。所以在單片機(jī)軟件的設(shè)計(jì)時(shí)應(yīng)重點(diǎn)考慮并設(shè)置好波特率。晶振頻率主要由晶體的因有頻率決定,同時(shí)也與電容CC2及外界溫度有一定的關(guān)系。②波特率最大允許誤差分析在異步串行通信方式1中單片機(jī)以16倍波特率的采樣速率對(duì)接收數(shù)據(jù)(RXD)不斷采樣,一旦檢測(cè)到由1到0的負(fù)跳變,16分頻計(jì)數(shù)器立刻復(fù)位,使之滿度翻轉(zhuǎn)的時(shí)刻恰好與輸入位的邊沿對(duì)準(zhǔn)。由此可見(jiàn),當(dāng)波特率的誤差使得在接收某位數(shù)據(jù)位時(shí),采樣點(diǎn)離該位的中點(diǎn)半位間隔時(shí)將會(huì)對(duì)該位采樣兩次。③減小波特率誤差的措施我們知道使用離散度小的晶振是減小波特率誤差的關(guān)鍵。(2)單片機(jī)軟件的實(shí)現(xiàn)①設(shè)置通信方式和波特率的值例…………………………………………
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1