當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]   51單片機(jī)和IBM - PC機(jī)是目前我國應(yīng)用最廣的兩種微型計算機(jī)。作為單片機(jī),51單片機(jī)不但功能強(qiáng),體積小,價格低,而且使用方便,特別市場上提供的多種51單片機(jī)開發(fā)系統(tǒng),為開發(fā)應(yīng)用51單片機(jī)提供了非常

  51單片機(jī)和IBM - PC機(jī)是目前我國應(yīng)用最廣的兩種微型計算機(jī)。作為單片機(jī),51單片機(jī)不但功能強(qiáng),體積小,價格低,而且使用方便,特別市場上提供的多種51單片機(jī)開發(fā)系統(tǒng),為開發(fā)應(yīng)用51單片機(jī)提供了非常方便的手段。因此,51單片機(jī)在許多領(lǐng)域,特別是工業(yè)控制和智能儀器領(lǐng)域已得到廣泛的應(yīng)用。事實(shí)已證明,51單片機(jī)已成為8位微機(jī)之首。作為系統(tǒng)機(jī),IBM - PC的優(yōu)點(diǎn)已眾所周知,可以說,IBM - PC微機(jī)的出現(xiàn)為微機(jī)領(lǐng)域帶來了一場革命。在我國,由于漢字操作系統(tǒng)(CCDOS)的引入,使得IBM - PC在各個領(lǐng)域得到迅速的推廣使用。
  
  串行通信是計算機(jī)進(jìn)行數(shù)據(jù)通信的主要方式之一。由于其連線少,成本低,再加上有調(diào)制/解調(diào)功能,因而特別適合于距離較遠(yuǎn),且通信點(diǎn)較多的場合,如各種計算機(jī)網(wǎng)絡(luò)和分布式系統(tǒng)等。RS - 232C是最常用的一種串行通信標(biāo)準(zhǔn)。在IBM - PC微機(jī)中,一般都有1~2個標(biāo)準(zhǔn)RS - 232C串行口,簡稱COM1和COM2。利用這兩個串行口,IBM - PC可以與其他數(shù)字設(shè)備(計算機(jī))進(jìn)行一般的數(shù)據(jù)傳送,或構(gòu)成局部網(wǎng)絡(luò)、多用戶系統(tǒng)和分布式控制系統(tǒng)等。
  
  51單片機(jī)片內(nèi)即含有一個全雙工的串行口,并具有多機(jī)通信功能,可以方便地構(gòu)成多機(jī)控制系統(tǒng)。但是,由于51單片機(jī)的串行口并非標(biāo)準(zhǔn)的RS -232C,加上其波特率是采用系統(tǒng)時鐘由內(nèi)部通用定時器產(chǎn)生的,誤差大;而其數(shù)據(jù)處理速度也比系統(tǒng)機(jī)低得多。因此當(dāng)其與IBM - PC微機(jī)進(jìn)行串行數(shù)據(jù)通信,特別是構(gòu)成分布式多機(jī)控制系統(tǒng)時,將會遇到許多意想不到的技術(shù)問題,諸如硬件連接、波特率選擇、數(shù)據(jù)同步以及多機(jī)通信控制等。我們根據(jù)多年的實(shí)踐經(jīng)驗(yàn),對這些問題提出了一些具體解決辦法,供廣大同行參考。
  
  一、硬件連接
  
  RS - 232C采用負(fù)邏輯。其電平范圍通常為:邏輯1=-3~-15 V;邏輯0=+3~+15 V。由于51單片機(jī)的串行口是TTL電平,故必須進(jìn)行電平轉(zhuǎn)換,一般都采用MC1488(輸出)和MC1489(輸入)來完成。其連接方法如圖1- 32所示。圖中,MC1488采用土12 V電源,MC1489采用+5 V電源。IBM - PC串行口中的第4腳RTS(請求發(fā)送,輸出)與第5腳CTS(清除發(fā)送,輸入),以及第6腳DSR(數(shù)據(jù)裝置準(zhǔn)備好,輸入)與第20腳DTR(數(shù)據(jù)終端準(zhǔn)備好,輸出)分別連接在一起,主要是因?yàn)镻C機(jī)BIOS中的INT14H(串行通信程序)在接收和發(fā)送數(shù)據(jù)時,均要判別CTS和DSR是否有效。如果用戶自己編制通信程序,采用判斷收/發(fā)緩沖區(qū)是否滿/空的辦法來完成數(shù)據(jù)輸入/輸出,則可不必短接。


  
  順便指出,IBM - PC及其兼容機(jī)串行口中的電平轉(zhuǎn)換器通常有兩種:老式原裝機(jī)和長城0520機(jī),采用7515075154。而一般的兼容機(jī)均用75188( MC1488)/75189 (MC1489)。1489中的每個接收門均有一個閾值電平控制端。當(dāng)該腳開路或接一電容C至地時,其閾值電平VT =1. 1~1. 25 V,即當(dāng)Vi≤1.1 V時,V。=1;V1≥1. 25 V時,V0=0。不難看出,這種電平與TTL電平具有兼容性。因此,圖1- 32中1488和1489均可用普通TTL反相器代換,從而省去了土12 V電源。但要注意的是,替換1488的反相器最好用OC門,以便擴(kuò)大電平范圍和增加驅(qū)動電流;而替換1489的反相器輸入端應(yīng)加雙向二極管電平箝位。此外,這種接法傳送距離不宜太長,一般應(yīng)在3m以內(nèi)(標(biāo)準(zhǔn)RS - 232C電平傳送距離可達(dá)15 m以上),距離過長,因兩端地電位不一致以及噪聲干擾會導(dǎo)致電平范圍出錯。
  
  上述做法雖然省去了士12 V電源,但只適合于使用MC1488/1489的PC機(jī),且傳送距離近。為了與標(biāo)準(zhǔn)RS - 232C電平兼容,又不用±12 V電源,可采用圖1- 33所示的準(zhǔn)RS -232C電平轉(zhuǎn)換電路。圖中虛線框內(nèi)電路產(chǎn)生-7.0~-9.0 V的負(fù)電壓。其工作原理是,由CMOS反相器F1和F2構(gòu)成的多諧振蕩器產(chǎn)生f=0.7 MHz的方波,經(jīng)F3和F4雙門驅(qū)動后,高電平時對Cl充電,低電平時,Cl反過來又對C2充電,從而在C2上產(chǎn)生一定的負(fù)電壓。這里采用CMOS反相器,主要是為了降低其自身的功耗以及提高高電平電壓。值得一提的是,如果8031的ALE腳負(fù)載不重,亦可直接利用它作為時鐘源(1 MHz),這時由Fi和F2構(gòu)成的多諧振蕩器就可省去了;不過C1和C2要適當(dāng)加大些。

  產(chǎn)生負(fù)電源還有一種既簡單,又實(shí)用的方法,如圖1- 34所示。如果將RTS引出,亦可產(chǎn)生正電壓而代替圖1- 33中的+5 V,這樣可進(jìn)一步擴(kuò)大電平范
圍。但要注意的是,圖1- 34中正負(fù)電壓是從信號中提取的,其驅(qū)動能力差,因此不宜帶過重的負(fù)載。
  
  從圖1- 33中可以看出,這種電平轉(zhuǎn)換電路省去了±12 V電源,而且僅用2只廉價的三極管取代了較貴的1488/1489,因而大大降低了接口電路的成本,是一種非常實(shí)用的方法,特別是對于像前端控制機(jī)、單片機(jī)開發(fā)系統(tǒng)等提供土12 V電源有困難的系統(tǒng)。

二、波特率的選擇
  
  波特率是串行通信中的一個關(guān)鍵參數(shù)。通信雙方波特率的一致性直接影響數(shù)據(jù)傳輸?shù)恼_性。當(dāng)誤差太大時,甚至無法進(jìn)行正常的傳輸。通常對于11位的串行幀(1位起始位+8位數(shù)據(jù)位+1位標(biāo)志位+1位停止位),所允許的最大波特率誤差應(yīng)不超過4.5%。
  
  RS - 232C通信標(biāo)準(zhǔn)中,標(biāo)稱波特率有:50,110,150,300,600,1 200,2 400,4 800,9 600及19 200等。其中以1 200~9 600最為常用。IBM - PC的串行通信控制器采用的是In-te18250.其波特率是采用1.843 2 MHz專用時鐘,由16位的除法器產(chǎn)生的,可以精確地定出各種標(biāo)稱波特率。而51單片機(jī)的波特率是采用系統(tǒng)時鐘由定時器T,產(chǎn)生的。由于系統(tǒng)時鐘一般為6.0 MHz或12.O MHz,有效位數(shù)少,而T.又是用的8位自動裝入定時方式,因此,很難精確地定出各種標(biāo)稱波特率。當(dāng)兩臺51單片機(jī)進(jìn)行串行通信時,只要兩機(jī)的系統(tǒng)時鐘和定  時常數(shù)一致,就能保證數(shù)據(jù)正確傳輸。這時的波特率只是反映傳送的快慢,而不是非要達(dá)到多少精度。因?yàn)閮蓹C(jī)的波特率即使有誤差,也只是系統(tǒng)時鐘(晶體)上的誤差。這種誤差通常是很小的,可忽略不計;但當(dāng)51單片機(jī)與IBM - PC進(jìn)行串行通信時,這種誤差就大了。以4800波特為例:
  
  對于PC機(jī),除法器控制常數(shù)為:


  
無誤差。式中,B為波特率。
  
  對于51單片機(jī),當(dāng)系統(tǒng)時鐘fosc=6 MHz時,定時常數(shù)為:


  
  因n必須為整數(shù),四舍五入后n=253(FDH);反過來,因取整得出的實(shí)際波特率為:
  
  波特率誤差:


  
  比所允許的誤差大,當(dāng)然數(shù)據(jù)也就無法正確傳輸了。同理,不難證明,在1200-9600的標(biāo)稱波特率范圍內(nèi),只有1 200是唯一可用的,其n=243(F3H),x-96(0060H)。顯然,對于那些想用高波特率傳送數(shù)據(jù)的用戶來說,這無形之中提出了一個難題。那么是否有辦法解決這一難題呢?辦法是有的,只是不能局限于幾個標(biāo)稱波特率上。其算法如下:
  
 ?、偌俣?1單片機(jī)上的一個定時常數(shù)n,一般n取值為F4H~FEH(波特率為1200~9600);


  
  大n值重復(fù)上述①~④步求出下一個可用波特率。
  
  根據(jù)上述算法,不難求出1 200~9 600的所有可用波特率(假定fosc=6.0 MHz),如表1- 16所列。注意,如果使用表1- 16中的非標(biāo)稱波特率來進(jìn)行通信,那么PC機(jī)程序就不能調(diào)用INT14H的功能0來初始化串行口波特率了,而只能采用下述子程序(以COMi為例),即直接往除法器送控制常數(shù)。

三、數(shù)據(jù)同步
  
  串行通信分同步和異步兩種方式。盡管51單片機(jī)的串行口既可進(jìn)行同步通信(方式0),又可進(jìn)行異步通信(方式1~3),但I(xiàn)BM - PC機(jī)的串行口只有異步方式。在異步串行通信中,波特率的一致性是數(shù)據(jù)位同步的保證,而幀同步只能靠DSR/DTR和RTS/CTS等異步通信控制信號了。遺憾的是,51單片機(jī)串行口沒有這些控制信號。因此,當(dāng)51單片機(jī)與IBM - PC進(jìn)行串行通信時,雖然波特率選擇一致,能保證單個字節(jié)傳輸正確,但無法保證大塊數(shù)據(jù)傳輸正確。例如,當(dāng)PC機(jī)往單片機(jī)每次單獨(dú)傳送一字節(jié)時,51單片機(jī)都能正確接收,但連續(xù)傳送一批數(shù)據(jù)時,由于單片機(jī)比PC機(jī)的指令處理速度低,PC機(jī)發(fā)送一字節(jié)后,單片機(jī)可能還沒取走,PC機(jī)就發(fā)出下一字節(jié)了。這樣就會導(dǎo)致大量數(shù)據(jù)被丟失。由此可見,在PC機(jī)與51單片機(jī)的串行通信中,數(shù)據(jù)幀(1幀-10或11位)同步也是一關(guān)鍵問題,下面介紹兩種同步方法。
  
  1.硬件方法
  
  在圖1- 32的基礎(chǔ)上,借助于8031 P??诘钠渌粊砟M各異步通信控制信號。其連接方法如圖1- 35所示。這樣利用RTS/CTS和DSR/DTR就可方便地完成異步雙向串行數(shù)據(jù)傳輸了。如果PC機(jī)程序不是通過調(diào)用INT14H,而是通過自己設(shè)計的一個子程序來完成收/發(fā)數(shù)據(jù)的,那么只要使用兩組信號中任意一組,即可完成異步傳輸,這樣又可省去兩根連線。
  
  通過8031外部擴(kuò)展一個異步通信控制器8251,也是一種行之有效的方法,只是那樣做以后,硬件成本提高,軟件控制也變得復(fù)雜了。

  2.軟件方法
  
  一種很容易想到的軟件方法就是“延時法”。例如,當(dāng)PC機(jī)要往單片機(jī)發(fā)送一批數(shù)據(jù)時,每發(fā)一個字節(jié),就延時一段時間,以便單片機(jī)能及時將剛收到的字節(jié)取走并處理完。這種做法的困難在于延時常數(shù)不好確定。一種改進(jìn)方法就是,一方面發(fā)送方采取一定的延時,另一方面在發(fā)送一組(可以是一字節(jié),也以可是若干字節(jié))數(shù)據(jù)后,接收方應(yīng)回答一個數(shù)據(jù)信號(不是控制信號!)。該信號既可表示接收到的數(shù)據(jù)正確與否,又可起同步作用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉