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

正文內(nèi)容

基于單片機(jī)at89c52與rs485的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)(編輯修改稿)

2025-07-24 19:17 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 上電時(shí)也自動(dòng)發(fā)生,因此只要器件一接電緩沖存儲(chǔ)器內(nèi)就應(yīng)該有有效的數(shù)據(jù)可供使用。在此命令發(fā)出之后,對(duì)于總線上主控MCU所發(fā)出的第一個(gè)讀數(shù)據(jù)時(shí)間片,從器件都將輸出其忙的標(biāo)志:0 =忙、1 =準(zhǔn)備就緒。 讀供電狀態(tài)Read Power Supply [B4h] 對(duì)于在此命令送至DS1820 之后所發(fā)出的第一讀出數(shù)據(jù)的操作,從器件都會(huì)給出其電源方式的信號(hào):0 =寄生電源供電、1 =外部電源供電。主函數(shù)的功能是初始化并負(fù)責(zé)溫度的讀出、處理計(jì)算、顯示及傳輸。溫度測(cè)量每2秒進(jìn)行一次,程序流程圖如圖12所示。在測(cè)得溫度后,將溫度數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)的溫度表示,然后再通過查表(在c語言中是一個(gè)數(shù)組),數(shù)據(jù)處理類似于由二進(jìn)制轉(zhuǎn)換為十進(jìn)制,再由十進(jìn)制轉(zhuǎn)換為ASCII碼。溫度數(shù)據(jù)處理程序?qū)?2位的溫度值進(jìn)行BCD碼轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判斷,其程序流程圖如圖13所示,源程序見附錄2。 圖12 DS18B20數(shù)字測(cè)溫主函數(shù)流程圖 圖13 溫度計(jì)算轉(zhuǎn)換函數(shù)程序流程圖 溫度數(shù)據(jù)的處理方法前面提到了DS18B20的轉(zhuǎn)換精度為9~12位,為了提高精度采用12位的話,℃為步進(jìn)的,℃,是實(shí)際的十進(jìn)制溫度值。從前面的圖24的溫度數(shù)據(jù)值格式知道,小數(shù)部分是四位二進(jìn)制數(shù),其范圍為0~F,℃的倍數(shù)。這樣需要4位數(shù)碼管才能完全顯示小數(shù)部分,實(shí)際應(yīng)用中精確到如此的溫度值在一般情況下是沒有必要的,故設(shè)計(jì)1位數(shù)碼管來顯示小數(shù),如表4列出了小數(shù)部分二進(jìn)制和十進(jìn)制的對(duì)應(yīng)關(guān)系,在編程時(shí),溫度小數(shù)部分可以用查表法來實(shí)現(xiàn), 表4 小數(shù)部分二進(jìn)制和十進(jìn)制的對(duì)應(yīng)關(guān)系二進(jìn)制值0123456759ABCDEF十進(jìn)制值0112334456678899 數(shù)據(jù)采集的串口通信協(xié)議通信的基本方式可分為并行通信和串行通信兩種。并行通信是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送。其優(yōu)點(diǎn)是傳送速度快,缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳輸線,適合于近距離傳輸;串行通信是數(shù)據(jù)的各位按順序一位一位傳送。其優(yōu)點(diǎn)是只需要一對(duì)傳輸線,占用硬件資源少,從而降低了傳輸成本,特別適合于遠(yuǎn)程通信,缺點(diǎn)是傳送速度較慢。本系統(tǒng)的下位單片機(jī)和上位PC機(jī)之間數(shù)據(jù)的傳送采用串行通信方式。所謂通信協(xié)議是指通信雙方的一種約定。在約定中對(duì)數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢錯(cuò)方式以及控制字符定義等作出統(tǒng)一規(guī)定,通信雙方必須共同遵守,也叫做通信控制規(guī)程,或稱傳輸控制規(guī)程,它屬于ISO’OSI(國(guó)際標(biāo)準(zhǔn)化組織提出的開放系統(tǒng)互連參考模型)7層參考模型中的數(shù)據(jù)鏈路層。串行通信協(xié)議有兩類:異步通信和同步通信。本系統(tǒng)采用的異步通信方式,故介紹異步通信協(xié)議。 異步通信協(xié)議[11]異步傳輸格式亦稱為起止式異步協(xié)議,其特點(diǎn)是通信雙方以一個(gè)字符(包括特定的附加位)作為數(shù)據(jù)傳輸格式,且發(fā)送方傳送字符的間隔時(shí)間是不定的。一個(gè)字符又稱為一幀信息,每個(gè)字符由4個(gè)部分組成:起始位、數(shù)據(jù)位、奇偶檢驗(yàn)位和停止位。這樣一組信息就稱為一幀數(shù)據(jù)或簡(jiǎn)稱一幀,一幀信息在傳輸時(shí),總是以起始位開始,以停止位結(jié)束。異步傳送的字符格式如圖14所示。圖14導(dǎo)步傳送字符格式起始位為0信號(hào),占用1位,用來表示一幀信息的開始;其后是數(shù)據(jù)位,它可以是5位、6位、7位或8位,傳送時(shí)低位在前,高位在后;再后面的是奇偶校驗(yàn)位(即可編程位),只占一位;最后是停止位,它用邏輯1來表示一幀信息的結(jié)束,可以是1位、1位半或2位。異步通信的特點(diǎn)是數(shù)據(jù)在線路上的傳送不連續(xù),傳送時(shí),字符間隔不固定,各個(gè)字符可以是連續(xù)傳送,也可以是間斷傳送,這完全取決于協(xié)議或約定。間斷傳送時(shí),在停止位后,線路上自動(dòng)保持為1。在異步通信時(shí),通信雙方必須約定:(1)字符格式。雙方事先約定字符的形式,奇偶校驗(yàn)形式及起始位和停止位的規(guī)定。(2)波特率。波特率就是傳送速率,即每秒傳送的二進(jìn)制位數(shù),單位為波特或bit/s。要求發(fā)送端與接收端的波特率一致。異步串行通信的波特率一般為50~4800bit/s。在本系統(tǒng)中,波特率設(shè)為4800bit/s,無奇偶校驗(yàn)位,8位數(shù)據(jù)位,1位起始位,1位停止位,一幀有10位二進(jìn)制數(shù)據(jù)。 單片機(jī)串行口的控制[12][13]串行口的工作主要受串行口控制寄存器SCON的控制,另外也和電源控制寄存器PCON有關(guān)。(1) 串行口控制寄存器SCON用以設(shè)定串行口的工作模式、接收/發(fā)送控制及狀態(tài)標(biāo)志,字節(jié)地址98H,可位尋址,其格式如表5所示。表5串行口控制寄存器SCON的格式D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作模式選擇位,可選擇4種工作模式,見表6所示:表6 串行口工作模式SM0 SM1工作模式功能說明波特率0 0模式0同步移位寄存器方式fosc/120 1模式110位異步接收發(fā)送可變(由定時(shí)器控制)1 0模式211位異步接收發(fā)送fosc/32或fosc/641 1模式311位異步接收發(fā)送可變(由定時(shí)器控制)SM2:多機(jī)通信控制位。主要用于模式2和模式3。若SM2=1,則允許多機(jī)通信。本系統(tǒng)只有一個(gè)從機(jī),故此位置0。在模式1時(shí),若SM1=1,則只有接收到有效停止位時(shí),RI才置1,以便接收下一幀數(shù)據(jù);在模式0時(shí),此位必須為0。REN:允許接收控制位。只有當(dāng)REN=1時(shí),允許招收數(shù)據(jù);否則,禁止招收數(shù)據(jù)。該位相當(dāng)于串行口的開頭,由軟件置1或清零。TB8:在模式2和模式3中,TB8是發(fā)送數(shù)據(jù)的第9位,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。它可作為奇偶校驗(yàn)位(單機(jī)通信),也可以多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。多機(jī)通信時(shí),一般約定:發(fā)送地址幀時(shí),設(shè)置TB8=1;發(fā)送數(shù)據(jù)幀時(shí),設(shè)置TB8=0。在模式0或模式1,該位不用。RB8:在模式2或模式3中,RB8為接收數(shù)據(jù)的第9位,它即可以是約定的奇偶校驗(yàn)位,也可以是約定的地址/數(shù)據(jù)標(biāo)志位,可根據(jù)RB8被置位的情況對(duì)接收數(shù)據(jù)進(jìn)行某種判斷。在模式1時(shí),若SM2=0(即不是多機(jī)通信時(shí)),則RB8是已接收到的停止位。模式0中該位不用。TI:發(fā)送中斷標(biāo)志,在一幀數(shù)據(jù)發(fā)送結(jié)束時(shí)由硬件置位。在模式0中,串行發(fā)送完8位數(shù)據(jù)后,或其他模式發(fā)送到停止位的開始時(shí)由硬件置位。TI=1表示“發(fā)送緩沖器已空”,通知CPU可以發(fā)送下一幀數(shù)據(jù)。TI位可作為查詢,也可作為中斷申請(qǐng)標(biāo)志位,TI不會(huì)自動(dòng)復(fù)位,必須由軟件清零。RI:接收中斷標(biāo)志,在接收到一幀有效數(shù)據(jù)后由硬件置位。在模式0中,接收完8位數(shù)據(jù)后,或其他模式中接收到停止位時(shí)由硬件置位。RI=1表示一幀數(shù)據(jù)接收完畢,并已裝入接收緩沖器中,即表示“接收緩沖已滿”,通知CPU可取走數(shù)據(jù)。該位可作為查詢,也可作為中斷申請(qǐng)標(biāo)志位,同樣RI=1不會(huì)自動(dòng)復(fù)位,必須由軟件清零,以準(zhǔn)備接收下一幀數(shù)據(jù)。(2)電源控制寄存器PCON,字節(jié)地址為87H,不可位尋址,PCON的內(nèi)容如表7所示。表7 PCON按制字格式D7D6D5D4D3D2D1D0SMOD———GF1GF0PDIDLSMOD為波特率倍增位。在模式模式模式3時(shí),若SMOD=1,則波特率提高1倍;若其值為0,則波特率不加倍。復(fù)位時(shí),PCON=00H。 單片機(jī)波特率設(shè)置在本系統(tǒng)中,波特率設(shè)為4800bit/s,一幀包含10位數(shù)據(jù),故可以使串行口工作在模式1中,即SM0=0,SM1=1。在模式1中,波特率由定時(shí)器T1的溢出率與SMOD共同確定,即 (1)當(dāng)T1做波特率發(fā)生器時(shí),使T1工作在模式2(初值自動(dòng)重載)定時(shí)方式,若計(jì)初值為X,則每過“256X”個(gè)機(jī)器周期,定時(shí)器就會(huì)產(chǎn)生一次溢出。為了避免因溢出引起的中斷,此時(shí)應(yīng)禁止中斷。溢出率為 (2)因此 (3)定時(shí)器T1工作在模式2時(shí)自動(dòng)重載初始值為 (4)當(dāng)晶振選為12MHz為減少計(jì)數(shù)誤差,波特率選為4800bit/s時(shí),設(shè)置SMOD=1,X=F3H。 單片機(jī)串行通信程序設(shè)計(jì)進(jìn)行串口數(shù)據(jù)通信,它包括串口初始化,波特率及數(shù)據(jù)格式設(shè)置,在此系統(tǒng)中波特率設(shè)為4800bit/s傳輸數(shù)據(jù)位設(shè)為8,奇偶校驗(yàn)設(shè)為N(無奇偶檢驗(yàn))即可;單片機(jī)通過檢測(cè)串口控制寄存器SCON中的接收中斷標(biāo)志位RI的狀態(tài)來決定是否要進(jìn)行通信,其串口通信的程序流程圖如圖15所示,源程序見附錄3。 圖15單片機(jī)串口通信流程圖相應(yīng)的串口設(shè)置程序如下:TMOD=0x20。 //定時(shí)器1工作在模式2(自動(dòng)重載初值)。TL1=0xF3。 TH1=0xF3。 //在12M晶振下,設(shè)置波特率為//4800bit/s時(shí),定時(shí)器T1的計(jì)數(shù)初值。SCON=0x50。PCON=0x00。 //設(shè)置串行口工作在方式1,//REN=1,波特率倍增系數(shù)SMOD=1。TR=1。 IE=0x90。 //啟動(dòng)定時(shí)器1,允許串口中斷 人機(jī)界面的設(shè)計(jì)Microsoft Communications Control(簡(jiǎn)稱MSComm)是Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法,在Visual Basic、VC、Delphi等語言中均可使用。 PC機(jī)編程軟件的選用[13][14]PC機(jī)采用Visual Basic (簡(jiǎn)稱VB)編程。VB已成為WINDOWS系統(tǒng)開發(fā)的主要語言,以其高效、簡(jiǎn)單易學(xué)及功能強(qiáng)大的特點(diǎn)越來越為廣大程序設(shè)計(jì)人員及用戶所青睞。VB支持面向?qū)ο蟮某绦蛟O(shè)計(jì),具有結(jié)構(gòu)化的事件驅(qū)動(dòng)編程模式并可以使用無限擴(kuò)增的控件,而且可以十分簡(jiǎn)便地做出良好的人機(jī)界面。在標(biāo)準(zhǔn)串口通信方面,VB提供了具有強(qiáng)大功能的通信控件MSCOMM。該控件可設(shè)置串行通信的數(shù)據(jù)發(fā)送和接收,對(duì)串口狀態(tài)及串口通信的信息格式和協(xié)議進(jìn)行設(shè)置。這是一個(gè)標(biāo)準(zhǔn)的十位串口通信,包括8位標(biāo)準(zhǔn)數(shù)據(jù)和數(shù)據(jù)的起始位和停止位。在發(fā)送或接收數(shù)據(jù)過程中觸發(fā)OnComm事件,通過編程訪問CommEvent屬性了解通信事件的類型,分別進(jìn)行各自的處理。每個(gè)通信控件對(duì)應(yīng)一個(gè)串口,可以設(shè)計(jì)多個(gè)通信控件來訪問多個(gè)通信口。 MSComm控件的屬性Commport:設(shè)置或返回通信連接端口代號(hào)(1~16)。語法 [value ] (value 一整型值,說明端口號(hào))。在設(shè)計(jì)時(shí),value 可以設(shè)置成從1到16的任何數(shù)(缺省值為 1)。但是如果用 PortOpen 屬性打開一個(gè)并不存在的端口時(shí),MSComm控件會(huì)產(chǎn)生錯(cuò)誤68(設(shè)備無效)。必須在打開端口之前設(shè)置CommPort屬性。Settings:設(shè)置初始化參數(shù)。語法:[= value]。當(dāng)端口打開時(shí),如 value 非法,則MSComm控件產(chǎn)生錯(cuò)誤380(非法屬性值)。其格式為“BBBB,P,D,S”其中BBBB為波特率,P為字符校驗(yàn)方式,D為數(shù)據(jù)位,S為停止位。例如:“4800,N,8,1”。Portopen:設(shè)置或返回通信連接端口的狀態(tài)。Input:從輸入寄存器返回并刪除字符。inputlen:設(shè)置并返回Input屬性從接收緩沖區(qū)讀取的字符數(shù)。語法 [ = value]。InputLen屬性語法包括下列部分:value 整型表達(dá)式,說明Input屬性從接收緩沖區(qū)中讀取的字符數(shù)。InputLen屬性的缺省值是0。設(shè)置InputLen為0時(shí),使用Input將使MSComm控件讀取接收緩沖區(qū)中全部的內(nèi)容。若接收緩沖區(qū)中InputLen字符無效,Input屬性返回一個(gè)零長(zhǎng)度字符串 ()。在使用Input前,用戶可以選擇檢查InBufferCount屬性來確定緩沖區(qū)中是否已有需要數(shù)目的字符。該屬性在從輸出格式為定長(zhǎng)數(shù)據(jù)的機(jī)器讀取數(shù)據(jù)時(shí)非常有用。InputMode常數(shù)語法:常數(shù)值描述:InputModeText0(缺?。┩ㄟ^Input屬性以文本方式取回?cái)?shù)據(jù);InputModeBinary1通過Input屬性以二進(jìn)制方式檢取回?cái)?shù)據(jù)。OnComm常數(shù)。常數(shù)值描述如下:EvSend: 發(fā)送事件;EvReceive: 接收事件;EvCTS: cleartosend 線變化;EvDSR: dataset ready 線變化;EvCD: carrier detect 線變化;EvRing: 振鈴檢測(cè);EvEOF: 文件結(jié)束。 PC人機(jī)界面設(shè)計(jì)PC機(jī)采用Visual Basic(簡(jiǎn)稱VB)編程,在標(biāo)準(zhǔn)串口通信方面應(yīng)用通信控件MSComm。MSComm控件的使用方法如下:(1) MSComm控件的加入。,因此首先要把它加入到工具欄中。在VB運(yùn)行后選擇“工程/部件”選項(xiàng)卡或在常
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1