第10章 MCS-51與DA、AD的接口ppt課件_第1頁
第10章 MCS-51與DA、AD的接口ppt課件_第2頁
第10章 MCS-51與DA、AD的接口ppt課件_第3頁
第10章 MCS-51與DA、AD的接口ppt課件_第4頁
第10章 MCS-51與DA、AD的接口ppt課件_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第1010章章 MCS-51 MCS-51與鍵盤、顯示器、撥盤、打印機(jī)的接與鍵盤、顯示器、撥盤、打印機(jī)的接 口設(shè)計(jì)口設(shè)計(jì)輸入外設(shè):鍵盤、輸入外設(shè):鍵盤、BCDBCD碼撥盤等;碼撥盤等;輸出外設(shè):輸出外設(shè):LEDLED顯示器、顯示器、LCDLCD顯示器、打印機(jī)等。顯示器、打印機(jī)等。10.1 LED10.1 LED顯示器接口原理顯示器接口原理 LED(Light Emitting Diode): LED(Light Emitting Diode):發(fā)光二極管的縮寫。發(fā)光二極管的縮寫。顯示器前面冠以顯示器前面冠以“LED”“LED”。10.1.1 LED10.1.1 LED顯示器的結(jié)構(gòu)顯示器的結(jié)構(gòu)

2、 常用的常用的LEDLED顯示器為顯示器為8 8段或段或7 7段,段,8 8段比段比7 7段多了一段多了一個(gè)小數(shù)點(diǎn)個(gè)小數(shù)點(diǎn)“dp“dp段)。段)。有共陽極和共陰極兩種。如圖有共陽極和共陰極兩種。如圖10-110-1所示。所示。為使為使LEDLED顯示不同的符號(hào)或數(shù)字,要為顯示不同的符號(hào)或數(shù)字,要為L(zhǎng)EDLED提供段碼提供段碼(或稱字型碼)。(或稱字型碼)。提供給提供給LEDLED顯示器的段碼字型碼正好是一個(gè)字顯示器的段碼字型碼正好是一個(gè)字節(jié)節(jié)8 8段)。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如下:段)。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如下:按上述格式,按上述格式,8 8段段LEDLED的段碼如表的段碼如表10-11

3、0-1所示。所示。顯示字符顯示字符共陰極共陰極段碼段碼共陽極共陽極段碼段碼顯示字符顯示字符共陰極共陰極段碼段碼共陽極共陽極段碼段碼0 03 3FHFHC0HC0Hc c3939H HC6HC6H1 10606H HF9HF9Hd d5 5EHEHA1HA1H2 25 5BHBHA4HA4HE E7979H H8686H H3 34 4FHFHB0HB0HF F7171H H8 8EHEH4 46666H H9999H HP P7373H H8 8CHCH5 56 6DHDH9292H HU U3 3EHEHC1HC1H6 67 7DHDH8282H HT T3131H HCEHCEH7 707

4、07H HF8HF8Hy y6 6EHEH9191H H8 87 7FHFH8080H HH H7676H H8989H H9 96 6FHFH9090H HL L3838H HC7HC7HA A7777FHFH8888H H“滅滅”0000H HFFHFFHb b7 7CHCH8383H H表表10-1 LED10-1 LED段碼段碼8 8段)段)表表10-110-1只列出了部分段碼,可根據(jù)實(shí)際情況選用。只列出了部分段碼,可根據(jù)實(shí)際情況選用。另外,段碼是相對(duì)的,它由各字段在字節(jié)中所處的另外,段碼是相對(duì)的,它由各字段在字節(jié)中所處的位決定。例如表位決定。例如表10-110-1中中8 8段段LED

5、LED段碼是按格式:段碼是按格式:而形成的,而形成的, “0 “0的段碼為的段碼為3FH3FH共陰)。反之,如共陰)。反之,如 將格式改為下列格式:將格式改為下列格式:那么那么 “0 “0的段碼為的段碼為7EH7EH共陰)。共陰)。字型及段碼由設(shè)計(jì)者自行設(shè)定,習(xí)慣上還是以字型及段碼由設(shè)計(jì)者自行設(shè)定,習(xí)慣上還是以“a”“a” 段對(duì)應(yīng)段碼的最低位。段對(duì)應(yīng)段碼的最低位。N N個(gè)個(gè)LEDLED顯示塊有顯示塊有N N位位選線和位位選線和8 8N N根段碼線。根段碼線。 10.1.2 LED10.1.2 LED顯示器工作原理顯示器工作原理圖圖10-210-2是是4 4位位 LED LED顯示器的結(jié)構(gòu)原理圖

6、。顯示器的結(jié)構(gòu)原理圖。段碼線控制顯示的字型,段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。位選線控制該顯示位的亮或暗。靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。靜態(tài)顯示和動(dòng)態(tài)顯示兩種顯示方式。1. 1. 靜態(tài)顯示方式靜態(tài)顯示方式各位的公共端連接在一起接地或各位的公共端連接在一起接地或+5V+5V)。)。 每位的段碼線每位的段碼線a adpdp分別與一個(gè)分別與一個(gè)8 8位的鎖存器位的鎖存器輸出相連。輸出相連。 顯示字符一確定,相應(yīng)鎖存器的段碼輸出將維持顯示字符一確定,相應(yīng)鎖存器的段碼輸出將維持不變,直到送入另一個(gè)段碼為止。顯示的亮度高。不變,直到送入另一個(gè)段碼為止。顯示的亮度高。 圖圖10-3: 41

7、0-3: 4位靜態(tài)位靜態(tài)LEDLED顯示器電路。該電路各位顯示器電路。該電路各位可獨(dú)立顯示。可獨(dú)立顯示。2. 2. 動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式 所有位的段碼線相應(yīng)段并在一起,由一個(gè)所有位的段碼線相應(yīng)段并在一起,由一個(gè)8 8位位I/OI/O口控制,形成段碼線的多路復(fù)用,各位的公共端分別由口控制,形成段碼線的多路復(fù)用,各位的公共端分別由相應(yīng)的相應(yīng)的I/OI/O線控制,形成各位的分時(shí)選通。線控制,形成各位的分時(shí)選通。圖圖10-410-4:4 4位位8 8段段LEDLED動(dòng)態(tài)顯示電路。其中段碼線占用一動(dòng)態(tài)顯示電路。其中段碼線占用一個(gè)個(gè)8 8位位I/OI/O口,而位選線占用一個(gè)口,而位選線占用一個(gè)4 4位

8、位I/OI/O口??凇D圖10-510-5為為8 8位位LEDLED動(dòng)態(tài)顯示動(dòng)態(tài)顯示2019.10.102019.10.10的過程。的過程。圖圖a)a)是顯示過程,某一時(shí)刻,只有一位是顯示過程,某一時(shí)刻,只有一位LEDLED被選通被選通 顯示,其余位則是熄滅的;顯示,其余位則是熄滅的;圖圖b)b)是實(shí)際顯示結(jié)果,人眼看到的是是實(shí)際顯示結(jié)果,人眼看到的是8 8位穩(wěn)定的位穩(wěn)定的 同時(shí)顯示的字符。同時(shí)顯示的字符。10.2 10.2 鍵盤接口原理鍵盤接口原理1. 1. 鍵盤輸入的特點(diǎn)鍵盤輸入的特點(diǎn)鍵盤:一組按鍵開關(guān)的集合。鍵盤:一組按鍵開關(guān)的集合。 行線電壓信號(hào)通過鍵盤開關(guān)機(jī)械觸點(diǎn)的斷開、閉合,行線電

9、壓信號(hào)通過鍵盤開關(guān)機(jī)械觸點(diǎn)的斷開、閉合,輸出波形如圖輸出波形如圖10-610-6。2. 2. 按鍵的確認(rèn)按鍵的確認(rèn) 檢測(cè)行線電平檢測(cè)行線電平 高電平:斷開;低電平:閉合,高電平:斷開;低電平:閉合,常用軟件來消除按鍵抖動(dòng)。常用軟件來消除按鍵抖動(dòng)。 基本思想:檢測(cè)到有鍵按下,鍵對(duì)應(yīng)的行線為低,軟基本思想:檢測(cè)到有鍵按下,鍵對(duì)應(yīng)的行線為低,軟件延時(shí)件延時(shí)10ms10ms后,行線如仍為低,則確認(rèn)該行有鍵按下。后,行線如仍為低,則確認(rèn)該行有鍵按下。3.3.如何消除按鍵的抖動(dòng)如何消除按鍵的抖動(dòng) 當(dāng)鍵松開時(shí),行線變高,軟件延時(shí)當(dāng)鍵松開時(shí),行線變高,軟件延時(shí)10ms10ms后,行線仍后,行線仍為為高,說明按

10、鍵已松開。高,說明按鍵已松開。采取以上措施,躲開了兩個(gè)抖動(dòng)期采取以上措施,躲開了兩個(gè)抖動(dòng)期t1t1和和t3t3的影響。的影響。10.2.2 10.2.2 鍵盤接口的工作原理鍵盤接口的工作原理獨(dú)立式按鍵接口和行列式鍵盤接口。獨(dú)立式按鍵接口和行列式鍵盤接口。1.1.獨(dú)立式鍵盤接口獨(dú)立式鍵盤接口 各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,通過檢各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,通過檢測(cè)輸入線的電平狀態(tài)可很容易判斷那個(gè)鍵被按下。測(cè)輸入線的電平狀態(tài)可很容易判斷那個(gè)鍵被按下。此種接口適于鍵數(shù)較少或操作速度較高的場(chǎng)合。此種接口適于鍵數(shù)較少或操作速度較高的場(chǎng)合。圖圖10-710-7a a為中斷方式的獨(dú)立式鍵盤

11、工作電路為中斷方式的獨(dú)立式鍵盤工作電路圖圖10-710-7b b為查詢方式的獨(dú)立式鍵盤工作電路。為查詢方式的獨(dú)立式鍵盤工作電路。圖圖10-810-8為為8255A8255A擴(kuò)展擴(kuò)展I/OI/O口的獨(dú)立式按鍵接口電路??诘莫?dú)立式按鍵接口電路。圖圖10-910-9用三態(tài)緩沖器擴(kuò)展的用三態(tài)緩沖器擴(kuò)展的I/OI/O口的按鍵接口電口的按鍵接口電路。路。 對(duì)圖對(duì)圖10-910-9獨(dú)立式鍵盤編程,軟件消抖,查詢方式檢獨(dú)立式鍵盤編程,軟件消抖,查詢方式檢測(cè)鍵的狀態(tài)。僅有一鍵按下時(shí)才有效才處理。測(cè)鍵的狀態(tài)。僅有一鍵按下時(shí)才有效才處理。KEYIN:MOV DPTR,#0BFFFHKEYIN:MOV DPTR,#0

12、BFFFH;鍵盤端口地址;鍵盤端口地址BFFFHBFFFHMOVX A,DPTRMOVX A,DPTR;讀鍵盤狀態(tài);讀鍵盤狀態(tài)ANL A,#1FHANL A,#1FH;屏蔽高三位;屏蔽高三位MOV R3,AMOV R3,A;保存鍵盤狀態(tài)值;保存鍵盤狀態(tài)值LCALL DELAY10LCALL DELAY10;延時(shí);延時(shí)10ms10ms去鍵盤抖動(dòng)去鍵盤抖動(dòng)MOVX A,DPTRMOVX A,DPTR;再讀鍵盤狀態(tài);再讀鍵盤狀態(tài)ANL A,#1FHANL A,#1FH;屏蔽高三位;屏蔽高三位 CJNE A,R3,RETURN CJNE A,R3,RETURN ;兩次不同,抖動(dòng)引起轉(zhuǎn);兩次不同,抖動(dòng)引

13、起轉(zhuǎn)RETURNRETURNCJNE A,#1EH,KEY2 CJNE A,#1EH,KEY2 ;相等,有鍵按下,不等轉(zhuǎn);相等,有鍵按下,不等轉(zhuǎn)KEY2KEY2LJMP PKEY1LJMP PKEY1; ;是是K1K1鍵按下,轉(zhuǎn)鍵按下,轉(zhuǎn)K1K1鍵處理鍵處理 ;子程序;子程序PKEY1PKEY1KEY2: CJNE A,#1DH,KEY3 ;S2KEY2: CJNE A,#1DH,KEY3 ;S2鍵未按下,轉(zhuǎn)鍵未按下,轉(zhuǎn)KEY3KEY3LJMP PKEY2LJMP PKEY2 ;S2 ;S2鍵按下,轉(zhuǎn)鍵按下,轉(zhuǎn)PKEY2PKEY2處理處理KEY3:KEY3: CJNE A,#1BH,KEY4C

14、JNE A,#1BH,KEY4 ;S3;S3未按下,轉(zhuǎn)未按下,轉(zhuǎn)KEY4KEY4LJMP PKEY3 ;S3LJMP PKEY3 ;S3按下,轉(zhuǎn)按下,轉(zhuǎn)PKEY3PKEY3處理處理KEY4: CJNE A,#17H,KEY5 ;S4KEY4: CJNE A,#17H,KEY5 ;S4鍵未按下,轉(zhuǎn)鍵未按下,轉(zhuǎn)KEY5KEY5LJMP PKEY4 ;S4LJMP PKEY4 ;S4按下,轉(zhuǎn)按下,轉(zhuǎn)PKEY4PKEY4處理處理KEY5:KEY5: CJNE A,#0FH,PASS ;S5CJNE A,#0FH,PASS ;S5未按下,轉(zhuǎn)未按下,轉(zhuǎn)RETURNRETURNLJMP PKEY5 ;S5L

15、JMP PKEY5 ;S5按下,轉(zhuǎn)按下,轉(zhuǎn)PKEY5PKEY5處理處理RETURN:RET ;RETURN:RET ;重鍵或無鍵按下,從子程序返回重鍵或無鍵按下,從子程序返回識(shí)別和編程簡(jiǎn)單,用在按鍵數(shù)較少的場(chǎng)合。識(shí)別和編程簡(jiǎn)單,用在按鍵數(shù)較少的場(chǎng)合。2. 行列式行列式(矩陣式矩陣式)鍵盤接口鍵盤接口 用于按鍵數(shù)目較多的場(chǎng)合,由行線和列線組成,用于按鍵數(shù)目較多的場(chǎng)合,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。如圖按鍵位于行、列的交叉點(diǎn)上。如圖10-1010-10所示。所示。 按鍵數(shù)目較多的場(chǎng)合,行列式鍵盤與獨(dú)立式鍵盤按鍵數(shù)目較多的場(chǎng)合,行列式鍵盤與獨(dú)立式鍵盤相比,要節(jié)省很多的相比,要節(jié)省很多的

16、I/OI/O口線??诰€。(1行列式鍵盤工作原理行列式鍵盤工作原理 無鍵按下,該行線為高電平,當(dāng)有鍵按下時(shí),無鍵按下,該行線為高電平,當(dāng)有鍵按下時(shí),行線電平由列線的電平來決定。行線電平由列線的電平來決定。 由于行、列線為多鍵共用,各按鍵彼此將相互發(fā)由于行、列線為多鍵共用,各按鍵彼此將相互發(fā)生影響,必須將行、列線信號(hào)配合起來并作適當(dāng)?shù)奶幧绊懀仨殞⑿?、列線信號(hào)配合起來并作適當(dāng)?shù)奶幚?,才能確定閉合鍵的位置。理,才能確定閉合鍵的位置。(2 2按鍵的識(shí)別方法按鍵的識(shí)別方法a. a. 掃描法掃描法 圖圖10-1010-10b b中中3 3號(hào)鍵被按下為例,來說明此鍵號(hào)鍵被按下為例,來說明此鍵時(shí)如何被識(shí)別出

17、來的。時(shí)如何被識(shí)別出來的。識(shí)別鍵盤有無鍵被按下的方法,分兩步進(jìn)行:識(shí)別鍵盤有無鍵被按下的方法,分兩步進(jìn)行:第第1 1步:識(shí)別鍵盤有無鍵按下;步:識(shí)別鍵盤有無鍵按下;第第2 2步:如有鍵被按下,識(shí)別出具體的按鍵。步:如有鍵被按下,識(shí)別出具體的按鍵。 把所有列線置把所有列線置0 0,檢查各行線電平是否有變化,如,檢查各行線電平是否有變化,如有變化,說明有鍵按下,如無變化,則無鍵按下。有變化,說明有鍵按下,如無變化,則無鍵按下。 上述方法稱為掃描法,即先把某一列置低電平,上述方法稱為掃描法,即先把某一列置低電平,其余各列為高電平,檢查各行線電平的變化,如果某其余各列為高電平,檢查各行線電平的變化,如

18、果某行線電平為低,可確定此行列交叉點(diǎn)處的按鍵被按行線電平為低,可確定此行列交叉點(diǎn)處的按鍵被按下。下。 b. b. 線反轉(zhuǎn)法線反轉(zhuǎn)法 只需兩步便能獲得此按鍵所在的行列值,線反轉(zhuǎn)只需兩步便能獲得此按鍵所在的行列值,線反轉(zhuǎn)法的原理如圖法的原理如圖10-1110-11。第第1 1步:列線輸出為全低電平,則行線中電平由高變低步:列線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。的所在行為按鍵所在行。第第2 2步:行線輸出為全低電平,則列線中電平由高變低步:行線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。所在列為按鍵所在列。 結(jié)合上述兩步,可確定按鍵所在行和列。結(jié)合上述兩步,可確定

19、按鍵所在行和列。(3 3鍵盤的編碼鍵盤的編碼 根據(jù)實(shí)際需要靈活編碼。根據(jù)實(shí)際需要靈活編碼。10.2.3 10.2.3 鍵盤的工作方式鍵盤的工作方式 單片機(jī)在忙于各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤的輸單片機(jī)在忙于各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤的輸入,取決于鍵盤的工作方式。入,取決于鍵盤的工作方式。原則:即要保證能及時(shí)響應(yīng)按鍵操作,又不要過多占原則:即要保證能及時(shí)響應(yīng)按鍵操作,又不要過多占用用CPUCPU的工作時(shí)間。的工作時(shí)間。 通常,鍵盤工作方式有通常,鍵盤工作方式有3 3種,即編程掃描、定時(shí)掃種,即編程掃描、定時(shí)掃描和中斷掃描。描和中斷掃描。1. 1. 編程掃描方式編程掃描方式 只有當(dāng)單片機(jī)空閑時(shí),才

20、調(diào)用鍵盤掃描子程序,只有當(dāng)單片機(jī)空閑時(shí),才調(diào)用鍵盤掃描子程序,掃描鍵盤。掃描鍵盤。工作過程:工作過程:(1 1在鍵盤掃描子程序中,先判斷有無鍵按下。在鍵盤掃描子程序中,先判斷有無鍵按下。方法:方法:PAPA口口8 8位輸出全位輸出全0 0,讀,讀PCPC口低口低4 4位狀態(tài),若位狀態(tài),若PC0PC0PC3PC3為全為全1 1,則說明鍵盤無鍵按下;若不全為,則說明鍵盤無鍵按下;若不全為1 1,則說明,則說明鍵盤可能有鍵按下。鍵盤可能有鍵按下。(2 2用軟件來消除按鍵抖動(dòng)的影響。如有鍵按下,那么用軟件來消除按鍵抖動(dòng)的影響。如有鍵按下,那么進(jìn)行下一步。進(jìn)行下一步。(3 3求按下鍵的鍵號(hào)。求按下鍵的鍵

21、號(hào)。(4 4等待按鍵釋放后,再進(jìn)行按鍵功能的處理操作。等待按鍵釋放后,再進(jìn)行按鍵功能的處理操作。2. 2. 定時(shí)掃描工作方式定時(shí)掃描工作方式 利用單片機(jī)內(nèi)的定時(shí)器,產(chǎn)生利用單片機(jī)內(nèi)的定時(shí)器,產(chǎn)生10ms10ms的定時(shí)中斷,對(duì)的定時(shí)中斷,對(duì)鍵盤進(jìn)行掃描。鍵盤進(jìn)行掃描。3.3.中斷工作方式中斷工作方式 只有在鍵盤有鍵按下時(shí),才執(zhí)行鍵盤掃描程序,如只有在鍵盤有鍵按下時(shí),才執(zhí)行鍵盤掃描程序,如無鍵按下,單片機(jī)將不理睬鍵盤。無鍵按下,單片機(jī)將不理睬鍵盤。 鍵盤所做的工作分為三個(gè)層次,如圖鍵盤所做的工作分為三個(gè)層次,如圖10-1310-13。第第1 1層:?jiǎn)纹瑱C(jī)如何來監(jiān)視鍵盤的輸入。三種工作方層:?jiǎn)纹瑱C(jī)如

22、何來監(jiān)視鍵盤的輸入。三種工作方 式:編程掃描定時(shí)掃描中斷掃描。式:編程掃描定時(shí)掃描中斷掃描。第第2 2層:確定具體按鍵的鍵號(hào)。體現(xiàn)在按鍵的識(shí)別方層:確定具體按鍵的鍵號(hào)。體現(xiàn)在按鍵的識(shí)別方 法上就是:掃描法;線反轉(zhuǎn)法。法上就是:掃描法;線反轉(zhuǎn)法。第第3 3層:執(zhí)行鍵處理程序。層:執(zhí)行鍵處理程序。10.3 10.3 鍵盤鍵盤/ /顯示器接口設(shè)計(jì)實(shí)例顯示器接口設(shè)計(jì)實(shí)例 一般把鍵盤和顯示器放在一起考慮。一般把鍵盤和顯示器放在一起考慮。10.3.1 10.3.1 利用并行利用并行I/OI/O芯片實(shí)現(xiàn)鍵盤芯片實(shí)現(xiàn)鍵盤/ /顯示器接口顯示器接口 圖圖10-1410-14:80318031用擴(kuò)展用擴(kuò)展I/OI

23、/O接口芯片接口芯片8155H8155H實(shí)現(xiàn)的實(shí)現(xiàn)的6 6位位LEDLED顯示和顯示和3232鍵的鍵盤鍵的鍵盤/ /顯示器接口電路。圖中顯示器接口電路。圖中8155H8155H也可用也可用8255A8255A來替代。來替代。 8031 8031外擴(kuò)一片外擴(kuò)一片8155H8155H。RAMRAM地址:地址:7E00H7E00H7EFFH7EFFH。I/OI/O口地址:口地址:7F00H7F00H7F05H7F05H。 PA PA口為輸出口,控制鍵盤列線的掃描,同時(shí)又是口為輸出口,控制鍵盤列線的掃描,同時(shí)又是6 6位共陰極顯示器的位掃描口。位共陰極顯示器的位掃描口。 PB PB口作為顯示器段碼輸出

24、口,口作為顯示器段碼輸出口,PCPC口作為鍵盤的行口作為鍵盤的行線狀態(tài)的輸入口。線狀態(tài)的輸入口。 75452 75452:反相驅(qū)動(dòng)器,:反相驅(qū)動(dòng)器,74077407:同相驅(qū)動(dòng)器。:同相驅(qū)動(dòng)器。1 1動(dòng)態(tài)顯示程序設(shè)計(jì)動(dòng)態(tài)顯示程序設(shè)計(jì)內(nèi)部?jī)?nèi)部RAM 6RAM 6個(gè)顯示緩沖單元:個(gè)顯示緩沖單元:79H79H7EH7EH,存放要顯示的,存放要顯示的 6 6位數(shù)據(jù)。位數(shù)據(jù)。8155H8155H的的PBPB口輸出相應(yīng)位的段碼,依次改變口輸出相應(yīng)位的段碼,依次改變PAPA口輸出為口輸出為 高的位使某一位顯示某一字符,其它位為暗。高的位使某一位顯示某一字符,其它位為暗。動(dòng)態(tài)地顯示出由緩沖區(qū)中顯示數(shù)據(jù)所確定的字

25、符。程動(dòng)態(tài)地顯示出由緩沖區(qū)中顯示數(shù)據(jù)所確定的字符。程 序流程如圖序流程如圖10-15 10-15 。參考程序:參考程序:DIRDIR: MOV R0, MOV R0,79H79H;置緩沖器指針初值;置緩沖器指針初值MOV R3,MOV R3,01H01H;位選碼的初值送;位選碼的初值送R3R3MOV A,R3MOV A,R3LD0LD0: MOV DPTR, MOV DPTR,7F01H 7F01H ;位選碼;位選碼PAPA口口PA.0PA.0位)位);最左邊;最左邊LEDLED亮亮MOVX DPTR,AMOVX DPTR,AINC DPTRINC DPTR ;數(shù)據(jù)指針指向;數(shù)據(jù)指針指向PBP

26、B口口MOV A,R0 MOV A,R0 ;顯示數(shù)據(jù);顯示數(shù)據(jù)AAADD A,ADD A,0DH 0DH ;加偏移量下條指令到表首間;加偏移量下條指令到表首間 ;所有指令占的單元數(shù));所有指令占的單元數(shù))MOVC A,AMOVC A,APC PC ;根據(jù)顯示數(shù)據(jù)來查表取段碼;根據(jù)顯示數(shù)據(jù)來查表取段碼DIR1DIR1: MOVX DPTR,A MOVX DPTR,A ;段碼;段碼8155H PB8155H PB口口ACALL DL1ms ACALL DL1ms ;該位顯示;該位顯示1ms1msINC R0INC R0 ;指針指向下一個(gè)數(shù)據(jù)單元;指針指向下一個(gè)數(shù)據(jù)單元MOV A,R3MOV A,R

27、3 ;位選碼送入;位選碼送入A A中中JB Acc.5,LD1 JB Acc.5,LD1 ;判斷是否掃描到最右邊的;判斷是否掃描到最右邊的 ; LED LED,如到最右邊則返回,如到最右邊則返回RL A RL A ;位選碼向左移一位,準(zhǔn)備讓;位選碼向左移一位,準(zhǔn)備讓 ; ; 右邊的下一位右邊的下一位LEDLED亮亮MOV R3,AMOV R3,A ;位選碼送;位選碼送R3R3中保存中保存AJMP LD0 ;AJMP LD0 ;LD1LD1: RET ; RET ;DSEGDSEG: DB 3FH,06H,5BH,4FH,66H,6DH DB 3FH,06H,5BH,4FH,66H,6DH ;共

28、陰極段碼表;共陰極段碼表 DB 7DH,07H,7FH,6FH,77H,7CH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,73H,3EH DB 39H,5EH,79H,71H,73H,3EHDB 31H,6EH,1CH,23H,40H,03HDB 31H,6EH,1CH,23H,40H,03HDB 18H,00HDB 18H,00HDL1msDL1ms: MOV R7,MOV R7,02H02H;延時(shí);延時(shí)1ms1ms子程序子程序DLDL: MOV R6,MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6DJNZ R6,DL6

29、DJNZ R7,DLDJNZ R7,DLRETRET2 2鍵盤程序設(shè)計(jì)鍵盤程序設(shè)計(jì)(1 1判別鍵盤上有無鍵閉合判別鍵盤上有無鍵閉合(2 2去除鍵的機(jī)械抖動(dòng)去除鍵的機(jī)械抖動(dòng) (3 3判別閉合鍵的鍵號(hào)判別閉合鍵的鍵號(hào)(4 4使使CPUCPU對(duì)鍵的一次閉合僅作一次處理對(duì)鍵的一次閉合僅作一次處理 鍵盤程序的流程如圖鍵盤程序的流程如圖10-1610-16。鍵盤子程序如下:鍵盤子程序如下:KEYIKEYI:ACALL KS1ACALL KS1 ;調(diào)用判有無鍵閉合子程序;調(diào)用判有無鍵閉合子程序JNZ LK1 JNZ LK1 ;有鍵閉合,跳;有鍵閉合,跳LK1LK1NINI: ACALL DIR ACALL

30、DIR ;無鍵閉合,調(diào)用顯示子程序;無鍵閉合,調(diào)用顯示子程序, ,延延 ;遲;遲6ms6ms后,跳后,跳KEYIKEYIAJMP KEYIAJMP KEYILK1LK1: ACALL DIR ACALL DIR ;可能有鍵閉合,軟件延遲;可能有鍵閉合,軟件延遲12ms12ms去抖去抖ACALL DIRACALL DIRACALL KS1 ACALL KS1 ;調(diào)用判有無鍵閉合子程序;調(diào)用判有無鍵閉合子程序JNZ LK2JNZ LK2 ;經(jīng)去抖,判鍵確實(shí)閉合,跳;經(jīng)去抖,判鍵確實(shí)閉合,跳LK2LK2ACALL DIRACALL DIR;調(diào)用顯示子程序延遲;調(diào)用顯示子程序延遲6ms6msAJMP

31、KEYIAJMP KEYI;抖動(dòng)引起,跳;抖動(dòng)引起,跳KEYIKEYILK2LK2: MOV R2, MOV R2,0FEH0FEH ;列選碼;列選碼R2R2MOV R4,MOV R4,00H00H;R4R4為列號(hào)計(jì)數(shù)器為列號(hào)計(jì)數(shù)器LK4LK4: MOV DPTR, MOV DPTR,7F01H 7F01H ;列選碼;列選碼8155H8155H的的PAPA口口MOV A,R2 ;MOV A,R2 ;MOVX DPTR,A ; MOVX DPTR,A ; INC DPTRINC DPTR ;數(shù)據(jù)指針增;數(shù)據(jù)指針增2 2,指向,指向PCPC口口INC DPTR ;INC DPTR ;MOVX A,

32、DPTRMOVX A,DPTR ;讀;讀8155H PC8155H PC口口JB Acc.0,LONEJB Acc.0,LONE ;0 0行線為高,無鍵閉合,跳行線為高,無鍵閉合,跳 LONE LONE,轉(zhuǎn)判,轉(zhuǎn)判1 1行行MOV A,MOV A,00H00H ;0 0行有鍵閉合行有鍵閉合, ,首鍵號(hào)首鍵號(hào)0A0AAJMP LKPAJMP LKP ;跳;跳LKPLKP,計(jì)算鍵號(hào),計(jì)算鍵號(hào)LONELONE:JB Acc.1,LTW0 JB Acc.1,LTW0 ;1 1行線為高,無鍵閉合,跳行線為高,無鍵閉合,跳LTW0LTW0, ;轉(zhuǎn)判;轉(zhuǎn)判2 2行行MOV A,MOV A,08H 08H ;

33、1 1行有鍵閉合行有鍵閉合, ,首鍵號(hào)首鍵號(hào)8A8AAJMP LKPAJMP LKPLTW0LTW0:JB A.2,LTHR JB A.2,LTHR ;2 2行線為高,無鍵閉合,跳行線為高,無鍵閉合,跳 ;LTHRLTHR,轉(zhuǎn)判,轉(zhuǎn)判3 3行行MOV A,MOV A,10H 10H ;2 2行有鍵閉合行有鍵閉合, ,首鍵號(hào)首鍵號(hào)10HA10HAAJMP LKPAJMP LKP;跳;跳LKPLKP,計(jì)算鍵號(hào),計(jì)算鍵號(hào)LTHRLTHR:JB Acc.3,NEXT JB Acc.3,NEXT ;3 3行線為高,無鍵行線為高,無鍵;閉合,跳;閉合,跳NEXTNEXT,準(zhǔn)備下一列掃描,準(zhǔn)備下一列掃描MO

34、V A,MOV A,18H18H;3 3行有鍵閉合行有鍵閉合, ,首鍵號(hào)首鍵號(hào)18HA18HALKPLKP: ADD A,R4 ADD A,R4 ;計(jì)算鍵號(hào):首鍵號(hào)列號(hào);計(jì)算鍵號(hào):首鍵號(hào)列號(hào)= =鍵號(hào)鍵號(hào)PUSH A PUSH A ;鍵號(hào)進(jìn)棧保護(hù);鍵號(hào)進(jìn)棧保護(hù)LK3LK3: ACALL DIR ACALL DIR;調(diào)用顯示子程序,延時(shí);調(diào)用顯示子程序,延時(shí)6ms6msACALL KS1ACALL KS1;調(diào)用判有無鍵閉合子程序,延時(shí);調(diào)用判有無鍵閉合子程序,延時(shí);6ms6msJNZ LK3 JNZ LK3 ;判鍵釋放否,未釋放,則循環(huán);判鍵釋放否,未釋放,則循環(huán)POP A ;鍵已釋放,鍵號(hào)出棧

35、ARETRETNEXTNEXT:INC R4 INC R4 ;列計(jì)數(shù)器加;列計(jì)數(shù)器加1 1,為下一列掃描作準(zhǔn)備,為下一列掃描作準(zhǔn)備MOV A,R2 MOV A,R2 ;判是否已掃到最后一列最右一列);判是否已掃到最后一列最右一列)JNB Acc.7,KND JNB Acc.7,KND ;鍵掃描已掃到最后一列,跳;鍵掃描已掃到最后一列,跳KNDKND, ;重新進(jìn)行整個(gè)鍵盤掃描;重新進(jìn)行整個(gè)鍵盤掃描RL A RL A ;鍵掃描未掃到最后一列,位選碼左移;鍵掃描未掃到最后一列,位選碼左移;一位;一位MOV R2,A MOV R2,A ;位選碼;位選碼R2R2AJMP LK4 ;AJMP LK4 ;K

36、NDKND: AJMP KEYI ; AJMP KEYI ;KS1KS1: MOV DPTR ,#7F01H MOV DPTR ,#7F01H;判有無鍵閉合子程序,全;判有無鍵閉合子程序,全“0”“0” ;掃描口;掃描口PAPA口)口)MOV A,MOV A,00H00H ;即列線全為低電平;即列線全為低電平MOVX DPTR,A ;MOVX DPTR,A ;INC DPTRINC DPTR ;DPTRDPTR增增2 2,指向,指向PCPC口口INC DPTRINC DPTR ;指針增;指針增1 1,指向,指向PCPC口口MOVX A,DPTR MOVX A,DPTR ;從;從PCPC口讀行線

37、的狀態(tài)口讀行線的狀態(tài)CPL A CPL A ;行線取反,如無鍵按下,則;行線取反,如無鍵按下,則A A為為0 0;ANL A,ANL A,0FH 0FH ;屏蔽無用的高;屏蔽無用的高4 4位位RETRET10.3.2 10.3.2 利用利用80318031的串行口實(shí)現(xiàn)鍵盤的串行口實(shí)現(xiàn)鍵盤/ /顯示器接口顯示器接口 串口未作它用,可用來外擴(kuò)鍵盤串口未作它用,可用來外擴(kuò)鍵盤/ /顯示器。顯示器。 串口為方式串口為方式0 0輸出,串口外接移位寄存器輸出,串口外接移位寄存器74LS16474LS164。接口電路如圖接口電路如圖10-1710-17。 74LS164(0) 74LS164(0)74LS1

38、64(7):74LS164(7):作為作為8 8位位LEDLED的段碼輸出,的段碼輸出, 8031 8031的的P3.4P3.4、P3.5P3.5:兩行鍵的行狀態(tài)輸入:兩行鍵的行狀態(tài)輸入 P3.3 P3.3TXDTXD):同步移位脈沖輸出控制線,):同步移位脈沖輸出控制線, 優(yōu)點(diǎn):亮度大,容易做到顯示不閃爍,且優(yōu)點(diǎn):亮度大,容易做到顯示不閃爍,且CPUCPU不必不必頻繁的為顯示服務(wù),從而使單片機(jī)有更多的時(shí)間處理頻繁的為顯示服務(wù),從而使單片機(jī)有更多的時(shí)間處理其它事務(wù)。其它事務(wù)。 顯示子程序:顯示子程序:DIRDIR: SETB P3.3 SETB P3.3 ;P3.3=1P3.3=1允許允許TX

39、DTXD腳同步移位腳同步移位 ;脈沖輸出;脈沖輸出MOV R7,MOV R7,08H 08H ;送出的段碼個(gè)數(shù),;送出的段碼個(gè)數(shù),R7R7為段為段 ;碼個(gè)數(shù)計(jì)數(shù)器;碼個(gè)數(shù)計(jì)數(shù)器MOV R0,MOV R0,7FH 7FH ;7FH7FH78H78H為顯示數(shù)據(jù)緩沖區(qū)為顯示數(shù)據(jù)緩沖區(qū)DL0DL0: MOV A,R0 MOV A,R0 ;取出要顯示的數(shù)送;取出要顯示的數(shù)送A AADD A,ADD A,0DH 0DH ;加上偏移量;加上偏移量MOVC A,AMOVC A,APC PC ;查段碼表;查段碼表SEGTAGSEGTAG,取出段碼,取出段碼MOV SBUF ,A MOV SBUF ,A ;將段碼

40、送;將段碼送SBUF SBUF DL1DL1: JNB TI,DL1 JNB TI,DL1;輸出段碼,查詢;輸出段碼,查詢TITI狀態(tài),狀態(tài),1 1個(gè)字節(jié)個(gè)字節(jié);的段碼輸出完否?;的段碼輸出完否?CLR TI CLR TI ;1 1個(gè)字節(jié)的段碼輸出完個(gè)字節(jié)的段碼輸出完, ,清清TITI標(biāo)志標(biāo)志DEC R0DEC R0;指向下一個(gè)顯示數(shù)據(jù)單元;指向下一個(gè)顯示數(shù)據(jù)單元 DJNZ R7,DL0DJNZ R7,DL0;段碼個(gè)數(shù)計(jì)數(shù)器;段碼個(gè)數(shù)計(jì)數(shù)器R7R7是否為是否為0, 0, 如不如不; ; 為為0 0,繼續(xù)送段碼,繼續(xù)送段碼CLR P3.3 CLR P3.3 ;8 8個(gè)段碼輸出完畢,關(guān)顯示器輸出個(gè)

41、段碼輸出完畢,關(guān)顯示器輸出RET RET ;返回;返回SEGTABSEGTAB:DB 0C0H,0F9H,0A4H,0B0H,99HDB 0C0H,0F9H,0A4H,0B0H,99H ;共陽極段碼表,;共陽極段碼表, ;0,1,2,3,40,1,2,3,4DB 92H,82H,0F8H,90HDB 92H,82H,0F8H,90H;5,6,7,8,95,6,7,8,9DB 88H,83H,0C6H,0A1H,86HDB 88H,83H,0C6H,0A1H,86H;A,B,C,D,EA,B,C,D,EDB 8FH,0BFH,8CH,0FFH,0FFHDB 8FH,0BFH,8CH,0FFH,0

42、FFH;F,F,P,P,暗暗 鍵盤掃描子程序:鍵盤掃描子程序:KEYIKEYI:MOV A,MOV A,00H00H;判有無鍵按下,使所有列線為;判有無鍵按下,使所有列線為0 0;的編碼送;的編碼送A AMOV SBUF,AMOV SBUF,A;掃描鍵盤的;掃描鍵盤的8 8號(hào)號(hào)74LS16474LS164輸輸;出為;出為00H,00H,使所有列線為使所有列線為0 0KL0KL0: JNB TI,KL0 JNB TI,KL0;串行輸出完否?;串行輸出完否?CLR TICLR TI;串行輸出完畢,清;串行輸出完畢,清TITIKL1KL1: JNB P3.4,PK1 JNB P3.4,PK1;第;第

43、1 1行有閉合鍵嗎?如有,跳行有閉合鍵嗎?如有,跳;PK1PK1進(jìn)行處理進(jìn)行處理JB P3.5,KL1JB P3.5,KL1;在第;在第2 2行鍵中有閉合鍵嗎?無閉行鍵中有閉合鍵嗎?無閉;合鍵跳;合鍵跳KL1KL1PK1PK1: ACALL DL10 ACALL DL10;調(diào)用延時(shí);調(diào)用延時(shí)10ms10ms子程序子程序DL10DL10,軟,軟;件消除抖動(dòng);件消除抖動(dòng)JNB P3.4,PK2JNB P3.4,PK2;判是否抖動(dòng)引起的?;判是否抖動(dòng)引起的?JB P3.5,KL1 JB P3.5,KL1 ;不是抖動(dòng)引起的,往下執(zhí)行;不是抖動(dòng)引起的,往下執(zhí)行PK2PK2: MOV R7,MOV R7,

44、08H 08H ;R7R7為列計(jì)數(shù)器,掃一列減為列計(jì)數(shù)器,掃一列減1 1MOV R6,MOV R6,0FEH0FEH;判別是哪一個(gè)鍵按下,;判別是哪一個(gè)鍵按下,F(xiàn)EHFEH為最為最;左一列為低;左一列為低MOV R3,MOV R3,00H 00H ;R3R3為列號(hào)寄存器為列號(hào)寄存器MOV A,R6MOV A,R6 ;KL5KL5: MOV SBUF,A MOV SBUF,A;列掃描碼從串行口輸出;列掃描碼從串行口輸出KL2KL2: JNB TI,KL2 JNB TI,KL2;等待串行口發(fā)送完;等待串行口發(fā)送完CLR TICLR TI;串行口發(fā)送完畢,清;串行口發(fā)送完畢,清TITI標(biāo)志標(biāo)志JNB

45、 P3.4,PKONEJNB P3.4,PKONE;讀第;讀第1 1行線狀態(tài),第行線狀態(tài),第1 1行有鍵閉行有鍵閉;合,跳;合,跳PKONEPKONE處理處理JB P3.5,NEXT JB P3.5,NEXT ;讀第;讀第2 2行狀態(tài),是第行狀態(tài),是第2 2行某鍵否?行某鍵否?MOV R4,MOV R4,08H08H;第;第2 2行鍵中有鍵被按下,行首鍵行鍵中有鍵被按下,行首鍵;號(hào);號(hào)08H08H送送R4R4AJMP PK3 ;AJMP PK3 ;PKONEPKONE:MOV R4,MOV R4,00H 00H ;第;第1 1行有鍵按下,行首鍵號(hào)行有鍵按下,行首鍵號(hào)00H00H送送R4R4PK

46、3PK3: MOV SBUF, MOV SBUF,00H 00H ;等待鍵釋放,發(fā)送;等待鍵釋放,發(fā)送00H00H使所有列使所有列 ;線為低;線為低KL3KL3: JNB TI,KL3 ; JNB TI,KL3 ;CLR TICLR TI ;發(fā)送完畢,清標(biāo)志;發(fā)送完畢,清標(biāo)志KL4KL4: JNB P3.4,KL4 JNB P3.4,KL4 ;判行線狀態(tài);判行線狀態(tài)JNB P3.5,KL4 ;JNB P3.5,KL4 ;MOV A,R4MOV A,R4 ;兩行線均為高,說明鍵已釋放;兩行線均為高,說明鍵已釋放 ADD A,R3ADD A,R3 ;計(jì)算得到鍵碼;計(jì)算得到鍵碼AARETRETNEX

47、TNEXT: MOV A,R6 MOV A,R6 ;列掃描碼左移一位,判下列鍵;列掃描碼左移一位,判下列鍵RL A ;RL A ;MOV R6,AMOV R6,A ;記住列掃描碼于;記住列掃描碼于R6R6中中INC R3INC R3 ;列號(hào)增;列號(hào)增1 1DJNZ R7,KL5DJNZ R7,KL5 ;列計(jì)數(shù)器;列計(jì)數(shù)器R7R7減減1 1,8 8列鍵都檢查列鍵都檢查 ;完?;完?AJMP KEYIAJMP KEYI ;8 8列鍵掃描完畢,開始下一個(gè)鍵列鍵掃描完畢,開始下一個(gè)鍵;盤掃描周期;盤掃描周期DL10DL10: MOV R7, MOV R7,0AH0AH;延時(shí);延時(shí)10ms10ms子程序

48、子程序DLDL: MOV R6, MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6 DJNZ R6,DL6DJNZ R7,DLDJNZ R7,DLRETRET10.3.3 10.3.3 利用通用鍵盤利用通用鍵盤/ /顯示器接口芯片顯示器接口芯片82798279實(shí)現(xiàn)鍵盤實(shí)現(xiàn)鍵盤/ / 顯示器接口顯示器接口 Intel 8279 Intel 8279芯片:通用可編程鍵盤芯片:通用可編程鍵盤/ /顯示器接口芯片。顯示器接口芯片。 對(duì)鍵盤部分提供掃描工作方式,能對(duì)對(duì)鍵盤部分提供掃描工作方式,能對(duì)6464個(gè)鍵鍵盤陣個(gè)鍵鍵盤陣列不斷掃描,自動(dòng)消抖,自動(dòng)識(shí)別出閉合的鍵并得到鍵列不斷掃描,

49、自動(dòng)消抖,自動(dòng)識(shí)別出閉合的鍵并得到鍵號(hào),能對(duì)雙鍵或號(hào),能對(duì)雙鍵或N N鍵同時(shí)按下進(jìn)行處理。鍵同時(shí)按下進(jìn)行處理。掃描方式的顯示接口,可顯示多達(dá)掃描方式的顯示接口,可顯示多達(dá)1616位的字符。位的字符。1.82791.8279的引腳及內(nèi)部結(jié)構(gòu)的引腳及內(nèi)部結(jié)構(gòu) 2. 2. 引腳功能介紹引腳功能介紹(1)(1)與與CPUCPU的接口引腳的接口引腳 DB0 DB0DB7DB7:數(shù)據(jù)總線、雙向、三態(tài),與單片機(jī)數(shù)據(jù):數(shù)據(jù)總線、雙向、三態(tài),與單片機(jī)數(shù)據(jù) 總線相連,在總線相連,在CPUCPU和和82798279之間傳送命令或數(shù)據(jù)。之間傳送命令或數(shù)據(jù)。 CLK CLK:系統(tǒng)時(shí)鐘,用于:系統(tǒng)時(shí)鐘,用于8279827

50、9內(nèi)部定時(shí),以產(chǎn)生其工作內(nèi)部定時(shí),以產(chǎn)生其工作 所需的時(shí)序。所需的時(shí)序。 RESET RESET:高電平時(shí),:高電平時(shí),82798279被復(fù)位,復(fù)位后的狀態(tài)如下:被復(fù)位,復(fù)位后的狀態(tài)如下:* * 16 16個(gè)字符左邊輸入顯示方式個(gè)字符左邊輸入顯示方式* * 編碼掃描鍵盤、雙鍵鎖定方式編碼掃描鍵盤、雙鍵鎖定方式 CS CS* *:片選:片選 A0 A0:=1=1,寫入的是命令字節(jié),寫入的是命令字節(jié); ; 讀出的是狀態(tài)字節(jié)。讀出的是狀態(tài)字節(jié)。 =0 =0,寫入或讀出的字節(jié)均為數(shù)據(jù)。,寫入或讀出的字節(jié)均為數(shù)據(jù)。 RD RD* *、WRWR* *:讀、寫控制引腳:讀、寫控制引腳 IRQ IRQ:中斷請(qǐng)

51、求線。在鍵盤方式中,當(dāng)鍵盤:中斷請(qǐng)求線。在鍵盤方式中,當(dāng)鍵盤RAMRAM先先進(jìn)先出中存有按下鍵的數(shù)據(jù)時(shí),進(jìn)先出中存有按下鍵的數(shù)據(jù)時(shí),IRQIRQ為高電平,向?yàn)楦唠娖?,向CPUCPU提出中斷申請(qǐng)。提出中斷申請(qǐng)。(2 2掃描信號(hào)輸出引腳掃描信號(hào)輸出引腳 CPU CPU每次從鍵盤每次從鍵盤RAMRAM中讀出一個(gè)字節(jié)數(shù)據(jù)時(shí),中讀出一個(gè)字節(jié)數(shù)據(jù)時(shí),IRQIRQ就變就變?yōu)榈碗娖?。如果鍵盤為低電平。如果鍵盤RAMRAM中還有未讀完的數(shù)據(jù),中還有未讀完的數(shù)據(jù),IRQIRQ將將再次變?yōu)楦唠娖?,再次提出中斷?qǐng)求。再次變?yōu)楦唠娖剑俅翁岢鲋袛嗾?qǐng)求。 SL0 SL0SL3 SL3 掃描輸出。用來掃描鍵盤和顯示器??删?/p>

52、程設(shè)定掃描輸出。用來掃描鍵盤和顯示器。可編程設(shè)定為編碼輸出,即為編碼輸出,即SL0SL0SL3SL3需外接需外接4-164-16譯碼器,輸出譯碼器,輸出1616取取1 1的掃描信號(hào),也可編程設(shè)定為譯碼輸出,即由的掃描信號(hào),也可編程設(shè)定為譯碼輸出,即由SL0SL0SL3SL3直接輸出直接輸出4 4取取1 1的掃描信號(hào)。的掃描信號(hào)。(3 3與鍵盤連接的引腳與鍵盤連接的引腳 RL0 RL0RL7RL7 鍵盤矩陣的行信號(hào)輸入線。鍵盤矩陣的行信號(hào)輸入線。 SHIFT SHIFT 輸入線,通常用作鍵盤上、下檔功能的控制鍵。輸入線,通常用作鍵盤上、下檔功能的控制鍵。 CNTL/STB CNTL/STB 輸入

53、線,高電平有效。在鍵盤方式時(shí),通常用來輸入線,高電平有效。在鍵盤方式時(shí),通常用來作為鍵盤控制功能鍵使用。作為鍵盤控制功能鍵使用。(4 4與顯示器連接的引腳與顯示器連接的引腳 OUTA0 OUTA0OUTA3OUTA3A A組顯示數(shù)據(jù))、組顯示數(shù)據(jù))、OUTB0OUTB0OUTB3OUTB3B B組顯示數(shù)據(jù))組顯示數(shù)據(jù)): :向向LEDLED顯示器輸出的段碼顯示器輸出的段碼, , 與掃描信號(hào)與掃描信號(hào)線線SL0SL0SL3SL3同步。兩組可獨(dú)立使用,也可合并使用。同步。兩組可獨(dú)立使用,也可合并使用。 BD BD* *: :消隱顯示控制。消隱顯示控制。3. 82793. 8279的基本功能部件的基

54、本功能部件(1 1掃描計(jì)數(shù)器掃描計(jì)數(shù)器編碼方式編碼方式: :掃描線掃描線SL0SL0SL3SL3輸出,經(jīng)外部輸出,經(jīng)外部4-164-16譯碼器譯碼器譯碼后,為鍵盤和顯示器提供譯碼后,為鍵盤和顯示器提供1616取取1 1的掃描線。的掃描線。譯碼方式譯碼方式: :計(jì)數(shù)器的最低二位在計(jì)數(shù)器的最低二位在82798279內(nèi)部譯碼后,從內(nèi)部譯碼后,從SL0SL0SL3SL3輸出,為鍵盤和顯示器提供輸出,為鍵盤和顯示器提供4 4取取1 1掃描線。掃描線。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0CNTLCNTLSHIFTSHIFT掃掃 描描回回 復(fù)復(fù)(2 2鍵盤去抖動(dòng)及回復(fù)緩沖器鍵盤去

55、抖動(dòng)及回復(fù)緩沖器 RL0 RL0RL7RL7被接到鍵盤的行線。被接到鍵盤的行線。 在逐列掃描時(shí),當(dāng)某一鍵閉合,消抖電路延時(shí)等在逐列掃描時(shí),當(dāng)某一鍵閉合,消抖電路延時(shí)等待待10ms10ms之后,再檢驗(yàn)該鍵是否仍閉合。若閉合,則該之后,再檢驗(yàn)該鍵是否仍閉合。若閉合,則該鍵的行、列地址和附加的移位、控制狀態(tài)一起形成鍵鍵的行、列地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù),送入盤數(shù)據(jù),送入82798279內(nèi)部的鍵盤內(nèi)部的鍵盤RAMRAM存儲(chǔ)器。格式為:存儲(chǔ)器。格式為: 控制控制CNTLCNTL和移位和移位SHIFTSHIFT的狀態(tài)由兩個(gè)獨(dú)立的狀態(tài)由兩個(gè)獨(dú)立的附加開關(guān)決定,而掃描的附加開關(guān)決定,而掃描D5

56、D5、D4D4、D3D3是被按鍵的是被按鍵的列編碼,而回復(fù)列編碼,而回復(fù)D2D2、D1D1、D0D0則是被按鍵的行位置則是被按鍵的行位置數(shù)據(jù)。數(shù)據(jù)。(3 3鍵盤鍵盤RAMRAM及其狀態(tài)寄存器及其狀態(tài)寄存器鍵盤鍵盤RAMRAM:8 8字節(jié)先進(jìn)先出字節(jié)先進(jìn)先出FIFOFIFO存儲(chǔ)器。內(nèi)部的存儲(chǔ)器。內(nèi)部的FIFOFIFO狀態(tài)寄存器存放狀態(tài)寄存器存放FIFOFIFO的工作狀態(tài),如的工作狀態(tài),如FIFOFIFO是空還是滿,是空還是滿,其中存有多少字符,是否操作出錯(cuò)等等。其中存有多少字符,是否操作出錯(cuò)等等。 當(dāng)當(dāng)FIFOFIFO存儲(chǔ)器空間不足時(shí),狀態(tài)邏輯將產(chǎn)生存儲(chǔ)器空間不足時(shí),狀態(tài)邏輯將產(chǎn)生IRQ=1IR

57、Q=1信號(hào),向信號(hào),向CPUCPU發(fā)出中斷申請(qǐng)。發(fā)出中斷申請(qǐng)。(4 4顯示顯示RAMRAM和顯示地址寄存器和顯示地址寄存器顯示顯示RAMRAM:存顯示數(shù)據(jù)。:存顯示數(shù)據(jù)。1616個(gè)字節(jié),可存放個(gè)字節(jié),可存放1616位顯示信位顯示信息。顯示息。顯示RAMRAM的輸出與顯示掃描配合,同時(shí)輪流驅(qū)動(dòng)被的輸出與顯示掃描配合,同時(shí)輪流驅(qū)動(dòng)被選中的顯示位,使顯示器呈現(xiàn)穩(wěn)定的顯示動(dòng)態(tài)掃選中的顯示位,使顯示器呈現(xiàn)穩(wěn)定的顯示動(dòng)態(tài)掃描)。描)。4. 82794. 8279的命令字和狀態(tài)字的命令字和狀態(tài)字命令字:命令字:D7D7、D6D6、D5D5為命令特征位,來區(qū)分為命令特征位,來區(qū)分8 8條不同條不同的命令字。的

58、命令字。 狀態(tài)字:主要用于鍵盤工作方式,以指示鍵盤狀態(tài)字:主要用于鍵盤工作方式,以指示鍵盤RAMRAM中中的字符數(shù)和有無錯(cuò)誤發(fā)生。的字符數(shù)和有無錯(cuò)誤發(fā)生。5. 82795. 8279與鍵盤與鍵盤/ /顯示器的接口顯示器的接口 圖圖10-2010-20為為82798279與與8 8位顯示器,位顯示器,4 48 8鍵盤的接口電路。鍵盤的接口電路。行線接行線接82798279的的RL0RL0RL3RL3,82798279選用外部譯碼方式,選用外部譯碼方式,SL0SL0SL2SL2經(jīng)經(jīng)74LS13874LS1381 1譯碼輸出,接列線,實(shí)現(xiàn)鍵盤逐譯碼輸出,接列線,實(shí)現(xiàn)鍵盤逐列掃描。列掃描。 SL0 S

59、L0SL2SL2又由又由74LS138(2)74LS138(2)譯碼輸出到顯示器各位的公譯碼輸出到顯示器各位的公共陰極,進(jìn)行逐位掃描顯示。共陰極,進(jìn)行逐位掃描顯示。OUTB0OUTB03 3、OUTA 0OUTA 03 3輸輸出出8 8位段碼。位段碼。 當(dāng)位切換時(shí),當(dāng)位切換時(shí),BDBD* *輸出為低電平,使輸出為低電平,使74LS138(2)74LS138(2)輸出輸出全為高電平,顯示消隱。全為高電平,顯示消隱。 當(dāng)鍵盤上出現(xiàn)有效的閉合鍵時(shí),鍵輸入數(shù)據(jù)自動(dòng)進(jìn)入當(dāng)鍵盤上出現(xiàn)有效的閉合鍵時(shí),鍵輸入數(shù)據(jù)自動(dòng)進(jìn)入中斷讀取鍵盤中斷讀取鍵盤RAMRAM中的鍵輸入數(shù)據(jù)。若要更新顯示器輸中的鍵輸入數(shù)據(jù)。若要更

60、新顯示器輸出,僅需改變出,僅需改變82798279中顯示中顯示RAMRAM中的內(nèi)容。中的內(nèi)容。 圖圖10-20:827910-20:8279的命令的命令/ /狀態(tài)口地址為狀態(tài)口地址為7FFFH7FFFH,數(shù)據(jù)口,數(shù)據(jù)口地址為地址為7FFEH7FFEH。 8279 8279初始化程序:初始化程序:INITI: SETB EX1INITI: SETB EX1 ; ; 允許外部中斷允許外部中斷1 1中斷中斷MOVMOV DPTR,#7FFFH ; DPTR,#7FFFH ; 命令命令/ /狀態(tài)口地址寫入狀態(tài)口地址寫入DPTRDPTRMOVMOV A,#0D1H A,#0D1H ; ; 控制字控制字D

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論