在單片機(jī)系統(tǒng)的設(shè)計(jì)中,,經(jīng)常遇到需要與PC進(jìn)行通信的問題。一般單片機(jī)都提供有UART接口,,而普通PC機(jī)也都有1~2個(gè)RS-232口,,所以,實(shí)際使用時(shí)經(jīng)常用RS-232進(jìn)行單片機(jī)與計(jì)算機(jī)間的通信,。在近距離通信中,,以零調(diào)制三線經(jīng)濟(jì)型使用最為廣泛。
RS-232標(biāo)準(zhǔn)是廣泛使用的串行通信標(biāo)準(zhǔn),,但使用的電平與TTL和MOS電平完全不同,,邏輯“0”至少為+3V,邏輯“1”至少為-3V,,而單片機(jī)系統(tǒng)則使用TTL電平或MOS電平,。因此,需要使用接口電路來實(shí)現(xiàn)TTL電平或MOS電平與RS-232電平之間的轉(zhuǎn)換,。目前已有現(xiàn)成的接口芯片可供選用,,價(jià)格低一些的如MC地488(將TTL電平轉(zhuǎn)換為RS-232C標(biāo)準(zhǔn)電平)和MC1489(將RS-232標(biāo)準(zhǔn)電平轉(zhuǎn)換為TTL電平),,但MC1488需要±12V的供電電壓。另外,,也有許多使用單一的+5V供電芯片可供選擇,,如MAX2003,但此類芯睡價(jià)格不菲,,且需要若干外圍元件,。在對(duì)體積和成本有較嚴(yán)格的要求時(shí),進(jìn)一步簡(jiǎn)化接口電路很有必要,。
1 一種簡(jiǎn)單的接口電路
實(shí)用中,,單片機(jī)與PC的通信通常采用半雙工通信,這時(shí),,可以采用一種較簡(jiǎn)單的接口電路(如圖1所示),。在這種電路中,PC機(jī)的RXD上的邏輯高電平(小于-3V)是以“偷電”的方式從本身的TXD端獲得,。這種電路的工作原理如下:
PC機(jī)TXD端的邏輯電平經(jīng)T1后變?yōu)門TL電平或MOS電平,。在單片機(jī)TXD端為邏輯低電平時(shí),光耦的發(fā)光二極管發(fā)光,,使得晶體管導(dǎo)通,。其集電極的VCC(一般為+5V)加在PC機(jī)的RXD端;而在單片機(jī)TXD端為邏輯高電平時(shí),,光耦的發(fā)光二極管不發(fā)光,,晶體管截止。由于PC機(jī)的TXD端在空閑時(shí)處于邏輯高電平(小于-3V),,因此,,這個(gè)電平便通過電阻R4加到其RXD端。這樣,,便實(shí)現(xiàn)了TTL電平或MOS電平到RS-232電平的轉(zhuǎn)換,。但需要注意的是,由于PC機(jī)的RXD和RXD端通過電阻接到了一起,,因此有時(shí)會(huì)出現(xiàn)PC機(jī)自發(fā)自收的情況,,這一點(diǎn)需要在編程時(shí)加以處理。
2 電阻值的確定
圖1電路中,,R1,、R2的取值范圍較大,一般只要使得T1正常工作在開關(guān)狀態(tài)下即可,。R3的取值可按下式進(jìn)行計(jì)算:
R3=(Vcc-VF-Vcs)/IF
其中Vcc是工作電源電壓,,Vcs是單片機(jī)TXD端的低電平電壓(一般取0.2V),VF是光耦中的發(fā)光二極管導(dǎo)通時(shí)的正向壓降(一般為1.1V左右),IF是其正常工作電流(一般為10mA),。
R4取值的合適與否是本電路的關(guān)鍵,。取值過小,可能會(huì)在單片機(jī)發(fā)送邏輯低電平時(shí),,使PC機(jī)的RXD端電平受自身TXD端的影響太大而導(dǎo)致電壓過低,,從而達(dá)不到邏輯低電平的要求而不能正確接收;取值過大,,則會(huì)在單片機(jī)發(fā)送邏輯高電平時(shí),,PC機(jī)RXD端受其輸入電阻的影響而不能將自身TXD端的邏輯電平正確傳送過來,這樣也不能正確接收,。實(shí)際上,R4的取值受多種因素的影響,,其中包括:光耦中晶體管的特性,、R2的值、二極管D的特性,、PC機(jī)RXD端的輸入電阻和輸入電平,、TXD端的輸出電阻和輸出電平等。而這些因素中,,尤以后兩乾的影響為甚,。
在PC機(jī)系統(tǒng)中,異步通信適配器以INS8250通訊芯片為核心,,再配以可進(jìn)行電平轉(zhuǎn)換的發(fā)送器和接收器電路而組成的,。不同種類的PC機(jī)由于主板設(shè)計(jì)的不同,其RS-232的特性也有差異,,特別是RXD端的輸入電阻和TXD端的輸出電阻相去甚遠(yuǎn),。因此,若要用計(jì)算的方法得到R4的取值,,需要了解各種主板的電路設(shè)計(jì),,這樣非常麻煩。但是對(duì)各種常見品牌計(jì)算機(jī)的RS-232口的特性進(jìn)行測(cè)試卻是相對(duì)簡(jiǎn)便的,。筆者在各種常見品牌的近百臺(tái)計(jì)算機(jī)上進(jìn)行了測(cè)試,,得到了可以在各種計(jì)算機(jī)上可正常使用的R4值,具體取值如表1所列,。
表1 PC與單片機(jī)通信情況和R4值的關(guān)系
機(jī) 型 | 聯(lián)想500 | 同創(chuàng)100 | 東海550 | 兼容機(jī)300 | PHILIPS350 |
R4值 | X1 X2 X3 | X1 X2 X3 | X1 X2 X3 | X1 X2 X3 | X1 X2 X3 |
5.6kΩ | 1 1 0 | 1 1 0 | 1 1 0 | 1 1 0 | 1 1 0 |
10kΩ | 1 1 0 | 1 1 0 | 1 1 0 | 1 1 0 | 1 1 0 |
11kΩ | 1 1 0 | 1 1 0 | 1 1 0 | 1 1 0 | 1 1 0 |
12.2kΩ | 1 1 1 | 1 1 1 | 1 1 1 | 1 1 1 | 1 1 1 |
15.6kΩ | 1 1 1 | 1 1 1 | 1 1 1 | 1 1 1 | 1 1 1 |
20kΩ | 1 1 1 | 1 1 1 | 1 1 1 | 1 1 1 | 1 1 1 |
21kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
22kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
30kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
56kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
77kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
100kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
131kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
150kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
200kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
240kΩ | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 | 0 1 1 |
280kΩ | 0 1 1 | 0 1 1 | 0 1 0 | 1 1 1 | 1 1 1 |
300kΩ | 0 1 1 | 0 1 1 | 0 1 0 | 1 1 0 | 1 1 1 |
開路 | 0 1 1 | 0 1 0 | 0 1 0 | 0 1 0 | 0 1 0 |
測(cè)試中,,R2取10kΩ,D采用IN4148,,光耦采用TIL117,,其發(fā)光二極管的工作電流為10mA(推薦值)。改變R4的取值,,檢查PC能否和單片機(jī)系統(tǒng)進(jìn)行通信,,以及PC機(jī)在發(fā)送數(shù)據(jù)時(shí)是否被自己接到,。實(shí)驗(yàn)發(fā)現(xiàn),常用PC機(jī)的RS-232口根據(jù)外部特性可以分為幾大類,,現(xiàn)將每一類取一例示于表1中,。表中的X1X2X3含義如下:
X1=0表示PC機(jī)發(fā)送數(shù)據(jù)時(shí)不能通過R4自收。
=1表示PC機(jī)發(fā)送數(shù)據(jù)進(jìn)可以通過R4自收,。
X2=0表示PC機(jī)發(fā)送的數(shù)據(jù)不能被單片機(jī)接收,。
=1表示PC機(jī)發(fā)送的數(shù)據(jù)可以被單片機(jī)接收。
X3=0表示單片機(jī)發(fā)送的數(shù)據(jù)不能被PC機(jī)接收,。
=1表示單片機(jī)發(fā)送的數(shù)據(jù)可以被PC機(jī)接收,。
從表1中可以看出,盡管各種主板特性不同,,但都有一段性相同的范圍,,即R4取12.2kΩ~20kΩ時(shí),PC可以和單片機(jī)正常通信,,且PC發(fā)送的數(shù)據(jù)也可以被它自己接收,。這樣,在設(shè)計(jì)電路時(shí)可以把R4取成15kΩ,從而使得該以與各種PC進(jìn)行通信,。但需要注意是,,當(dāng)PC由發(fā)送轉(zhuǎn)變?yōu)榻邮諘r(shí),需要清除自發(fā)自收的數(shù)據(jù),。如果PC的通信程序是用匯編或C語言編寫的,,只需假讀一次以清空接收緩沖器,或者復(fù)位線路狀態(tài)寄存器的D0位即可,。如果PC的通信程序是用WB或VF編寫,,且使用了通信控件,那么剛才發(fā)送的全部?jī)?nèi)容都會(huì)進(jìn)入接收緩沖區(qū),,這樣就需要根據(jù)發(fā)送的字節(jié)數(shù)將接收緩沖區(qū)中前面相應(yīng)的內(nèi)容清除,。
3 電路的進(jìn)一步簡(jiǎn)化
如果想進(jìn)一步簡(jiǎn)化電路,則可用三極管替代光電耦合器,,該簡(jiǎn)化接口電路見圖2所示,。實(shí)驗(yàn)證明,在R4取10kΩ,T2采9015,,R3取15kΩ時(shí),,該電路仍可正常工作。
4 結(jié)論
本文給出的簡(jiǎn)單接口電路具有成本低和占用印制版面積小的優(yōu)點(diǎn),。通過實(shí)驗(yàn)測(cè)定的元件取值具有廣泛的適用性,。上述電路在筆者開發(fā)的手持式通用秒表器中得到應(yīng)用。實(shí)際應(yīng)用中與各種品牌近千臺(tái)PC的通信皆正確,從而證明了本設(shè)計(jì)的可靠性,。