51單片機(jī)是對所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8004單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8004單片機(jī)取得了長足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長的一段時間內(nèi)將占有大量市場。51單片機(jī)是基礎(chǔ)入門的一個單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是51系列的單片機(jī)一般不具備自編程能力。
UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計中,UART用于主機(jī)與輔助設(shè)備通信,如汽車音響與外接AP之間的通信,與PC機(jī)通信包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信。
計算機(jī)內(nèi)部采用并行數(shù)據(jù),不能直接把數(shù)據(jù)發(fā)到Modem,必須經(jīng)過UART整理才能進(jìn)行異步傳輸,其過程為:CPU先把準(zhǔn)備寫入串行設(shè)備的數(shù)據(jù)放到UART的寄存器(臨時內(nèi)存塊)中,再通過FIFO(First Input First Output,先入先出隊列)傳送到串行設(shè)備,若是沒有FIFO,信息將變得雜亂無章,不可能傳送到Modem。它是用于控制計算機(jī)與串行設(shè)備的芯片。有一點(diǎn)要注意的是,它提供了RS-232C數(shù)據(jù)終端設(shè)備接口,這樣計算機(jī)就可以和調(diào)制解調(diào)器或其它使用RS-232C接口的串行設(shè)備通信了。
作為接口的一部分,UART還提供以下功能:將由計算機(jī)內(nèi)部傳送過來的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。將計算機(jī)外部來的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié),供計算機(jī)內(nèi)部并行數(shù)據(jù)的器件使用。在輸出的串行數(shù)據(jù)流中加入奇偶校驗位,并對從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗。在輸出數(shù)據(jù)流中加入啟停標(biāo)記,并從接收數(shù)據(jù)流中刪除啟停標(biāo)記。處理由鍵盤或鼠標(biāo)發(fā)出的中斷信號(鍵盤和鼠標(biāo)也是串行設(shè)備)。
可以處理計算機(jī)與外部串行設(shè)備的同步管理問題。有一些比較高檔的UART還提供輸入輸出數(shù)據(jù)的緩沖區(qū),比較新的UART是16550,它可以在計算機(jī)需要處理數(shù)據(jù)前在其緩沖區(qū)內(nèi)存儲16字節(jié)數(shù)據(jù),而通常的UART是8250。如果您購買一個內(nèi)置的調(diào)制解調(diào)器,此調(diào)制解調(diào)器內(nèi)部通常就會有16550 UART。接下來我們一起了解一下基于51單片機(jī)的UART串口通信。
51串行口結(jié)構(gòu)51單片機(jī)的UART串行通信是基于其串行口的可編程硬件結(jié)構(gòu),只要用正確的程序代碼通過初始化串行口對應(yīng)寄存器的形式將其串行硬件結(jié)構(gòu)初始化,再編寫符合此串行口通信的程序代碼便能夠?qū)崿F(xiàn)串行通信,其硬件結(jié)構(gòu)決定了編程機(jī)制( 當(dāng)然還要靠51芯片內(nèi)CPU等機(jī)制 )。
此結(jié)構(gòu)具有UART( 通用異步收發(fā)器 )的全部功能,能同時進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為同步移位寄存器使用。此結(jié)構(gòu)集成于單片機(jī)內(nèi)部。