任務(wù)53鍵盤接口電路的設(shè)計(jì)與制作_第1頁
任務(wù)53鍵盤接口電路的設(shè)計(jì)與制作_第2頁
任務(wù)53鍵盤接口電路的設(shè)計(jì)與制作_第3頁
任務(wù)53鍵盤接口電路的設(shè)計(jì)與制作_第4頁
任務(wù)53鍵盤接口電路的設(shè)計(jì)與制作_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、任務(wù)任務(wù)5.3 鍵盤接口電路的設(shè)計(jì)與制作鍵盤接口電路的設(shè)計(jì)與制作知識(shí)能力:熟悉鍵盤接口的基本特點(diǎn),了解獨(dú)立式鍵盤和矩陣式鍵盤的知識(shí)能力:熟悉鍵盤接口的基本特點(diǎn),了解獨(dú)立式鍵盤和矩陣式鍵盤的應(yīng)用方法。應(yīng)用方法。 技能能力:技能能力:掌握鍵盤接口的硬件設(shè)計(jì)方法、軟件程序設(shè)計(jì)能力和調(diào)試排掌握鍵盤接口的硬件設(shè)計(jì)方法、軟件程序設(shè)計(jì)能力和調(diào)試排錯(cuò)能力。錯(cuò)能力。社會(huì)能力:訓(xùn)練學(xué)生工程意識(shí)和良好的勞動(dòng)紀(jì)律觀念,培養(yǎng)學(xué)生認(rèn)真做社會(huì)能力:訓(xùn)練學(xué)生工程意識(shí)和良好的勞動(dòng)紀(jì)律觀念,培養(yǎng)學(xué)生認(rèn)真做事、用心做事的態(tài)度。事、用心做事的態(tài)度。5.5.3.1 3.1 鍵盤接口工作原理鍵盤接口工作原理v 鍵盤鍵盤 人機(jī)交互的一個(gè)重

2、要工具 兩種基本類型 編碼鍵盤除了按鍵以外,還包括產(chǎn)生鍵碼的硬件電路使用方便、價(jià)格較高 非編碼鍵盤靠軟件來識(shí)別鍵盤上的閉合鍵,由此計(jì)算出編碼 幾乎不需要附加硬件邏輯在單片機(jī)應(yīng)用系統(tǒng)中被普遍使用獨(dú)立聯(lián)接式無編碼鍵盤獨(dú)立聯(lián)接式無編碼鍵盤 獨(dú)立聯(lián)接式編碼鍵盤獨(dú)立聯(lián)接式編碼鍵盤 鍵盤鍵盤的分的分類與類與結(jié)構(gòu)結(jié)構(gòu)獨(dú)立聯(lián)接式鍵盤獨(dú)立聯(lián)接式鍵盤矩陣聯(lián)接式鍵盤矩陣聯(lián)接式鍵盤屏幕鍵盤屏幕鍵盤( (觸摸屏)觸摸屏)無編碼鍵盤無編碼鍵盤編碼鍵盤編碼鍵盤無編碼,簡(jiǎn)單有效,鍵數(shù)較少時(shí)采用無編碼,簡(jiǎn)單有效,鍵數(shù)較少時(shí)采用編碼,節(jié)省編碼,節(jié)省I/OI/O口線,鍵數(shù)較多時(shí)采用口線,鍵數(shù)較多時(shí)采用5.3.1 鍵盤接口工作原理鍵

3、盤接口工作原理1.1. 非編碼非編碼鍵盤鍵盤的工作原理的工作原理 v 分類分類 獨(dú)立式鍵盤簡(jiǎn)單鍵盤、行列式鍵盤(矩陣式鍵盤)獨(dú)立式按鍵獨(dú)立式按鍵 行列式鍵盤行列式鍵盤0 1 1 11 0 1 11 1 0 11 1 1 02. 2. 按鍵開關(guān)去抖動(dòng)問題按鍵開關(guān)去抖動(dòng)問題v 按鍵抖動(dòng)按鍵抖動(dòng) 在按下和釋放時(shí),按鍵有抖動(dòng) 按鍵時(shí)間:100ms 前跳沿和后跳沿:20ms,抖動(dòng)時(shí)間一般為510msA為確保:對(duì)鍵的為確保:對(duì)鍵的一次閉合一次閉合僅作僅作一次處理一次處理必須:必須:去除抖動(dòng)去除抖動(dòng)3. 3. 消除抖動(dòng)不良后果的方法消除抖動(dòng)不良后果的方法v 硬件去抖動(dòng)硬件去抖動(dòng) RC濾波電路去抖動(dòng)電路簡(jiǎn)單實(shí)

4、用,效果較好。v 軟件去抖動(dòng)軟件去抖動(dòng) 檢測(cè)到按鍵按下后,執(zhí)行延時(shí)10ms子程序后再確認(rèn)該鍵是否確實(shí)按下,消除抖動(dòng)影響。鍵處理的流程圖鍵處理的流程圖 開始鍵掃描有無鍵按下去抖動(dòng)鍵碼計(jì)算鍵釋放JMPA+DPTR00#鍵處理程序01#鍵處理程序#鍵處理程序nn#鍵處理程序A=00HA=01HA=HA=nnH 獨(dú)立式鍵盤接口獨(dú)立式鍵盤接口 各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,通過各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,通過檢測(cè)輸入線檢測(cè)輸入線的電平狀態(tài)的電平狀態(tài)可很容易判斷那個(gè)鍵被按下??珊苋菀着袛嗄莻€(gè)鍵被按下。獨(dú)立式獨(dú)立式鍵盤工作電路鍵盤工作電路圖圖( (適于鍵數(shù)較少、操作快、同時(shí)多鍵動(dòng)作場(chǎng)合適于

5、鍵數(shù)較少、操作快、同時(shí)多鍵動(dòng)作場(chǎng)合) )程序處理方法與開關(guān)量輸入相同程序處理方法與開關(guān)量輸入相同4. 獨(dú)立式按鍵獨(dú)立式按鍵4. 4. 獨(dú)立式按鍵獨(dú)立式按鍵v處理過程處理過程 查鍵:掃描有否鍵按下,若無鍵按下,返回 有鍵按下軟件去抖:延時(shí)20ms 找鍵 等鍵釋放 軟件去抖:延時(shí)20ms 例例 v有鍵按下,返回鍵值;否則,返回有鍵按下,返回鍵值;否則,返回0FFH0FFHP10P118051 K1P12P13P14P15K2K3K4K5K6+5V ; ;準(zhǔn)備輸入準(zhǔn)備輸入 等等放放去去抖抖查查鍵鍵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 ;延時(shí)去抖延時(shí)去抖ORLP1,#3FH ;修改修改P1MOVA,P1 ;讀讀P1ANLA,#3FHCJNEA,#3FH,KE2SJMPKE7 ;誤動(dòng)作返回誤動(dòng)作返回找找鍵鍵5. 5. 矩陣式鍵盤矩陣式

7、鍵盤v工作方式工作方式 查詢 定時(shí) 每隔一段時(shí)間對(duì)鍵盤掃描一次利用單片機(jī)內(nèi)部的定時(shí)器的定時(shí)器溢出中斷。 中斷中斷方式中斷方式00001 1 1 1 行列式行列式( (矩陣式矩陣式) )鍵盤接口鍵盤接口 4 44 4行列式鍵盤結(jié)構(gòu)行列式鍵盤結(jié)構(gòu)圖圖(掃描法)(掃描法) 適于按鍵數(shù)目較多的場(chǎng)合;適于按鍵數(shù)目較多的場(chǎng)合; 可節(jié)省很多的可節(jié)省很多的I/OI/O口線;口線; 同時(shí)只會(huì)有一個(gè)鍵閉合的場(chǎng)合。同時(shí)只會(huì)有一個(gè)鍵閉合的場(chǎng)合。行列式鍵盤按鍵的識(shí)別方法行列式鍵盤按鍵的識(shí)別方法a. a. 掃描法掃描法第第1 1步:識(shí)別鍵盤有無鍵按下;步:識(shí)別鍵盤有無鍵按下; 驅(qū)動(dòng)所有列線為驅(qū)動(dòng)所有列線為00,輸入各行線

8、電平如果有,輸入各行線電平如果有00,就,就說明有鍵按下,如果行線電平全說明有鍵按下,如果行線電平全11,則全部無鍵按下。,則全部無鍵按下。第第2 2步:如有鍵被按下,識(shí)別具體的按鍵。步:如有鍵被按下,識(shí)別具體的按鍵。 依序依序驅(qū)動(dòng)某一列為驅(qū)動(dòng)某一列為00 ,其余列均為,其余列均為11 ,輸入各行線,輸入各行線電平,如果某行線電平為電平,如果某行線電平為00 ,可確定此行列交叉點(diǎn)處的按,可確定此行列交叉點(diǎn)處的按鍵被按下;如果行線電平全為鍵被按下;如果行線電平全為11 則本列無按鍵按下。則本列無按鍵按下。輸出口驅(qū)動(dòng)列線輸出口驅(qū)動(dòng)列線輸輸入入口口讀讀取取行行線線電電平平第第1 1步:步:列列線輸出

9、為全線輸出為全00 ,隨后輸入,隨后輸入行行線電平如有線電平如有00,則則00所在的行就是所在的行就是閉合的按鍵閉合的按鍵所在行;無所在行;無00則無鍵閉合。則無鍵閉合。第第2 2步:步:行行線輸出為全線輸出為全00 ,隨后輸入,隨后輸入列列線電平如有線電平如有00,則則00所在的列就是所在的列就是閉合的按鍵閉合的按鍵所在列;無所在列;無00則無鍵閉合。則無鍵閉合。結(jié)合上述兩步,可確定按鍵所在行和列。結(jié)合上述兩步,可確定按鍵所在行和列。線反轉(zhuǎn)法原理圖線反轉(zhuǎn)法原理圖 b. b. 線反轉(zhuǎn)法線反轉(zhuǎn)法 P.168P.168PC3PC2PC1PC0PC4PC5PC6PC7實(shí)驗(yàn)板實(shí)驗(yàn)板44鍵盤鍵盤連接連接

10、82C55的端口線的端口線 采用線反轉(zhuǎn)法的鍵盤行線、采用線反轉(zhuǎn)法的鍵盤行線、列線端口各自應(yīng)當(dāng)可以在輸列線端口各自應(yīng)當(dāng)可以在輸入與輸出方式間切換入與輸出方式間切換! 如圖如圖: :高四位與低四位均可高四位與低四位均可獨(dú)立改變其獨(dú)立改變其輸入或輸出方式輸入或輸出方式v 處理過程處理過程 鍵掃描 確認(rèn)有無按鍵按下 去抖動(dòng) 延時(shí) 按鍵的識(shí)別:確定鍵的行、列號(hào) 掃描算法、線反轉(zhuǎn)法 鍵號(hào)的確定 鍵號(hào)=所在行號(hào)鍵盤列數(shù)+所在列號(hào) 等待鍵釋放5. 矩陣式鍵盤矩陣式鍵盤 例例 掃描算法掃描算法v 用用8255A8255A作單片機(jī)鍵盤接口,作單片機(jī)鍵盤接口, 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”則轉(zhuǎn)移則轉(zhuǎn)移ACALL DIR;顯示一次顯示一次LED(“延時(shí)延時(shí)6ms”)AJMPKEY1LK1:ACALL DIR;有鍵閉合二次延時(shí)有鍵閉合二次延時(shí)ACALL DIR;共共12ms去抖動(dòng)去抖動(dòng)ACALL KSI;再檢查是否有鍵閉合再檢查是否有鍵閉合JNZLK2;有鍵閉合轉(zhuǎn)移到有鍵閉合轉(zhuǎn)移到LK2ACALL DIRAJMPKEY1;無鍵閉合,延時(shí)無鍵閉合,延時(shí)6ms后轉(zhuǎn)后轉(zhuǎn)KEY1有閉合鍵,有閉合鍵,則則(A)0無閉合,無閉合, 則則(A)=

13、0LK2:CLRF0;有鍵有鍵標(biāo)志標(biāo)志MOVR2, #0FEH;掃描初值送掃描初值送R2MOVR4, #00H;掃描掃描列號(hào)列號(hào)送送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”則轉(zhuǎn)移則轉(zhuǎn)移ACALL DIR;顯示一次顯示一次LED(“延時(shí)延時(shí)6ms”)AJ

14、MPKEY1LK1:ACALL DIR;有鍵閉合二次延時(shí)有鍵閉合二次延時(shí)ACALL DIR;共共12ms去抖動(dòng)去抖動(dòng)ACALL KSI;再檢查是否有鍵閉合再檢查是否有鍵閉合JNZLK2;有鍵閉合轉(zhuǎn)移到有鍵閉合轉(zhuǎn)移到LK2ACALL DIRAJMPKEY1;無鍵閉合,延時(shí)無鍵閉合,延時(shí)6ms后轉(zhuǎn)后轉(zhuǎn)KEY1LK2:MOVR2, #0FEH;掃描初值送掃描初值送R2MOVR4, #00H;掃描掃描列號(hào)列號(hào)送送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行無鍵閉合,轉(zhuǎn)行無鍵閉合,轉(zhuǎn)LONEMOVA, #00H;裝第裝第0行值行值A(chǔ)JMPLKPLONE: JBACC.1, LTWO ;ACC.1=1,第,第1行無鍵閉合,轉(zhuǎn)行無鍵閉合,轉(zhuǎn)LTWOMOVA, #08H;裝第裝第1行值行值A(chǔ)JMPLKPLTWO: JBACC.2, LTHR;ACC.2=1,第,第2行無鍵閉合,轉(zhuǎn)行無鍵閉合,轉(zhuǎn)LTHRMOVA, #10H;裝第裝第2行值行值A(chǔ)JMPLKPLTHR: JBACC.3,

16、 NEXT;ACC.3=1,第,第3行無鍵閉合,轉(zhuǎn)行無鍵閉合,轉(zhuǎn)NEXT MOVA, #18H;裝第裝第3行值行值LKP:ADDA, R4;計(jì)算鍵碼計(jì)算鍵碼PUSHACC;保護(hù)鍵碼保護(hù)鍵碼LK3:ACALL DIR;延時(shí)延時(shí)6msACALL KSI;檢查是否繼續(xù)閉合,若閉合再延時(shí)檢查是否繼續(xù)閉合,若閉合再延時(shí)JNZLK3POPACC;若鍵起,則鍵碼送若鍵起,則鍵碼送ARET掃描掃描列號(hào)列號(hào):R4NEXT: INCR4;掃描列號(hào)加掃描列號(hào)加1MOVA, R2JNBACC.7, KND;若第若第7位位=0,已掃完最高列則轉(zhuǎn),已掃完最高列則轉(zhuǎn)KNDRLAMOVR2, AAJMPLK4;進(jìn)行下一列掃描

17、進(jìn)行下一列掃描KND:SETBF0;無鍵無鍵標(biāo)志標(biāo)志RET;掃描完畢掃描完畢掃描掃描列號(hào)列號(hào):R4 例例 線反轉(zhuǎn)法線反轉(zhuǎn)法KEY:MOVP1, #0F0H;行線置低電平行線置低電平,列線置輸入態(tài)列線置輸入態(tài)KEY0: MOVA, P1;讀讀列列線數(shù)據(jù)線數(shù)據(jù)CPLA;數(shù)據(jù)取反數(shù)據(jù)取反,“1”有效有效ANLA, #0F0H;屏蔽行線屏蔽行線,保留列線數(shù)據(jù)保留列線數(shù)據(jù)MOVR1, A;存列線數(shù)據(jù)存列線數(shù)據(jù)(R1高高4位位)JZGRET;全全0,無鍵按下無鍵按下,返回返回KEY1: MOVP1, #0FH;行線置輸入態(tài)行線置輸入態(tài),列線置低電平列線置低電平MOVA, P1;讀讀行行線數(shù)據(jù)線數(shù)據(jù) CPL

18、A;數(shù)據(jù)取反數(shù)據(jù)取反,“1”有效有效ANLA, #0FH;屏蔽列線屏蔽列線,保留行線數(shù)據(jù)保留行線數(shù)據(jù)MOVR2, A;存行線數(shù)據(jù)存行線數(shù)據(jù)(R2低低4位位)JZGRET;全全0,無鍵按下無鍵按下,返回返回JBCF0, WAIT;已有消抖標(biāo)志已有消抖標(biāo)志,轉(zhuǎn)轉(zhuǎn)SETBF0;無消抖標(biāo)志無消抖標(biāo)志,置消抖標(biāo)志置消抖標(biāo)志 LCALL DY10ms;調(diào)用調(diào)用10ms延時(shí)子程序消抖延時(shí)子程序消抖SJMPKEY0;重讀重讀行線列線數(shù)據(jù)行線列線數(shù)據(jù)GRET: RET參考程序:WAIT: MOVA, P1;等待按鍵釋放等待按鍵釋放CPLA ANLA, #0FHJNZWAIT;按鍵未釋放按鍵未釋放,繼續(xù)等待繼續(xù)等

19、待KEY2: MOVA, R1;取列線數(shù)據(jù)取列線數(shù)據(jù)(高高4位位)MOVR1, #03H;取取列線編號(hào)初值列線編號(hào)初值MOVR3, #03H;置循環(huán)數(shù)置循環(huán)數(shù)CLRCKEY3: RLCA;依次左移入依次左移入C中中JCKEY4;C=1,該列有鍵按下該列有鍵按下,(列線編號(hào)存列線編號(hào)存R1)DECR1;C=0,無鍵按下無鍵按下,修正列編號(hào)修正列編號(hào)DJNZR3, KEY3;判循環(huán)結(jié)束否判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的列線未結(jié)束繼續(xù)尋找有鍵按下的列線KEY4: MOVA, R2;取行線數(shù)據(jù)取行線數(shù)據(jù)(低低4位位)MOVR2, #00H;置置行線編號(hào)初值行線編號(hào)初值MOVR3, #03H;置循

20、環(huán)數(shù)置循環(huán)數(shù)CLRC KEY5: RRCA;依次右移入依次右移入C中中JCKEY6;C=1,該行有鍵按下該行有鍵按下,(行線編號(hào)存行線編號(hào)存R2)INCR2;C=0,無鍵按下無鍵按下,修正行線編號(hào)修正行線編號(hào)DJNZR3, KEY5;判循環(huán)結(jié)束否判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的行線未結(jié)束繼續(xù)尋找有鍵按下的行線KEY6: MOVA, R2;取行線編號(hào)取行線編號(hào)CLRC RLCA;行編號(hào)行編號(hào)2RLCA;行編號(hào)行編號(hào)4ADDA, R1;行編號(hào)行編號(hào)4+列編號(hào)列編號(hào)=按鍵編號(hào)按鍵編號(hào)KEY7: CLRC RLCA;按鍵編號(hào)按鍵編號(hào)2RLCA;按鍵編號(hào)按鍵編號(hào)4(LCALL+ RET共共4字節(jié)字

21、節(jié))MOVDPTR, #TABJ JMPA+DPTR;散轉(zhuǎn)散轉(zhuǎn),執(zhí)行相應(yīng)鍵功能子程序執(zhí)行相應(yīng)鍵功能子程序TABJ: LCALL WORK0;調(diào)用執(zhí)行調(diào)用執(zhí)行0#鍵功能子程序鍵功能子程序RET LCALL WORK1;調(diào)用執(zhí)行調(diào)用執(zhí)行1#鍵功能子程序鍵功能子程序RET LCALL WORK15;調(diào)用執(zhí)行調(diào)用執(zhí)行15#鍵功能子程序鍵功能子程序RET 技能能力技能能力5.3.2 工作任務(wù)描述工作任務(wù)描述1)根據(jù)給出的圖5-35,在Proteus中畫出電路圖;編寫程序使數(shù)碼管顯示當(dāng)前閉合按鍵的鍵值。 2)利用Proteus的仿真功能對(duì)其進(jìn)行仿真測(cè)試,觀察數(shù)碼管的顯示狀態(tài)和按鍵開關(guān)的對(duì)應(yīng)關(guān)系。 3)根據(jù)

22、圖5-35,搭接硬件電路,進(jìn)行硬件驗(yàn)證。矩陣鍵盤掃描電路圖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.

23、7/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ù)碼管顯示鍵盤的作用。點(diǎn)擊相應(yīng)按鍵顯示相應(yīng)的鍵值。; 處理過程:首先掃描鍵盤,判斷是否有鍵按下,再確定是哪一個(gè)鍵,計(jì)算鍵值,輸出顯示。ORG 0

24、000HAJMP MAIN ORG 0030H MAIN: MOV DPTR,#TABLE ;將表頭放入DPTR LCALL KEY ;調(diào)用鍵盤掃描程序 MOVC A,A+DPTR ;查表后將鍵值送入ACC MOV P2,A ;將Acc值送入P0口 LJMP MAIN ;返回反復(fù)循環(huán)顯示 KEY: LCALL KS ;調(diào)用檢測(cè)按鍵子程序 JNZ K1 ;有鍵按下繼續(xù) LCALL DELAY2 ;無鍵按調(diào)用延時(shí)去抖 AJMP KEY ;返回繼續(xù)檢測(cè)按鍵 K1: LCALL DELAY2 LCALL DELAY2 ;有鍵按下延時(shí)去抖動(dòng) LCALL KS ;再調(diào)用檢測(cè)按鍵程序 JNZ K2 ;確認(rèn)有

25、按下進(jìn)行下一步 AJMP KEY ;無鍵按下返回繼續(xù)檢測(cè) K2: MOV R2,#0EFH ;將掃描值送入 R2暫存 MOV R4,#00H ;將第一列值送入R4暫存 K3: MOV P1,R2 ;將R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳轉(zhuǎn)到L1 MOV A,#00H ;將第一行值送入ACC AJMP LK ;跳轉(zhuǎn)到鍵值處理程序 L1: JB P1.1,L2 ;P1.1等于1跳轉(zhuǎn)到L2 MOV A,#04H ;將第二行的行值送入ACC AJMP LK ;跳轉(zhuǎn)到鍵值理程序進(jìn)行鍵值處理 L2: JB P1.2,L3 ;P1.2等于1跳轉(zhuǎn)到L3 MOV A,#08H ;將第三行的行值送入ACC AJMP LK ;跳轉(zhuǎn)到鍵值處理程序L3: JB P1.3,NEXT ;P1

溫馨提示

  • 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)論