曾博昊
(沈陽師范大學(xué)物理科學(xué)與技術(shù)學(xué)院,遼寧 沈陽 110000)
?
基于多串口通訊技術(shù)的單片機(jī)應(yīng)用
曾博昊
(沈陽師范大學(xué)物理科學(xué)與技術(shù)學(xué)院,遼寧 沈陽 110000)
摘要:在科學(xué)技術(shù)高速發(fā)展的今天,人們可以利用單片機(jī)串口擴(kuò)展技術(shù),對其進(jìn)行接口擴(kuò)展,從而得以使單片機(jī)多串口通訊技術(shù)被廣泛的應(yīng)用。本文從單片機(jī)串口擴(kuò)展設(shè)計(jì)出發(fā),對單片機(jī)多串口通訊機(jī)是及其應(yīng)用進(jìn)行了詳細(xì)的介紹,并提出了個人看法,希望能夠拋磚引玉。
關(guān)鍵詞:單片機(jī);多串口;通訊技術(shù);應(yīng)用
1單片機(jī)串口擴(kuò)展設(shè)計(jì)
1.1單片機(jī)串口擴(kuò)展的硬件總體設(shè)計(jì)。單片機(jī)串口擴(kuò)展的硬件總體設(shè)計(jì)單片機(jī)串口擴(kuò)展的硬件總體設(shè)計(jì)單片機(jī)串口擴(kuò)展的硬件總體設(shè)計(jì)單片機(jī)與PC機(jī)或外設(shè)的串行通信一般采用RS232/RS422/RS485總線標(biāo)準(zhǔn)接口。為保證通信可靠,在選擇接口時必須注意通信的速率、通信距離、抗干擾能力、電平匹配和通信方式。本文為了解決在單片機(jī)串行通信時遇到的串口問題,以MCS51系列單片機(jī)8751為例,進(jìn)行串口擴(kuò)展,包括通過通信接口芯片8251再擴(kuò)展一個獨(dú)立串口,通過16×1的多路切換器CD4067實(shí)現(xiàn)一點(diǎn)對多點(diǎn)分時串口通信,以及通過電平轉(zhuǎn)換器MAX232,MAX488,MAX485實(shí)現(xiàn)單片機(jī)與不同類型接口源供電,驅(qū)動能力強(qiáng)。MAX232芯片內(nèi)置兩個TTL到RS232和兩個RS232到TTL驅(qū)動電路,即具有兩個發(fā)送器和兩個接收器,只需外置4個011μF電容以供內(nèi)部電路產(chǎn)生RS232電壓。MAX232的發(fā)送器的發(fā)送輸入為T1IN/T2IN,發(fā)送輸出為T1OUT/T2OUT;接收器的接收輸入為R1IN/R2IN,接收輸出為R1OUT/R2OUT。RS232接口也普遍使用9芯插頭座,在許多場合下僅將發(fā)送端TXD數(shù)據(jù)和接收端RXD交叉連接,加上信號地GND共使用三根線,只給出了一路TTL電平接口到RS232電平接口的串行通信電路設(shè)計(jì)。
1.2單片機(jī)與不同類型串口的通信擴(kuò)展。電路的設(shè)計(jì)單片機(jī)與不同類型串口的通信擴(kuò)展電路的設(shè)計(jì)單片機(jī)與不同類型串口的通信擴(kuò)展電路的設(shè)計(jì)單片機(jī)與不同類型串口的通信擴(kuò)展電路的設(shè)計(jì)單片機(jī)CPU8751的串口是TTL電平,要實(shí)現(xiàn)8751與不同類型串口進(jìn)行通信,需要用電平轉(zhuǎn)換器完成不同類型串口的轉(zhuǎn)換,才能成功進(jìn)行通信。下面對單片機(jī)8751與RS232/RS422/RS485的串行通信進(jìn)行接口擴(kuò)展。
2單片機(jī)多串口通訊的實(shí)現(xiàn)技術(shù)
2.1采用多串口單片機(jī)。目前只有少數(shù)單片機(jī)具有兩個以上的串行通訊接口,有些單片機(jī)與MCS-51系列單片機(jī)兼容,新增加的串口與原有的串口在使用上基本相同。采用多串口單片機(jī)實(shí)現(xiàn)多串口通訊無需額外的軟件硬件支持,因而是最為理想的方案,只是這些單片機(jī)不太容易買到,價格也比較高。擴(kuò)展串行通訊接口在基本系統(tǒng)上擴(kuò)展串行通訊接口是另外一種可行的方案。目前對于MCS-51系列單片機(jī)只有intel8250和intel8251兩種接口芯片可供選擇。前者為DIP40封裝,后者為DIP28封裝。兩者在使用上有著很大的區(qū)別,不能互換使用。擴(kuò)展接口方法的缺點(diǎn)是增加了系統(tǒng)的復(fù)雜性,擴(kuò)展芯片的體積也嫌太大。
2.2采用多路模擬開關(guān)。該方法是將串口通過多路模擬開關(guān)分別與各路通訊線路連接,適用于多路通訊分時進(jìn)行,沒有交叉的情形。這種方法工作比較可靠,技術(shù)上也比較容易實(shí)現(xiàn),只需利用軟件控制多路模擬開關(guān)的切換即可。
2.3多單片機(jī)協(xié)同工作。由于單片機(jī)的價格低廉,采用多個廉價的單串口單片機(jī)實(shí)現(xiàn)多路通訊可能比其它的方案成本更低,技術(shù)上也比較容易實(shí)現(xiàn)。這種方案比較適合協(xié)議轉(zhuǎn)換一類的工作,這樣每個單片機(jī)只需要負(fù)責(zé)一種協(xié)議數(shù)據(jù)的處理,便于軟件編程。
多單片機(jī)協(xié)同工作必然要涉及到各個單片機(jī)之間的數(shù)據(jù)交換,這需要一些特殊的通訊技術(shù)支持。
2.4利用HSI和HSO功能。在現(xiàn)代的單片機(jī)應(yīng)用中,其具備的主要功能就是高速輸入以及高速輸出。在實(shí)際的應(yīng)用過程中,通常是將這些功能串行通訊。在數(shù)據(jù)接收的過程中通常會應(yīng)用到高速輸出功能,應(yīng)用高速輸出功能首先是根據(jù)單片機(jī)的通訊波特頻率確定定時時間,然后在對檢測接收數(shù)據(jù)的起始位用高速輸出檢測。如果檢測到起始位時,就對其進(jìn)行中斷,在中斷過后對讀入的數(shù)據(jù)進(jìn)行拼裝,在完成此項(xiàng)工作過后必須儲存所有接收的數(shù)據(jù)。
在利用高速輸出進(jìn)行數(shù)據(jù)處理時,可以通過向寄存器寫入相關(guān)的命令,然后就可以直接進(jìn)行數(shù)據(jù)處理,并且根據(jù)波特率對時間間隔進(jìn)行處理。發(fā)送多位數(shù)據(jù)則對應(yīng)多條命令,也可以利用高速輸出中斷實(shí)現(xiàn)。
2.5軟件模擬。對于不具備高速輸入和高速輸出功能,又不能進(jìn)行擴(kuò)展的單片機(jī),軟件模擬是一種增加串口的可行方案。軟件模擬是利用軟件模擬串行通訊的時序,因此需要占用較多的軟件資源。具體實(shí)現(xiàn)時可以利用定時器輔助進(jìn)行,下面將給出實(shí)現(xiàn)該方案的技術(shù)細(xì)節(jié)。
3串行通訊的軟件模擬實(shí)現(xiàn)
利用軟件模擬發(fā)送的基本思想是,首先根據(jù)通訊速率確定發(fā)送每一位的間隔時間,然后根據(jù)數(shù)據(jù)格式和內(nèi)容進(jìn)行逐位操作。間隔時間的控制可以用軟件延時,也可以使用定時器。例如,對于11.0592MHz的系統(tǒng)時鐘和9600波特率,對于MCS-51系列單片機(jī),可以計(jì)算出8位定時器的定時時間常數(shù)初值。
若使用MCS-51系列單片機(jī)定時器0的工作方式2作為定時控制,9600波特率,使用Pl.0作為發(fā)送線模擬串行通訊方式1。
軟件模擬接收的基本思想是,利用外部中斷檢測起始位,一旦檢測到起始位即進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中延時半個數(shù)據(jù)位時間后再次檢測端口狀態(tài),以防止干擾的影響。檢測無誤后關(guān)閉外部中斷,同時打開定時器中斷。在定時器中斷服務(wù)程序中接收數(shù)據(jù)位并進(jìn)行拼裝,接收完畢后即可關(guān)閉定時器中斷。待主程序處理完接收數(shù)據(jù)后再打開外部中斷以便開始下一個數(shù)據(jù)的接收。
若使用定時器0的工作方式2作為定時控制9600波特率,使用P3.3作為接收線模擬串行通訊方式1。
4結(jié)束語
目前由于計(jì)算機(jī)信息的高速發(fā)展,傳統(tǒng)的單片機(jī)串口不能進(jìn)行同步通訊,而單片機(jī)多串口則可以進(jìn)行同步通訊,盡管它要比傳統(tǒng)的單片機(jī)占用更多的軟件資源,但是它能夠提供更多的靈活性,從而提高單片機(jī)的整體性能。本文通過對單片機(jī)多串口通訊技術(shù)及其應(yīng)用進(jìn)行了詳細(xì)的闡述,相信讀者對其也有了進(jìn)一步的了解。總而言之,隨著科學(xué)記得的發(fā)展,可以預(yù)見,單片機(jī)多串口通訊技術(shù)在今后的應(yīng)用中必定更加完善成熟,應(yīng)用方面也更加廣泛。
中圖分類號:TP368.1
文獻(xiàn)標(biāo)志碼:A
文章編號:1671-1602(2016)04-0019-01
作者簡介:曾博昊(1992.10-),男,漢,廣西桂林人,沈陽師范大學(xué)物理科學(xué)與技術(shù)學(xué)院電子信息工程專業(yè)。