當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]介紹利用AT89C52單片機(jī)作為多功能可編程接口的方法。

 摘要:介紹利用AT89C52單片機(jī)作為多功能可編程接口的方法。該接口具有1個(gè)鍵盤/顯示接口,2個(gè)16位定時(shí)/計(jì)數(shù)器和1個(gè)全雙工異步串行通信口。其模塊化的設(shè)計(jì),可以給用戶使用帶來(lái)許多方便。

    關(guān)鍵詞:多功能接口 串行通信 軟件譯碼

AT89C52(簡(jiǎn)稱89C52)的廣泛使用,使單片機(jī)的價(jià)格大大下降。目前,89C52的市場(chǎng)零售價(jià)已經(jīng)低于8255、8279、8253、8250等專用接口芯片中的任何一種;而89C52的功能實(shí)際上遠(yuǎn)遠(yuǎn)超過(guò)以上芯片。因此,如把89C52作為接口芯片使用,在經(jīng)濟(jì)上是合算的。在本人設(shè)計(jì)的系統(tǒng)中,將89C52設(shè)計(jì)為多功能可編程接口,其相關(guān)程序固化在片內(nèi)的Flash ROM中。該芯片(以下簡(jiǎn)稱多功能接口)具有如下功能:①有1個(gè)專用的鍵盤/顯示接口;②有1個(gè)全雙工異步串行通信接口;③有2個(gè)16位定時(shí)/計(jì)數(shù)器。這樣,1個(gè)89C52芯片,承擔(dān)了3個(gè)專用接口芯片的工作;不僅使成本大大下降,而且優(yōu)化了硬件結(jié)構(gòu)和軟件設(shè)計(jì),給用戶帶來(lái)許多方便。

1 硬件結(jié)構(gòu)

把89C52當(dāng)作接口使用,接口自身必須盡可能地少占用硬件資源,與主系統(tǒng)之間的連接線也應(yīng)盡可能少,這樣才能少占主機(jī)引腳,把更多的資源留給系統(tǒng)。本設(shè)計(jì)中,主機(jī)與多功能接口之間采用串行通信。主機(jī)與多功能接口之間有四根連接線:CE、CLK、DAT、INTR。CE用于作片選信號(hào)輸入端。此引腳為低電平時(shí),主機(jī)能與多功能接口進(jìn)行數(shù)據(jù)傳送。CLK為時(shí)鐘輸入端,當(dāng)主機(jī)向多功能接口發(fā)送指令時(shí),此引腳電平上升表示數(shù)據(jù)有效。DAT為串行數(shù)據(jù)輸入/輸出端。INTR為多功能接口輸出端。當(dāng)多功能接口內(nèi)的數(shù)據(jù)準(zhǔn)備好時(shí),由INTR向主機(jī)發(fā)低電平,通知主機(jī),數(shù)據(jù)已準(zhǔn)備就緒,可以進(jìn)行讀操作。該信號(hào)可供主機(jī)查詢,也可用作發(fā)向主機(jī)的中斷請(qǐng)求信號(hào)。

89C52的P0、P1、P2口用作鍵盤/顯示接口。用程序掃描的方法進(jìn)行鍵盤輸入和顯示輸出。P0口作為字段口,P1口作為鍵盤的列輸入口,P2作為顯示器的字位口以及鍵盤的行掃描輸出口。由于顯示器字位口電流較大,P2口需進(jìn)行電流驅(qū)動(dòng)。該多功能接口最多可連接8個(gè)LED顯示器和1個(gè)8×8鏈盤矩陣。其硬件原理如圖1所示。

P3.2、P3.3、P3.6、P3.7分別用作CE、CLK、DAT和INTR信號(hào);而P3.0、P3.1用作異步串行通信數(shù)據(jù)線RXD和TXD;P3.4、P3.5分別是OUT0/T0和OUT1/T1信號(hào)線。該引腳在定時(shí)器工作于連續(xù)脈沖方式時(shí),可輸出通斷比與頻率可編程的連續(xù)脈沖;工作在計(jì)數(shù)器方式時(shí),該引腳作為外部計(jì)數(shù)脈沖輸入端輸入計(jì)數(shù)脈沖。

圖1

2 通信協(xié)議

實(shí)現(xiàn)多功能接口的關(guān)鍵是主機(jī)和多功能接口之間的通信。在本設(shè)計(jì)中,采用主從方式進(jìn)行通信,所有的操作都由主機(jī)發(fā)出操作指令。多功能接口在收到主機(jī)發(fā)來(lái)的操作指令后,對(duì)操作碼進(jìn)行軟件譯碼。根據(jù)操作碼的內(nèi)容轉(zhuǎn)入相應(yīng)的工作通道,并從操作數(shù)部分獲取所需要的數(shù)據(jù)。

多功能接口采用串行方式與主機(jī)通信。串行數(shù)據(jù)從DAT引腳送入芯片,并由CLK端同步。當(dāng)片選信號(hào)CE變低后,DAT引腳上的數(shù)據(jù)在CLK引腳的上升沿被寫入多功能接口的寄存器中。

串行接口的時(shí)序如圖2所示。

圖2

    由于多功能接口接收指令的工作用軟件進(jìn)行,因此,圖中的t1、t2、t3、t4、t5時(shí)間較長(zhǎng),要求t1-t4時(shí)間在10μs~1000μs。指令有兩類:一類寫指令,一類是讀指令。寫指令中不管是操作碼還是操作數(shù),其數(shù)據(jù)傳送方向均為從主機(jī)到多功能接口;而對(duì)讀指令來(lái)講,操作碼部分的數(shù)據(jù)方向是從主機(jī)到多功能接口,而操作數(shù)部分的數(shù)據(jù)方向是從多功能接口到主機(jī)。

t5是讀指令中操作碼與操作數(shù)之間需要的時(shí)間間隔,t5應(yīng)在30μs~1000μs的范圍。在讀操作時(shí),CLK時(shí)鐘的上升沿來(lái)到時(shí),多功能接口將數(shù)據(jù)送到DAT引腳上。

3 指令編碼

多功能接口共有13條指令。指令長(zhǎng)度為1字節(jié)、2字節(jié)、3字節(jié)和4字節(jié)不等。

(1)復(fù)位指令

機(jī)器碼為00H。當(dāng)多功能接口收到復(fù)位指令后,所有字符消隱,所有定時(shí)器清零,定時(shí)中斷和串行中斷關(guān)閉。其狀態(tài)與系統(tǒng)上電復(fù)位的情況相似。

(2)顯示數(shù)據(jù)指令

該指令向多功能接口的顯示緩沖器中發(fā)送顯示數(shù)據(jù)。這是一個(gè)2字節(jié)指令,其指令編碼如下:

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 1 0 0 0 0
D7 D6 D5 D4 D3 D2 D1 D0
dip 0 0 0 d3 d2 d1 d0

其中dip為小數(shù)點(diǎn)控制位,a2、a1、a0為位地址,d3、d2、d1、d0為待顯示的字符,其格式如表1、2所列。

(3)閃爍指令

該指令控制各個(gè)數(shù)碼管的閃爍屬性。d7~d0分別對(duì)應(yīng)數(shù)碼管1~8,1為閃爍,0為不閃爍。

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 1 0 0 0 0
D7 D6 D5 D4 D3 D2 D1 D0
d7 d6 d5 d4 d3 d2 d1 d0

(4)循環(huán)左移指令

指令碼為11H。該指令將所有顯示從左向右移動(dòng)1位。

表1

a2 a1 a0 顯示位
0 0 0 1
0 0 1 2
0 1 0 3
0 1 1 4
1 0 0 5
1 0 1 6
1 1 0 7
1 1 1 8

表2

d3 d2 d1 d0 顯示字符
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9
1 0 1 0 -
1 0 1 1 H
1 1 0 0 L
1 1 0 1 P
1 1 1 0 E
1 1 1 1

(5)循環(huán)右移指令

指令碼為12H。該指令將所有顯示從右向左移動(dòng)1位。

(6)讀鍵盤指令

指令為2字節(jié)指令,操作數(shù)為讀到的鍵值。各鍵盤的鍵值如圖1所示。該指令格式如下:

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 1 0 0 1 1
D7 D6 D5 D4 D3 D2 D1 D0
d7 d6 d5 d4 d3 d2 d1 d0

    (7)連續(xù)脈沖輸出指令

    該指令對(duì)定時(shí)器進(jìn)行編程。使OUT0/OUT1輸出連續(xù)脈沖,脈沖的通斷比和頻率可以通過(guò)編程設(shè)定。其指令為4,格式如下:

第1字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 1 0 0 1 1/0

第2字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
M3 M2 M1 M0 N3 N2 N1 N0

第3字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
f15 f14 f13 f12 f11 f10 f9 F8

第4字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
f7 f6 f5 f4 f3 f2 f1 f0

其中M:N是脈沖的通斷比,M或N的設(shè)置范圍是1~10。f15~f0是頻率設(shè)置,其設(shè)置范圍是1~9999Hz。采用BCD碼設(shè)置。指令操作碼中,D0設(shè)置定時(shí)器0或定時(shí)器1工作。

(8)定時(shí)器方式指令

該指令為3字節(jié)指令。操作碼為22H、23H,其中D0位確定對(duì)定時(shí)器0還是定時(shí)器1進(jìn)行操作。第2、第3字節(jié)為定時(shí)時(shí)間。

(9)計(jì)數(shù)器方式指令

該指令為3字節(jié)指令。操作碼為24H、25H,其中D0位確定對(duì)定時(shí)器0還是定時(shí)器1進(jìn)行操作。第2、第3字節(jié)為計(jì)數(shù)初值。

(10)讀計(jì)數(shù)器指令

為3字節(jié)指令。操作碼為26H、27H,第2、第3字節(jié)為從計(jì)數(shù)器讀到的計(jì)數(shù)值。操作碼的D0位確定對(duì)計(jì)數(shù)器0還是計(jì)數(shù)器1進(jìn)行操作。通過(guò)該指令讀以16位計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。

(11)串行發(fā)送指令

該指令對(duì)異步串行通信進(jìn)行初始化,其指令格式如下:

第1字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 1 0 a2 a1 a0

表2字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
b1 b0 d5 d4 d3 d2 d1 d0

第3字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
d7 d6 d5 d4 d3 d2 d1 d0

第4字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
d7 d6 d5 d4 d3 d2 d1 d0

    串行通信采用批傳送的方法進(jìn)行。每條指令傳送1個(gè)數(shù)據(jù)幀。指令中,第1、第2字節(jié)用來(lái)進(jìn)行串行通信初始化,第3字節(jié)以后是發(fā)送的各個(gè)數(shù)據(jù)。b1、b0用來(lái)確定奇校驗(yàn)、偶校驗(yàn)還是不校驗(yàn)。第2字節(jié)的操作數(shù)d5、d4、d3、d2、d1、d0用來(lái)設(shè)定該幀數(shù)據(jù)的個(gè)數(shù),最多1幀可發(fā)送64個(gè)字符。a2、a1、a0設(shè)定串行通信的波特率。其波特率如表3所列。

表3

a2  a1  a0 波特率/baud
0   0   0 110
0   0   1 150
0   1   0 300
0   1   1 600
1   0   0 1200
1   0   1 2400
1   1   0 4800
1   1   1 9600

(12)串行接收指令

    指令格式如下:

第1字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 1 1 a2 a1 a0

第2字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
b1 b0 d5 d4 d3 d2 d1 d0

第3字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
d7 d6 d5 d4 d3 d2 d1 d0

第4字節(jié)

D7 D6 D5 D4 D3 D2 D1 D0
d7 d6 d5 d4 d3 d2 d1 d0

指令編碼與串行發(fā)送送似,第3字節(jié)之后為接收到的數(shù)據(jù)。

(13)讀狀態(tài)指令

指令格式如下:

D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 0 0 0 0 0
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 d4 d3 d2 d1 d0

在鍵盤輸入、計(jì)數(shù)器回等或串行通信中斷時(shí),多功能接口將向INTR發(fā)出負(fù)脈沖,主機(jī)在響應(yīng)后應(yīng)發(fā)讀狀態(tài)指令,查詢狀態(tài)標(biāo)志,確定是哪個(gè)狀態(tài)標(biāo)志動(dòng)作。其中d0為鍵盤輸入標(biāo)志,d1為計(jì)數(shù)器0回零動(dòng)作。d2為計(jì)數(shù)器1回零標(biāo)志。d3為串行接收結(jié)束標(biāo)志,d4為串行發(fā)送結(jié)束標(biāo)志。

4 多功能接口的軟件設(shè)計(jì)

在主程序中進(jìn)行顯示掃描和鍵盤掃描,如有鍵盤輸入,則找出鍵盤矩陣的鍵號(hào)。鍵號(hào)存入鍵值寄存器,并置位狀態(tài)標(biāo)志,同時(shí)發(fā)出INTR負(fù)脈沖,通知主機(jī)來(lái)取鍵值。

主機(jī)通過(guò)指令對(duì)多功能接口進(jìn)行操作。主機(jī)首先要將CE置0。該下降沿通過(guò)P3.2向多功能接口發(fā)出外部中斷。在中斷服務(wù)程序中,多功能接口進(jìn)行取指和譯碼操作,并通過(guò)散轉(zhuǎn)指令轉(zhuǎn)入相應(yīng)的處理通道。則中斷返回。至此,一條指令的取指-譯碼-執(zhí)行的過(guò)程才告結(jié)束。程序回到主循環(huán)繼續(xù)進(jìn)行顯示掃描和鍵盤掃描。

所謂取指操作實(shí)際上就是多功能接口與主機(jī)進(jìn)行通信的過(guò)程。由于采取軟件進(jìn)行通信,t1、t2、t3、t4、t5的寬度有一定的范圍。

在接收到主機(jī)的操作指令后,多功能接口與外設(shè)的串行通信及有關(guān)定時(shí)器的操作采用中斷方式進(jìn)行。在中斷結(jié)束時(shí),置位狀態(tài)標(biāo)志,并向主機(jī)發(fā)INTR負(fù)脈沖。該負(fù)脈沖可供主機(jī)查詢,也可作為向主機(jī)發(fā)出的中斷請(qǐng)求信號(hào)。完成以上工作后,返回主程序。

89C52有三個(gè)定時(shí)器,其中T2在中串行通信時(shí)間來(lái)作為串行通信的波特率發(fā)生器。這樣T0和T1就可以出借給用戶作定時(shí)器內(nèi)。T2在波特率發(fā)生器方式時(shí),可置位T2CON寄存器中的TCLK位或RCLK位。在TH2、TL2中裝入計(jì)數(shù)初值,使T2從這個(gè)初值開(kāi)始計(jì)數(shù),但并不置位FT2。RCAR2H和RCAP2L中的常數(shù)由軟件設(shè)定后,T2的溢出率是嚴(yán)格不變的,因而使串行通信的波特率非常穩(wěn)定。

5 應(yīng)用實(shí)例

在本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)中,給出主機(jī)為AT89C52時(shí)的應(yīng)用實(shí)例。程序的功能為等待鍵盤輸入,然后將所讀到的鍵盤碼轉(zhuǎn)換成十進(jìn)制后送LED數(shù)碼管顯示。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉