單片機鍵盤接口技術(shù)

發(fā)布時間:2024-03-17
1.鍵盤接口電路
單片機的鍵盤接口電路有多種形式,最常用的是鍵盤掃描電路,如圖8-17所示。圖8-17中的鍵盤掃描電路是由3根行線與8根列線組成。3根行線的左邊接8155的pc口的3個引腳pc.0、pc.1、pc.2,右邊通過5k電阻接5v電源。8根列線通過反相器接8155b口(即位選口,地址為ff22h)。在行線與列線的交叉處設(shè)置一個按鍵,因此該單片機的鍵盤由3×8=24個按鍵組成。倒數(shù)第一、二行共16個數(shù)字鍵(0~f),第三行為8個功能鍵。從8155b口輸出8位低電平給8根列線d0~d7,若某行有鍵按下,則該行與列線接通為低電平。若某行無鍵按下,則該行保持高電平。由此可見,測試pc.0、pc.1、pc.2的狀態(tài)就可以知道有無鍵按下,此外通過掃描方式可取出按鍵的鍵值。按鍵鍵值:0~f為數(shù)字鍵鍵值,10h~17h為功能鍵鍵值。
2.鍵盤掃描程序
(1)入口地址:key-scan,
(2)作用:判有無鍵按下
(3)出口狀態(tài):(a)=0 表示無鍵按下,
(a)≠0 表示有鍵按下。
(4)源程序
3.取鍵值程序
(1)名稱與入口地址:key-get 。
(2)作用:取按鍵鍵值。
(3)使用寄存器:a、r2、r4。
(4)出口狀態(tài):(a)=按鍵鍵值,0~f為數(shù)字鍵,10h~17h為功能鍵。
(5)程序設(shè)計基本思想
①調(diào)用鍵盤掃描程序判有無鍵按下,若無鍵按下則繼續(xù)判斷,若有鍵按下則取按鍵鍵值。在介紹取按鍵鍵值的方法之前先介紹列掃描碼的概念。
②列掃描碼
列掃描碼共8位,其中有1位為0 ,其它各位為1,初始值為11111110,該初始值存放在r2中,如圖8-27所示,0所在列的列號j存放在r4中,當(dāng)?shù)趈 列有鍵按下時,按鍵所在行為低電平0,通過查行值是否為0,可確定按鍵的行號與列號,并據(jù)此算出按鍵鍵值。因此列掃描碼的作用是確定第幾列有鍵按下。
③送列掃描碼
列掃描碼由r2通過累加器a傳送給8155b口,并由8155b口輸出給鍵盤電路的8根列線。8根列線中,第j列為0,其余各列為1。
④取行值
從pc口的pc.0~pc.2讀行信號,若讀出的行值均為1,說明第j列無鍵按下,將r2中的掃描碼左移1位,并將列號j存儲寄存器r4加1,轉(zhuǎn)③重新送掃描碼,查下一列有無鍵按下。若讀出第i行的行值中為0,說明在第i行與第j列處有鍵按下,應(yīng)計算鍵值。
⑤計算鍵值
若讀出第i行為0 ,則說明第i行與第j列處有鍵按下,由掃描碼中0所在列號j與行值為0的行號i可計算出按鍵鍵值:
鍵值= i×8+j。 (式中i=0~2,j=0~7)
例如:第0列與第0行處的按鍵按下,鍵值=0×8+0=0 ,即數(shù)字0鍵。
第0列與第1行處的按鍵按下,鍵值=1×8+0=8 ,即數(shù)字8鍵。
第0列與第2行處的按鍵按下,鍵值=2×8+0=10h。
由圖8-27可看出,上述計算公式是完全正確的。
因為所取鍵值存放在累加器a中,列號j存放r4中,第i行為0可通過pc.i=0進(jìn)行判斷,所以按鍵鍵值計算公式可改為
(6)流程圖:如圖8-29所示。
(7)源程序
注意:在調(diào)用鍵盤程序的主程序中,必須將8155初始化為a、b口基本i/o輸出方式,c口為基本輸入方式。然后才能調(diào)用上面取鍵值程序。
思考題:如何使0~7鍵與8~f鍵的鍵值互換,即按0鍵時顯示8,按8鍵時顯示0等?提示:將取鍵程序key_get中的指令①與②互換即可。
上一個:小米雙卡怎么用,小米max智能大屏雙卡的數(shù)據(jù)怎么使用
下一個:airwork閥門品牌介紹(意大利制造的可靠選擇)

怎么刷機紅米線刷,怎樣對紅米手機線刷機
RC0402DR-0710K7L,0402 10.7KΩ 0.5% 1/16W 電阻
根據(jù)不同的流體選擇不同流量計
交通事故刑事拘留條件有哪些
京東如何取消退款申請教程(京東如何取消退款申請取消不了)
商業(yè)建筑的總平面有什么設(shè)計要求?
CapXon(臺灣豐賓)HV471M010F105ETR鋁電解電容
AC1206FR-0751KL,國巨車規(guī)電阻1206 51KΩ ±1% 1/4W
通用數(shù)據(jù)傳送指令
食品冷藏車,冷凍車,冷鏈車溫度監(jiān)控系統(tǒng)-北京九純健
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos