基本的 51 單片機有四個并行口,其中還包含了一個串行口。
但是,各種教材、參考書、網絡文章,介紹擴充并行口的花樣不少,擴充串行口的方法,幾乎無人問津。
偶爾見到一個,也是使用 8250、8251 等“巨型”芯片來擴充的
使用這些芯片,就要占用單片機很多的更為緊缺的并行口,基本上就是得不償失。更別說還要設置復雜的控制字了。
使用簡單的三態門,即可為單片機擴充串行口,僅僅占用單片機的一、二個引腳作為控制引線而已。
實際上是很簡單的,就像使用 74LS373、74LS244 擴充并行口一樣,為串行口,配上合適三態門就行了。
選用 74LS125(低電平開門)、74LS126(高電平開門) 都行。
使用其它的具有三態輸出的芯片也可以,如:74LS244、74LS373 等等。
只是這些芯片的控制線,是成組的控制,不是單獨的一個門、一個門的進行控制,就有些不夠方便。
下面就是設計的擴充兩個串口通道的電路圖:
為了控制簡單,以及介紹全面一些,在圖中使用了兩種三態門。用同一種,也是可以的。
兩組三態門,均以 P3.4 作為控制信號。
當 P3.4 輸出高電平時,74LS126 開門,通道1導通,單片機即可對 74LS164 進行串行輸出,驅動數碼管;
當 P3.4 輸出低電平時,74LS125 開門,通道2導通,單片機即可與其它串口設備進行全雙工的通信。
如果需要,還可以在 125 的右邊再接上 TTL-RS232 電平轉換芯片(或 RS485 總線芯片),進行遠距離通信。
圖中是接上了一個 PROTEUS 軟件的虛擬終端,用來代表另一個串口通信設備。
做而論道用匯編語言寫了一小段程序,可以控制這個串口擴展電路進行工作。
;=================================================
ORG 0000H
SJMP START
ORG 0023H
AJMP S_INT
START:
MOV TMOD, #20H
MOV TH1, #0FDH ;設置波特率9600@11.0592MHz
MOV TL1, #0FDH
SETB TR1
MOV IE, #90H ;開串口中斷
CLR P3.4 ;選通74LS125(通道2)
MOV SCON, #50H ;串口方式1, 可接收
SJMP $
;-----------------------------------
S_INT: ;串口中斷程序
JNB RI, S_END
CLR RI
MOV A, SBUF ;取出收到的數據
;---------------------
SETB P3.4 ;選通74LS126(通道1)
MOV SCON, #0 ;串口通信方式0
MOV B, #16
DIV AB
XCH A, B
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC ;取七段碼
MOV SBUF, A ;串口輸出
JNB TI, $ ;等待發送完畢
CLR TI
MOV A, B
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV SBUF, A
JNB TI, $
CLR TI
;---------------------
CLR P3.4 ;選通74LS125(通道2)
MOV SCON, #50H ;串口方式1, 可接收
MOV SBUF, #'O'
JNB TI, $
CLR TI
MOV SBUF, #'K'
JNB TI, $
CLR TI
MOV SBUF, #13 ;
JNB TI, $
CLR TI
MOV SBUF, #10 ;
JNB TI, $
CLR TI
;---------------------
S_END:
RETI
TAB: ;共陽段碼表
DB 0C0H, 0F9H, 0A4H, 0B0H, 099H, 092H, 082H, 0F8H;0~7
DB 080H, 090H, 088H, 083H, 0C6H, 0A1H, 086H, 08EH;8~F
END
;=================================================
程序執行后,屏幕截圖如下:
在程序控制下,51 單片機隨時監聽通道2,一旦虛擬終端發來了一個字節的串行數據,單片機都要向虛擬終端回送 'OK'
這時,就是單片機和上位機之間的雙工串行通信。
然后,單片機轉向串口通道1,以方式0 輸出兩組七段碼,令外接的 74LS164 顯示剛剛收到的數據的高、低四位。
這時,就是簡單的 SPI 通信方式。
在圖中可以看到,數碼管顯示的是 41,這是在虛擬終端窗口中鍵入'A'時的現象,41 即字符 A 的 ASCII 碼。
虛擬終端,它并不顯示鍵入的內容,它僅僅顯示單片機發出的信息,在圖中可以看到顯示出來的 OK、回車、換行
74LS125 和 74LS126 都是 14 引腳的集成芯片,和 8250、16550A 等 40 引腳的專用串口芯片相比,要小巧的多。
每片(125 或 126)都含有四個獨立工作的三態門。實際上,使用一片 125 或 126,也就可以實現上述的兩個通道串口通信了。
注意:如果使用了一片芯片,那么通道控制的電平信號是相同的,這就需要使用單片機的兩個引腳來分別控制兩個通道。
多用幾片三態門,為單片機多擴充幾個串行口,也是可行的。
做而論道設計的這種串口擴充方案,硬件電路和軟件,都已經在實際電路中做過實驗,可以正常通信。
-
單片機
+關注
關注
6039文章
44575瀏覽量
636400 -
串行
+關注
關注
0文章
237瀏覽量
33887
原文標題:51單片機串口的擴充方法
文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論