第7章MCS-51單片機常用接口ppt課件_第1頁
第7章MCS-51單片機常用接口ppt課件_第2頁
第7章MCS-51單片機常用接口ppt課件_第3頁
第7章MCS-51單片機常用接口ppt課件_第4頁
第7章MCS-51單片機常用接口ppt課件_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第7章 MCS-51單片機常用接口 7.1 MCS-51單片機的最小系統(tǒng)單片機的最小系統(tǒng) 所謂最小系統(tǒng),是指一個真正可用的單片機最小配置系統(tǒng)。對于單片機內(nèi)部資源已能滿足系統(tǒng)需求的,可直接采用最小系統(tǒng)。MCS-51單片機根據(jù)片內(nèi)有無程序存儲器最小系統(tǒng)分兩種情況。 7.1.1 8051/8751的最小系統(tǒng) 8051/8751片內(nèi)有4K的ROM/EPROM,因此,只需求外接晶體振蕩器和復位電路就可構(gòu)成最小系統(tǒng)。如下圖。 第7章 MCS-51單片機常用接口 第7章 MCS-51單片機常用接口 XTAL1 XTAL2 8751 P0P1P2P3 8051 RESET EA GND +5V +5V8 8

2、88 該最小系統(tǒng)的特點如下:1由于片外沒有擴展存儲器和外設(shè),P0、P1、P2、P3都可以作為用戶I/O口運用。2片內(nèi)數(shù)據(jù)存儲器有128字節(jié),地址空間00H7FH,沒有片外數(shù)據(jù)存儲器。3內(nèi)部有4KB程序存儲器,地址空間0000H0FFFH,沒有片外程序存儲器,EA應接高電平。4可以運用兩個定時/計數(shù)器T0和T1,一個全雙工的串行通訊接口,5個中斷源。第7章 MCS-51單片機常用接口 7.1.1 8031最小運用系統(tǒng) 8031片內(nèi)無程序存儲器片,因此,在構(gòu)成最小運用系統(tǒng)不僅要外接晶體振蕩器和復位電路,還應外擴展程序存儲器。 P2ALE8031P0EAPSENG74LS373A15A8A7A0D7

3、D0OE2764CE高8位地址線P2ALEP0EAPSEN第7章 MCS-51單片機常用接口 該最小系統(tǒng)特點如下:1由于P0、P2在擴展程序存儲器時作為地址線和數(shù)據(jù)線,不能作為I/O線,因此,只需P1、P3作為用戶I/O口運用。2片內(nèi)數(shù)據(jù)存儲器同樣有128字節(jié),地址空間00H7FH,沒有片外數(shù)據(jù)存儲器。3內(nèi)部有無程序存儲器,但片外擴展了程序存儲器,其地址空間隨芯片容量不同而不一樣。圖6.2中運用的是2764芯片,容量為8K字節(jié),地址空間為0000H1FFFH。由于片內(nèi)沒有程序存儲器,只能運用片外程序存儲器,EA只能接低電平。4同樣可以運用兩個定時/計數(shù)器T0和T1,一個全雙工的串行通訊接口,5

4、個中斷源。 第7章 MCS-51單片機常用接口 7.2 存儲器擴展存儲器擴展7.2.1 存儲器擴展概述存儲器擴展概述一、一、MCS-51單片機的存儲器擴展才干單片機的存儲器擴展才干可擴展片外程序存儲器64KB,地址為0000HFFFFH??蓴U展片外數(shù)據(jù)存儲器64KB,地址為0000HFFFFH。二、存儲器擴展的普通方法二、存儲器擴展的普通方法 不論何種存儲器芯片,其引腳都呈三總線構(gòu)造,與單片機銜接都是三總線對接。另外,電源線接電源線,地線接地線。 控制線: 程序存儲器:ROM芯片輸出允許控制線 OE與單片機的PSEN信號線相連 。 數(shù)據(jù)存儲器:RAM芯片輸出允許控制線OE和寫控制線 WE分別與

5、單片機的讀信號線RD和寫信號線WR相連。 程序存儲器用ROM芯片擴展,數(shù)據(jù)存儲器用RAM芯片擴展第7章 MCS-51單片機常用接口 2、數(shù)據(jù)線:存儲器芯片的數(shù)據(jù)線與單片機的數(shù)據(jù)總線(P0.0P0.7)按由低位到高位的順序依次相接。 3、地址線: 存儲器芯片的地址線的數(shù)目由芯片的容量決議。容量(Q)與地址線數(shù)目(N)滿足關(guān)系式:Q=2N。普通來說,存儲器芯片的地址線數(shù)目總是少于單片機地址總線的數(shù)目,銜接時存儲器芯片的地址線與單片機的地址總線(A0A15)按由低位到高位的順序依次相接。銜接后,單片機的高位地址線總有剩余。剩余地址線普通作為譯碼線,譯碼輸出與存儲器芯片的片選信號線CS相接。片選信號線

6、與單片機系統(tǒng)的譯碼輸出相接后,就決議了存儲器芯片的地址范圍。 譯碼有兩種方法:部分譯碼法和全譯碼法。 部分譯碼:所謂部分譯碼就是存儲器芯片的地址線與單片機系統(tǒng)的部分譯碼:所謂部分譯碼就是存儲器芯片的地址線與單片機系統(tǒng)的地址線依次相接后,剩余的高位地址線僅用一部分參與譯碼。部分譯地址線依次相接后,剩余的高位地址線僅用一部分參與譯碼。部分譯碼使存儲器芯片的地址空間有重疊,呵斥系統(tǒng)存儲器空間的浪費。碼使存儲器芯片的地址空間有重疊,呵斥系統(tǒng)存儲器空間的浪費。 第7章 MCS-51單片機常用接口 如以下圖,存儲器芯片容量為2K,地址線為11根,與地址總線的低11位A0A10相連,用于選中芯片內(nèi)的單元。地

7、址總線的A11、A12、A13、A14根地址線參與譯碼的選中芯片,設(shè)這四根地址總線的形狀為0100時選中該芯片。地址總線A15不參與譯碼,當?shù)刂房偩€A15為0、1兩種形狀都可以選中該存儲器芯片。A15 A140A130A121A110A10A9A8A7A6A5A4A3A2A1A0地址譯碼線與存儲器芯片銜接的地址線當A15=0時,芯片占用的地址是00010000000000000001011111111111,即1000H17FFH。當A15=1時,芯片占用的地址是10010000000000001001011111111111,即9000H97FFH。部分譯碼法的一個特例是線譯碼。所謂線譯碼就

8、是直接用一根剩部分譯碼法的一個特例是線譯碼。所謂線譯碼就是直接用一根剩余的高位地址線與一塊存儲器芯片的片選信號余的高位地址線與一塊存儲器芯片的片選信號CS相連。相連。 第7章 MCS-51單片機常用接口 全譯碼:所謂全譯碼就是存儲器芯片的地址線與單片機系統(tǒng)的地址線全譯碼:所謂全譯碼就是存儲器芯片的地址線與單片機系統(tǒng)的地址線依次相接后,剩余的高位地址線全部參與譯碼。這種譯碼方法存儲器依次相接后,剩余的高位地址線全部參與譯碼。這種譯碼方法存儲器芯片的地址空間是獨一確定的,但譯碼電路相對復雜。芯片的地址空間是獨一確定的,但譯碼電路相對復雜。3擴展存儲器所需芯片數(shù)目確實定擴展存儲器所需芯片數(shù)目確實定存

9、儲器芯片容量系統(tǒng)擴展容量芯片數(shù)目=假設(shè)所選存儲器芯片字長與單片機字長一致,那么只需擴展容量。所需芯片數(shù)目按下式確定:假設(shè)所選存儲器芯片字長與單片機字長不一致,那么不僅需擴展容量,還需字擴展。所需芯片數(shù)目按下式確定:存儲器芯片字長系統(tǒng)字長存儲器芯片容量系統(tǒng)擴展容量芯片數(shù)目=第7章 MCS-51單片機常用接口 7.2.2 程序存儲器擴展程序存儲器擴展一單片程序存儲器的擴展一單片程序存儲器的擴展P2.6P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P2.7P2.5P0.0ALEVcc8031PSENEAVss+5VA12A11A10A9A8A7A6A

10、5A4A3A2A1A0D7D5D4D3D2D1D0OED6CEGNDVff+5V8D7D6D5D4D3D2D1DGOE8Q7Q6Q5Q4Q3Q2Q1QVcc74LS3732764第7章 MCS-51單片機常用接口 二多片程序存儲器的擴展二多片程序存儲器的擴展其8個重疊的地址范圍為如下:00000000000000000001111111111111,即0000H1FFFH;00100000000000000011111111111111,即2000H3FFFH;01000000000000000101111111111111,即4000H5FFFH;0110000000000000011111

11、1111111111,即6000H7FFFH;10000000000000001001111111111111,即8000H9FFFH;10100000000000001011111111111111,即A000HBFFFH;11000000000000001101111111111111,即C000HDFFFH;11100000000000001111111111111111,即E000HFFFFH。P2.6P2.5P2.4P2.0ALE8031PSENEAGP2.774LS373OEA0A7A8A12 CED0D7OE2764(1)A0A7A8A12 CE2764(2)D0D7OEP058

12、8885885第7章 MCS-51單片機常用接口 其兩片的地址空間分別為:第一片:000000000000000000001111111111111,即0000H1FFFH;001000000000000000011111111111111,即2000H3FFFH;010000000000000000101111111111111,即4000H5FFFH;011000000000000000111111111111111,即6000H7FFFH;第二片:100000000000000001001111111111111,即8000H9FFFH;1010000000000000010111111

13、11111111,即A000HBFFFH;110000000000000001101111111111111,即C000HDFFFH;111000000000000001111111111111111,即E000HFFFFH。第7章 MCS-51單片機常用接口 P2.6P2.5P 2 . 4 P2.0ALE8031PSENEAGP2.774LS373OEA0A7A8A12CED0D7OE2764(1)A0A7A8A12CE2764(2)OEP0588885885CBAD0D7GG1G2AG2BY3Y2Y1Y08D0D7OE2764(3)A0A7A8A12CE8D0D7OECEA8A12A0A7

14、2764(4)8585Vcc74LS由于采用全譯碼,每片2764的地址空間都是獨一的。它們分別是:000000000000000000001111111111111,即0000H1FFFH;001000000000000000011111111111111,即2000H3FFFH;010000000000000000101111111111111,即4000H5FFFH;011000000000000000111111111111111,即6000H7FFFH。第7章 MCS-51單片機常用接口 P2.6P2.5P2.4P2.0ALE8051RDEAGP2.774LS373OEA0A7 A8A

15、12CE1D0D7OE6264(1)A0A7 A8A12CE16264(2)D0D7OEP058885885WRWEWE88CE2CE2P2.7為低電平0,兩片6264芯片的地址空間為:第一片:010000000000000000101111111111111,即4000H5FFFH;第二片:001000000000000000011111111111111,即2000H3FFFH;P2.7為高電平1,兩片6264芯片的地址空間為:第一片:110000000000000001101111111111111,即C000HDFFFH;第二片:1010000000000000010111111111

16、11111,即A000HBFFFH;7.2.3 數(shù)據(jù)存儲器擴展數(shù)據(jù)存儲器擴展第7章 MCS-51單片機常用接口 7.3 輸入輸入/輸出口擴展輸出口擴展7.3.1 簡單簡單I/O口擴展口擴展 通常經(jīng)過數(shù)據(jù)緩沖器、鎖存器來擴展簡單I/O接口。例如:74LS373 74LS244、74LS273、74LS245等芯片都可以作簡單I/O擴展。P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.08051EAD0D1D2D3D4D5D6D7GOEQ0Q1Q2Q3Q4Q5Q6Q774LS373P2.0RDQ0Q1Q2Q3Q4Q5Q6Q71G2G74LS244+L1L2L3L4L5L6L7L0+5

17、VD0D1D2D3D4D5D6D7K1K2K3K4K5K6K7K0第7章 MCS-51單片機常用接口 圖中,擴展的輸入口接了K0K7 8個開關(guān),擴展的輸出口接了L0L7 8個發(fā)光二極管,假設(shè)要實現(xiàn)K0K7開關(guān)的形狀經(jīng)過L0L7發(fā)光二極管顯示,那么相應的匯編程序為:LOOP:MOV DPTR,#0FEFFHMOVX A,DPTRMOVX DPTR,ASJMP LOOP假設(shè)用C言語編程,相應程序段為:#include /定義絕對地址訪問#define uchar unsigned charuchar i;i=XBYTE0 xfeff;XBYTE0 xfeff= i;第7章 MCS-51單片機常用接

18、口 7.3.2 可編程可編程I/O擴展擴展(8255A)一一8255A的構(gòu)造與功能的構(gòu)造與功能數(shù)據(jù)總線緩沖器讀/寫控制部件雙向數(shù)據(jù)總線 D0D7 RD WR A1 A0RESETCSB組控制部件A組控制部件A組端口AA組端口CB組端口CB組端口BA組B組PA7PA0PC7PC4PC3PC0PB7PB08位內(nèi)部總線第7章 MCS-51單片機常用接口 CSA1A0RDWRI/O操作00001讀A口寄存器內(nèi)容到數(shù)據(jù)總線00101讀B口寄存器內(nèi)容到數(shù)據(jù)總線01001讀C口寄存器內(nèi)容到數(shù)據(jù)總線00010數(shù)據(jù)總線上內(nèi)容寫到A口寄存器00110數(shù)據(jù)總線上內(nèi)容寫到B口寄存器01010數(shù)據(jù)總線上內(nèi)容寫到C口寄存

19、器01110數(shù)據(jù)總線上內(nèi)容寫到控制口寄存器二二8255A的引腳信號的引腳信號8255A共40引腳,采用雙列直插式封裝,如以下圖所示,各引腳信號功能如下:D7D0:三態(tài)雙向數(shù)據(jù)線,與單片機的數(shù)據(jù)總線相連,用來傳送數(shù)據(jù)信息。第7章 MCS-51單片機常用接口 CS:片選信號線,低電平有效,用于選中8255A芯片。 RD:讀信號線,低電平有效,用于控制從8255A端口存放器讀出信息。WR:寫信號線,低電平有效,用于控制向8255A端口存放器寫入信息。PA7PA0:A口的8根輸入/輸出信號線,用于與外部設(shè)備銜接。PB7PB0:B口的8根輸入/輸出信號線,用于與外部設(shè)備銜接。PC7PC0:C口的8根輸入

20、/輸出信號線,用于與外部設(shè)備銜接。RESET:復位信號線。VCC:+5V電源線。GND:地信號線。8255A12345678910111213141516171819204039383736353433323130292827262524232221PA3PA2PA1RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB2PA0PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VccPB7PB6PB5PB4PB3第7章 MCS-51單片機常用接口 三三8255A的控制字的控制字8255A有兩個控制字:任務(wù)方式控制字和C口按位置位/復位控制字。

21、 1任務(wù)方式控制字任務(wù)方式控制字端口A0:輸出1:輸入端口C高4位0:輸出1:輸入端口B0:輸出1:輸入特征位1A組任務(wù)方式位00:方式001:方式11X:方式2B組任務(wù)方式位0:方式01:方式1端口C低4位0:輸出1:輸入D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0D7位為特征位。D7=1表示為任務(wù)方式控制字。D6、D5用于設(shè)定A組的任務(wù)方式。D4、D3用于設(shè)定A口和C口的高4位是輸入還是輸出。D2用于設(shè)定B組的任務(wù)方式。D1、D0用于設(shè)定B口和C口的低4位是輸入還是輸出。第7章 MCS-51單片機常用接口 2C口按位置位口按位置位/復位控制字復位控制字特征位0這三位不用位

22、選擇位000:C口0位001:C口1位111:C口7位0:復位1:置位D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0D7位為特征位。D7=0表示為C口按位置位/復位控制字。D6、D5、D4這三位不用D3、D2、D1這三位用于選擇C口當中的某一位。D0用于置位/復位設(shè)置,D0=0那么復位,D0=1那么置位。第7章 MCS-51單片機常用接口 四四8255A的任務(wù)方式的任務(wù)方式1方式方式0 方式0是一種根本的輸入/輸出方式。在這種方式下,三個端口都可以由程序設(shè)置為輸入或輸出,沒有固定的應對信號。方式0特點如下:1具有兩個8位端口A、B和兩個4位端口C口的高4位和C口的低4位。2任何

23、一個端口都可以設(shè)定為輸入或者輸出。3每一個端口輸出時是鎖存的,輸入是不鎖存的。 方式0輸入/輸出時沒有專門的應對信號,通常用于無條件傳送。例如:以下圖是8255A任務(wù)于方式0的例子,其中A口輸入,B口輸出。 第7章 MCS-51單片機常用接口 8051系統(tǒng)總線8255APA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7+5V+5VK0K7L0L7第7章 MCS-51單片機常用接口 2方式方式1 方式1是一種選通輸入/輸出方式。在這種任務(wù)方式下,端口A和B作為數(shù)據(jù)輸入輸出口,端口C用作輸入/輸出的應對信號。A口和B口既可以作輸入,也可作輸出,輸入和輸

24、出都具有鎖存才干。 方式1輸入: 無論是A口輸入還是B口輸入,都用C口的三位作應對信號,一位作中斷允許控制位。 INTE&PC4PC5PC3PC6、PC7PA0PA7STBAIBFAI/OINTRAB口輸入INTE&A口輸入PC2PC1PC088IBFBSTBBPB0PB7INTRB第7章 MCS-51單片機常用接口 各應對信號含義如下:STB:外設(shè)送給8255A的“輸入選通信號,低電平有效。 IBF:8255A送給外設(shè)的“輸入緩沖器滿信號,高電平有效。 INTR:8255A送給CPU的“中斷懇求信號,高電平有效。 INTE:8255A內(nèi)部為控制中斷而設(shè)置的“中斷允許信號。IN

25、TE由軟件經(jīng)過對PC4A口和PC2B口的置位/復位來允許或制止。 方式1輸出: 無論是A口輸出還是B口輸出,也都用C口的三位作應對信號,一位作中斷允許控制位。 INTE&PC7PC6PC3PC4、PC5PA0PA7ACKAOBFAI/OINTRAB口輸出INTE&A口輸出PC2PC1PC088OBFBACKBPB0PB7INTRB2第7章 MCS-51單片機常用接口 應對信號含義如下:OBF:8255A送給外設(shè)的“輸出緩沖器滿信號,低電平有效。 ACK:外設(shè)送給8255A的“應對信號,低電平有效。 INTR:8255A送給CPU的“中斷懇求信號,高電平有效。 INTE:8255

26、A內(nèi)部為控制中斷而設(shè)置的“中斷允許信號,含義與輸入一樣,只是對應C口的位數(shù)與輸入不同,它是經(jīng)過對PC4A口和PC2B口的置位/復位來允許或制止。 3方式方式2 方式2是一種雙向選通輸入/輸出方式。只適宜于端口A。這種方式能實現(xiàn)外設(shè)與8255A的A口雙向數(shù)據(jù)傳送,并且輸入和輸出都是鎖存的。它運用C口的5位作應對信號,兩位作中斷允許控制位。 第7章 MCS-51單片機常用接口 &INTE1INTE2&1PC5PC4PC6PC7PC3PA0PA7ACKAOBFAINTRASTBAIBFA五五8255A與與MCS-51單片機的接口單片機的接口1硬件接口硬件接口 8255A與MCS-51

27、單片機的銜接包含數(shù)據(jù)線、地址線、控制線的銜接.第7章 MCS-51單片機常用接口 VccWRRDP2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.08051ALEEAGNDD7D6D5D4D3D2D2D1DO GQ7Q6Q5Q4Q3Q2Q1Q0WRRDCSA1A0D7D6D5D4D3D2D1GNDVcc+5V+5VPA7-PA0PB7-PB0PC7-PC0OED0第7章 MCS-51單片機常用接口 圖中,8255A的數(shù)據(jù)線與8051單片機的數(shù)據(jù)總線相連,讀、寫信號線對應相連,地址線A0、A1與單片機的地址總線的A0和A1相連,片選信號CS與8051的P2.0相連。那么825

28、5A的A口、B口、C口和控制口的地址分別是:FEFCH,F(xiàn)EFDH,F(xiàn)EFEH,F(xiàn)EFFH。 2軟件編程軟件編程假設(shè)設(shè)定8255A的A口為方式0輸入,B口為方式0輸出,那么初始化程序為:匯編程序段:MOV A,#90HMOV DPTR,#0FEFFHMOVX DPTR,AC言語程序段:#include #include /定義絕對地址訪問XBYTE0 xfeff=0 x90;第7章 MCS-51單片機常用接口 7.4 MCS-51單片機與鍵盤接口單片機與鍵盤接口7.4.1 鍵盤的任務(wù)原理鍵盤的任務(wù)原理鍵盤實踐上是一組按鍵開關(guān)的集合,平常按鍵開關(guān)總是處于斷開形狀,當按下鍵時它才閉合。它的構(gòu)造和產(chǎn)

29、生的波形如下圖。P1.1VCCGND斷開閉合斷開P1.1( a )( b )第7章 MCS-51單片機常用接口 鍵盤的處置主要涉及三個方面:鍵盤的處置主要涉及三個方面: 1按鍵的識別按鍵的識別2抖動的消除抖動的消除消除按鍵盤抖動通常有兩種方法:硬件消抖和軟件消抖。斷開閉合+5V+5V輸出軟件消抖是利用延時來跳過抖動過程 第7章 MCS-51單片機常用接口 3鍵位的編碼鍵位的編碼通常有兩種方法編碼。 1用銜接鍵盤的I/O線的二進制組合進展編碼。如a圖 2順序陳列編碼。如b圖,處置方法如下:編碼值=行首編碼值X+列號Y。 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.788 84

30、82 8148 44 42 4128 24 22 2118 14 12 11P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7F E D CB A 9 87 6 5 43 2 1 0( a )( b )第7章 MCS-51單片機常用接口 7.4.2 獨立式鍵盤與單片機的接口獨立式鍵盤與單片機的接口鍵盤的構(gòu)造方式普通有兩種:獨立式鍵盤與矩陣式鍵盤。 獨立式鍵盤就是各按鍵相互獨立,每個按鍵各接一根I/O口線,每根I/O口線上的按鍵都不會影響其它的I/O口線。 GNDVCCGNDVCC與( b )8051( a )INT08051P1.0P1.1P1.2P1.3P1.4P1.5P1.6

31、P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7第7章 MCS-51單片機常用接口 圖a為中斷方式任務(wù)的獨立式鍵盤的構(gòu)造方式,b為查詢方式任務(wù)的獨立式鍵盤的構(gòu)造方式 下面是針對圖7.4b圖查詢方式的匯編言語方式的鍵盤程序。總共有8個鍵位,KEY0KEY7為8個鍵的功能程序。START:MOV A,#0FFH;MOV P1,A ;置P1口為輸入形狀MOV A,P1 ;鍵形狀輸入CPL AJZ START ;沒有鍵按下,那么轉(zhuǎn)開場JB ACC.0,K0 ;檢測0號鍵能否按下,按下轉(zhuǎn)JB ACC.1,K1 ;檢測1號鍵能否按下,按下轉(zhuǎn)JB ACC.2,K2 ;檢測2號鍵能否按

32、下,按下轉(zhuǎn)JB ACC.3,K3 ;檢測3號鍵能否按下,按下轉(zhuǎn)JB ACC.4,K4 ;檢測4號鍵能否按下,按下轉(zhuǎn)JB ACC.5,K5 ;檢測5號鍵能否按下,按下轉(zhuǎn)JB ACC.6,K6 ;檢測6號鍵能否按下,按下轉(zhuǎn)JB ACC.7,K7 ;檢測7號鍵能否按下,按下轉(zhuǎn)JMP START ;無鍵按下前往,再依次檢測第7章 MCS-51單片機常用接口 K0:AJMP KEY0K1:AJMP KEY1K7:AJIMP KEY7KEY0: ;0號鍵功能程序JMP START ;0號鍵功能程序執(zhí)行完前往KEY1: ;0號鍵功能程序JMP START ;1號鍵功能程序執(zhí)行完前往KEY7: ;7號鍵功能程

33、序JMP START ;7號鍵功能程序執(zhí)行完前往7.4.3 矩陣鍵盤與單片機的接口矩陣鍵盤與單片機的接口 矩陣式鍵盤又叫行列式鍵盤。用I/O口線組成行、列構(gòu)造,鍵位設(shè)置在行列的交點上。例如44的行、列構(gòu)造可組成16個鍵的鍵盤,比一個鍵位用一根I/O口線的獨立式鍵盤少了一半的I/O口線。 第7章 MCS-51單片機常用接口 PA7PA6PA5PA4PA3PA2PA1PA0PC0PC1PC2PC30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 CS74LS373WRRDA1

34、A0P2.7WRRDALEP0.0P0.7D0D7RESET1K20F+5V+5V82555.1K48051第7章 MCS-51單片機常用接口 一矩陣鍵盤的任務(wù)過程一矩陣鍵盤的任務(wù)過程對矩陣鍵盤的任務(wù)過程可分兩步:第一步是CPU首先檢測鍵盤上能否有鍵按下;第二步是再識別是哪一個鍵按下。二矩陣鍵盤的任務(wù)方式二矩陣鍵盤的任務(wù)方式1查詢?nèi)蝿?wù)方式查詢?nèi)蝿?wù)方式2定時掃描任務(wù)方式定時掃描任務(wù)方式3中斷處置方式中斷處置方式對于檢測鍵盤上有無鍵按下通常采用3種方式 第7章 MCS-51單片機常用接口 鍵盤掃描子程序流程如圖 。開場有鍵按下否?調(diào)用6ms延時子程序?調(diào)用12ms延時子程序?有鍵按下否?判閉合鍵,

35、編碼入棧維護閉合鍵釋放否?編碼A前往否否否是是是第7章 MCS-51單片機常用接口 鍵盤掃描子程序如下:硬件線路前圖,8255A的A口、B口、C口和控制口地址分別為7F00H、7F01H、7F02H、7F03H,設(shè)8255A已在主程序中初始化。已設(shè)定為A口方式0輸出,C口的低4位方式0輸入。KEY1:ACALL KS1 ;調(diào)用判別有無鍵按下子程序JNZ LK1 ;有鍵按下時,(A)0轉(zhuǎn)消抖延時KEY2:ACALL TM6msAJMP KEY1 ;無鍵按下前往LK1:ACALL TM12ms ;調(diào)12 ms延時子程序ACALL KS1 ;查有無鍵按下,假設(shè)有那么真有鍵按下JNZ LK2 ;鍵(A

36、) 0逐列掃描AJMP KEY2 ;不是真有鍵按下,前往LK2:MOV R2,#0FEH ;初始列掃描字(0列)送入R2MOV R4,#00H ;初始列(0列)號送入R4LK4:MOV DPTR,#7F00H ;DPTR指向8255的A口MOV A,R2 ;列掃描字送至8255的A口MOVX DPTR,AINC DPTR ;DPTR指向8255的C口INC DPTR 第7章 MCS-51單片機常用接口 MOVX A,DPTR ;從8255 的C口讀入行形狀JB ACC.0,LONE ;查第0行無鍵按下,轉(zhuǎn)查第1行MOV A,#00H ;第0行有鍵按下,行首鍵碼#00HAAJMP LKP ;轉(zhuǎn)求

37、鍵碼LONE:JB ACC.1,LTWO ;查第1行無鍵按下,轉(zhuǎn)查第2行MOV A,#08H ;第1行有鍵按下,行首鍵碼#08HAAJMP LKP ;轉(zhuǎn)求鍵碼LTWO:JB ACC.2,LTHR ;查第2行無鍵按下,轉(zhuǎn)查第3行MOV A,#10H ;第2行有鍵按下,行首鍵碼#10HAAJMP LKP ;轉(zhuǎn)求鍵碼LTHR:JB ACC.3,NEXT ;查第3行無鍵按下,轉(zhuǎn)該查下一列MOV A,#18H ;第3行有鍵按下,行首鍵碼#18HALKP:ADD A,R4 ;求鍵碼,鍵碼=行首鍵碼+列號PUSH ACC ;鍵碼進棧維護LK3:ACALL KS1 ;等待鍵釋放JNZ LK3 ;鍵未釋放,等待

38、POP ACC ;鍵釋放,鍵碼ARET ;鍵掃描終了,出口形狀(A)=鍵碼第7章 MCS-51單片機常用接口 NEXT:INC R4 ;預備掃描下一列,列號加1MOV A,R2 ;取列掃描字送累加器AJNB ACC.7,KEND ;判別8列掃描否?掃描完前往RL A ;掃描字左移一位,變?yōu)橄乱涣袙呙枳諱OV R2,A ;掃描字送入R2保管AJMP LK4 ;轉(zhuǎn)下一列掃描KEND:AJMP KEY1 KS1:MOV DPTR,#7F00H ;DPTR指向8255的A口MOV A,#00H ;全掃描字AMOVX DPTR,A ;全掃描字送往8255的A口INC DPTR ;DPTR指向8255的C

39、口INC DPTR MOVX A,DPTR ;讀入PC口行形狀CPL A ;變正邏輯,以高電平表示有鍵按下ANL A,#0FH ;屏蔽高4位,只保管低4位行線值RET ;出口形狀:(A)0時有鍵按下第7章 MCS-51單片機常用接口 TM12ms:MOV R7,#18H ;延時12 ms子程序TM:MOV R6,#0FFHTM6:DJNZ R6,TM6DJNZ R7,TMRETTM6ms:MOV R7,#0CH ;延時6 ms子程序TM2:MOV R6,#0FFHTM62:DJNZ R6,TM6DJNZ R7,TMRET第7章 MCS-51單片機常用接口 C言語鍵盤掃描子程序:#include

40、 #include /定義絕對地址訪問#define uchar unsigned char#define uint unsigned intvoid delay(uint);uchar scankey(void);uchar keyscan(void);void main(void)uchar key;while(1)key=keyscan();delay(2000);第7章 MCS-51單片機常用接口 /*延時函數(shù)*void delay(uint i) /延時函數(shù)uint j;for (j=0;ji;j+)/*檢測有無鍵按下函數(shù)*uchar checkkey() /檢測有無鍵按下函數(shù),有前

41、往0 xff,無前往0uchar i;XBYTE0 x7f00=0 x00;i=XBYTE0 x7f02;i=i&0 x0f;if (i= =0 x0f) return(0);else return(0 xff);第7章 MCS-51單片機常用接口 /*鍵盤掃描函數(shù)*uchar keyscan()/鍵盤掃描函數(shù),假設(shè)有鍵按下,那么前往該鍵的編碼,假設(shè)無鍵按下,那么前往0 xff uchar scancode; /定義列掃描碼變量 uchar codevalue; /定義前往的編碼變量 uchar m; /定義行首編碼變量 uchar k; /定義行檢測碼 uchar i,j; if (

42、checkkey()= =0) return(0 xff); /檢測有無鍵按下,無前往0 xff else delay(200); /延時 if(checkkey()= =0) return(0 xff); /檢測有無鍵按下,無前往0 xff else scancode=0 xfe;m=0 x00; /列掃描碼,行首碼賦初值 for (i=0;i8;i+) k=0 x01; XBYTE0 x7f00=scancode; /送列掃描碼第7章 MCS-51單片機常用接口 for (j=0;j4;j+) if (XBYTE0 x7f02&k)= =0) /檢測當前行能否有鍵按下 codeva

43、lue=m+j; /按下,求編碼 while(checkkey()! =0); /等待鍵位釋放 return(codevalue); /前往編碼 m=m+8; /計算下一行的行首編碼 else k=k1; /行檢測碼左移一位 scancode=scancode1; /列掃描碼左移一位,掃描下一列 第7章 MCS-51單片機常用接口 7.5 MCS-51單片機與單片機與LED顯示器接口顯示器接口7.5.1 LED顯示器的構(gòu)造與原理顯示器的構(gòu)造與原理在單片機運用系統(tǒng)中通常運用的是8段式LED數(shù)碼管顯示器,它有共陰極和共陽極兩種,如下圖。abcdefgdpcomabcdefgdpcomabcdefg

44、dp10 9 8 7 61 2 3 4 5 g f com a be d com c dp( a )( b )(c )第7章 MCS-51單片機常用接口 顯示字符共陰極字段碼共陽極字段碼顯示字符共陰極字段碼共陽極字段碼03FHC0HC39HC6H106HF9HD5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8HY6EH91H87FH80HL38HC7H96FH90H8FFH00HA77H88H“滅”00FFHB7CH83H第7章 MCS-51單片機常用接口 7.5.2 LED數(shù)碼

45、管顯示器的譯碼方式一硬件譯碼方式一硬件譯碼方式譯碼方式是指由顯示字符轉(zhuǎn)換得到對應的字段碼的方式 硬件譯碼方式是指利用專門的硬件電路來實現(xiàn)顯示字符到字段碼的轉(zhuǎn)換,如MOTOTOLA公司消費的MC14495芯片,MC14495是共陰極一位十六進制數(shù)字段碼轉(zhuǎn)換芯片,可以輸出用四位二進制表示方式的一位十六進制數(shù)的七位字段碼,不帶小數(shù)點。4鎖存器地址譯碼和字段碼ROM陣列ABCDLE569107Vss VDD8 16abcdefgh+iV CR11121314151234第7章 MCS-51單片機常用接口 二軟件譯碼方式二軟件譯碼方式7.5.3 LED數(shù)碼管的顯示方式數(shù)碼管的顯示方式一一LED靜態(tài)顯示靜

46、態(tài)顯示 LED靜態(tài)顯示時,其公共端直接接地共陰極或接電源共陽極,各段選線分別與I/O口線相連。要顯示字符,直接在I/O線送相應的字段碼。 a b c d e f g dpI/O(1)a b c d e f g dpI/O(2)第7章 MCS-51單片機常用接口 二二LED動態(tài)顯示方式動態(tài)顯示方式 LED動態(tài)顯示是將一切的數(shù)碼管的段選線并接在一同,用一個I/O口控制,公共端不是直接接地共陰極或電源共陽極,而是經(jīng)過相應的I/O口線控制。 D3D2D1D0I/O(1)I/O(2)第7章 MCS-51單片機常用接口 一硬件譯碼靜態(tài)顯示一硬件譯碼靜態(tài)顯示以下圖是一個兩位數(shù)碼管硬件譯碼靜態(tài)顯示的接口電路圖

47、。 a b c d e f gMC14495a b c d e f ga b c d e f gA B C DLEMC14495a b c d e f gA B C DLEP1.0P1.1P1.2P1.3P1.4P1.580517.5.4 LED顯示器與單片機的接口顯示器與單片機的接口 LED顯示器從譯碼方式上有硬件譯碼方式和軟件譯碼方式。從顯示方式上有靜態(tài)顯示方式和動態(tài)顯示方式。在運用時可以把它們組合起來。在實踐運用時,假設(shè)數(shù)碼管個數(shù)較少,通常用硬件譯碼靜態(tài)顯示,在數(shù)碼管個數(shù)較多時,那么通常用軟件譯碼動態(tài)顯示。 第7章 MCS-51單片機常用接口 二軟件譯碼動態(tài)顯示二軟件譯碼動態(tài)顯示以下圖是

48、一個8位軟件譯碼動態(tài)顯示的接口電路圖,數(shù)碼管為共陰極 。8255A的A口和B口都任務(wù)于方式0輸出。A口、B口、C口和控制口的地址分別為7F00H、7F01H、7F02H和7F03H。 第7章 MCS-51單片機常用接口 D0D1D2D7Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373Q0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7G OEVCC74LS373PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7CSWRRD74LS373P2.7WRRDALEP0.0P0.78051D0D7A1

49、A0GA1A08255第7章 MCS-51單片機常用接口 軟件譯碼動態(tài)顯示匯編言語程序為:設(shè)8個數(shù)碼管的顯示緩沖區(qū)為片內(nèi)RAM的57H50H單元DISPLAY:MOV A,#10000000B ;8255初始化MOV DPTR,#7F03H ;使DPTR指向8255控制存放器端口MOVX DPTR,AMOV R0,#57H ;動態(tài)顯示初始化,使R0指向緩沖區(qū)首址MOV R3,#7FH ;首位位選字送R3MOV A,R3LD0:MOV DPTR,#7F01H ;使DPTR指向PB口MOVX DPTR,A ;從PB口送出位選字 MOV DPTR,#7F00H ;使DPTR指向PA口MOV A,R0 ;讀要顯示數(shù)ADD A,#0DH ;調(diào)整距段碼表首的偏移量MOVC A,A+PC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論