




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.1系統(tǒng)擴(kuò)展概述
6.2總線擴(kuò)展及地址分配
6.3外部存儲(chǔ)器及其訪問(wèn)
6.4外部程序存儲(chǔ)器擴(kuò)展
6.5外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展
6.6并行I/O接口的擴(kuò)展
6.7A/D和D/A轉(zhuǎn)換接口的擴(kuò)展
6.8串行總線擴(kuò)展技術(shù)
習(xí)題六第六章單片機(jī)系統(tǒng)功能的擴(kuò)展技術(shù)單片機(jī)系統(tǒng)擴(kuò)展,一般是以基本的最小系統(tǒng)為基礎(chǔ)的,故首先應(yīng)熟悉最小系統(tǒng)的結(jié)構(gòu)。所謂最小系統(tǒng),是指一個(gè)真正可用的單片機(jī)最小配置系統(tǒng)。對(duì)于片內(nèi)帶有的程序存儲(chǔ)器的AT89S52單片機(jī),只要在芯片上外接時(shí)鐘電路和復(fù)位電路就達(dá)到真正可用,即為一個(gè)最小系統(tǒng),如圖6-1所示。6.1系統(tǒng)擴(kuò)展概述圖6-1最小系統(tǒng)6.2.1總線擴(kuò)展
AT89S52單片機(jī)有很強(qiáng)的外部擴(kuò)展能力,大部分常規(guī)集成電路芯片可用于單片機(jī)的擴(kuò)展電路。擴(kuò)展的內(nèi)容主要有總線、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、I/O口擴(kuò)展、A/D和D/A擴(kuò)展、中斷擴(kuò)展等。但由于受引腳的限制,AT89552單片機(jī)P0口是分時(shí)復(fù)用的地址/數(shù)據(jù)總線,而且與I/O口線復(fù)用,為了將地址總線與數(shù)據(jù)總線分離出來(lái),以便同片外的電路正確連接,
需要在單片機(jī)外部增加地址鎖存器,構(gòu)成片外三總線結(jié)構(gòu),即地址總線、數(shù)據(jù)總線和控制總線結(jié)構(gòu),如圖6-2所示。6.2總線擴(kuò)展及地址分配圖6-2AT89S52擴(kuò)展三總線結(jié)構(gòu)
1.常用擴(kuò)展器件簡(jiǎn)介
1)地址鎖存器
地址鎖存器可使用帶三態(tài)緩沖輸出的8-D鎖存器74LS373,8282或帶清除端的8-D鎖存器74LS273。74LS373地址鎖存器的引腳配置及結(jié)構(gòu)如圖6-3所示。圖6-374LS273地址鎖存器引腳圖及結(jié)構(gòu)圖
2)74LS244和74LS245芯片
74LS244和74LS245常作單片機(jī)系統(tǒng)的總線驅(qū)動(dòng)器,也作三態(tài)數(shù)據(jù)緩沖器。74LS244為單向驅(qū)動(dòng)器或數(shù)據(jù)緩沖器。74LS244的內(nèi)部結(jié)構(gòu)如圖6-4所示。它由8個(gè)三態(tài)門(mén)構(gòu)成,分成兩組,分別由控制端1G和2G控制;74LS245的內(nèi)部結(jié)構(gòu)如圖6-5所示。它由16個(gè)三態(tài)門(mén)構(gòu)成,每個(gè)方向8個(gè)。在控制端G低電平有效時(shí),由DIR控制數(shù)據(jù)的方向。當(dāng)DIR為“1”時(shí),數(shù)據(jù)從左到右傳送,當(dāng)DIR為“0”時(shí),數(shù)據(jù)從右到左傳送。74LS245的內(nèi)部結(jié)構(gòu)如圖6-5所示。圖6-474LS244內(nèi)部邏輯與引腳圖圖6-574LS245內(nèi)部邏輯與引腳圖當(dāng)P2口需要增加驅(qū)動(dòng)能力時(shí),可采用單項(xiàng)驅(qū)動(dòng)器74LS244,其連接如圖6-6(a)所示。圖中兩個(gè)控制端1G和2G均接地,相當(dāng)于8個(gè)三態(tài)門(mén)均打開(kāi),數(shù)據(jù)從P2口到A8~A15
端直通,也就是說(shuō),此處采用74LS244主要是為了增加驅(qū)動(dòng)能力而不加任何控制。
當(dāng)MCS-51單片機(jī)的P0口需要增加驅(qū)動(dòng)能力時(shí),必須采用雙向驅(qū)動(dòng)器,可用74LS245,其連接如圖6-6(b)所示。圖6-6總線驅(qū)動(dòng)器的連接圖
3)3-8譯碼器74LS138
3-8譯碼器74LS138為一種常用的地址譯碼器芯片,其引腳圖如圖6-7所示。其中,G1、、為3個(gè)控制端,只有當(dāng)G1為“1”且、均為“0”時(shí),譯碼器才能進(jìn)
行譯碼輸出。否則譯碼器的8個(gè)輸出端全為高阻狀態(tài)。譯碼輸入端與輸出端的譯碼邏輯關(guān)系如表6-1所示。圖6-774LS138引腳圖表6-174LS138的譯碼邏輯關(guān)系
2.三總線
AT89S52單片機(jī)的片外引腳可構(gòu)成如圖6-8所示的三總線結(jié)構(gòu),通過(guò)擴(kuò)展的三總線,單片機(jī)可以方便地?cái)U(kuò)展其外部數(shù)據(jù)存儲(chǔ)器,外部程序存儲(chǔ)器及I/O接口,同時(shí)外圍芯片也可以通過(guò)這三總線進(jìn)行擴(kuò)展。
1)地址總線(AB)
2)數(shù)據(jù)總線(DB)
3)控制總線(CB)
圖6-8AT89S52系統(tǒng)擴(kuò)展及接口結(jié)構(gòu)6.2.2地址分配
1.線選法
根據(jù)圖6-9中片選線的連接方法,地址譯碼如表6-2所示。圖6-9線選法地址譯碼表6-2線選法地址譯碼表
2.地址譯碼選通法
圖6-10所示為采用74LS138作為地址譯碼器的全地址譯碼電路,6264字選需要的地址線為13條,則剩余的3根地址線可作為片選線。譯碼器的8根輸出線分別對(duì)應(yīng)于一個(gè)8KB的地址空間。
根據(jù)圖6-10中的片選線的連接方法,全地址譯碼如表6-3所示。圖6-10全地址譯碼電路表6-3全地址譯碼表6.3.1外部程序存儲(chǔ)器及其訪問(wèn)
1.AT89S52單片機(jī)訪問(wèn)外部程序存儲(chǔ)器所使用的控制信號(hào)
2.訪問(wèn)外部程序存儲(chǔ)器的過(guò)程
3.擴(kuò)展外部程序存儲(chǔ)器的連接方法
AT89S52單片機(jī)外部程序存儲(chǔ)器
擴(kuò)展方法如圖6-11所示。6.3外部存儲(chǔ)器及其訪問(wèn)圖6-11外部程序存儲(chǔ)器擴(kuò)展
4.地址鎖存器的作用
5.訪問(wèn)外部程序存儲(chǔ)器的時(shí)序
訪問(wèn)片外ROM的操作時(shí)序分兩種情況:執(zhí)行非MOVX指令的時(shí)序;執(zhí)行MOVX指令的時(shí)序,如圖6-12所示。圖6-12外部程序存儲(chǔ)器的操作時(shí)序6.3.2外部數(shù)據(jù)存儲(chǔ)器及其訪問(wèn)
1.擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器的連接方法
AT89S52單片機(jī)在芯片內(nèi)已經(jīng)集成了256B的數(shù)據(jù)存儲(chǔ)器,當(dāng)應(yīng)用系統(tǒng)的控制要求比較簡(jiǎn)單、需要處理的數(shù)據(jù)量不大時(shí),256B的存儲(chǔ)空間基本夠用。但當(dāng)應(yīng)用系統(tǒng)的控制功能比較復(fù)雜、需要處理的數(shù)據(jù)量較大時(shí),可向外擴(kuò)展數(shù)據(jù)存儲(chǔ)器,最大可擴(kuò)展到64KB的存儲(chǔ)空間。
AT89S52單片機(jī)的外部數(shù)據(jù)存儲(chǔ)器擴(kuò)展方法如圖6-13所示。圖6-13外部數(shù)據(jù)存儲(chǔ)器擴(kuò)展
2.訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的時(shí)序
圖6-14所示為訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的讀時(shí)序。圖6-14外部數(shù)據(jù)存儲(chǔ)器讀操作的時(shí)序使用MOVX@DPTR,A指令對(duì)外部數(shù)據(jù)存儲(chǔ)器進(jìn)行寫(xiě)操作的時(shí)序如圖6-15所示。
圖6-15外部數(shù)據(jù)存儲(chǔ)器寫(xiě)操作的時(shí)序6.4.1常用EPROM芯片
2764A是一種8K×8位的紫外線擦除電可編程的只讀存儲(chǔ)器,單一+5V電源供電,工作電流為75mA,維持電流為35mA,讀出時(shí)間最長(zhǎng)為250ns。28腳雙列直插式封裝的引腳配置和引腳含義如圖6-16所示。6.4外部程序存儲(chǔ)器擴(kuò)展圖6-162764A和27128A芯片引腳圖
2764A和27128A工作方式與控制線所加電壓的關(guān)系,如表6-4所示。表6-42764A和27128A工作方式選擇6.4.2典型EPROM擴(kuò)展電路實(shí)現(xiàn)
隨著大規(guī)模集成電路技術(shù)的發(fā)展,大容量存儲(chǔ)器芯片的產(chǎn)量劇增,售價(jià)不斷降低,其性能價(jià)格比明顯增高。所以,在設(shè)計(jì)單片機(jī)系統(tǒng)時(shí),應(yīng)優(yōu)先采用大容量存儲(chǔ)芯片。這樣,不僅可以使電路板的體積減小,成本降低,還可以降低系統(tǒng)功耗和減少控制邏輯電路,從而提高系統(tǒng)的穩(wěn)定性和可靠性。
AT89S52外擴(kuò)16KBEPROM27128的電路圖如圖6-17所示。圖6-17AT89S52與27128的連線圖訪問(wèn)ROM/EPROM的指令為MOVCA,@A+PC或MOVCA,@A+DPTR。如讀取EPROM地址為1000H單元內(nèi)容的程序?yàn)?
MOV DPTR,#1000H
MOVC A@A+DPTR6.5.1RAM(SRAM)的擴(kuò)展
1.靜態(tài)RAM的引腳及工作方式
常用的靜態(tài)RAM芯片有6116、6264、62128、62256等。引腳排列如圖6-18所示。靜態(tài)RAM有讀出、寫(xiě)入和維持3種工作方式,工作方式選擇如表6-5所示。6.5外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展圖6-18常用靜態(tài)RAM芯片引腳圖表6-5靜態(tài)RAM的工作方式選擇
2.外部靜態(tài)數(shù)據(jù)存儲(chǔ)器的擴(kuò)展電路
圖6-19給出了用線選法擴(kuò)展AT89S52外部數(shù)據(jù)存儲(chǔ)器的電路。圖6-19線選法擴(kuò)展三片6264電路圖圖6-20為用地址譯碼法擴(kuò)展AT89S52外部數(shù)據(jù)存儲(chǔ)器的電路圖。圖6-20地址譯碼器法擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器電路圖
(1)向RAM的5000H單元寫(xiě)數(shù)據(jù)DATA:
MOV A,#DATA
MOV DPTR,#5000H
MOVX @DPTR,A
(2)從7FFFH單元讀數(shù)據(jù):
MOV DPTR,#7FFFH
MOVX A,@DATR6.5.2并行E2PROM的擴(kuò)展
程序調(diào)試時(shí),用E2PROM代替EPROM,既可以方便地修改程序,也能保存調(diào)試好的程序。與RAM芯片相比,E2PROM的寫(xiě)操作速度較慢。另外,它的擦寫(xiě)有壽命限制,雖然有1萬(wàn)次之多,但也不宜用在數(shù)據(jù)頻繁更新的場(chǎng)合。常用的并行E2PROM芯片有2816/2816A、2817/2817A、2864A等,其引腳如圖6-21所示。
2817A與AT89S52的連接電路如圖6-22所示。圖6-21常用EEPROM引腳圖圖6-222817A與AT89S52的連接電路圖
【例6-1】根據(jù)圖6-22中2817A與AT78S52的連接電路,編寫(xiě)2817A進(jìn)行寫(xiě)操作的子程序,要寫(xiě)入的數(shù)據(jù)取自源數(shù)據(jù)區(qū)。
子程序的入口參數(shù)如下:
R0:寫(xiě)入的字節(jié)數(shù)計(jì)數(shù)器。
R1:2817A的低8位地址寄存器。
R2:2817A的高8位地址寄存器。
R3:源數(shù)據(jù)區(qū)首地址的低8位寄存器。
R4:源數(shù)據(jù)區(qū)首地址的高8位寄存器。程序清單如下:
WR1:
MOV
DP0L,R3
MOV
DP0H,R4
;將源數(shù)據(jù)區(qū)16位地址傳輸?shù)紻PTR0中
MOVX
A,@DPTR;取數(shù)據(jù)
INC
DPTR ;源數(shù)據(jù)地址指針加1
MOVR3,DP0L
MOVR4,DP0H ;將新的源數(shù)據(jù)區(qū)地址保存在R3,R4中
MOVDP0L,R1
MOVDP0H,R2 ;將2817A地址傳輸?shù)紻PTR0中
MOVX@DPTR,A ;將A的內(nèi)容寫(xiě)入DPTR0中
WAIT:JNBP1.0,WAIT;一個(gè)字節(jié)未寫(xiě)完等待
INCDPTR ;2817A地址加1
MOVR1,DP0L
MOVR2,DP0H ;將2817A的地址保存在R1,R2中
DJNZR0,WR1 ;未完成,循環(huán)
RET6.6.1簡(jiǎn)單I/O接口的擴(kuò)展
圖6-23中,P0口為雙向數(shù)據(jù)線,它既能從74LS244輸入數(shù)據(jù),又能將數(shù)據(jù)傳送給74LS373輸出。6.6并行I/O接口的擴(kuò)展圖6-23簡(jiǎn)單I/O接口擴(kuò)展舉例圖6-23電路的功能是按下任意鍵,對(duì)應(yīng)的LED發(fā)光。程序如下:
LOOP: MOV
DPTR,#0FEFFH
;擴(kuò)展I/O接口地址送DPTR
MOVX
A,@DPTR;通過(guò)244讀入數(shù)據(jù),檢測(cè)鍵的狀態(tài)
MOVX
@DPTR,A;向373輸出數(shù)據(jù),驅(qū)動(dòng)LED
SJMP
LOOP;循環(huán)6.6.2可編程8155的并行I/O擴(kuò)展
1.8155的組成結(jié)構(gòu)及引腳
8155的組成結(jié)構(gòu)及40腳雙列直插式封裝引腳如圖6-24所示。圖6-248155的組成結(jié)構(gòu)框圖及其芯片的引腳
2.8155的RAM和I/O接口地址編碼
AT89S52單片機(jī)應(yīng)用系統(tǒng)中8155的RAM和I/O接口按外部數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址。
當(dāng)IO/
=0時(shí),單片機(jī)對(duì)8155RAM進(jìn)行讀/寫(xiě),RAM低8位地址為00H~FFH;
當(dāng)IO/
=1時(shí),單片機(jī)對(duì)8155中的I/O接口進(jìn)行讀/寫(xiě)。8155內(nèi)部I/O及定時(shí)器的低8位地址如表6-6所示。表6-68155I/O接口地址編碼及功能表其中,命令寄存器和狀態(tài)寄存器共用一個(gè)地址,所以又稱(chēng)為命令/狀態(tài)寄存器,由讀/寫(xiě)指令來(lái)區(qū)分是寫(xiě)命令寄存器還是讀狀態(tài)寄存器。
如:
HOVX A,@DPTR ;讀狀態(tài)寄存器
HOVX @DPTR,A ;寫(xiě)命令寄存器
3.8155的I/O接口工作方式及選擇
1)命令寄存器
8155可編程接口芯片只有一個(gè)控制字。將一個(gè)8位控制字寫(xiě)入命令寄存器,就可以確定PA口、PB口、PC口和定時(shí)器的工作方式及功能,如圖6-25所示。圖6-258155命令寄存器的工作方式控制字格式
2)I/O接口的工作方式
·基本輸入/輸出:
當(dāng)8155被編程為ALT1、ALT2時(shí),A口、B口、C口均工作于基本輸入/輸出方式。其區(qū)別是,當(dāng)編程為ALT1時(shí),C口為輸入;當(dāng)編程為ALT2時(shí),C口為輸出。
·選通輸入/輸出:
當(dāng)8155被編程為ALT3時(shí),A口定義為選通I/O,B口定義為基本I/O;當(dāng)8155被編程為ALT4時(shí),A口、B口均定義為選通I/O方式。
ALT4的邏輯組態(tài)如圖6-26所示。圖6-268155的A口、B口均為選通輸入/輸出時(shí)的邏輯結(jié)構(gòu)
3)狀態(tài)寄存器及I/O接口的狀態(tài)字
8155有一個(gè)狀態(tài)寄存器,狀態(tài)字的格式如圖6-27所示。狀態(tài)寄存器由7位鎖存器組成,每位是一個(gè)狀態(tài)。該寄存器是只讀寄存器。在對(duì)8155讀操作時(shí),能從1/0地址×××××000B讀出。它鎖存I/O口和定時(shí)器的當(dāng)前工作狀態(tài),供CPU查詢(xún)。圖6-278155狀態(tài)寄存器格式
4)PA寄存器及A口
可以按照命令寄存器的內(nèi)容確定是輸入還是輸出寄存器,也可按照命令使這個(gè)口既可在基本方式下工作,又可以在聯(lián)絡(luò)線的選通方式下工作。
5)PB寄存器及B口
與PA寄存器的功能相同。
6)PC寄存器及C口
PC寄存器僅有6位,由命令寄存器的第二位和第三位確定。這6位可以為基本輸入口、輸出口或作為PA和PB接口的控制信號(hào)。當(dāng)PC作為控制口時(shí),PC0~PC2位分配給PA口,PC3~PCS位分配給PB口。
4.8155的定時(shí)/計(jì)數(shù)器
1)定時(shí)器方式選擇
在8155中還設(shè)置有一個(gè)14位的定時(shí)/計(jì)數(shù)器,可用來(lái)定時(shí)或?qū)ν獠渴录?jì)數(shù),CPU可通過(guò)程序選擇計(jì)數(shù)長(zhǎng)度和計(jì)數(shù)方式。計(jì)數(shù)長(zhǎng)度和計(jì)數(shù)方式由輸入到計(jì)數(shù)寄存器的計(jì)數(shù)控制字來(lái)確定,計(jì)數(shù)寄存器的格式如圖6-28所示。圖6-288155定時(shí)器格式其中,T0~T13為計(jì)數(shù)長(zhǎng)度,可表示的長(zhǎng)度范圍為2H~3FFFH。TH的最高兩位M2、M1用來(lái)設(shè)置定時(shí)器的輸出方式。8155定時(shí)器方式及相應(yīng)的輸出波形如圖6-29所示。圖6-298155定時(shí)器方式及輸出波形
2)定時(shí)器編程
對(duì)定時(shí)器進(jìn)行編程時(shí),首先將計(jì)數(shù)常數(shù)及定時(shí)器方式送入計(jì)數(shù)寄存器TL及TH;然后寫(xiě)啟動(dòng)定時(shí)器命令到命令寄存器。
任何時(shí)候都可以設(shè)置定時(shí)器的長(zhǎng)度和工作方式,然后必須將啟動(dòng)命令寫(xiě)入命令寄存器。即使定時(shí)/計(jì)數(shù)器已經(jīng)計(jì)數(shù),在寫(xiě)入啟動(dòng)命令后仍可改變定時(shí)器的工作方式。
5.AT89S52單片機(jī)擴(kuò)展8155的接口應(yīng)用
1)AT89S52與8155的基本連接方法
AT89S52單片機(jī)擴(kuò)展8155后,直接為系統(tǒng)增加了256B片外RAM,22位I/O口線及一個(gè)14位定時(shí)器。具體電路如圖6-30所示。圖6-30AT89S52與8155的連接方法由于8155芯片內(nèi)部有地址鎖存器,因此單片機(jī)P0口輸出的低8位地址不需另加鎖存器,可直接與8155的AD0~AD7相連,這樣單片機(jī)P0口既作低8位地址總線,又作數(shù)據(jù)總線,
地址用ALE信號(hào)鎖存到8155中。高8位地址由CE和IO/M的地址控制線決定,所以圖中連接狀態(tài)下的地址如表6-7所示。表6-78155中RAM和I/O口地址分派表
【例6-2】對(duì)于圖6-30的電路,編寫(xiě)程序向8155中RAM的6EH單元送入立即數(shù)17H。
解其匯編語(yǔ)言程序清單如下(只有通過(guò)累加器A才能把數(shù)據(jù)送到外部RAM中):
HOV
A,#17H ;立即數(shù)17送入累加器A
MOV
DPTR,#E6EH ;指向8155的6EH單元
MOVX
@DPTR,A ;把立即數(shù)17H送入8155的
;6EH單元
【例6-3】編寫(xiě)程序,將8155設(shè)置為I/O接口和定時(shí)器工作方式,A口定義為基本輸入方式,B口定義為基本輸出方式,定時(shí)器作為方波發(fā)生器。對(duì)輸入脈沖進(jìn)行24分頻(8155中定時(shí)器最高計(jì)數(shù)頻率為4MHz)。
解
8155的操作程序如下:
MOV DPTR,#7F04H ;指向定時(shí)器低8位
HOV A,#18H ;計(jì)數(shù)常數(shù)0018H=24
HOVX @DPTR,A ;裝入計(jì)數(shù)常數(shù)低8位
INC DPTR ;指向定時(shí)器高8位
MOV A,#40H ;設(shè)置定時(shí)器方式為連續(xù)方波輸出
MOVX @DPTR,A ;裝入定時(shí)器高8位
MOVX DPTR,#7F00H ;指向命鉀狀態(tài)寄存器
MOV A,#CZH ;命令控制字設(shè)定為A口基本輸入方式,
;B口基
;本輸出方式;并啟動(dòng)定時(shí)器
MOVE @DPTR,A ;命令字送命令寄存器,啟動(dòng)計(jì)數(shù)
2)利用8155芯片擴(kuò)展鍵盤(pán)/顯示器接口
(1)硬件電路。
圖6-31是用8155實(shí)現(xiàn)的AT89S52單片機(jī)與4X8鍵盤(pán)、8位LED顯示器(8位8段共陰極)的接口電路。圖6-318155實(shí)現(xiàn)鍵盤(pán)/顯示器原理框圖
(2)軟件設(shè)計(jì)。
軟件包括動(dòng)態(tài)顯示子程序和鍵盤(pán)掃描子程序。具體介紹如下:
①動(dòng)態(tài)顯示子程序?qū)D6-31中的8位LED顯示器,在AT89S52內(nèi)部RAM中設(shè)置了8個(gè)顯示緩沖單元,分別用于存放顯示的8位數(shù)據(jù)。動(dòng)態(tài)顯示程序的流程圖如圖6-32所示。程序清單如下:
DIS: MOV A,#00000011b ;初始化8155PA、PB口為輸出; ;PC口為輸入
MOV DPTR,#7F00H ;8155命令口地址送DPTR
MOVX @DPTR,A ;寫(xiě)命令
MOV R0,#70H;70H~77H單元存8個(gè)顯示數(shù)據(jù)
MOV R3,#7FH;第一位LED的位選碼7FH
MOV A,R3
AGAIN: MOV DPTR,#7F01H ;指向PA口
MOVX @DPTR,A ;位選碼送PA口
MOVA, @R0 ;取顯示數(shù)據(jù)
MOV DPTR,#DSEG ;取段選碼表首址
MOVC A,@A+DPTR ;取段選碼 MOV DPTR#7F02H ;指向PB口
MOVX @DPTR,A ;段選碼送PB口
ACALL DL1MS ;延時(shí)1ms
INC R0 ;指向下一顯示數(shù)據(jù)單元
HOV A,R3
JNB ACC.0,OUT ;8位顯示完,轉(zhuǎn)OUT
RR A ;未完,調(diào)整為下一位位選碼
MOV R3,A
AJMP AGAIN ;繼續(xù)顯示下一位
OUT: RET ;子程序返回
DSEG: DB 3FH,06H,SBH,4FH,66H,6DH
;顯示0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH
;顯示6,7,8,9,A,B
DB 39H,SEH,79H,71H ;顯示C,D,E,F
DL1ms: MOV R7,#01H ;延時(shí)1ms子程序
DLI: DJNZ R6,DL1
DJNZ R7,DLO
RET圖6-32動(dòng)態(tài)顯示子程序流程圖②鍵盤(pán)掃描子程序。
在掃描鍵盤(pán)的過(guò)程中應(yīng)兼顧顯示器的顯示,鍵盤(pán)掃描子程序框圖如圖6-33所示。圖6-33鍵盤(pán)掃描子程序框圖程序清單如下:
KEYSUB: MOV A,#00000011B;
;8155初始化PA口,PB口輸出,PC口輸入
MOV DPTR,#7F00H ;控制字地址送入DPTR
MOVX @DPTR,A ;向8155輸出控制字
BEGIN: ACALL DIS ;調(diào)顯示子程序
ACALL CLEAR ;清0顯示器,即熄滅
ACALL CCSCAN
;全列置零掃描,判有無(wú)按鍵按下
JNZ INK1 ;有鍵按下,轉(zhuǎn)INK1
AJMP BECIN
INK1: ACALL DIS ;調(diào)顯示子程序,延時(shí)8~9ms ACALLDLIns
ACALL DLIns ;共延時(shí)約10ms去料
ACALL CLEAR ;熄滅顯示器
ACALL CCSCAN
;全列置零掃描,判是否確有按鍵按下
JNZ INK2 ;確有鍵按下,轉(zhuǎn)INK2
AJMP BEGIN ;抖動(dòng)引起,轉(zhuǎn)回BEGIN
INK2: MOV R2,#0FEH ;掃描第一列,置第一列為0
MOV R4,#00H ;列號(hào)送R4
COLUM: MOV DPTR,#7F01H ;指向PA口 MOV A,R2 ;掃描碼送A
MOVX @DPTR,A ;輸出掃描碼
INC DPTR
INC DPTR ;指向PC口
MOVX A,@DPTR ;讀入PC口
JB ACC.0,LONE
;第一行無(wú)按鍵按下,轉(zhuǎn)LONE
MOV A,#00H ;第一行有按鍵按下,行碼送A
AJMP KCODE ;轉(zhuǎn)KCODE,定按鍵的鍵號(hào)
LONE: JB ACC.1,LTWO
;第二行無(wú)按鍵按下,轉(zhuǎn)LTWO
MOV A,#08H ;第二行有按鍵按下,行碼送A
AJMP KCODE
LTWO: JB ACC.2,LTHR
;第三行無(wú)按鍵按下,轉(zhuǎn)LTHR
MOV A,#10H ;第三行有按鍵,行碼送A
AJMP KCODE
LTHR: JB ACC.3,NEXT
;第四行無(wú)按鍵按下,轉(zhuǎn)掃描下一列
KCODE: ADD A,R4 ;行首鍵號(hào)加列號(hào)得鍵號(hào)
PUSH A ;鍵號(hào)入棧保護(hù)
KON: ACALL DIS ;調(diào)顯示,等待按鍵釋放
ACALL CLEAR ;熄滅顯示
ACALL CCSCAN ;判按鍵是否仍按下
JNZ KON ;鍵未釋放,繼續(xù)等待
POP A ;恢復(fù)鍵號(hào)到A中 RET ;返回
NEXT: INC R4 ;列號(hào)加1
MOV A,R2 ;列掃描碼送A
JNB ACC.7,KERR
;全8列掃描完,無(wú)按鍵,為干擾,轉(zhuǎn)KERR
RL A ;高速為下一列掃描碼
MOV R2,A ;保存掃描碼
AJMP COCDM ;繼續(xù)掃描下一列
KERR: AJMP BEGIN ;繼續(xù)等待鍵輸入
CCSCAN
MOV[DW]DPTR,#7F01H
;指向PA口
MOV A,#00H
MOVX @DPTR,A ;PA口輸出全零
INC DPTR INC DPTR ;指向PC口
MOVX A,@DPTR ;讀PC口
CPL A
ANL A,#0FH ;屏蔽高4位
RET
CLEAR: MOV DPTR,#7F02H ;指向PB口
MOV A,#00H ;段選碼為00H
MOVX @DPTR,A ;PB口輸出全0
RET ;返回6.6.38255A可編程并行I/O接口擴(kuò)展
8255A的引腳及內(nèi)部結(jié)構(gòu)如圖6-34所示。
1.8255A的引腳說(shuō)明
2.內(nèi)部結(jié)構(gòu)
1)端口A、B、C
2)工作方式控制電路
3)數(shù)據(jù)總線緩沖器
4)讀/寫(xiě)控制邏輯電路
各端口的工作狀態(tài)如表6-8所示。圖6-348255A的引腳圖及內(nèi)部結(jié)構(gòu)框圖表6-88255A端口的操作狀態(tài)
3.8255A的工作方式
8255A有三種基本工作方式:方式0為基本輸入/輸出;方式1為選通輸入/輸出;方式2為雙向傳送。如圖6-35所示,它們由CPU向控制端口輸出的控制字來(lái)選擇。
1)工作方式0
2)工作方式1
3)工作方式2
各引腳的功能如表6-9所示。圖6-358255A的工作方式示意圖表6-98255A的C口各聯(lián)絡(luò)控制信號(hào)線功能
4.8255A的控制字
8255A共有兩個(gè)控制字,用來(lái)選擇工作方式或?qū)口進(jìn)行控制。
1)方式控制字
8255A的三個(gè)端口工作在什么方式,是輸入還是輸出,這些都是由工作方式控制字來(lái)設(shè)定的。方式控制字的格式如圖6-36所示。圖6-368255A方式控制字格式
【例6-4】設(shè)A口地址為FF7CH;B口地址為FF7DH;C口地址為FF7EH;控制字地址為FF7FH。要求8255A工作在方式0,A口作為輸入,B口、C口作為輸出。編寫(xiě)相應(yīng)程序。
解
8255A相應(yīng)的控制字為10010000B=90H。
初始化程序如下:
MOV A,#90H
;方式0,A口輸入,B口、C口輸出
MOV DPTR,#0FF7FH
;控制寄存器地址送DPTR
MOVX @DPTR,A ;方式控制字送控制寄存器若讀A口數(shù)據(jù):
MOV DPTR,#0FF7CH ;A口地址送DPTR
MOVX A,@DPTR ;從A口讀數(shù)據(jù)
若把DATA1數(shù)據(jù)寫(xiě)入B口:
MOV DPTR,#0FF7DH ;送B口地址到DPTR
MOV A,#DATA1 ;將DATA1送累加器A
MOVX @DPTR,A ;將DATA1送B口輸出
2)端口C置位/復(fù)位控制字
由于C口常作為聯(lián)絡(luò)控制位使用,應(yīng)使C口各位用置位/復(fù)位控制字單獨(dú)設(shè)置,以實(shí)現(xiàn)用戶(hù)要求的控制功能,格式如圖6-37所示。圖6-37端口C按位置位/復(fù)位控制字
【例6-5】設(shè)控制字地址為FF7FH,分別置位和復(fù)位C口的第5位,即PC4。編寫(xiě)相應(yīng)程序。
解置位PC4的控制字為00001001B=9H。
置位程序如下:
MOV
DPTR,#0FF7FH ;送控制字地址到DPTR
MOV
A,#9H ;將控制字送累加器A
MOVX
@DPTR,A ;將控制字送控制寄存器
;執(zhí)行PC4=1復(fù)位PC4的控制字為00001000B=8H。
復(fù)位程序如下:
MOV
DPTR,#0FF7FH ;送控制字地址到DPTR
MOV
A,#8H ;將控制字送累加器A
MOVX
@DPTR,A ;將控制字送控制寄存器
;執(zhí)行PC4=0
【例6-6】圖6-38中,8255A的片選線與Q7連接,打印機(jī)與AT89S52采用查詢(xún)方式交換數(shù)據(jù)。打印機(jī)的狀態(tài)信號(hào)BUSY輸入給PC7,打印機(jī)忙時(shí)BUSY=1。打印機(jī)的數(shù)據(jù)輸
入采用選通控制,當(dāng)上出現(xiàn)下降沿時(shí)數(shù)據(jù)被寫(xiě)入,要求編寫(xiě)向打印機(jī)輸出80個(gè)數(shù)據(jù)的程序。圖6-38AT89S52通過(guò)擴(kuò)展8255A與微型打印機(jī)接口
解
8255A的A、B、C和控制寄存器的口地址分別為7CH、7DH、7EH和7FH。8255A采用方式0,由PC0模擬產(chǎn)生信號(hào)。因PC7輸入,PC0輸出,則方式選擇控制字為10001110B=8EH。自?xún)?nèi)部RAM20H單元開(kāi)始向打印機(jī)輸出80個(gè)數(shù)據(jù)的程序如下:
MOV R0,#7FH ;R0指向控制口
MOV A,#8EH ;方式控制字為8EH
MOVX @R0,A ;送方式控制字
MOV R1,#20H ;送內(nèi)部RAM數(shù)據(jù)塊首地址
MOV R2,#50H ;置數(shù)據(jù)塊長(zhǎng)度LP: MOV R0,#7EH ;R0指向C口
LP1: MOVX A,@R0 ;讀PC7即BUSY狀態(tài)
JB ACC.7,LP1 ;BUSY=1,查詢(xún)等待打印機(jī)
MOV R0,#7CH ;指向A口
MOV A,@R1 ;取RAM數(shù)據(jù)
MOVX @R0,A ;數(shù)據(jù)輸出到8255A口鎖存
INC R1 ;RAM地址加1
MOV R0,#7FH ;指向控制口
MOV A,#00H ;PC0復(fù)位控制字
MOVX @R0,A ;PC0=0,產(chǎn)生的下降沿
MOV A,#01H ;PC0置位控制字
MOVX @R0,A ;PC0=1,產(chǎn)生的上升沿
DJNZ R2,LP ;未完,則重復(fù)
1.分辨率
分辨率是指A/D轉(zhuǎn)換器能夠分辨出來(lái)的輸出模擬電壓的最小變化量,反映了對(duì)輸入模擬信號(hào)的最小變化的分辨能力,由下式計(jì)算:
其中,n為A/D轉(zhuǎn)換器的位數(shù)。6.7A/D和D/A轉(zhuǎn)換接口的擴(kuò)展
2.量化誤差
量化誤差是指由A/D轉(zhuǎn)換器有限的分辨率而引起的誤差。量化誤差有兩種表示方法:一種是絕對(duì)量化誤差;另一種是相對(duì)量化誤差。
絕對(duì)量化誤差
相對(duì)量化誤差
6.7.18位并行A/D轉(zhuǎn)換器ADC0809的擴(kuò)展
1.ADC0809的結(jié)構(gòu)原理
ADC0809是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的8位ADC,采用逐次逼近的方法完成A/D轉(zhuǎn)換。
ADC0809的內(nèi)部結(jié)構(gòu)如圖6-39所示。圖6-39ADC0809的內(nèi)部結(jié)構(gòu)框圖
2.ADC0809的引腳及功能
ADC0809是28腳雙列直插式封裝,引腳如圖6-40所示。各引腳功能說(shuō)明如下所示。
ADDA~ADDC的輸入與被選通的通道的關(guān)系如表6-10所示。圖6-40ADC0809引腳圖表6-10ADDA~ADDC的輸入與被選通的通道的關(guān)系
3.ADC0809與AT89S52接口
1)查詢(xún)方式
圖6-41為ADC0809與AT89S52單片機(jī)的接口電路。圖6-41ADC0809與AT89S52的接口下面的程序是采用查詢(xún)方法,分別對(duì)8路模擬信號(hào)輪流采樣一次,并依次把結(jié)果存儲(chǔ)到內(nèi)部RAM中的采樣轉(zhuǎn)換程序:
MAIN: MOV R1,#DATA ;數(shù)據(jù)區(qū)地址指針指向首單元
MOV DPTR,#7FF8H ;送通道0地址
MOV R7,#08H ;通道數(shù)計(jì)數(shù)器
LOOP: MOVX @DPTR,A
;啟動(dòng)A/D轉(zhuǎn)換,P2.7=0且=0
LOOP1:
NOP
JNB P3.3,LOOP1 ;查詢(xún)轉(zhuǎn)換結(jié)束信號(hào)EOC
MOVX
A,@DPTR ;讀取轉(zhuǎn)換結(jié)果,P2.7=0且=0
MOV @R1,A ;存轉(zhuǎn)換結(jié)果
INC DPTR ;指向下一通道
INC R1 ;修改數(shù)據(jù)區(qū)指針
DJNZ R7,LOOP ;8個(gè)通道全采樣完否
2)中斷方式
ADC0809與AT89S52的中斷方式接口電路只需要將圖6-41中ADC0809的腳經(jīng)過(guò)一個(gè)非門(mén)再接到AT89S52的腳即可。采用中斷方式可大大節(jié)省CPU的時(shí)間。當(dāng)轉(zhuǎn)換結(jié)束時(shí),EOC發(fā)出一個(gè)正脈沖,經(jīng)非門(mén)后向單片機(jī)申請(qǐng)中斷,單片機(jī)響應(yīng)中斷請(qǐng)求,由外部中斷1的中斷服務(wù)程序讀A/D轉(zhuǎn)換結(jié)果,并啟動(dòng)ADC0809的下一次轉(zhuǎn)換。外中斷1采用下降沿觸發(fā)方式。初始化程序如下:
INT1: SETB
IT1 ;外中斷1初始化
SETB
EA
SETB
EX1
MOV
DPTR,#7FF8H ;啟動(dòng)ADC0809對(duì)通道IN0轉(zhuǎn)換 MOV
A,#00H ;A中可以是任意數(shù)值
MOVX
@DPTR,A
中斷服務(wù)程序清單如下:
PINT1: MOV DPTR,#7FF8H ;讀取A/D轉(zhuǎn)換結(jié)果,送緩沖單元30H
MOVX A,@DPTR
MOV 30H,A
MOV A,#00H ;啟動(dòng)A/D轉(zhuǎn)換
MOVX @DPTR,A
RETI6.7.212位并行A/D轉(zhuǎn)換器AD574的擴(kuò)展
1.AD574的特點(diǎn)
2.AD574的引腳及功能
28腳雙列直插式封裝的引腳如圖6-42所示。其引腳功能說(shuō)明如下所示。
1)模擬量輸入引腳
2)數(shù)字量輸出引腳
3)控制引腳圖6-42AD574引腳圖利用該接口電路完成一次A/D轉(zhuǎn)換,并把轉(zhuǎn)換結(jié)果高8位存入R2中,低8位存入R3中,其工作程序如下:
MIAN:MOV R0,#7CH ;選擇AD574,并令A(yù)0=0
MOVX @R0,A ;啟動(dòng)A/D轉(zhuǎn)換,全12位
LOOP:NOP
JB P3.2,LOOP ;查詢(xún)轉(zhuǎn)換是否結(jié)束
MOVX A,@R0 ;讀取高8位
MOV R2,A ;存入R2中
MOV R0,#7DH ;令A(yù)0=1
MOVX A,@R0 ;讀取低4位,尾隨4個(gè)0
MOV R3,A ;存入R3中
6.7.38位并行D/A轉(zhuǎn)換器DAC0832的擴(kuò)展
1.DAC0832的結(jié)構(gòu)原理
1)DAC0832的特性
2)DAC0832的引腳及邏輯結(jié)構(gòu)
DAC0832的引腳如圖6-43所示。其邏輯結(jié)構(gòu)如圖6-44
所示,由8位鎖存器、8位DAC寄存器和8位D/A轉(zhuǎn)換器構(gòu)成。圖6-43DAC0832芯片的引腳圖6-44DAC0832的邏輯結(jié)構(gòu)框圖
2.AT89S52與D/A轉(zhuǎn)換器接口
1)直通工作方式應(yīng)用
2)單緩沖方式應(yīng)用
圖6-45為具有一路模擬量輸出的應(yīng)用系統(tǒng)。圖6-45DAC0832單緩沖器方式應(yīng)用
【例6-7】根據(jù)圖6-44所示電路,編寫(xiě)產(chǎn)生鋸齒波和方波程序。
解產(chǎn)生鋸齒波程序清單如下:
START:
MOV DPTR,#7FFFH ;設(shè)置D/A口地址
MOV A,#00H ;輸入數(shù)字量初值00H到A
LOOP:HOVX@DPTR,A ;輸出對(duì)應(yīng)于A內(nèi)容的模擬量
INC A ;修改A的內(nèi)容
AJMPLOOP ;返回循環(huán)產(chǎn)生方波程序清單:
START: MOV DPTR,#7FFFH ;設(shè)置D/A口地址
LOOP: MOV A,#EFH ;給A送最大值
MOVX @DPTR,A ;D/A輸出相應(yīng)模擬量
ACALL delay ;延時(shí)(略)
MOV A,#00H ;給A送最小值
MOVX @DPTR,A ;D/A輸出相應(yīng)模擬量
ACALL delay ;延時(shí)(略)
AJMP LOOP ;返回循環(huán)
3)雙緩沖方式應(yīng)用
在圖6-46中,每一路模擬量輸出需一片DAC0832。圖6-46DAC0832雙緩沖方式接口電路
【例6-8】根據(jù)圖6-46,編寫(xiě)程序?qū)崿F(xiàn)兩路D/A同步轉(zhuǎn)換輸出。
解程序清單如下:
MOV DDPTR,#0DFFH ;指向DAC0832(1)
MOV A,#DATAI;DATAI送入DAC0832(1)中鎖存
MOVX @DPTR,A
MOV DRTP,#0BFFFH ;指向DAC0832(2)
MOV A,#DATA2;DATA2送入DAC0832(2)中鎖存
MOVX @DPTR,A
MOV DPTR,#7FFFH;給0832(l)和(2)提供WR信號(hào)
MOVX @DPTR,A;同時(shí)完成D/A轉(zhuǎn)換輸出6.8.1SPI和I2C串行總線接口
1.SPI串行總線接口
(1)串行時(shí)鐘線SCK。
(2)低電平有效的從機(jī)選擇線。
(3)主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI。
(4)主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO。
在大多數(shù)應(yīng)用場(chǎng)合,SPI總線的典型應(yīng)用系統(tǒng)是單主系統(tǒng),即由1個(gè)微控制器和1個(gè)或幾個(gè)從I/O設(shè)備所構(gòu)成的各種系統(tǒng),典型的結(jié)構(gòu)如圖6-47所示。6.8串行總線擴(kuò)展技術(shù)圖6-47SPI總線結(jié)構(gòu)框圖SPI總線的典型時(shí)序圖如圖6-48所示。圖6-48SPI數(shù)據(jù)傳送格式
2.I2C總線接口
1)I2C總線
I2C總線的器件接口如圖6-49所示,接口設(shè)有數(shù)據(jù)輸入/輸出引腳SDA和時(shí)鐘輸入/輸出引腳SCL。圖6-49I2C總線接口原理圖單主機(jī)結(jié)構(gòu)的
I2C總線結(jié)構(gòu)圖如圖6-50所示。圖6-50單主結(jié)構(gòu)I2C總線結(jié)構(gòu)圖
2)I2C總線的基本時(shí)序
在I2C總線上,每一位數(shù)據(jù)位的傳送都與時(shí)鐘脈沖相對(duì)應(yīng)。在數(shù)據(jù)傳送時(shí),SDA線上的數(shù)據(jù)在時(shí)鐘的高電平期間必須保持穩(wěn)定。數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL線的時(shí)鐘信號(hào)是低電平時(shí)才能改變,如圖6-51所示。圖6-51I2C數(shù)據(jù)位的有效性規(guī)定根據(jù)I2C總協(xié)議的規(guī)定,當(dāng)SCL線處于高電平時(shí),SDA線從高電平向低電平切換表示起始條件;當(dāng)SCL線處于高電平時(shí),SDA線由低電平向高電平切換表示停止條件。數(shù)據(jù)傳送的起始信號(hào)和終止信號(hào)如圖6-52所示。
圖6-52數(shù)據(jù)傳送的起始信號(hào)和終止信號(hào)利用I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),傳送的字節(jié)數(shù)是沒(méi)有限制的,但是每一個(gè)字節(jié)必須保證是8位長(zhǎng)度,先送高位后送低位。每傳送一個(gè)字節(jié)數(shù)據(jù)以后都必須跟隨一個(gè)應(yīng)答位。應(yīng)答信號(hào)時(shí)序如圖6-53所示。
圖6-53應(yīng)答信號(hào)時(shí)序
3)I2C總線典型信號(hào)模擬子程序
(1)啟動(dòng)信號(hào)子程序START。
在SCL高電平期間,SDA發(fā)生負(fù)跳變,其子程序如下:
START: SETB SDA
SETB SCL
NOP
NOP
CLR SDA;發(fā)出啟動(dòng)信號(hào)
NOP
NOP
CLR SCL
RET
(2)終止信號(hào)子程序STOP。
在SCL高電平期間,SDA發(fā)生正跳變,其子程序如下:
STOP: CLR SDA
SETB SCL
NOP
NOP
SETB SDA;發(fā)出停止信號(hào)
NOP
NOP
CLR SCL
RET
(3)發(fā)送應(yīng)答位子程序ACK。
在SDA低電平期間SCL發(fā)生一個(gè)正脈沖,其子程序如下: ACK: CLR SDA
SETB SCL
NOP
CLR SCL
SETB SDA
RET
(4)發(fā)送非應(yīng)答位子程序NACK。
在SDA高電平期間,SCL發(fā)生一個(gè)正脈沖,其子程序如下:
NACK: SETB SDB
SETB SCL
NOP
NOP
CLR SCL
CLRSDA
RET
(5)檢查應(yīng)答位子程序CHECK。
在檢查應(yīng)答位子程序中,設(shè)置了標(biāo)志位F0,當(dāng)檢查到正常應(yīng)答位時(shí),F0=0,否則,F1=1。
CHECK子程序如下:
CHECK: SETB SDB
SETB SCL
CLR F0
MOV C,SDA
JNC CHECK0
;檢查SDA狀態(tài),正常應(yīng)答轉(zhuǎn)CHECK0 SETB F0 ;無(wú)正常應(yīng)答,F0=1
CHECK0: CLR SCL
NOP
RET
(6)寫(xiě)一個(gè)字節(jié)數(shù)據(jù)子程序WRBYT。
該子程序完成發(fā)送1字節(jié)數(shù)據(jù)操作,其子程序如下:
WRBYT:
MOV
R7,#08H ;8位數(shù)據(jù)長(zhǎng)度發(fā)送R7
WRB1:RLC
A;發(fā)送數(shù)據(jù)左移,使發(fā)送位進(jìn)入CY
MOV
SDA,C
SETB
SCL
NOP
NOP
CLR
SCL
CLR
SDA
DJNZ
R7,WRB1
RET
(7)讀一個(gè)字節(jié)子程序RDBYTE。
該子程序完成接收1字節(jié)數(shù)據(jù)操作,其子程序如下:
RDBYTE:
MOV R7,#08H;8位數(shù)據(jù)長(zhǎng)度送R7
RDB1:
SETB SDA
SETB SCL
MOV C,SDA
RLC A
CLR SCL
DJNZ R7,RDB1
RET6.8.2鍵盤(pán)/顯示器串行擴(kuò)展技術(shù)
1.LED顯示接口設(shè)計(jì)
在單片機(jī)應(yīng)用系統(tǒng)中,常用的顯示器件之一是七段LED數(shù)碼管。七段LED數(shù)碼管分共陰極和共陽(yáng)極兩種,其引腳排列及內(nèi)部結(jié)構(gòu)如圖6-54所示。LED數(shù)碼管通過(guò)點(diǎn)亮特定的字段來(lái)顯示數(shù)字或符號(hào)。共陰和共陽(yáng)七段LED數(shù)碼管的顯示字符與對(duì)應(yīng)的顯示段碼如表6-11所示,共陽(yáng)七段數(shù)碼管的段碼剛好是共陰數(shù)碼管段碼的反碼。圖6-54七段LED數(shù)碼管的引腳排列及內(nèi)部結(jié)構(gòu)表6-11共陰極七段LED數(shù)碼管和共陽(yáng)極七段LED數(shù)碼管的字形段碼表這里介紹一種由移位寄存器74HC164構(gòu)成的串行LED顯示接口電路,其原理圖如圖6-55所示。
上述LED顯示電路具有以下特點(diǎn):
(1)通過(guò)調(diào)節(jié)LM317的輸出電壓來(lái)調(diào)節(jié)數(shù)碼管的亮度,省去了大量的限流電阻。
(2)采用3線制串行接口,硬件連接簡(jiǎn)單,占用單片機(jī)較少的I/O口線。
(3)顯示位數(shù)可任意擴(kuò)展。圖6-55LED顯示電路原理圖位地址00H作為小數(shù)點(diǎn)顯示選擇位,當(dāng)00H=0時(shí),不顯示小數(shù)點(diǎn),00H=1時(shí),顯示小數(shù)點(diǎn)。顯示程序設(shè)計(jì)如下:
LEDCLK EQUP1.5
LEDDATA EQUP1.6
LEDCS EQUP1.7
LEDDISP: SETB LEDCS;關(guān)LED顯示
CLR 00H;不顯示小數(shù)點(diǎn)
MOV A,40H
CALL DOUT;調(diào)用傳用1字節(jié)段碼子程序
MOV A,41H
CALL DOUT
MOV A,42H CALL DOUT
MOV A,43H
CALL DOUT
MOV A,44H
CALL DOUT
MOV A,45H
CALL DOUT
CLR LEDCS ;開(kāi)LED顯示
RET
DOUT: MOV DPTR,#TAB
MOVC A,@A+DPTR ;取顯示段碼
JNB 00H,NDOT
CLR ACC.7 ;清段碼最高位,顯示小數(shù)點(diǎn)NDOT: MOV R7,#08H
CYC: RRC A
MOV LEDDATA,C
CLR LEDCLK
NOP
SETB LEDCLK
DJNZ R7,CYC
RET
TAB: DB0C0H,0F9H,0A4H,0B0H,99H,
DB92H,82H,0F8H,80H,90H,0FFH
2.非編碼式鍵盤(pán)設(shè)計(jì)
圖6-56所示的是具有5個(gè)按鍵的非編碼式鍵盤(pán)接口電路。圖6-56非編碼式鍵盤(pán)原理圖在設(shè)計(jì)非編碼式鍵盤(pán)接口程序時(shí),需要解決以下三個(gè)問(wèn)題:
(1)按鍵識(shí)別。
(2)消抖處理。
(3)串鍵保護(hù)。具體設(shè)計(jì)程序時(shí),為了能定時(shí)地讀取鍵值,一般將鍵盤(pán)程序放在定時(shí)器中斷服務(wù)程序中。
根據(jù)上述思路,鍵盤(pán)程序設(shè)計(jì)如下:
TIMERO:PUSH
A
PUSH
PSW
MOV
THO,#0D0H ;設(shè)置定時(shí)間時(shí)間為10ms
MOV
THO,#0F0H
SETB
P1.0 ;準(zhǔn)備讀引腳
SETB
P1.1
SETB
P1.2
SETB
P1.3
SETB
P1.4 MOV A,P1 ;讀P1.0~P1.4引腳電平
ANL A,#1FH
CJNE A,46#,K0 ;與上次鍵值相同?
SJMP K5
K0: MOV 46H,A ;保存鍵值
CJNE A,#1EH,K1 ;K1鍵閉合?
ACALL SUBK1 ;執(zhí)行K1鍵命令程序
SJMP K5
K1: CJNE A,#1DH,K2 ;K2鍵閉合?
ACALL SUBK2 ;執(zhí)行k2鍵命令程序
SJMP K5K2: CJINE A,#1BH,K3 ;K3鍵閉合?
ACALL SUBK3 ;執(zhí)行K3鍵命令程序
SJMP
K3: CJNE A,#17H,K4 ;K4鍵閉合?
ACALL SUBK4 ;執(zhí)行K4鍵命令程序
SJMP K5
K4: CJINE A,#0FH,K5 ;K3鍵閉合?
ACALL SUBK5 ;執(zhí)行K5鍵命令程序
K5: POP A
POP PSW
RETI6.8.3E2PROM串行擴(kuò)展技術(shù)
AT24C04的芯片引腳排列及引腳功能如圖6-57所示。
AT24C04與AT89S52單片機(jī)的接口十分簡(jiǎn)單,其原理如圖6-58所示。
AT24C04從機(jī)地址的構(gòu)成如圖6-59所示。圖6-57AT24C04系列器件的引腳及功能圖6-58AT24C04與AT89S52單片機(jī)的硬件接口圖6-59AT24C04從機(jī)地址構(gòu)成單字節(jié)讀操作時(shí)序如圖6-60所示,其操作時(shí)序由以下幾個(gè)過(guò)程構(gòu)成:主機(jī)發(fā)出起始信號(hào)(START)表明一次數(shù)據(jù)傳送的開(kāi)始,接著主機(jī)發(fā)送從機(jī)地址(寫(xiě))和片內(nèi)存儲(chǔ)空間地址。主機(jī)再次發(fā)送起始信號(hào),接著發(fā)送從機(jī)地址(讀),然后讀取從機(jī)數(shù)據(jù),最后進(jìn)入結(jié)束周期。當(dāng)AT24C04接收數(shù)據(jù)以后,都應(yīng)發(fā)出應(yīng)答信號(hào)ACK。圖6-60單字節(jié)讀操作時(shí)序單字節(jié)寫(xiě)操作時(shí)序如圖6-61所示。寫(xiě)字節(jié)操作時(shí)序同樣由起始信號(hào)開(kāi)始,然后連續(xù)發(fā)送從機(jī)地址、片內(nèi)存儲(chǔ)空間地址和數(shù)據(jù)字節(jié)。最后進(jìn)入結(jié)束總線周期。圖6-61單字節(jié)寫(xiě)字節(jié)操作時(shí)序下面給出單片機(jī)從AT24C04中連續(xù)寫(xiě)4個(gè)字節(jié)和連續(xù)讀4個(gè)字節(jié)子程序。
(1)連續(xù)寫(xiě)4字節(jié)數(shù)據(jù)子程序。
設(shè)AT24C04片內(nèi)存儲(chǔ)空間地址存放在AT89S52單片機(jī)內(nèi)部的30H單元,寫(xiě)入AT24C04的數(shù)據(jù)存放在31H~34H單元。R1存放數(shù)據(jù)緩沖區(qū)首地址,R6為字節(jié)寄存器。SDAEQUP3.4
SCLEQUP3.5
WRITE4:LCALLSTART ;啟動(dòng)I2C總線
MOVA,#0AOH ;從機(jī)地址(寫(xiě))送A中
LCALLWRBYTE ;發(fā)送從機(jī)地址
LCALLCHECK ;檢查應(yīng)答位
JBF0,WTRITE4
MOVA,30H;
LCALL
CHECK
JB
F0,WRITE4
MOV
R1,#31H ;數(shù)據(jù)緩沖區(qū)首地址送R1
MOV
R6,#04 ;設(shè)置字節(jié)數(shù)WRITE40:
MOV A,@R1
LCALL WRBYTE
LCALL CHECK
JB F0,WRITE4
INC R1
DJNZ R6,WRITE40 ;判斷4個(gè)字節(jié)是否讀完
LCALL STOP ;發(fā)送停止信號(hào)
RET
(2)連續(xù)讀4字節(jié)數(shù)據(jù)子程序。
設(shè)AT24C04片內(nèi)存儲(chǔ)空間地址存放在AT89S52單片機(jī)內(nèi)部的30H單元,從AT24C04讀取的數(shù)據(jù)存放在31H~34H單元。R1存放數(shù)據(jù)緩沖區(qū)首地址,R6為循環(huán)計(jì)數(shù)器。
SDA EQUP3.4
SCL EQUP3.5
READ4: LCALL START ;啟動(dòng)I2C總線
MOV A,#0A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 探討不同領(lǐng)域中課程設(shè)計(jì)對(duì)價(jià)格的影響力研究報(bào)告
- 教育游戲化品牌的創(chuàng)新與市場(chǎng)接受度分析
- 國(guó)有林地確權(quán)方案
- 服裝產(chǎn)品類(lèi)交貨方案(3篇)
- 心律失常的病例討論
- 教育信息化進(jìn)程中智慧校園安全管理新模式探索
- 教育技術(shù)的新天地創(chuàng)新成果推動(dòng)行業(yè)前行
- 冠脈介入治療圍手術(shù)期護(hù)理
- 模具開(kāi)發(fā)實(shí)施方案
- 直播商品策劃方案模板
- 【公開(kāi)課】三角形的邊+課件+2025-2026學(xué)年人教版八年級(jí)數(shù)學(xué)上冊(cè)
- 2025年廣東省普通高中學(xué)業(yè)水平合格性考試模擬一歷史試題(含答案)
- 【公開(kāi)課】+分子動(dòng)理論的初步知識(shí)(教學(xué)課件)2025-2026學(xué)年初中物理人教版(2024)九年級(jí)全一冊(cè)
- 設(shè)備安全培訓(xùn)
- 2025至2030中國(guó)角膜塑形鏡行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025年4月自考03346項(xiàng)目管理試題
- 2024年度醫(yī)患溝通課件
- 九宮格數(shù)獨(dú)題目(打印版)
- 第二類(lèi)醫(yī)療器械授權(quán)委托書(shū)
- 初中語(yǔ)文活動(dòng)·探究單元教學(xué)研究綜述
- 七年級(jí)期末考試數(shù)學(xué)質(zhì)量分析
評(píng)論
0/150
提交評(píng)論