深入了解51單片機(jī),51單片機(jī)通信協(xié)議講解
單片機(jī)的重要性不言而喻,工業(yè)環(huán)境下,單片機(jī)發(fā)揮著重要作用。那么,你對(duì)單片機(jī)到底有多熟悉呢?為增進(jìn)大家對(duì)單片機(jī)的認(rèn)識(shí),本文將對(duì)單片機(jī)相關(guān)內(nèi)容予以介紹。通過本文,你將對(duì)51單片機(jī)、51單片機(jī)通信協(xié)議有所了解。如果你對(duì)單片機(jī)或者51單片機(jī)具有興趣,不妨繼續(xù)往下閱讀哦。
一、51單片機(jī)
51單片機(jī)是對(duì)所有兼容Intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是Intel的8004單片機(jī),后來隨著Flash rom技術(shù)的發(fā)展,8004單片機(jī)取得了長(zhǎng)足的進(jìn)展,成為應(yīng)用最廣泛的8位單片機(jī)之一,其代表型號(hào)是ATMEL公司的AT89系列,它廣泛應(yīng)用于工業(yè)測(cè)控系統(tǒng)之中。很多公司都有51系列的兼容機(jī)型推出,今后很長(zhǎng)的一段時(shí)間內(nèi)將占有大量市場(chǎng)。51單片機(jī)是基礎(chǔ)入門的一個(gè)單片機(jī),還是應(yīng)用最廣泛的一種。需要注意的是51系列的單片機(jī)一般不具備自編程能力。
同樣的一段程序,在各個(gè)單片機(jī)廠家的硬件上運(yùn)行的結(jié)果都是一樣的,如ATMEL的89C51(已經(jīng)停產(chǎn))、89S51, PHILIPS,和WINBOND等,我們常說的已經(jīng)停產(chǎn)的89C51指的是ATMEL公司的 AT89C51單片機(jī),同時(shí)是在原基礎(chǔ)上增強(qiáng)了許多特性,如時(shí)鐘,更優(yōu)秀的是由Flash(程序存儲(chǔ)器的內(nèi)容至少可以改寫1000次)存儲(chǔ)器取代了原來的ROM,AT89C51的性能相對(duì)于8051已經(jīng)算是非常優(yōu)越的了。
不過在市場(chǎng)化方面,89C51受到了PIC單片機(jī)陣營(yíng)的挑戰(zhàn),89C51最致命的缺陷在于不支持ISP功能,必須加上ISP功能等新功能才能更好延續(xù)MCS-51的傳奇。89S51就是在這樣的背景下取代89C51的,89S51已經(jīng)成為了實(shí)際應(yīng)用市場(chǎng)上新的寵兒,作為市場(chǎng)占有率第一的Atmel公司已經(jīng)停產(chǎn)AT89C51,將用AT89S51代替。89S51在工藝上進(jìn)行了改進(jìn),89S51采用0.35新工藝,成本降低,而且將功能提升,增加了競(jìng)爭(zhēng)力。89SXX可以向下兼容89CXX等51系列芯片。同時(shí),Atmel不再接受89CXX的定單,大家在市場(chǎng)上見到的89C51實(shí)際都是Atmel前期生產(chǎn)的巨量庫(kù)存而已。如果市場(chǎng)需要,Atmel當(dāng)然也可以再恢復(fù)生產(chǎn)AT89C51。
二、51單片機(jī)之uart通信協(xié)議
UART即通用異步收發(fā)傳輸器,工作于數(shù)據(jù)鏈路層。包含了RS-232、RS-422、RS-485串口通信和紅外等等。UART協(xié)議作為一種低速通信協(xié)議,廣泛應(yīng)用于通信領(lǐng)域等各種場(chǎng)合。UART基本可分為并口通信及串口通信兩種。
異步串口通信協(xié)議,工作原理是將傳輸數(shù)據(jù)的每個(gè)字符以串行方式一位接一位的傳輸。
UART協(xié)議中,每一位(bit)的意義如下:
起始位:先發(fā)出一個(gè)邏輯“0”的信號(hào),表示傳輸字符的開始。數(shù)據(jù)位:緊跟起始位之后。數(shù)據(jù)位的個(gè)數(shù)可以是4、5、6、7、8等,構(gòu)成一個(gè)字符。通常采用ASCII碼。從最低位開始傳送,靠時(shí)鐘來定位。
奇偶校驗(yàn)位:數(shù)據(jù)位加上這一位后(跟在數(shù)據(jù)位尾部),使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗(yàn))或奇數(shù)(奇校驗(yàn)),以此來校驗(yàn)數(shù)據(jù)傳送的正確性。
停止位:它是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志??梢允?位、1.5位、2位的高電平(邏輯“1”)。
空閑位:處于邏輯“1”狀態(tài),表示當(dāng)前線路上沒有數(shù)據(jù)的傳送。波特率:是衡量數(shù)據(jù)傳輸速率的指針。表示為每秒鐘傳送的二進(jìn)制位數(shù)(bit數(shù))。例如資料傳送速率為120字符/秒,而每一個(gè)字符為10位,則其傳送的波特率為10×120=1200字符/秒=1200波特。
軟件UART控制:在嵌入式系統(tǒng)或者計(jì)算機(jī)中,并非直接對(duì)串口直接進(jìn)行操作,而是通過SCI模塊對(duì)其進(jìn)行控制。常用的許多芯片中都包含了SCI,例如ARM的S3C2410X芯片內(nèi)嵌了3個(gè)串行接口控制器,而Nios等軟核芯片則可以用選用UART(RS232)的IP對(duì)UART進(jìn)行控制。PC機(jī)則常用16650UART、16750UART等控制串口。
如果實(shí)現(xiàn)軟件操作UART時(shí),在UART檢查端口管腳的串行活動(dòng)時(shí),需要占用大量時(shí)間,讓應(yīng)用程序停滯,這會(huì)使得軟件UART沒有意義。但情況并非如此,來看一下標(biāo)準(zhǔn)的10位異步串行協(xié)議收發(fā)一個(gè)字符時(shí)的情況。
數(shù)字系統(tǒng)方面,我們可以用一對(duì)狀態(tài)機(jī)來表征軟件UART的行為,一個(gè)狀態(tài)機(jī)用于發(fā)送字符,另一個(gè)用于接收字符。對(duì)一個(gè)全雙工的UART而言,這兩個(gè)狀態(tài)機(jī)是并行運(yùn)行的,需要兩個(gè)獨(dú)立的定時(shí)器中斷。這兩個(gè)狀態(tài)機(jī)都有主動(dòng)和被動(dòng)兩種模式。發(fā)送狀態(tài)機(jī)在收到一個(gè)需發(fā)送的字符時(shí)跳出空閑狀態(tài),在結(jié)束位發(fā)送之后回到空閑狀態(tài)。接收狀態(tài)機(jī)在檢測(cè)到接收線上的一個(gè)下降沿時(shí)跳出空閑狀態(tài)。在檢測(cè)到這個(gè)初始的低電平狀態(tài)之后,開始對(duì)位時(shí)隙進(jìn)行遞減計(jì)數(shù),同時(shí)按要求采樣信號(hào)線上的每個(gè)信號(hào)位,包括停止位。
以上便是此次小編帶來的“單片機(jī)”相關(guān)內(nèi)容,通過本文,希望大家對(duì)51單片機(jī)、51單片機(jī)通信協(xié)議具備一定的了解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!