




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、任務任務5.3 鍵盤接口電路的設計與制作鍵盤接口電路的設計與制作知識能力:熟悉鍵盤接口的基本特點,了解獨立式鍵盤和矩陣式鍵盤的知識能力:熟悉鍵盤接口的基本特點,了解獨立式鍵盤和矩陣式鍵盤的應用方法。應用方法。 技能能力:技能能力:掌握鍵盤接口的硬件設計方法、軟件程序設計能力和調試排掌握鍵盤接口的硬件設計方法、軟件程序設計能力和調試排錯能力。錯能力。社會能力:訓練學生工程意識和良好的勞動紀律觀念,培養(yǎng)學生認真做社會能力:訓練學生工程意識和良好的勞動紀律觀念,培養(yǎng)學生認真做事、用心做事的態(tài)度。事、用心做事的態(tài)度。5.5.3.1 3.1 鍵盤接口工作原理鍵盤接口工作原理v 鍵盤鍵盤 人機交互的一個重
2、要工具 兩種基本類型 編碼鍵盤除了按鍵以外,還包括產生鍵碼的硬件電路使用方便、價格較高 非編碼鍵盤靠軟件來識別鍵盤上的閉合鍵,由此計算出編碼 幾乎不需要附加硬件邏輯在單片機應用系統(tǒng)中被普遍使用獨立聯(lián)接式無編碼鍵盤獨立聯(lián)接式無編碼鍵盤 獨立聯(lián)接式編碼鍵盤獨立聯(lián)接式編碼鍵盤 鍵盤鍵盤的分的分類與類與結構結構獨立聯(lián)接式鍵盤獨立聯(lián)接式鍵盤矩陣聯(lián)接式鍵盤矩陣聯(lián)接式鍵盤屏幕鍵盤屏幕鍵盤( (觸摸屏)觸摸屏)無編碼鍵盤無編碼鍵盤編碼鍵盤編碼鍵盤無編碼,簡單有效,鍵數(shù)較少時采用無編碼,簡單有效,鍵數(shù)較少時采用編碼,節(jié)省編碼,節(jié)省I/OI/O口線,鍵數(shù)較多時采用口線,鍵數(shù)較多時采用5.3.1 鍵盤接口工作原理鍵
3、盤接口工作原理1.1. 非編碼非編碼鍵盤鍵盤的工作原理的工作原理 v 分類分類 獨立式鍵盤簡單鍵盤、行列式鍵盤(矩陣式鍵盤)獨立式按鍵獨立式按鍵 行列式鍵盤行列式鍵盤0 1 1 11 0 1 11 1 0 11 1 1 02. 2. 按鍵開關去抖動問題按鍵開關去抖動問題v 按鍵抖動按鍵抖動 在按下和釋放時,按鍵有抖動 按鍵時間:100ms 前跳沿和后跳沿:20ms,抖動時間一般為510msA為確保:對鍵的為確保:對鍵的一次閉合一次閉合僅作僅作一次處理一次處理必須:必須:去除抖動去除抖動3. 3. 消除抖動不良后果的方法消除抖動不良后果的方法v 硬件去抖動硬件去抖動 RC濾波電路去抖動電路簡單實
4、用,效果較好。v 軟件去抖動軟件去抖動 檢測到按鍵按下后,執(zhí)行延時10ms子程序后再確認該鍵是否確實按下,消除抖動影響。鍵處理的流程圖鍵處理的流程圖 開始鍵掃描有無鍵按下去抖動鍵碼計算鍵釋放JMPA+DPTR00#鍵處理程序01#鍵處理程序#鍵處理程序nn#鍵處理程序A=00HA=01HA=HA=nnH 獨立式鍵盤接口獨立式鍵盤接口 各鍵相互獨立,每個按鍵各接一根輸入線,通過各鍵相互獨立,每個按鍵各接一根輸入線,通過檢測輸入線檢測輸入線的電平狀態(tài)的電平狀態(tài)可很容易判斷那個鍵被按下??珊苋菀着袛嗄莻€鍵被按下。獨立式獨立式鍵盤工作電路圖鍵盤工作電路圖( (適于鍵數(shù)較少、操作快、同時多鍵動作場合適于
5、鍵數(shù)較少、操作快、同時多鍵動作場合) )程序處理方法與開關量輸入相同程序處理方法與開關量輸入相同4. 獨立式按鍵獨立式按鍵4. 4. 獨立式按鍵獨立式按鍵v處理過程處理過程 查鍵:掃描有否鍵按下,若無鍵按下,返回 有鍵按下軟件去抖:延時20ms 找鍵 等鍵釋放 軟件去抖:延時20ms 例例 v有鍵按下,返回鍵值;否則,返回有鍵按下,返回鍵值;否則,返回0FFH0FFHP10P118051 K1P12P13P14P15K2K3K4K5K6+5V ; ;準備輸入準備輸入 等等放放去去抖抖查查鍵鍵KE2:MOVB,#0 ;保存鍵值保存鍵值0KE3:ANLA,#3FHRRCA;(A.0)CyJNCKE
6、4INCBSJMPKE3KE4:ORLP1,#3FHMOVA,P1ANLA,#3FHCJNEA,#3FH,KE4MOVA,B ;返回鍵值返回鍵值CJNEA,#06H,KE5KE5:JCKE6 ;Cy=1,(A)=6KE6:RETKE:ORLP1,#3FH MOVA,P1ANLA,#3FH ;P1.0P1.5CJNEA,#3FH,KE1SJMPKE7 ;無鍵按下無鍵按下KE1:LCALL DL20 ;延時去抖延時去抖ORLP1,#3FH ;修改修改P1MOVA,P1 ;讀讀P1ANLA,#3FHCJNEA,#3FH,KE2SJMPKE7 ;誤動作返回誤動作返回找找鍵鍵5. 5. 矩陣式鍵盤矩陣式
7、鍵盤v工作方式工作方式 查詢 定時 每隔一段時間對鍵盤掃描一次利用單片機內部的定時器的定時器溢出中斷。 中斷中斷方式中斷方式00001 1 1 1 行列式行列式( (矩陣式矩陣式) )鍵盤接口鍵盤接口 4 44 4行列式鍵盤結構圖行列式鍵盤結構圖(掃描法)(掃描法) 適于按鍵數(shù)目較多的場合;適于按鍵數(shù)目較多的場合; 可節(jié)省很多的可節(jié)省很多的I/OI/O口線;口線; 同時只會有一個鍵閉合的場合。同時只會有一個鍵閉合的場合。行列式鍵盤按鍵的識別方法行列式鍵盤按鍵的識別方法a. a. 掃描法掃描法第第1 1步:識別鍵盤有無鍵按下;步:識別鍵盤有無鍵按下; 驅動所有列線為驅動所有列線為00,輸入各行線
8、電平如果有,輸入各行線電平如果有00,就,就說明有鍵按下,如果行線電平全說明有鍵按下,如果行線電平全11,則全部無鍵按下。,則全部無鍵按下。第第2 2步:如有鍵被按下,識別具體的按鍵。步:如有鍵被按下,識別具體的按鍵。 依序依序驅動某一列為驅動某一列為00 ,其余列均為,其余列均為11 ,輸入各行線,輸入各行線電平,如果某行線電平為電平,如果某行線電平為00 ,可確定此行列交叉點處的按,可確定此行列交叉點處的按鍵被按下;如果行線電平全為鍵被按下;如果行線電平全為11 則本列無按鍵按下。則本列無按鍵按下。輸出口驅動列線輸出口驅動列線輸輸入入口口讀讀取取行行線線電電平平第第1 1步:步:列列線輸出
9、為全線輸出為全00 ,隨后輸入,隨后輸入行行線電平如有線電平如有00,則則00所在的行就是所在的行就是閉合的按鍵閉合的按鍵所在行;無所在行;無00則無鍵閉合。則無鍵閉合。第第2 2步:步:行行線輸出為全線輸出為全00 ,隨后輸入,隨后輸入列列線電平如有線電平如有00,則則00所在的列就是所在的列就是閉合的按鍵閉合的按鍵所在列;無所在列;無00則無鍵閉合。則無鍵閉合。結合上述兩步,可確定按鍵所在行和列。結合上述兩步,可確定按鍵所在行和列。線反轉法原理圖線反轉法原理圖 b. b. 線反轉法線反轉法 P.168P.168PC3PC2PC1PC0PC4PC5PC6PC7實驗板實驗板44鍵盤鍵盤連接連接
10、82C55的端口線的端口線 采用線反轉法的鍵盤行線、采用線反轉法的鍵盤行線、列線端口各自應當可以在輸列線端口各自應當可以在輸入與輸出方式間切換入與輸出方式間切換! 如圖如圖: :高四位與低四位均可高四位與低四位均可獨立改變其獨立改變其輸入或輸出方式輸入或輸出方式v 處理過程處理過程 鍵掃描 確認有無按鍵按下 去抖動 延時 按鍵的識別:確定鍵的行、列號 掃描算法、線反轉法 鍵號的確定 鍵號=所在行號鍵盤列數(shù)+所在列號 等待鍵釋放5. 矩陣式鍵盤矩陣式鍵盤 例例 掃描算法掃描算法v 用用8255A8255A作單片機鍵盤接口,作單片機鍵盤接口, A A口為輸出口口為輸出口接鍵盤列線。接鍵盤列線。C
11、C口為輸入口口為輸入口接鍵盤的接鍵盤的4 4條行線條行線8255A8255A地址地址A A口:口:7FFCH7FFCH B B口:口:7FFDH7FFDHC C口:口:7FFEH7FFEH 控制寄存器:控制寄存器:7FFFH7FFFHv子程序子程序 KSI KSI :判定有無閉合的鍵:判定有無閉合的鍵KSI:MOVDPTR, #7FFCH;A口地址口地址MOVA, #00HMOVX DPTR, A;A口送口送00HINCDPTRINCDPTR;C口地址口地址MOVX A, DPTR;讀讀C口口CPLA ANLA, #0FH;屏蔽高四位屏蔽高四位RET0 0 0 0 0 0 0 0有閉合鍵,則有
12、閉合鍵,則(A)0無閉合,無閉合, 則則(A)=01 1 1 1KEY1:ACALL KSI;檢查是否有鍵閉合檢查是否有鍵閉合JNZLK1;A非非“0”則轉移則轉移ACALL DIR;顯示一次顯示一次LED(“延時延時6ms”)AJMPKEY1LK1:ACALL DIR;有鍵閉合二次延時有鍵閉合二次延時ACALL DIR;共共12ms去抖動去抖動ACALL KSI;再檢查是否有鍵閉合再檢查是否有鍵閉合JNZLK2;有鍵閉合轉移到有鍵閉合轉移到LK2ACALL DIRAJMPKEY1;無鍵閉合,延時無鍵閉合,延時6ms后轉后轉KEY1有閉合鍵,有閉合鍵,則則(A)0無閉合,無閉合, 則則(A)=
13、0LK2:CLRF0;有鍵有鍵標志標志MOVR2, #0FEH;掃描初值送掃描初值送R2MOVR4, #00H;掃描掃描列號列號送送R4LK4:MOVDPTR, # 7FFCH ;A口地址口地址MOVA, R2MOVXDPTR, A;掃描初值送掃描初值送A口口INCDPTRINCDPTR;C口地址口地址MOVXA, DPTR;讀讀C口口有閉合鍵,有閉合鍵,則則(A)0無閉合,無閉合, 則則(A)=00 1 1 1 1 1 1 1KEY1:ACALL KSI;檢查是否有鍵閉合檢查是否有鍵閉合JNZLK1;A非非“0”則轉移則轉移ACALL DIR;顯示一次顯示一次LED(“延時延時6ms”)AJ
14、MPKEY1LK1:ACALL DIR;有鍵閉合二次延時有鍵閉合二次延時ACALL DIR;共共12ms去抖動去抖動ACALL KSI;再檢查是否有鍵閉合再檢查是否有鍵閉合JNZLK2;有鍵閉合轉移到有鍵閉合轉移到LK2ACALL DIRAJMPKEY1;無鍵閉合,延時無鍵閉合,延時6ms后轉后轉KEY1LK2:MOVR2, #0FEH;掃描初值送掃描初值送R2MOVR4, #00H;掃描掃描列號列號送送R4LK4:MOVDPTR, # 7FFCH ;A口地址口地址MOVA, R2MOVXDPTR, A;掃描初值送掃描初值送A口口INCDPTRINCDPTR;C口地址口地址MOVXA, DPT
15、R;讀讀C口口有閉合鍵,有閉合鍵,則則(A)0無閉合,無閉合, 則則(A)=00 1 1 1 1 1 1 1全全程程序序JBACC.0, LONE;ACC.0=1,第,第0行無鍵閉合,轉行無鍵閉合,轉LONEMOVA, #00H;裝第裝第0行值行值AJMPLKPLONE: JBACC.1, LTWO ;ACC.1=1,第,第1行無鍵閉合,轉行無鍵閉合,轉LTWOMOVA, #08H;裝第裝第1行值行值AJMPLKPLTWO: JBACC.2, LTHR;ACC.2=1,第,第2行無鍵閉合,轉行無鍵閉合,轉LTHRMOVA, #10H;裝第裝第2行值行值AJMPLKPLTHR: JBACC.3,
16、 NEXT;ACC.3=1,第,第3行無鍵閉合,轉行無鍵閉合,轉NEXT MOVA, #18H;裝第裝第3行值行值LKP:ADDA, R4;計算鍵碼計算鍵碼PUSHACC;保護鍵碼保護鍵碼LK3:ACALL DIR;延時延時6msACALL KSI;檢查是否繼續(xù)閉合,若閉合再延時檢查是否繼續(xù)閉合,若閉合再延時JNZLK3POPACC;若鍵起,則鍵碼送若鍵起,則鍵碼送ARET掃描掃描列號列號:R4NEXT: INCR4;掃描列號加掃描列號加1MOVA, R2JNBACC.7, KND;若第若第7位位=0,已掃完最高列則轉,已掃完最高列則轉KNDRLAMOVR2, AAJMPLK4;進行下一列掃描
17、進行下一列掃描KND:SETBF0;無鍵無鍵標志標志RET;掃描完畢掃描完畢掃描掃描列號列號:R4 例例 線反轉法線反轉法KEY:MOVP1, #0F0H;行線置低電平行線置低電平,列線置輸入態(tài)列線置輸入態(tài)KEY0: MOVA, P1;讀讀列列線數(shù)據線數(shù)據CPLA;數(shù)據取反數(shù)據取反,“1”有效有效ANLA, #0F0H;屏蔽行線屏蔽行線,保留列線數(shù)據保留列線數(shù)據MOVR1, A;存列線數(shù)據存列線數(shù)據(R1高高4位位)JZGRET;全全0,無鍵按下無鍵按下,返回返回KEY1: MOVP1, #0FH;行線置輸入態(tài)行線置輸入態(tài),列線置低電平列線置低電平MOVA, P1;讀讀行行線數(shù)據線數(shù)據 CPL
18、A;數(shù)據取反數(shù)據取反,“1”有效有效ANLA, #0FH;屏蔽列線屏蔽列線,保留行線數(shù)據保留行線數(shù)據MOVR2, A;存行線數(shù)據存行線數(shù)據(R2低低4位位)JZGRET;全全0,無鍵按下無鍵按下,返回返回JBCF0, WAIT;已有消抖標志已有消抖標志,轉轉SETBF0;無消抖標志無消抖標志,置消抖標志置消抖標志 LCALL DY10ms;調用調用10ms延時子程序消抖延時子程序消抖SJMPKEY0;重讀重讀行線列線數(shù)據行線列線數(shù)據GRET: RET參考程序:WAIT:MOVA, P1;等待按鍵釋放等待按鍵釋放CPLA ANLA, #0FHJNZWAIT;按鍵未釋放按鍵未釋放,繼續(xù)等待繼續(xù)等待
19、KEY2: MOVA, R1;取列線數(shù)據取列線數(shù)據(高高4位位)MOVR1, #03H;取取列線編號初值列線編號初值MOVR3, #03H;置循環(huán)數(shù)置循環(huán)數(shù)CLRCKEY3: RLCA;依次左移入依次左移入C中中JCKEY4;C=1,該列有鍵按下該列有鍵按下,(列線編號存列線編號存R1)DECR1;C=0,無鍵按下無鍵按下,修正列編號修正列編號DJNZR3, KEY3;判循環(huán)結束否判循環(huán)結束否?未結束繼續(xù)尋找有鍵按下的列線未結束繼續(xù)尋找有鍵按下的列線KEY4: MOVA, R2;取行線數(shù)據取行線數(shù)據(低低4位位)MOVR2, #00H;置置行線編號初值行線編號初值MOVR3, #03H;置循環(huán)
20、數(shù)置循環(huán)數(shù)CLRC KEY5: RRCA;依次右移入依次右移入C中中JCKEY6;C=1,該行有鍵按下該行有鍵按下,(行線編號存行線編號存R2)INCR2;C=0,無鍵按下無鍵按下,修正行線編號修正行線編號DJNZR3, KEY5;判循環(huán)結束否判循環(huán)結束否?未結束繼續(xù)尋找有鍵按下的行線未結束繼續(xù)尋找有鍵按下的行線KEY6: MOVA, R2;取行線編號取行線編號CLRC RLCA;行編號行編號2RLCA;行編號行編號4ADDA, R1;行編號行編號4+列編號列編號=按鍵編號按鍵編號KEY7: CLRC RLCA;按鍵編號按鍵編號2RLCA;按鍵編號按鍵編號4(LCALL+ RET共共4字節(jié)字節(jié)
21、)MOVDPTR, #TABJ JMPA+DPTR;散轉散轉,執(zhí)行相應鍵功能子程序執(zhí)行相應鍵功能子程序TABJ: LCALL WORK0;調用執(zhí)行調用執(zhí)行0#鍵功能子程序鍵功能子程序RET LCALL WORK1;調用執(zhí)行調用執(zhí)行1#鍵功能子程序鍵功能子程序RET LCALL WORK15;調用執(zhí)行調用執(zhí)行15#鍵功能子程序鍵功能子程序RET 技能能力技能能力5.3.2 工作任務描述工作任務描述1)根據給出的圖5-35,在Proteus中畫出電路圖;編寫程序使數(shù)碼管顯示當前閉合按鍵的鍵值。 2)利用Proteus的仿真功能對其進行仿真測試,觀察數(shù)碼管的顯示狀態(tài)和按鍵開關的對應關系。 3)根據圖
22、5-35,搭接硬件電路,進行硬件驗證。矩陣鍵盤掃描電路圖P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7
23、/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C510123456789ABCDEFP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7R1220R2220R3220R4220R5220R6220R7220234567891RP1RESPACK-84)程序范例:; 功能:以數(shù)碼管顯示鍵盤的作用。點擊相應按鍵顯示相應的鍵值。; 處理過程:首先掃描鍵盤,判斷是否有鍵按下,再確定是哪一個鍵,計算鍵值,輸出顯示。ORG 00
24、00HAJMP MAIN ORG 0030H MAIN: MOV DPTR,#TABLE ;將表頭放入DPTR LCALL KEY ;調用鍵盤掃描程序 MOVC A,A+DPTR ;查表后將鍵值送入ACC MOV P2,A ;將Acc值送入P0口 LJMP MAIN ;返回反復循環(huán)顯示 KEY: LCALL KS ;調用檢測按鍵子程序 JNZ K1 ;有鍵按下繼續(xù) LCALL DELAY2 ;無鍵按調用延時去抖 AJMP KEY ;返回繼續(xù)檢測按鍵 K1: LCALL DELAY2 LCALL DELAY2 ;有鍵按下延時去抖動 LCALL KS ;再調用檢測按鍵程序 JNZ K2 ;確認有按
25、下進行下一步 AJMP KEY ;無鍵按下返回繼續(xù)檢測 K2: MOV R2,#0EFH ;將掃描值送入 R2暫存 MOV R4,#00H ;將第一列值送入R4暫存 K3: MOV P1,R2 ;將R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳轉到L1 MOV A,#00H ;將第一行值送入ACC AJMP LK ;跳轉到鍵值處理程序 L1: JB P1.1,L2 ;P1.1等于1跳轉到L2 MOV A,#04H ;將第二行的行值送入ACC AJMP LK ;跳轉到鍵值理程序進行鍵值處理 L2: JB P1.2,L3 ;P1.2等于1跳轉到L3 MOV A,#08H ;將第三行的行值送入ACC AJMP LK ;跳轉到鍵值處理程序L3: JB P1.3,NEXT ;P1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級教師線上教學總結
- 廠區(qū)電子合同范本
- 勞務磚體合同范本
- 印刷廣告標牌合同范本
- 企業(yè)員工股合同范本
- 《韓愈短文》教案
- 合買別墅合同范本
- 《這片土地是神圣的》說課稿
- 《觀滄?!烽喿x答案及鑒賞
- 任務目標認購合同范例
- 中考數(shù)學計算題練習100道(2024年中考真題)
- 《普通生物學教案》word版
- 貴州省就業(yè)失業(yè)登記表
- 預防電信詐騙網絡詐騙講座PPT幻燈片課件
- 反興奮劑知識試題及答案
- 初中八年級上冊音樂課件4.2欣賞沃爾塔瓦河(14張)ppt課件
- 人教版五年級數(shù)學下冊每個單元教材分析(共九個單元)
- 深圳氫燃料共享單車項目投資計劃書【參考范文】
- 主要腸內營養(yǎng)制劑成分比較
- 小學生如何理解句子的含義(課堂PPT)
- 實際控制關系賬戶申報表
評論
0/150
提交評論