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

正文內(nèi)容

基于51單片機(jī)的溫度數(shù)據(jù)采集傳輸系統(tǒng)的設(shè)計(jì)-閱讀頁(yè)

2025-07-13 00:17本頁(yè)面
  

【正文】 小。鑒于應(yīng)用異步方式的安全性和普遍性 具體實(shí)現(xiàn)方法下面以C++ Builder 為例,敘述 PC機(jī)通信軟件的實(shí)現(xiàn)過(guò)程:1. 串口在Win32中,串口和其他通信設(shè)備是作為文件處理的。通信會(huì)話由調(diào)用CreateFile 函數(shù)打開(kāi)串口開(kāi)始,CreateFile 以讀訪問(wèn)權(quán)限,寫訪問(wèn)權(quán)限或讀寫訪問(wèn)權(quán)限“打開(kāi)串口” 并設(shè)定了對(duì)其是異步操作方式。如果調(diào)用成功函數(shù)返回串口的句柄賦給Handle ,如果調(diào)用失敗則函數(shù)返回INVALID_HANDLE_VALUE。在調(diào)用API 函數(shù)進(jìn)行串口初始化時(shí),波特率,數(shù)據(jù)位,奇偶校驗(yàn)停止位的信息包含于一個(gè)DCB結(jié)構(gòu)中,而超時(shí)方面的信息則包含于COMMTIMEOUTS結(jié)構(gòu)中,一般在用CreateFile 打開(kāi)串行口后,可以調(diào)用 GetCommState 函數(shù)來(lái)獲取串行口的初始配置。例如:DCB dcb。dcb) //讀取DCB 結(jié)構(gòu)=9600 // 設(shè)置波特率為9600b/s=8。 // 無(wú)校驗(yàn)=ONESTOPBIT。dcb) // 保存至DCB結(jié)構(gòu)使設(shè)置值生效調(diào)用SetupComm 函數(shù)可以設(shè)置串行口的輸入和輸出緩沖區(qū)的大小。例如:SetupComm( mHandle , 1024*2, 1024*2 ) //輸入輸出緩沖區(qū)的大小均為2K在用ReadFile 和WriteFile 讀寫串行口時(shí),需要考慮超時(shí)問(wèn)題。要查詢當(dāng)前的超時(shí)設(shè)置應(yīng)調(diào)用GetCommTimeouts 函數(shù)。TimeOuts. ReadIntervalTimeout=0 //讀間隔超時(shí)=10 //讀時(shí)間系數(shù)=100 //讀時(shí)間常量=10 //寫時(shí)間系數(shù)=100 //寫時(shí)間常數(shù)SetCommTimeouts(hCom, amp。 // 保存設(shè)置值生效COMMTIMEOUTS結(jié)構(gòu)的成員都以毫秒為單位。這種情況下,超時(shí)規(guī)定的是操作的完成時(shí)間而不是ReadFile() 和WriteFile()的返回時(shí)間。其中何時(shí)讀取單片機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù)信息及應(yīng)答信息是重要的。當(dāng)接收到一個(gè)字符并放入緩沖區(qū)后即通知應(yīng)用程序例。SetCommMask(m_hFile,dwMask)) //設(shè)置通信事件掩碼//等待通信事件的發(fā)生OVERLAPPED os 。os, 0, sizeof( OVERLAPPED ) ) 。dwEvtMask, amp。os, amp。//事件已發(fā)生安排讀操作ReadFile(mHandle, //串口句柄pDataBuff, //存放數(shù)據(jù)緩種區(qū)iLen, //所讀數(shù)據(jù)的長(zhǎng)度pdwRead, //實(shí)際所讀長(zhǎng)度lpOverlapped) //異步方式}在上例中,我們無(wú)限等待通信事件的發(fā)生。在實(shí)際程序設(shè)計(jì)中我們可以設(shè)置一時(shí)限,超過(guò)此時(shí)限通信事件未到則執(zhí)行相應(yīng)錯(cuò)誤處理此時(shí),只需將GetOverlappedResult函數(shù)替換為WaitForSingleObject 函數(shù)此函數(shù)的聲明形式如下:WaitForSingleObject(HANDLE hEvent, //事件句柄unsigned long mTimeOuts //超時(shí)設(shè)置)4 關(guān)閉串口通信完畢調(diào)用CloseHandle() 函數(shù)關(guān)閉串口例如CloseHandle(mHandle)。而針對(duì)近程小批量數(shù)據(jù)的通信,下位機(jī)的波特率誤差性是影響可靠通信的最主要因素。 波特率(1)波特率誤差來(lái)源分析1 單片機(jī)的振蕩電路是由晶體及電容C1 和C2 構(gòu)成。另外,晶體頻率的標(biāo)稱值與實(shí)際值也不可能完全一致。16分頻計(jì)數(shù)器把每個(gè)接收位的時(shí)間分為16 份,在中間三位即7 ,8 ,9 ,狀態(tài)時(shí)位檢測(cè)器對(duì)RXD 端的值采樣,并以3取2的表決方式確定所接收的數(shù)據(jù)位。即:欲使接收的第N 位為正確位時(shí),須滿足下式成立:所允許的波特率誤差N 故當(dāng)所傳輸?shù)囊粠瑪?shù)據(jù)為10 位時(shí),所允許的最大的波特率允許誤差為5 % 對(duì)于其它常用的8位,9位,11位,一幀的串行傳輸,其最大的%,%, %。如果,晶振的離散度已超過(guò)所允許的范圍,此時(shí)不宜用其標(biāo)稱值,可以采用測(cè)量其波特率的方法來(lái)得出實(shí)際的晶振波特率值。(1)本設(shè)計(jì)使用的單片機(jī)程序如下:include //*************************void INIT(){ADCON1=0X07。TRISB=0X00。 RD1=0。 TRISA=0X0f。}//*************************include include include //*************************unsigned char i。extern unsigned char a。extern unsigned char templ。for(delay=65536。delay) asm(clrwdt)。templ=0x30。 PROCDIANPIN()。 RC1=0。}include include //*********************union adres{int y1。}adresult。 unsigned int temp。unsigned char receive。extern unsigned char rxbuf[]。unsigned char templ。//******************************void PROCDIANPIN(){ADCON0=0X89。ADIF=0。for(delay=0x8ff。delay) asm(nop)。}asm(clrwdt)。[0]=ADRESL。if((=0x204)amp。(=0xD9)){temp=0x10。=y。if(temp==0x1a) temp=0x20。if(temp==0x3a) temp=0x40。 if(temp==0x5a) temp=0x60。 if(temp==0x7a) temp=0x80。 if(temp==0x9a) temp=0x100。 RC0=1。 if(rxbuf[0]!=0){ if((rxbuf[0]==0x10)amp。(rxbuf[1]==0xff)) receive=0xff。 temph=rxbuf[2]。 a=0xff。 else RD0=0。 else RD1=0。amp。RD0=0。}for(delay=0xFff。delay) asm(nop)。unsigned char rxbuf[5]。unsigned char s_uart_buf。extern unsigned char i。//start bitfor(s_uart_buf=0。s_uart_buf++)continue。0x01)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x02)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x04)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x08)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x10)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x20)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x40)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。0x80)RC6=1。for(s_uart_buf=0。s_uart_buf++)asm(nop)。//stop bitfor(s_uart_buf=0。s_uart_buf++)asm(nop)。while(1){if(!RC7) break。s_uart_buf46。//receive bitfor(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。for(s_uart_buf=0。s_uart_buf++)asm(nop)。s_uart_buf10。return rx_lo_buf。i5。for(i=0x04。i){asm(clrwdt)。for(delay=65535。delay){asm(clrwdt)。}}if(RC7==1) {goto rxend。i5。if(rxbuf[i]==0x21) break。} 通信協(xié)議設(shè)計(jì)結(jié)論 通信可靠性分析通信的可靠性主要體現(xiàn)在所使用通信協(xié)議的可靠性上,本通信協(xié)議的可靠性主要有兩點(diǎn)理論基礎(chǔ):(1)通過(guò)判斷幀頭起始字符來(lái)決定一幀的開(kāi)始,這樣就避免了部分?jǐn)?shù)據(jù)進(jìn)入到內(nèi)部數(shù)據(jù)處理之中。 另外通過(guò)幀類型字節(jié)的判斷可使之進(jìn)一步降低。如果將此異或校驗(yàn)改為CRC校驗(yàn)則出錯(cuò)的可能性更是微乎其微了。在實(shí)際應(yīng)用中,應(yīng)用本通信時(shí)傳輸距離只有幾米以內(nèi)而且環(huán)境干擾比較小,從而從外部因素上進(jìn)一步保證了通信的可靠性。每接收一幀數(shù)據(jù)時(shí),需要附加13 個(gè)字節(jié)其中5 個(gè)字節(jié)用于接收8 個(gè)字節(jié)用于應(yīng)答。發(fā)送數(shù)據(jù)速率、接收數(shù)據(jù)速率計(jì)算公式如下:發(fā)送數(shù)據(jù)速率:9600*32/44=6981bit/s接收數(shù)據(jù)速率:9600*32/45=6826bit/s這是理論上的速率,實(shí)際中還應(yīng)包含PC和PIC16F877A單片機(jī)的處理信號(hào)幀,等待信號(hào)幀的時(shí)間。在實(shí)際應(yīng)用中,因具體應(yīng)用環(huán)境不同PC 和PIC16F877A 單片機(jī)處理信號(hào)幀的時(shí)間會(huì)有不同,所以具體速率值依具體應(yīng)用而變化。比如在合理布線,檢查裝配無(wú)誤的情況下,如果還出現(xiàn)電路無(wú)輸出的情況,那么可以肯定是原理圖錯(cuò)誤,這時(shí)就要回到原理圖進(jìn)行檢查。這次畢業(yè)設(shè)計(jì)歷時(shí)至少 3 個(gè)月,從一開(kāi)始的確定課題,到后來(lái)的資料查找、理論學(xué)習(xí),再有就是近來(lái)的調(diào)試和測(cè)試過(guò)程,這一切都使我的理論知識(shí)和動(dòng)手能力進(jìn)一步得到頻率合成電路課題中包含了通信電路和單片機(jī)部分知識(shí),可以說(shuō)是對(duì)通信電路知識(shí)的一次全面綜合。雖然在制作過(guò)程中不可避免地遇到很多問(wèn)題,但是最后還是在老師以及同學(xué)的幫助下圓滿解決了這些問(wèn)題,實(shí)現(xiàn)了整個(gè)系統(tǒng)設(shè)計(jì)與最后調(diào)試,相關(guān)指標(biāo)達(dá)到期望的要求,很好地完成了本次設(shè)計(jì)任務(wù)。從得到題目到查找資料,從對(duì)題目的研究設(shè)定到 PCB 電路板的制作,從電路板的調(diào)試到失敗后再一次全部重新開(kāi)始……在這一個(gè)充滿挑戰(zhàn)伴隨挫折,充滿熱情伴隨打擊的過(guò)程中,我感觸頗深,它已不僅是一個(gè)對(duì)我四年學(xué)習(xí)知識(shí)情況和我的應(yīng)用動(dòng)手能力的檢驗(yàn),而且還是對(duì)我的鉆研精神,面對(duì)困難的心態(tài),做事的毅力和耐心的考驗(yàn)。本課題的重點(diǎn)、難點(diǎn)是:(1) 初步接觸溫度傳感器,要對(duì)傳感器的原理、結(jié)構(gòu)、應(yīng)用等各方面從頭開(kāi)始琢磨;(2) 考慮從非電量信號(hào)到電量信號(hào)的電路實(shí)現(xiàn)原理以及與單片機(jī)的接口;(3) 熟悉 RS232C 串口編程的技術(shù);(4) 考究調(diào)整電路的實(shí)現(xiàn)過(guò)程以及怎么樣通過(guò)單片機(jī)來(lái)間接的控制。為以后從事單片機(jī)軟硬件產(chǎn)品的設(shè)計(jì)開(kāi)發(fā)、PC 軟件開(kāi)發(fā)打下了良好的基礎(chǔ),樹(shù)立獨(dú)立從事產(chǎn)品研發(fā)的信心,并在這種能力上得到了比較充分的鍛煉。自始至終關(guān)心督促畢業(yè)設(shè)計(jì)進(jìn)程和進(jìn)度。還不斷向我們傳授分析問(wèn)題和解決問(wèn)題的辦法,并指出了正確的努力方向,使我在畢設(shè)過(guò)程中少走很多彎路。在此,我向身邊關(guān)心我的同學(xué)致以誠(chéng)摯的謝意!另外,學(xué)院里的領(lǐng)導(dǎo)和老師也給了我們必要的指導(dǎo),我也向?qū)W院和年級(jí)的領(lǐng)導(dǎo)們表示衷心的感謝!最后感謝學(xué)院對(duì)我這幾年
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1