第8章 MCS-51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計_第1頁
第8章 MCS-51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計_第2頁
第8章 MCS-51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計_第3頁
第8章 MCS-51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計_第4頁
第8章 MCS-51與鍵盤、顯示器、撥盤、打印機的接口設(shè)計_第5頁
已閱讀5頁,還剩95頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、0-110-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

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

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

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

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

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

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

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

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

12、MOV DPTR,#0BFFFH;鍵盤端口地址鍵盤端口地址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;延時延時1010msms去鍵盤抖動去鍵盤抖動MOVX A,DPTRMOVX A,DPTR;再讀鍵盤狀態(tài)再讀鍵盤狀態(tài)ANL A,#1FHANL A,#1FH;屏蔽高三位屏蔽高三位 CJNE A,R3,RETURN CJNE A,R3,RETURN ;兩次不同,抖動引起轉(zhuǎn)兩次不同,

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,KEY4

14、CJNE 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 ;S5

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

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

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

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

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

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

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

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

23、用擴展用擴展I/OI/O接口芯片接口芯片81558155H H實現(xiàn)的實現(xiàn)的6 6位位LEDLED顯示和顯示和3232鍵的鍵盤鍵的鍵盤/ /顯示器接口電路。圖中顯示器接口電路。圖中81558155H H也可用也可用82558255A A來替代。來替代。 8031 8031外擴一片外擴一片81558155H H。RAMRAM地址:地址:7 7E00HE00H7EFFH7EFFH。I/OI/O口地址:口地址:7 7F00HF00H7F05H7F05H。 PAPA口口為輸出口為輸出口,控制鍵盤控制鍵盤列線的掃描列線的掃描,同時又是,同時又是6 6位共陰極顯示器的位共陰極顯示器的位掃描口位掃描口。 PB

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

25、暗。動態(tài)地顯示出由緩沖區(qū)中顯示數(shù)據(jù)所確定的字符。程動態(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,7F01H7F01H;位選碼位選碼PAPA口(口(PA.0PA.0位)位);最左邊最左邊LEDLED亮亮MOVX DPTR,AMOVX DPTR,AINC DPTRINC DPTR ;

26、數(shù)據(jù)指針指向數(shù)據(jù)指針指向PBPB口口MOV A,R0 MOV A,R0 ;顯示數(shù)據(jù)顯示數(shù)據(jù)A AADD A,ADD A,0DH 0DH ;加偏移量(下條指令到表首間加偏移量(下條指令到表首間 ;所有指令占的單元數(shù));所有指令占的單元數(shù))MOVC A,AMOVC A,APC PC ;根據(jù)顯示數(shù)據(jù)來查表取段碼根據(jù)顯示數(shù)據(jù)來查表取段碼DIR1DIR1: MOVX DPTR,AMOVX DPTR,A ;段碼段碼81558155HPBHPB口口ACALL DL1ms ACALL DL1ms ;該位顯示該位顯示1 1msmsINC R0INC R0 ;指針指向下一個數(shù)據(jù)單元指針指向下一個數(shù)據(jù)單元MOV A

27、,R3MOV A,R3 ;位選碼送入位選碼送入A A中中JB Acc.5,LD1 JB Acc.5,LD1 ;判斷是否掃描到最右邊的判斷是否掃描到最右邊的 ; LEDLED,如到最右邊則返回如到最右邊則返回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,6D

28、H ;共陰極段碼表共陰極段碼表 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;延時延時1 1msms子程序子程序DLDL: MOV R6,MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6DJNZ R6,

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

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

31、sAJMP KEYIAJMP KEYI;抖動引起,跳抖動引起,跳KEYIKEYILK2LK2: MOV R2, MOV R2,0FEH0FEH ;列選碼列選碼R2R2MOV R4,MOV R4,00H00H;R4R4為列號計數(shù)器為列號計數(shù)器LK4LK4: MOV DPTR, MOV DPTR,7F01H 7F01H ;列選碼列選碼81558155H H的的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

32、 A,DPTRMOVX A,DPTR ;讀讀81558155H PCH 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行有鍵閉合行有鍵閉合, ,首鍵號首鍵號00A AAJMP LKPAJMP LKP ;跳跳LKPLKP,計算鍵號計算鍵號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行有鍵閉合行有鍵閉合, ,首鍵號首鍵號88A AAJMP 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行有鍵閉合行有鍵閉合, ,首鍵號首鍵號1010HAHAAJMP LKPAJMP LKP;跳跳LKPLKP,計算鍵號計算鍵號LTHRLTHR:JB Acc.3,NEXT JB Acc.3,NEXT ;3 3行線為高,無鍵行線為高,無鍵;閉合,跳;閉合,跳NEXTNEXT,準(zhǔn)備下一列掃描準(zhǔn)備下一列掃描MOV A

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

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

36、 LK4 ;KNDKND: 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 ;從從PCP

37、C口讀行線的狀態(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的串行口實現(xiàn)鍵盤的串行口實現(xiàn)鍵盤/ /顯示器接口顯示器接口 串口未作它用,可用來外擴鍵盤串口未作它用,可用來外擴鍵盤/ /顯示器。顯示器。 串口為方式串口為方式0 0輸出,串口外接移位寄存器輸出,串口外接移位寄存器7474LS164LS164。接口電路如圖接口電路如圖10-1710-17。 74 74LS164(0)LS164(0)74

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

39、XDTXD腳同步移位腳同步移位 ;脈沖輸出;脈沖輸出MOV R7,MOV R7,08H 08H ;送出的段碼個數(shù),送出的段碼個數(shù),R7R7為段為段 ;碼個數(shù)計數(shù)器;碼個數(shù)計數(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、送SBUFSBUF DL1DL1: JNB TI,DL1 JNB TI,DL1;輸出段碼,查詢輸出段碼,查詢TITI狀態(tài),狀態(tài),1 1個字節(jié)個字節(jié);的段碼輸出完否?;的段碼輸出完否?CLR TI CLR TI ;1 1個字節(jié)的段碼輸出完個字節(jié)的段碼輸出完, ,清清TITI標(biāo)志標(biāo)志DEC R0DEC R0;指向下一個顯示數(shù)據(jù)單元指向下一個顯示數(shù)據(jù)單元 DJNZ R7,DL0DJNZ R7,DL0;段碼個數(shù)計數(shù)器段碼個數(shù)計數(shù)器R7R7是否為是否為0, 0, 如不如不; ; 為為0 0,繼續(xù)送段碼,繼續(xù)送段碼CLR P3.3 CLR P3.3 ;8 8個段碼輸出完畢,關(guān)顯示器輸出個段碼輸出完畢,關(guān)顯

41、示器輸出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,0FFH;F,F,P,P

42、,暗暗 鍵盤掃描子程序:鍵盤掃描子程序:KEYIKEYI:MOV A,MOV A,00H00H;判有無鍵按下,使所有列線為判有無鍵按下,使所有列線為0 0;的編碼送;的編碼送A AMOV SBUF,AMOV SBUF,A;掃描鍵盤的(掃描鍵盤的(8 8)號)號7474LS164LS164輸輸 ;出為;出為0000H,H,使所有列線為使所有列線為0 0KL0KL0: JNB TI,KL0 JNB TI,KL0;串行輸出完否?串行輸出完否?CLR TICLR TI;串行輸出完畢,清串行輸出完畢,清TITIKL1KL1: JNB P3.4,PK1 JNB P3.4,PK1;第第1 1行有閉合鍵嗎?如

43、有,跳行有閉合鍵嗎?如有,跳;PK1PK1進行處理進行處理JB P3.5,KL1JB P3.5,KL1;在第在第2 2行鍵中有閉合鍵嗎?無閉行鍵中有閉合鍵嗎?無閉;合鍵跳;合鍵跳KL1KL1PK1PK1: ACALL DL10 ACALL DL10;調(diào)用延時調(diào)用延時1010msms子程序子程序DL10DL10,軟軟;件消除抖動;件消除抖動JNB P3.4,JNB P3.4,PK2PK2;判是否抖動引起的?判是否抖動引起的?JB P3.5,KL1JB P3.5,KL1PK2PK2: MOV R7,MOV R7,08H 08H ;不是抖動引起的不是抖動引起的MOV R6,MOV R6,0FEH0F

44、EH;判別是哪一個鍵按下,判別是哪一個鍵按下,F(xiàn)EHFEH為最為最;左一列為低;左一列為低MOV R3,MOV R3,00H 00H ;R3R3為列號寄存器為列號寄存器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 P3.4,PKONEJNB P3.4,PKONE;讀第讀第1 1行線狀態(tài),第行線狀態(tài),第1 1行有鍵閉行有鍵閉;合,跳

45、;合,跳PKONEPKONE處理處理JB P3.5,NEXT JB P3.5,NEXT ;讀第讀第2 2行狀態(tài),是第行狀態(tài),是第2 2行某鍵否?行某鍵否?MOV R4,MOV R4,08H08H;第第2 2行鍵中有鍵被按下,行首鍵行鍵中有鍵被按下,行首鍵;號;號0808H H送送R4R4AJMP PK3 ;AJMP PK3 ;PKONEPKONE:MOV R4,MOV R4,00H 00H ;第第1 1行有鍵按下,行首鍵號行有鍵按下,行首鍵號0000H H送送R4R4PK3PK3: MOV SBUF, MOV SBUF,00H 00H ;等待鍵釋放,發(fā)送等待鍵釋放,發(fā)送0000H H使所有列使

46、所有列 ;線為低;線為低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 ;計算得到鍵碼計算得到鍵碼A ARETRETNEXTNEXT: MOV A,R6 MOV A,R6 ;列掃描碼左移一位,判下列鍵列掃描碼左移一位,判下列鍵RL A ;RL A ;M

47、OV R6,AMOV R6,A ;記住列掃描碼于記住列掃描碼于R6R6中中INC R3INC R3 ;列號增列號增1 1DJNZ R7,KL5DJNZ R7,KL5 ;列計數(shù)器列計數(shù)器R7R7減減1 1,8 8列鍵都檢查列鍵都檢查 ;完?;完?AJMP KEYIAJMP KEYI ;8 8列鍵掃描完畢,開始下一個鍵列鍵掃描完畢,開始下一個鍵;盤掃描周期;盤掃描周期DL10DL10: MOV R7, MOV R7,0AH0AH;延時延時1010msms子程序子程序DLDL: MOV R6, MOV R6,0FFH0FFHDL6DL6: DJNZ R6,DL6 DJNZ R6,DL6DJNZ DJ

48、NZ R7,DLR7,DLRETRET10.3.3 10.3.3 利用通用鍵盤利用通用鍵盤/ /顯示器接口芯片顯示器接口芯片82798279實現(xiàn)鍵盤實現(xiàn)鍵盤/ / 顯示器接口顯示器接口 Intel Intel 82798279芯片:芯片:通用可編程鍵盤通用可編程鍵盤/ /顯示器接口芯片。顯示器接口芯片。 對鍵盤部分提供掃描工作方式,能對對鍵盤部分提供掃描工作方式,能對6464個個鍵鍵盤陣鍵鍵盤陣列不斷掃描,列不斷掃描,自動消抖自動消抖,自動識別出閉合的鍵自動識別出閉合的鍵并并得到鍵得到鍵號號,能對,能對雙鍵或雙鍵或N N鍵同時按下鍵同時按下進行處理。進行處理。掃描方式的顯示接口,可顯示多達掃描

49、方式的顯示接口,可顯示多達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),與單片機數(shù)據(jù)數(shù)據(jù)總線、雙向、三態(tài),與單片機數(shù)據(jù) 總線相連,在總線相連,在CPUCPU和和82798279之間傳送命令或數(shù)據(jù)。之間傳送命令或數(shù)據(jù)。 CLK CLK:系統(tǒng)時鐘,用于系統(tǒng)時鐘,用于82798279內(nèi)部定時,以產(chǎn)生其工作內(nèi)部定時,以產(chǎn)生其工作 所需的時序。所需的時序。 RESET RESET:高電平時,高電平時,82798279被復(fù)位,被復(fù)位

50、,復(fù)位后的狀態(tài)如下復(fù)位后的狀態(tài)如下:* * 1616個字符左邊輸入顯示方式個字符左邊輸入顯示方式* * 編碼掃描鍵盤、雙鍵鎖定方式編碼掃描鍵盤、雙鍵鎖定方式 CS CS* *:片選片選 A0 A0:=1=1,寫入寫入的是的是命令命令字節(jié)字節(jié); ; 讀出讀出的是的是狀態(tài)狀態(tài)字節(jié)。字節(jié)。 =0 =0,寫入或讀出的字節(jié)均為,寫入或讀出的字節(jié)均為數(shù)據(jù)數(shù)據(jù)。 RD RD* *、WRWR* *:讀、寫控制引腳讀、寫控制引腳 IRQ IRQ:中斷請求線。在鍵盤方式中,當(dāng)鍵盤中斷請求線。在鍵盤方式中,當(dāng)鍵盤RAMRAM(先先進先出)中進先出)中存有按下鍵的數(shù)據(jù)時,存有按下鍵的數(shù)據(jù)時,IRQIRQ為高電平為高電

51、平,向,向CPUCPU提出中斷申請。提出中斷申請。(2 2)掃描信號輸出引腳掃描信號輸出引腳 CPUCPU每次從鍵盤每次從鍵盤RAMRAM中讀出一個字節(jié)數(shù)據(jù)時,中讀出一個字節(jié)數(shù)據(jù)時,IRQIRQ就變就變?yōu)榈碗娖?。為低電平。如果鍵盤如果鍵盤RAMRAM中還有未讀完的數(shù)據(jù),中還有未讀完的數(shù)據(jù),IRQIRQ將將再次變?yōu)楦唠娖?,再次提出中斷請求。再次變?yōu)楦唠娖?,再次提出中斷請求?SL0 SL0SL3SL3 掃描輸出。用來掃描鍵盤和顯示器??删幊淘O(shè)定掃描輸出。用來掃描鍵盤和顯示器??删幊淘O(shè)定為為編碼輸出編碼輸出,即,即SL0SL0SL3SL3需外接需外接4-164-16譯碼器,輸出譯碼器,輸出1616

52、取取1 1的掃描信號,也可編程設(shè)定為的掃描信號,也可編程設(shè)定為譯碼輸出譯碼輸出,即由,即由SL0SL0SL3SL3直接輸出直接輸出4 4取取1 1的掃描信號。的掃描信號。(3 3)與鍵盤連接的引腳)與鍵盤連接的引腳 RL0 RL0RL7RL7 鍵盤矩陣的行信號輸入線。鍵盤矩陣的行信號輸入線。 SHIFT SHIFT 輸入線,通常用作鍵盤上、下檔功能的控制鍵。輸入線,通常用作鍵盤上、下檔功能的控制鍵。 CNTL/STB CNTL/STB 輸入線,高電平有效。在鍵盤方式時,通常用來輸入線,高電平有效。在鍵盤方式時,通常用來作為鍵盤控制功能鍵使用。作為鍵盤控制功能鍵使用。(4 4)與顯示器連接的引腳

53、)與顯示器連接的引腳 OUTA0 OUTA0OUTA3OUTA3(A A組顯示數(shù)據(jù))組顯示數(shù)據(jù))、OUTB0OUTB0OUTB3OUTB3(B B組顯示數(shù)據(jù))組顯示數(shù)據(jù)): :向向LEDLED顯示器輸出的段碼顯示器輸出的段碼, , 與掃描信號與掃描信號線線SL0SL0SL3SL3同步。兩組可獨立使用,也可合并使用。同步。兩組可獨立使用,也可合并使用。 BD BD* *: :消隱顯示控制消隱顯示控制。3. 82793. 8279的基本功能部件的基本功能部件(1 1)掃描計數(shù)器)掃描計數(shù)器編碼方式編碼方式: :掃描線掃描線SL0SL0SL3SL3輸出,經(jīng)外部輸出,經(jīng)外部4-164-16譯碼器譯碼器

54、譯碼后,為鍵盤和顯示器提供譯碼后,為鍵盤和顯示器提供1616取取1 1的掃描線。的掃描線。譯碼方式譯碼方式: :計數(shù)器的最低二位在計數(shù)器的最低二位在82798279內(nèi)部譯碼后,從內(nèi)部譯碼后,從SL0SL0SL3SL3輸出,為鍵盤和顯示器提供輸出,為鍵盤和顯示器提供4 4取取1 1掃描線。掃描線。D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0CNTLCNTLSHIFTSHIFT掃掃 描描回回 復(fù)復(fù)(2 2)鍵盤去抖動及回復(fù)緩沖器)鍵盤去抖動及回復(fù)緩沖器 RL0 RL0RL7RL7被接到鍵盤的行線。被接到鍵盤的行線。 在逐列掃描時,當(dāng)某一鍵閉合,消抖電路延時等在逐列掃描時,當(dāng)某一

55、鍵閉合,消抖電路延時等待待1010msms之后,再檢驗該鍵是否仍閉合。若閉合,則該之后,再檢驗該鍵是否仍閉合。若閉合,則該鍵的行、列地址和附加的移位、控制狀態(tài)一起形成鍵鍵的行、列地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù),送入盤數(shù)據(jù),送入82798279內(nèi)部的鍵盤內(nèi)部的鍵盤RAMRAM存儲器。格式為:存儲器。格式為: 控制(控制(CNTLCNTL)和和移位(移位(SHIFTSHIFT)的狀態(tài)由兩個獨立的狀態(tài)由兩個獨立的附加開關(guān)決定,而的附加開關(guān)決定,而掃描掃描(D5D5、D4D4、D3D3)是被按鍵的是被按鍵的列列編碼,而編碼,而回復(fù)回復(fù)(D2D2、D1D1、D0D0)則是被按鍵的則是被按鍵的

56、行行位置位置數(shù)據(jù)。數(shù)據(jù)。(3 3)鍵盤)鍵盤RAMRAM及其狀態(tài)寄存器及其狀態(tài)寄存器鍵盤鍵盤RAMRAM:8 8字節(jié)先進先出(字節(jié)先進先出(FIFOFIFO)存儲器。內(nèi)部的存儲器。內(nèi)部的FIFOFIFO狀態(tài)寄存器狀態(tài)寄存器存放存放FIFOFIFO的工作狀態(tài),如的工作狀態(tài),如FIFOFIFO是空還是滿,是空還是滿,其中存有多少字符,是否操作出錯等等。其中存有多少字符,是否操作出錯等等。 當(dāng)當(dāng)FIFOFIFO存儲器空間不足時,狀態(tài)邏輯將產(chǎn)生存儲器空間不足時,狀態(tài)邏輯將產(chǎn)生IRQ=1IRQ=1信號,向信號,向CPUCPU發(fā)出中斷申請。發(fā)出中斷申請。(4 4)顯示)顯示RAMRAM和顯示地址寄存器和顯

57、示地址寄存器顯示顯示RAMRAM:存顯示數(shù)據(jù)。存顯示數(shù)據(jù)。1616個字節(jié),可存放個字節(jié),可存放1616位顯示信位顯示信息。顯示息。顯示RAMRAM的輸出與顯示掃描配合,同時輪流驅(qū)動被的輸出與顯示掃描配合,同時輪流驅(qū)動被選中的顯示位,使顯示器呈現(xiàn)穩(wěn)定的顯示(動態(tài)掃選中的顯示位,使顯示器呈現(xiàn)穩(wěn)定的顯示(動態(tài)掃描)。描)。4. 82794. 8279的命令字和狀態(tài)字的命令字和狀態(tài)字命令字:命令字:D7D7、D6D6、D5D5為命令特征位,來區(qū)分為命令特征位,來區(qū)分8 8條條不同不同的命令字。的命令字。 狀態(tài)字:狀態(tài)字:主要用于鍵盤工作方式,以指示鍵盤主要用于鍵盤工作方式,以指示鍵盤RAMRAM中中的

58、字符數(shù)和有無錯誤發(fā)生。的字符數(shù)和有無錯誤發(fā)生。5. 82795. 8279與鍵盤與鍵盤/ /顯示器的接口顯示器的接口 圖圖10-2010-20為為82798279與與8 8位顯示器,位顯示器,4 48 8鍵盤鍵盤的接口電路。的接口電路。行線接行線接82798279的的RL0RL0RL3RL3,82798279選用外部譯碼方式,選用外部譯碼方式,SL0SL0SL2SL2經(jīng)經(jīng)7474LS138LS138(1 1)譯碼輸出,接列線,實現(xiàn)鍵盤逐譯碼輸出,接列線,實現(xiàn)鍵盤逐列掃描。列掃描。 SL0 SL0SL2SL2又由又由7474LS138(2)LS138(2)譯碼輸出到顯示器各位的公譯碼輸出到顯示器

59、各位的公共陰極,進行逐位掃描顯示。共陰極,進行逐位掃描顯示。OUTB0OUTB03 3、OUTA 0OUTA 03 3輸輸出出8 8位段碼。位段碼。 當(dāng)位切換時,當(dāng)位切換時,BDBD* *輸出為低電平,使輸出為低電平,使7474LS138(2)LS138(2)輸出輸出全為高電平,顯示消隱。全為高電平,顯示消隱。 當(dāng)鍵盤上出現(xiàn)有效的閉合鍵時,鍵輸入數(shù)據(jù)自動進入當(dāng)鍵盤上出現(xiàn)有效的閉合鍵時,鍵輸入數(shù)據(jù)自動進入中斷讀取鍵盤中斷讀取鍵盤RAMRAM中的鍵輸入數(shù)據(jù)。若要更新顯示器輸中的鍵輸入數(shù)據(jù)。若要更新顯示器輸出,僅需改變出,僅需改變82798279中顯示中顯示RAMRAM中的內(nèi)容。中的內(nèi)容。 圖圖10

60、-20:10-20:82798279的的命令命令/ /狀態(tài)口地址為狀態(tài)口地址為7 7FFFHFFFH,數(shù)據(jù)口數(shù)據(jù)口地址為地址為7 7FFEHFFEH。 82798279初始化程序:初始化程序:INITI: SETB EX1INITI: SETB EX1 ; ; 允許外部中斷允許外部中斷1 1中斷中斷MOVMOV DPTR,#7FFFH ; DPTR,#7FFFH ; 命令命令/ /狀態(tài)口地址寫入狀態(tài)口地址寫入DPTRDPTRMOVMOV A,#0D1H A,#0D1H ; ; 控制字控制字D1HD1H送送A AMOVX DPTR,AMOVX DPTR,A ; ; 向命令向命令/ /狀態(tài)口寫入控

溫馨提示

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

評論

0/150

提交評論