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

正文內(nèi)容

數(shù)字溫度測量儀設(shè)計(編輯修改稿)

2025-07-27 00:59 本頁面
 

【文章內(nèi)容簡介】 [17]的上位機制作Visual Basic是一種可視化的編程語言,利用可視化技術(shù)進行編程,可使應(yīng)用程序的開發(fā)簡單、快捷,可編寫出界面友好、功能強大的應(yīng)用程序。MSComm控件全稱為Microsoft Communications Control,是Microsoft公司提供的ActiveX控件,目的是為了簡化Windows下串行通信編程,它既可以用來提供簡單的串口端口通信功能,也可以用來創(chuàng)建功能完備的、事件驅(qū)動的高級通信工具。MSComm控件在串口編程時非常方便,程序員不必花時間去了解較為復(fù)雜的API函數(shù),而且在Visual Basic、Visual C++、Delphi等語言中均可以使用。 設(shè)計環(huán)境 MSComm控件處理通信的方式MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。它提供下列兩種處理通信的方式。事件驅(qū)動方式事件驅(qū)動通信是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時程序得到通知,例如,在串口接收緩沖區(qū)中有一個字符到達或一個變化發(fā)生時,程序都可以利用MSComm控件的OnComm事件捕獲并處理這些通信事件,OnComm事件還可以檢查和處理通信錯誤。在程序設(shè)計中,可以在OnComm事件處理函數(shù)中加入自己的處理代碼,一旦事件發(fā)生即可自動執(zhí)行該段程序。這種方法的優(yōu)點是程序響應(yīng)及時,可靠性高。查詢方式在程序的每個關(guān)鍵功能完成之后,可以通過檢查CommEvent屬性的值來查詢事件和錯誤。適用于自保持的應(yīng)用程序較小的編程。查詢方式的編程可用計時器或Do…Loop程序?qū)崿F(xiàn)。其實,查詢方式實質(zhì)上還是事件驅(qū)動,但在有些情況下,這種方式顯得更為便捷。 MSComm控件的常用屬性對控件編程首先需要了解它的屬性和事件。下面介紹MSComm控件的一些主要屬性。 MSComm控件的主要屬性屬性描述Commport設(shè)置并返回通信串口號Settings以字符串的形式設(shè)置并返回串口波特率、奇偶校驗、數(shù)據(jù)位、停止位。格式為:=”BBBB,P,D,S”Portopen設(shè)置并返回串口狀態(tài),也可以打開和關(guān)閉串口Input從接收緩沖區(qū)中讀取數(shù)據(jù)并清空緩沖區(qū)Inputlen設(shè)置并返回一次從接收緩沖區(qū)中讀取字節(jié)數(shù)InBufferSize設(shè)置并返回接收緩沖區(qū)的大小,缺省值為1024字節(jié)InBufferCount設(shè)置并返回接收緩沖區(qū)中等待接收的字符數(shù)InputMode設(shè)置并返回接收數(shù)據(jù)的類型。其值為0和1時,分別表示通過Input屬性以文本方式和二進制方式取回數(shù)據(jù)OutBufferSize設(shè)置并返回發(fā)送緩沖區(qū)的大小,缺省值為512字節(jié)OutBufferCount設(shè)置并返回發(fā)送緩沖區(qū)中等待計算機發(fā)送的字符數(shù)Output向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù),該屬性設(shè)計時無效,運行時只讀Rthreshold在MSComm控件設(shè)置ConunEvent屬性為EvReceive并產(chǎn)生OnComm之前,設(shè)置并返回要接收的字符數(shù)其中CommEvent屬性是一個非常重要的屬性。一旦串口發(fā)生通信事件或產(chǎn)生錯誤,依據(jù)產(chǎn)生的事件和錯誤,MSComm控件為CommEvent屬性賦以不同的代碼,同時產(chǎn)生OnComm事件。用戶程序就可在OnComm事件處理程序中針對不同的代碼,進行相應(yīng)的處理。CommEvent屬性的事件代碼、。 CommEvent通信事件代碼、常數(shù)及含義表事件代碼常值含義1ComEvRecive接收到Rthreshold個字符。該事件將連續(xù)產(chǎn)生,直到用Input屬性從接收緩沖區(qū)中讀取并刪除字符2ComEvSend發(fā)送緩沖區(qū)中數(shù)據(jù)少于Sthreshold個,說明串口已經(jīng)發(fā)送了一些數(shù)據(jù),程序可以用Output屬性繼續(xù)發(fā)送數(shù)據(jù)3ComEvCTSClear To Send信號線的狀態(tài)發(fā)生變化4ComEvDSRData Set Ready信號線從1變到05ComEvCDCarrier Detect信號線的狀態(tài)發(fā)生變化6ComEvRing檢測到振鈴信號7ComEvEOF接收到文件結(jié)束符 ComEventnt通信錯誤代碼、常數(shù)及含義表事件代碼常數(shù)含義1001ComEvntBreak接收到一個中斷信號1002ComEvntCTSTOClear To Send信號超時1003ComEvntDSRTOData Set Ready信號超時1004ComEvntFrame禎錯誤1006ComEvntOverrun串口超速1007ComEvntCDTO載波檢測超時1008ComEvntRxOver接收緩沖區(qū)溢出,緩沖區(qū)中已沒有空間1009ComEvntRxParity奇偶校驗錯1010ComEvntTxFull發(fā)送緩沖區(qū)溢出,緩沖區(qū)中已沒有空間1011ComEvntDCB檢測串口的設(shè)備控制塊時發(fā)生錯誤 MSComm控件的使用。編寫程序時,只需要按照下面流程圖,即可實現(xiàn)通信功能。 MSComm控件通信的流程圖 經(jīng)過一段時間的資料查閱,最終程序調(diào)試成功,使用了串口控件,和VB中一些常用的控件。實現(xiàn)了基本的溫度顯示功能、曲線繪制功能截圖如下:DS18B20要求有嚴(yán)格的時序來保證數(shù)據(jù)的完整性。在單線DQ上存在復(fù)位脈沖、應(yīng)答、寫”0”、寫”1”讀”0”和讀”1”幾種型號類型,其中除了應(yīng)答脈沖以外,均有主機產(chǎn)生[18]。DS18B20的復(fù)位時序 DS18B20的復(fù)位時序/******************************************************************//* 復(fù)位 *//******************************************************************/void Init_DS18B20(void){ unsigned char x=0。 DQ = 1。 //DQ復(fù)位 delay(8)。 //稍做延時 DQ = 0。 //單片機將DQ拉低 delay(80)。 //精確延時 大于 480us DQ = 1。 //拉高總線 delay(10)。 x=DQ。 //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(5)。}數(shù)據(jù)位的讀和寫則是通過使用讀、寫是時序?qū)崿F(xiàn)的。首先來看寫時序。當(dāng)主機將數(shù)據(jù)線從高電平拉至低電平時產(chǎn)生寫時序。有兩種類型的寫時序:寫”1”和寫”0”。所有寫時序必須在60us以上(即有高拉低后持續(xù)60us以上),各個寫時序之間必須保證最短1us的恢復(fù)時間。DS18B20在DQ線變低后的15us至60us的窗口時間內(nèi)對DQ線進行采樣,如果為高電平就寫為”1”,如果為低電平就寫為”0”。對于主機產(chǎn)生寫”1”時隙的情況,數(shù)據(jù)線必須先被拉低,然后釋放,在寫時序開始后的15us內(nèi)允許DQ線拉至高電平。對于主機產(chǎn)生寫”0”時隙的情況,DQ線必須被拉至低電平且至少保持低電平60us的時間。 寫時序/******************************************************************//* 寫一個字節(jié) *//******************************************************************/void WriteOneChar(unsigned char dat){ unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。0x01。 delay(5)。 DQ = 1。 dat=1。 }delay(5)。}再來看讀時序。當(dāng)主機從DS18B20讀數(shù)據(jù)時,把數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生讀時序數(shù)據(jù)線DQ必須保持低電平至少1us,來自DS18B20的輸出數(shù)據(jù)在讀時序下降沿之后15us內(nèi)有效,因此在此15us內(nèi),主機必須停止將DQ引腳置低。在讀時序結(jié)束時,DQ引腳將通過外部上拉電阻拉回至高電平。所有的讀時序最短必須持續(xù)60us,各個讀時序之間必須保證最短1us的回復(fù)時間。 讀時序/******************************************************************//* 讀一個字節(jié) *//******************************************************************/unsigned char ReadOneChar(void){unsigned char i=0。unsigned char dat = 0。for (i=8。i0。i) { DQ = 0。 // 給脈沖信號 dat=1。 DQ = 1。 // 給脈沖信號 if(DQ) dat|=0x80。 delay(5)。 } return(dat)。}所有的讀寫時序至少需要60us,且每兩個對立的時序之間至少需要1us的回復(fù)時間。在寫時序中,主機將在拉低總線15us內(nèi)釋放總線,并向DS18B
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1