版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-151在線教務(wù)輔導(dǎo)網(wǎng):在線教務(wù)輔導(dǎo)網(wǎng): :/shangfuwang 更多課程配套課件資源請(qǐng)?jiān)L問(wèn)在線教務(wù)輔導(dǎo)網(wǎng)更多課程配套課件資源請(qǐng)?jiān)L問(wèn)在線教務(wù)輔導(dǎo)網(wǎng)第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-152第第8章章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管8.1 功能要求功能要求8.2 任務(wù)分析任務(wù)分析 8.3 鍵盤(pán)接口技術(shù)鍵盤(pán)接口技術(shù)8.3.1 鍵盤(pán)工作特性鍵盤(pán)工作特性8.3.2 獨(dú)立式鍵盤(pán)接口電路獨(dú)立式鍵盤(pán)接口電路8.3.3 8.3.3 矩陣式鍵盤(pán)接口電路矩陣式鍵盤(pán)接口電路8.4 鍵盤(pán)接口程序設(shè)計(jì)鍵盤(pán)接口程
2、序設(shè)計(jì)8.4.1 本項(xiàng)目使用的鍵盤(pán)接口本項(xiàng)目使用的鍵盤(pán)接口8.4.2 獨(dú)立式鍵盤(pán)控制獨(dú)立式鍵盤(pán)控制LED燈燈8.4.3 矩陣式鍵盤(pán)控制數(shù)碼管矩陣式鍵盤(pán)控制數(shù)碼管第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1538.1功能要求功能要求 一基本要求一基本要求能用獨(dú)立式鍵盤(pán)控制LED燈。二發(fā)揮部分二發(fā)揮部分能用矩陣式鍵盤(pán)輸入數(shù)據(jù)和命令,當(dāng)鍵入數(shù)字鍵時(shí),數(shù)碼管顯示相應(yīng)數(shù)字,當(dāng)輸入功能鍵時(shí),完成相應(yīng)的功能。 回目錄回目錄 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1548.2 任務(wù)分析任務(wù)分析 要完成此任務(wù),主要需解決如下四方面的問(wèn)題:要完成此任務(wù),主要需解
3、決如下四方面的問(wèn)題:為什么要軟件延時(shí)去抖動(dòng);獨(dú)立式和矩陣式鍵盤(pán)接口電路的設(shè)計(jì)方法;1.獨(dú)立式和矩陣式鍵盤(pán)程序的設(shè)計(jì)方法。 回目錄回目錄第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1558.3.1 8.3.1 鍵盤(pán)工作特性鍵盤(pán)工作特性 鍵盤(pán)是一組按鍵的組合,它是單片機(jī)最常用的輸入設(shè)備,單片機(jī)中的鍵盤(pán)一般通過(guò)按鍵開(kāi)關(guān)自己設(shè)計(jì)焊接,當(dāng)然也可到廠家定制,如圖81 c)所示。本節(jié)主要講解通過(guò)按鍵開(kāi)關(guān)自己設(shè)計(jì)鍵盤(pán)的方法,根據(jù)按鍵開(kāi)關(guān)與單片機(jī)接口的連接方式,可以分為獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)。8.3 鍵盤(pán)接口技術(shù)鍵盤(pán)接口技術(shù)回目錄回目錄第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2
4、022-3-156按鍵開(kāi)關(guān)介紹按鍵開(kāi)關(guān)介紹 單片機(jī)中的鍵盤(pán)通常由按鍵開(kāi)關(guān)組成,按鍵開(kāi)關(guān)的外形和參數(shù)如下圖所示,它是一種常開(kāi)型按鍵開(kāi)關(guān),為了便于安裝固定,它有四個(gè)管腳,其管腳說(shuō)明如下圖中的文字所示,在常態(tài)時(shí)開(kāi)關(guān)觸點(diǎn)(1和2)處于斷開(kāi)狀態(tài),只有按下按鍵時(shí)開(kāi)關(guān)觸點(diǎn)才閉合短路,所以可以用萬(wàn)用表檢測(cè)開(kāi)關(guān)的管腳排列、好壞和質(zhì)量。 回目錄回目錄第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-157按鍵閉合、斷開(kāi)時(shí)的抖動(dòng)按鍵閉合、斷開(kāi)時(shí)的抖動(dòng) 回目錄回目錄在單片機(jī)中,按鍵通常與I/O端口相連,如下圖左邊所示。當(dāng)按鍵開(kāi)關(guān)K1未按下時(shí),P1.0輸入為高電平,而當(dāng)按鍵K1閉合時(shí),P1.0輸入為低電
5、平,由于開(kāi)關(guān)為機(jī)械彈性開(kāi)關(guān),當(dāng)機(jī)械觸點(diǎn)斷開(kāi)、閉合時(shí),由于機(jī)械觸點(diǎn)的彈性作用,一個(gè)機(jī)械開(kāi)關(guān)閉合時(shí)不會(huì)馬上穩(wěn)定的閉合接通,斷開(kāi)時(shí)也不會(huì)馬上斷開(kāi),而是在閉合、斷開(kāi)的瞬間伴隨有一連串的抖動(dòng),如下圖右邊所示,抖動(dòng)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性決定,一般為510ms。 AT89C51R12KK1VCCP1.0前沿抖動(dòng)后沿抖動(dòng)閉合穩(wěn)定鍵按下鍵釋放理想波形實(shí)際波形P1.0輸入的高低電平高低電平閥值第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-158按鍵抖動(dòng)消除辦法按鍵抖動(dòng)消除辦法 按鍵抖動(dòng)是一種普遍的現(xiàn)象,如電流較大的電器開(kāi)關(guān)閉合時(shí),我們有時(shí)可以見(jiàn)到電火花,按鍵抖動(dòng)將形成干擾和造成誤動(dòng)作。如上
6、頁(yè)圖所示,抖動(dòng)將造成I/O端口輸入的高低電平多次變化,使單片機(jī)系統(tǒng)誤動(dòng)作,一次按鍵產(chǎn)生多次按鍵效果,因此必須采取措施消除。 按鍵抖動(dòng)消除可以采用硬件和軟件方法消除,硬件去抖動(dòng)電路如RS觸發(fā)器等,由于硬件去抖動(dòng)電路需要額外的硬件電路,使產(chǎn)品成本增加,硬件電路復(fù)雜,所以一般應(yīng)用較少。在單片機(jī)中廣泛采用的是軟件延時(shí)去抖動(dòng),由圖84可知,按鍵閉合時(shí)存在前沿抖動(dòng),一般時(shí)間為510ms,因此我們可在按鍵按下后,延時(shí)10ms左右避開(kāi)前沿抖動(dòng),然后再判斷按鍵是否按下,即P1.0是否仍為低電平,如果仍為低電平,此時(shí)才確認(rèn)為一次完整有效的按鍵閉合,否則認(rèn)為只是抖動(dòng)或干擾,系統(tǒng)對(duì)此不作出響應(yīng)。 第八章 鍵盤(pán)控制鍵盤(pán)
7、控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1598.3.2 獨(dú)立式鍵盤(pán)接口電路獨(dú)立式鍵盤(pán)接口電路獨(dú)立式鍵盤(pán)的結(jié)構(gòu)如下圖所示,組成鍵盤(pán)的各按鍵相互獨(dú)立,每個(gè)按鍵獨(dú)立地與一個(gè)I/O端口相連,結(jié)構(gòu)簡(jiǎn)單,其中圖左圖適合于端口內(nèi)部有上拉電阻的端口,如P1、P2、P3口,所以外部不用上拉電阻,電路更簡(jiǎn)單,成本更低。右圖適合于端口內(nèi)部沒(méi)有上拉電阻地端口,如P0口,所以外部必須使用上拉電阻,成本稍高,所以一般盡量使用左圖的形式 。 AT89C51K1P1.0K2K3K4P1.1P1.2P1.3AT89C51K1P0.0K2K3K4P0.1P0.2P0.3R12KR22KR32KR42KVCC第八章 鍵盤(pán)控
8、制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-15108.3.3 矩陣式鍵盤(pán)接口電路矩陣式鍵盤(pán)接口電路 獨(dú)立式鍵盤(pán)雖然硬件、軟件結(jié)構(gòu)簡(jiǎn)單,但在按鍵數(shù)量較多的情況下,將占有較多的I/O端口,所以在按鍵數(shù)量較多的情況下,一般采用可以有效減少I(mǎi)/O端口數(shù)量的矩陣式鍵盤(pán)。矩陣式鍵盤(pán)又稱(chēng)為行列式鍵盤(pán),采用行、列線結(jié)構(gòu),按鍵設(shè)置在行列線的交叉點(diǎn)上,如下圖所示,H0H3為四條行線,L0L3為四條列線,在行列相交的每個(gè)交點(diǎn)上通過(guò)按鍵來(lái)連通,按鍵開(kāi)關(guān)的一個(gè)觸點(diǎn)連行線,一個(gè)觸點(diǎn)連列線,從而組成44矩陣16鍵鍵盤(pán) AT89C51K1P1.0K2K3K4P1.1P1.2P1.3K5K6K7K8K9K10K11K
9、12K13K14K15K16P1.4P1.5P1.6P1.7H0H1H2H3L0L1L2L3回目錄回目錄第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-15112獨(dú)立式和矩陣式鍵盤(pán)比較獨(dú)立式和矩陣式鍵盤(pán)比較獨(dú)立式鍵盤(pán)硬件結(jié)構(gòu)簡(jiǎn)單,軟件編程較簡(jiǎn)單,但每個(gè)按鍵獨(dú)自占用一個(gè)I/O端口,在按鍵數(shù)量較多的情況下,將占有較多的I/O端口。所以,獨(dú)立式鍵盤(pán)一般運(yùn)用于按鍵數(shù)量不多的場(chǎng)合。 矩陣式鍵盤(pán)能有效的減少I(mǎi)/O端口的占用量,但因?yàn)楦靼存I不是單獨(dú)的占有I/O端口,從而給按鍵的判斷帶來(lái)難度,造成編程難度加大。 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-151284
10、鍵盤(pán)接口程序設(shè)計(jì)鍵盤(pán)接口程序設(shè)計(jì) 8.4.1 本項(xiàng)目使用的鍵盤(pán)接口本項(xiàng)目使用的鍵盤(pán)接口 本項(xiàng)目使用的鍵盤(pán)接口如下圖所示,它是23的矩陣式鍵盤(pán)接口電路,我們選P2口的低五位作為矩陣式鍵盤(pán)的列線和行線,其中P2.3、P2.4作為矩陣式鍵盤(pán)的行線,P2.0、P2.1、P2.2作為矩陣式鍵盤(pán)的列線,選用六個(gè)按鍵主要是為了降低試驗(yàn)板成本和焊接的難度。 R 810KR 710KV C CK 1K 4K 2K 3K 5K 6P2.0P2.1P2.2P2.3P2.4回目錄回目錄第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-15138.4.2 8.4.2 獨(dú)立式鍵盤(pán)控制獨(dú)立式鍵盤(pán)控制LEDL
11、ED燈燈 本項(xiàng)目基本任務(wù)為利用獨(dú)立式鍵盤(pán)控制LED燈,為了不增加試驗(yàn)板的成本,我們?cè)谏享?yè)圖的矩陣式鍵盤(pán)電路中,將P2.0設(shè)置為低電平,相當(dāng)于鍵盤(pán)K1、K4一端觸點(diǎn)接地,從而使按鍵K1、K4相當(dāng)于組成獨(dú)立式鍵盤(pán),等效電路如下圖所示。 。 回目錄回目錄A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B711E19DIR1U274LS245RP14708EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P
12、0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U1AT89C51K1K4D8D6D7D4D3D5D2D1VCC第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1514一、獨(dú)立式鍵盤(pán)任務(wù)分析一、獨(dú)立式鍵盤(pán)任務(wù)分析 本任務(wù)要求按下K1時(shí),D1D8全亮,按下K4時(shí),D1D8全滅。本任務(wù)的關(guān)鍵為設(shè)計(jì)獨(dú)立式鍵盤(pán)的控制程序,它必須解決以下幾個(gè)問(wèn)題:(1)檢測(cè)有無(wú)按鍵按下。先將各按鍵相連的I/O端口置為高電平1,然后檢測(cè)各I/O端口是否仍全為高電平,如果不是,表明
13、有按鍵按下。(2)如果有鍵按下,運(yùn)用軟件去抖動(dòng)在有鍵按下的情況下,延時(shí)10ms,再次檢測(cè)是否有鍵按下,如果是,表明確實(shí)有鍵按下,否則表示只是干擾或抖動(dòng)。(3)確認(rèn)有鍵按下,暫存鍵值,等鍵釋放這主要是為了保證一次按鍵僅執(zhí)行一次按鍵功能,防止按住按鍵不放時(shí),執(zhí)行多次按鍵功能。(4)判斷按鍵情況,執(zhí)行相應(yīng)的按鍵功能既如果按鍵K1按下,D1D8全亮,按鍵K4按下,D1D8全滅。 。 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1515二、獨(dú)立式鍵盤(pán)程序流程圖設(shè)計(jì)二、獨(dú)立式鍵盤(pán)程序流程圖設(shè)計(jì) 通過(guò)以上分析,獨(dú)立式按鍵程序思路大致如下:(1 1)首先進(jìn)行程序初始化。)首先進(jìn)行程序初始
14、化。P1.0清零,使開(kāi)關(guān)K1、K4一端接低電平;置位P2.3、P2.4作為輸入口,同時(shí)使P2.3、P2.4輸出高電平。(2 2)判斷是否有鍵按下。)判斷是否有鍵按下。讀入P2.3、P2.4的狀態(tài),判斷是否全為高電平1,否則表明有按鍵按下。(3 3)延時(shí)去抖動(dòng)。)延時(shí)去抖動(dòng)。延時(shí)10ms,再次讀入P2.3、P2.4的狀態(tài),判斷是否仍然有鍵按下,如果有,表明確實(shí)有鍵按下,否則表明只是抖動(dòng)或干擾信號(hào)。 (4 4)暫存當(dāng)前按鍵狀態(tài),等待按鍵釋放。)暫存當(dāng)前按鍵狀態(tài),等待按鍵釋放。在等待按鍵彈起的過(guò)程中,必須將前面的按鍵狀態(tài)保存下來(lái),以便后面取出判斷具體的按鍵號(hào)。等待按鍵彈起的方法為延時(shí)一段時(shí)間,再次檢
15、測(cè)按鍵的狀態(tài),直到無(wú)鍵按下為止。第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1516二、獨(dú)立式鍵盤(pán)程序流程圖設(shè)計(jì)二、獨(dú)立式鍵盤(pán)程序流程圖設(shè)計(jì)(5 5)判斷具體按鍵號(hào),執(zhí)行相應(yīng)的按鍵功能。)判斷具體按鍵號(hào),執(zhí)行相應(yīng)的按鍵功能。取出前面暫存的按鍵狀態(tài),并判斷具體是那個(gè)按鍵按下,執(zhí)行相應(yīng)的功能,如果是P2.3為低電平,表明K1按下,置P1為低電平,D1D8全亮,如果是P2.4為低電平,表明K4按下,置P1為高電平,D1D8全滅。回目錄回目錄程序開(kāi)始使開(kāi)關(guān)一端為低電平將開(kāi)關(guān)的輸入端口置1調(diào)用按鍵子程序Y等按鍵彈起YP1置1,D1D8滅P1清零,D1D8亮K1按鍵子程序返回按鍵子程
16、序開(kāi)始K2判具體按鍵是否有鍵按下N延時(shí)去抖動(dòng),是否確實(shí)有鍵按下N第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1517三、獨(dú)立式鍵盤(pán)程序清單三、獨(dú)立式鍵盤(pán)程序清單(1) ORG 0000H LJMP MAIN ORG 0050HMAIN: CLR P2.0 ;P2.0清0,使K1、K4一端觸點(diǎn)接低電平 SETB P2.3 ;P2.3置1,作為輸入口 SETB P2.4 ;P2.4置1,作為輸入口MAINHUI: LCALL KEY ;調(diào)用按鍵處理子程序 LJMP MAINHUI ;反復(fù)執(zhí)行 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1518 LJMP
17、 KEYHUI ;否則,表示沒(méi)有鍵按下,鍵處理程序返回DYS: LCALL DELAY ;鍵去抖動(dòng),延時(shí)10ms左右 MOV A,P2 ;再次取出P2口狀態(tài) ANL A,#00011000B ;取出P2.3,P2.4位 CJNE A,#00011000B,DJTQ ;確認(rèn)有鍵按下,跳到等待按鍵彈起 LJMP KEYHUI ;無(wú)鍵按下,表明只是干擾或鍵抖動(dòng)DJTQ: MOV R2,A ;暫存當(dāng)前按鍵狀態(tài)DENDAI: LCALL DELAY ;延時(shí)10ms,再次取出當(dāng)前按鍵狀態(tài) MOV A,P2 ANL A,#00011000B ;取出P2.3,P2.4位 三、獨(dú)立式鍵盤(pán)程序清單(三、獨(dú)立式鍵盤(pán)
18、程序清單(2)第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1519 CJNE A,#00011000B,DENDAI ;按鍵沒(méi)有彈起,繼續(xù)等待 MOV A,R2 ;取出暫存在R2中的按鍵狀態(tài)PJZ: JNB ACC.3,K1 ; ACC.3為0,表示K1按下,跳到K1處 JNB ACC.4,K4 ; ACC.4為0,表示K4按下,跳到K4處 LJMP KEYHUI ;如果K1、K4都沒(méi)按下,跳到鍵處理子程序返回 K1: MOV P1,#00H ;按鍵K1按下處理,D1D8全亮 LJMP KEYHUI ; 跳到鍵處理子程序返回K4: MOV P1,#0FFH ;按鍵K4按下
19、處理,D1D8全滅KEYHUI: RET ; 鍵處理子程序返回 三、獨(dú)立式鍵盤(pán)程序清單(三、獨(dú)立式鍵盤(pán)程序清單(3)第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1520DELAY: ;延時(shí)子程序 MOV R7,#0FH ;二層循環(huán)延時(shí)程序LOOP2: MOV R6,#0FFHLOOP1: DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET三、獨(dú)立式鍵盤(pán)程序清單(三、獨(dú)立式鍵盤(pán)程序清單(4)第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-15218.4.3 矩陣式鍵盤(pán)控制數(shù)碼管矩陣式鍵盤(pán)控制數(shù)碼管 一、任務(wù)分析一、任務(wù)分析本任務(wù)要求能用矩陣式鍵
20、盤(pán)輸入數(shù)據(jù),當(dāng)按下按鍵時(shí),數(shù)碼管顯示相應(yīng)的鍵值。矩陣式鍵盤(pán)接口電路圖如下圖所示。R810KR710KVCCK1K4K2K3K5K6P2.0P2.1P2.2P2.3P2.4與基本任務(wù)相比,這個(gè)任務(wù)的難度有所增加,本任務(wù)關(guān)鍵問(wèn)題為具體鍵號(hào)的判斷,既鍵的識(shí)別問(wèn)題,對(duì)矩陣式按鍵的識(shí)別通常有二種方法,一種為常用的逐行(或列)掃描查詢(xún)法,另一種為速度較快的反轉(zhuǎn)法。 回目錄回目錄第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1522二、逐行(或列)掃描查詢(xún)法工作原理二、逐行(或列)掃描查詢(xún)法工作原理(1)判斷有無(wú)按鍵按下)判斷有無(wú)按鍵按下 方法為將所有列線置為低電平“0”,所有行線置為高
21、電平“1”,作為輸入口,然后讀入所有行線的狀態(tài),如果行線全為高電平1,說(shuō)明沒(méi)有按鍵按下,否則說(shuō)明有鍵按下(雖然暫時(shí)無(wú)法具體判斷是哪個(gè)按鍵按下)。因?yàn)槿绻邪存I按下,則按鍵所在的行、列線將短路,由于所有列線已經(jīng)預(yù)置為低電平“0”,近似接地,則與該按鍵相連的行線必定被拉低為低電平“0”,所以由行線是否全為高電平“1”,就能判斷是否有鍵按下。(2)按鍵延時(shí)去抖動(dòng))按鍵延時(shí)去抖動(dòng) 在判斷有按鍵按下后,為了去除按鍵機(jī)械抖動(dòng)的影響,延時(shí)10ms左右再次檢測(cè)是否仍有按鍵按下,判斷方法和步驟(1)相同,如果仍有按鍵按下,表示確實(shí)有按鍵按下,否則表示只是干擾或抖動(dòng)。提示 此處延時(shí)程序利用顯示程序代替,主要是利用
22、顯示程序執(zhí)行時(shí)間既實(shí)現(xiàn)延時(shí),又顯示數(shù)據(jù),防止顯示間斷。 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1523(3)判斷按鍵列號(hào),并暫存列值和行狀態(tài)。)判斷按鍵列號(hào),并暫存列值和行狀態(tài)。 依次設(shè)置各列為低電平,讀入行狀態(tài),如果將某一列設(shè)置為低電平0后,讀入的行狀態(tài)不全為高電平1,說(shuō)明按下的按鍵在該列,將該列列值暫存起來(lái),以便后面計(jì)算鍵值。同時(shí)將當(dāng)前的行狀態(tài)暫存起來(lái),以便后面判斷行號(hào)。(4)等待按鍵釋放。)等待按鍵釋放。將列值和行狀態(tài)暫存下來(lái)后,將等待按鍵釋放,以保證按鍵按下一次,只執(zhí)行一次按鍵功能,本處的延時(shí)程序仍以顯示程序代替,在延時(shí)的同時(shí)保證顯示不間斷。(5)判斷按鍵行
23、號(hào)。)判斷按鍵行號(hào)。 將暫存的行狀態(tài)取出,依次判斷按鍵在哪一行。方法為檢測(cè)該行是否為低電平,如果是,表明按鍵在該行,并將行值暫存下來(lái)。(6)計(jì)算鍵值。)計(jì)算鍵值。取出前面保存的列值、行值,利用如下公式計(jì)算鍵值: 鍵值行值列數(shù)列值鍵值計(jì)算出來(lái)后,可以根據(jù)各按鍵要求,完成相應(yīng)的按鍵功能。 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1524三、矩陣式按鍵逐行掃描程序流程圖三、矩陣式按鍵逐行掃描程序流程圖程序開(kāi)始顯示單元、鍵值、行值、列值單元清零鍵值送顯示單元調(diào)用按鍵子程序調(diào)用顯示子程序Y等按鍵彈起Y按鍵子程序返回按鍵子程序開(kāi)始是否有鍵按下N延時(shí)去抖動(dòng),是否確實(shí)有鍵按下N判按鍵
24、在哪一列,保存列值保存行狀態(tài)取出行狀態(tài)判斷按鍵在哪一行,保存行值計(jì)算鍵值并保存第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1525程序中30H單元為顯示緩沖區(qū),保存需顯示的數(shù)據(jù),40H為鍵值暫存單元,41H為列值暫存單元,42H為行值暫存單元。 ORG 0000H LJMP MAIN ORG 0050HMAIN: MOV 30H,#00H ;顯示緩沖區(qū)清0 MOV 40H,#00H ; 鍵值暫存單元清0 MOV 41H,#00H ;列值暫存單元清0 MOV 42H,#00H ; 行值暫存單元清0MAINHUI: LCALL KEY ;調(diào)用按鍵處理子程序 MOV 30H,4
25、0H ;將鍵值送顯示緩沖單元顯示 LCALL XIANSHI ;調(diào)用顯示子程序 LJMP MAINHUI ;反復(fù)執(zhí)行 三、矩陣式按鍵逐行掃描程序清單(三、矩陣式按鍵逐行掃描程序清單(1) 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1526KEY: ;鍵處理子程序 MOV P2,#11111000B ;將列線全設(shè)為0,行線全設(shè)為1,數(shù)碼管熄滅 MOV A,P2 ;P2口鍵盤(pán)狀態(tài)送入累加器A ANL A,#00011000B ;取出P2.3,P2.4位,行線狀態(tài) CJNE A, #00011000B,DYS ;如果行線不全為1,表示有鍵按下, 跳到鍵去抖動(dòng)處理 LJMP K
26、EYHUI ;無(wú)鍵按下,鍵處理子程序返回DYS: LCALL XIANSHI ;延時(shí)去抖動(dòng) MOV A,P2 ; P2口鍵盤(pán)狀態(tài)送入累加器A ANL A,#00011000B ;取出P2.3,P2.4位,行線狀態(tài) CJNE A,#00011000B,PANLIE ; 如果行線不全為1, 表示確實(shí)有鍵按下,跳去判斷哪一列 LJMP KEYHUI ;無(wú)鍵按下,鍵處理子程序返回, 表示只是干擾或抖動(dòng) 三、矩陣式按鍵逐行掃描程序清單(三、矩陣式按鍵逐行掃描程序清單(2 2) 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1527PANLIE: MOV P2,#11111110B ;
27、將第0列設(shè)為0,判斷是否第0列 MOV A,P2 ;P2口鍵盤(pán)狀態(tài)送入累加器A ANL A,#00011000B ;取出P2.3,P2.4位,行線狀態(tài) CJNE A, #00011000B,LIE0 ;如果行線不全為1, 表示該列有鍵按下,跳到LIE0處 MOV P2,#11111101B ;判斷是否第1列 MOV A,P2 ; P2口鍵盤(pán)狀態(tài)送入累加器A ANL A, #00011000B ; 取出P2.3,P2.4位,行線狀態(tài) CJNE A, #00011000B,LIE1 ;如果行線不全為1, 表示該列有鍵按下,跳到LIE1處 MOV P2,#11111011B ;判斷是否第2列 MOV
28、 A,P2 ANL A, #00011000B CJNE A, #00011000B,LIE2 LJMP KEYHUI ;所有列線無(wú)鍵按下,跳到鍵處理子程序返回 三、矩陣式按鍵逐行掃描程序清單(三、矩陣式按鍵逐行掃描程序清單(3 3) 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1528LIE0: MOV 41H,#00H ;保存列值0 MOV 42H,A ;保存行值,此時(shí)A中為行線的狀態(tài),暫存到42H單元 LJMP DENDAI ;跳到等待按鍵彈起LIE1: MOV 41H,#01H ;保存列值1 MOV 42H,A LJMP DENDAILIE2: MOV 41H,#
29、02H ;保存列值2 MOV 42H,A ;保存行狀態(tài)DENDAI: LCALL XIANSHI ;等待按鍵彈起,在等待時(shí)調(diào)用顯示程序作延時(shí), 防止按鍵按下時(shí)數(shù)碼管熄滅 MOV P2,#11111000B ;將列線全設(shè)為0,行線全設(shè)為1,數(shù)碼管熄滅 MOV A,P2 ANL A,#00011000B CJNE A,#00011000B,DENDAI ;行線不全為1,表面按鍵未彈起,繼續(xù)等待 三、矩陣式按鍵逐行掃描程序清單(三、矩陣式按鍵逐行掃描程序清單(4 4) 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1529 MOV A,42H ;取出保存的行狀態(tài),判具體是哪一行
30、JNB ACC.3,HANG0 JNB ACC.4,HANG1 LJMP KEYHUIHANG0: MOV 42H,#00H ;第0行,42H單元送0 LJMP QJZ ;跳到求鍵值QJZ處HANG1: MOV 42H,#01H ;第1行,42H單元送1QJZ: MOV A,42H ;求出按鍵數(shù)值,鍵值行值列數(shù)列值 MOV B,#03H ;B中為列數(shù) MUL AB ; 行值列數(shù) ADD A,41H ;加列值 MOV 40H,A ;將鍵值送40H單元暫存KEYHUI: RET ;鍵處理子程序返回 三、矩陣式按鍵逐行掃描程序清單(三、矩陣式按鍵逐行掃描程序清單(5 5) 第八章 鍵盤(pán)控制鍵盤(pán)控制L
31、ED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1530 XIANSHI: ;顯示子程序 SETB P2.7 ;第二個(gè)數(shù)碼管亮 CLR P2.6 ;第一個(gè)數(shù)碼管熄滅 MOV A,30H ;取出顯示數(shù)據(jù) ANL A,#0FH ;取出顯示值的個(gè)位(即低四位) LCALL CHABIAO ; 調(diào)用查表顯示程序 LCALL DELAY ; 調(diào)用延時(shí)程序 SETB P2.6 ;第二個(gè)數(shù)碼管滅 CLR P2.7 ;第一個(gè)數(shù)碼管熄亮 MOV A,30H ;取出顯示數(shù)據(jù) ANL A,#0F0H ;取出顯示值的十位(即高四位) SWAP A ;高、低四位對(duì)調(diào),以便于查表取段碼 LCALL CHABIAO ; 調(diào)用查表顯示程序 LCALL DELAY ; 調(diào)用延時(shí)程序 RET ; 顯示子程序返回 三、矩陣式按鍵逐行掃描程序清單(三、矩陣式按鍵逐行掃描程序清單(6 6) 第八章 鍵盤(pán)控制鍵盤(pán)控制LED燈、數(shù)碼管燈、數(shù)碼管 2022-3-1531CHABIAO: ;查表子程序 MOV DPTR,#TABLE1 ; DPTR用于保存表的首地址 (即到哪一個(gè)表中取數(shù)) MOVC A,A+DPTR
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《村鎮(zhèn)銀行介紹》課件
- 企業(yè)生涯規(guī)劃圖譜
- 化工生產(chǎn)實(shí)習(xí)報(bào)告合集十篇
- 《網(wǎng)架結(jié)構(gòu)簡(jiǎn)介》課件
- 《社會(huì)認(rèn)知神經(jīng)科學(xué)》課件
- 演藝經(jīng)紀(jì)公司的人才培養(yǎng)與激勵(lì)機(jī)制研究-洞察分析
- 文化活動(dòng)數(shù)字化轉(zhuǎn)型-第1篇-洞察分析
- 稅收制度對(duì)企業(yè)社會(huì)責(zé)任履行激勵(lì)效應(yīng)分析-洞察分析
- 學(xué)生群體市場(chǎng)定位-洞察分析
- 云安全合規(guī)性評(píng)估-洞察分析
- 用人單位職業(yè)病危害現(xiàn)狀評(píng)價(jià)技術(shù)導(dǎo)則
- 中建一局質(zhì)量考核評(píng)價(jià)辦法
- 民辦非企業(yè)單位會(huì)計(jì)報(bào)表(會(huì)民非表010203)
- 口腔頜面系統(tǒng)解剖骨
- 川骨香-川古香手撕鴨配方及制作方法
- 深圳市排水管網(wǎng)維護(hù)管理質(zhì)量
- 變電站二次設(shè)計(jì)規(guī)范
- 能見(jiàn)度不良時(shí)船舶航行須知
- 實(shí)習(xí)證明、實(shí)習(xí)證明表(模板)2頁(yè)
- 目視化管理實(shí)施計(jì)劃方案
- 晉城煤業(yè)集團(tuán)寺河礦井東區(qū)開(kāi)采設(shè)計(jì)(學(xué)校要求版本)
評(píng)論
0/150
提交評(píng)論