【正文】
D/32) ( T1溢出率) 當(dāng) T1作為波特率發(fā)生器時(shí),最典型的用法是使 T1工作在自動(dòng)再裝入的 8位定時(shí)器方式(即方式 2,且 TCON的 TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于 TH1中的計(jì)數(shù)值。 T1 溢出率 = fosc /{12 [256 -( TH1) ]} 在單片機(jī)的應(yīng)用中,常用的晶振頻率為: 12MHz和 。所以,選用的波特率也相對(duì)固定。常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。 串行口工作之前,應(yīng)對(duì)其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器 串行口控制和中斷控制。具體步驟如下: ?確定 T1的工作方式 (編程 TMOD寄存器); ?計(jì)算 T1的初值 ,裝載 TH TL1; ?啟動(dòng) T1(編程 TCON中的 TR1位); ?確定 串行口控制 (編程 SCON寄存器); 串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程 IE、 IP寄存器)。 單片機(jī)串行口應(yīng)用舉例 在計(jì)算機(jī)組成的測(cè)控系統(tǒng)中,經(jīng)常要利用串行通信方式進(jìn)行數(shù)據(jù)傳輸。 80C51單片機(jī)的串行口為計(jì)算機(jī)間的通信提供了極為便利的條件。利用單片機(jī)的串行口還可以方便地?cái)U(kuò)展鍵盤和顯示器,對(duì)于簡(jiǎn)單的應(yīng)用非常便利。這里僅介紹單片機(jī)串行口在通信方面的應(yīng)用。 單片機(jī)與單片機(jī)的通信 一、點(diǎn)對(duì)點(diǎn)的通信 硬件連接 R 2 I NT 2 O U TT X DR X DM A X 2 3 2 AT 1 I NG N DR 2 O U TT 1 O U T8 0 C 5 1T X DR X D8 0 C 5 1G N DR 1 I NT 2 O U TM A X 2 3 2 AG N DR 2 I NR 1 O U T系 統(tǒng) 1 系 統(tǒng) 2T 2 I N二、多機(jī)通信 硬件連接 單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常采用總線型主從式結(jié)構(gòu)。所謂主從式,即在數(shù)個(gè)單片機(jī)中,有一個(gè)是主機(jī),其余的是從機(jī),從機(jī)要服從主機(jī)的調(diào)度、支配。 80C51單片機(jī)的串行口方式 2和方式 3適于這種主從式的通信結(jié)構(gòu)。當(dāng)然采用不同的通信標(biāo)準(zhǔn)時(shí),還需進(jìn)行相應(yīng)的電平轉(zhuǎn)換,有時(shí)還要對(duì)信號(hào)進(jìn)行光電隔離。在實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用 RS485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。 T X DR X D主 機(jī)T X DR X D1 號(hào) 從 機(jī)T X DR X D2 號(hào) 從 機(jī)T X DR X DN 號(hào) 從 機(jī)? ?通信協(xié)議 ?所有從機(jī)的 SM2位置 1,處于接收地址幀狀態(tài)。 ?主機(jī)發(fā)送一地址幀,其中 8位是地址,第 9位為地址 /數(shù)據(jù)的區(qū)分標(biāo)志,該位置 1表示該幀為地址幀。 ?所有從機(jī)收到地址幀后,都將接收的地址與本機(jī)的地址比較。對(duì)于地址相符的從機(jī),使自己的 SM2位置0(以接收主機(jī)隨后發(fā)來(lái)的數(shù)據(jù)幀),并把本站地址發(fā)回主機(jī)作為應(yīng)答;對(duì)于地址不符的從機(jī),仍保持SM2=1,對(duì)主機(jī)隨后發(fā)來(lái)的數(shù)據(jù)幀不予理睬。 ?從機(jī)發(fā)送數(shù)據(jù)結(jié)束后,要發(fā)送一幀校驗(yàn)和,并置第 9位( TB8)為 1,作為從機(jī)數(shù)據(jù)傳送結(jié)束的標(biāo)志。 ?主機(jī)接收數(shù)據(jù)時(shí)先判斷數(shù)據(jù)接收標(biāo)志( RB8),若RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗(yàn)和,若正確則回送正確信號(hào) 00H,此信號(hào)命令該從機(jī)復(fù)位(即重新等待地址幀);若校驗(yàn)和出錯(cuò),則發(fā)送0FFH,命令該從機(jī)重發(fā)數(shù)據(jù)。若接收幀的 RB8=0,則存數(shù)據(jù)到緩沖區(qū),并準(zhǔn)備接收下幀信息。 ?主機(jī)收到從機(jī)應(yīng)答地址后,確認(rèn)地址是否相符,如果地址不符,發(fā)復(fù)位信號(hào)(數(shù)據(jù)幀中 TB8=1);如果地址相符,則清 TB8,開(kāi)始發(fā)送數(shù)據(jù)。 ?從機(jī)收到復(fù)位命令后回到監(jiān)聽(tīng)地址狀態(tài)( SM2=1)。否則開(kāi)始接收數(shù)據(jù)和命令。 應(yīng)用程序 ?主機(jī)發(fā)送的地址聯(lián)絡(luò)信號(hào)為: 00H, 01H, 02H , … … (即從機(jī)設(shè)備地址),地址 FFH為命令各從機(jī)復(fù)位,即恢復(fù) SM2=1。 ?主機(jī)命令編碼為: 01H,主機(jī)命令從機(jī)接收數(shù)據(jù); 02H,主機(jī)命令從機(jī)發(fā)送數(shù)據(jù)。其它都按 02H對(duì)待。 RRDY=1:表示從機(jī)準(zhǔn)備好接收。 TRDY=1:表示從機(jī)準(zhǔn)備好發(fā)送。 ERR=1: 表示從機(jī)接收的命令是非法的。 程序分為主機(jī)程序和從機(jī)程序。約定一次傳遞數(shù)據(jù)為 16個(gè)字節(jié),以 01H地址的從機(jī)為例 。 ? 1給單片機(jī)時(shí),蜂鳴器以 400ms頻率發(fā)聲,發(fā) 2時(shí)以 200ms頻率發(fā)聲,發(fā) 3時(shí)以 100ms頻率發(fā)聲,發(fā) 4時(shí)關(guān)閑蜂鳴器。 ? 2400bps從計(jì)算機(jī)發(fā)送任一字節(jié)數(shù)據(jù),當(dāng)單片機(jī)收到該數(shù)據(jù)后,在此數(shù)據(jù)前加上一序號(hào)然后連同此數(shù)據(jù)一起發(fā)送至計(jì)算機(jī),當(dāng)序號(hào)超過(guò) 255時(shí)歸零。 ? 16進(jìn)制發(fā)送一個(gè) 065536之間的任一數(shù),當(dāng)單片機(jī)收到后在數(shù)碼管上動(dòng)態(tài)顯示出來(lái),波特率自定。 ? 3. 用 AD以 1HZ的頻率采集模擬信號(hào),然后轉(zhuǎn)換成數(shù)字量,再將其以 1200bps發(fā)送到計(jì)算機(jī),在計(jì)算機(jī)上顯示。 ? 1200bps發(fā)送, 1, 2, 3,4,第二行時(shí)以 2400bps發(fā)送 5, 6, 7, 8,第三行以 4800bps發(fā)送, 9, 10, 11, 12,第四行以9600pbs 發(fā)送, 13, 14, 15, 16.