用Proteus學習51微控制器之鍵盤

2022-02-17 00:29:04 字數 1051 閱讀 5596

最近剛做好乙個站,基於rails 3,教程為主,大家捧場看看,謝謝!www.yo945.com

與微控制器互動,鍵盤可能是最直接的工具了。所以我對於鍵盤檢測也是十分期待的。

鍵盤說開了,其實就是很多的按鈕。如果鍵盤數比較小的話,直接使用io口連線按鈕就可以了,比如我要實現乙個功能,按鍵使數字加1或減1,這樣的話,只需要兩個按鍵就可以了。單個鍵盤的檢測並不困難,先把io口電平置為高電平,然後直接io連按鈕,再把按鈕接地,當按下按鈕時,檢測到io口電平為低即表示按下了按鈕。當然這是理論情況下,實際的情況是,按下按鈕後,電平還會上下的跳變幾次,所以如果只是單純的檢測電平的變化,是不準確的。所以比較簡單的方法是,檢測到電平變化後,延時一段時間(比如10ms),再去檢測電平,如果電平和先前檢測到的一致,說明確實是按下去了。

下面是單獨按鈕的實驗,簡單起見,直接用led燈來顯示當前值的二進位制(不考慮溢位等情況)

當需要的的按鍵比較少的時候,可以直接把io口和按鈕直接相連,不過當需要的按鈕很多的時候,則不能這樣連線了。像一般的電腦鍵盤100多個按鍵,難道直接和系統io相連?這顯然是不現實的。矩陣鍵盤就是一種能夠以較少的io口,檢測較多按鍵的鍵盤。矩陣鍵盤的原理就不寫了,網上很容易就找到,簡單而言,就是檢測按下的按鍵,是第幾行,第幾列。具體檢測的方法也很簡單,首先給相連的所有io口加高電平,然後把某一行的線置低電平,如果有按鍵按下的話,則對應的列連線的io口也會變成低電平,這樣,行和列就都知道了。原理圖如下,按下1-9時在數碼管上顯示數字,其他按鍵直接顯示「-」號。

檢測**如下:

char check()

{ uchar row=0,col=0;//定義行和列

uchar tmp = 0,tmp2 = 0;

for(row=0;row<4;row++)

{ 到p2.3表示是第幾行,依次置低電位

tmp = (0xff & (~(1<

用 Proteus學習51微控制器之1602液晶

1602液晶,即一行有16個字元,共2行的液晶顯示屏,只能顯示ascii碼,不能顯示漢字。一般1602有16條線,其中8根線是資料操作線,其他8根線是控制線,定義如下 埠名稱說明 vss 電源地 vdd 電源正極 vo液晶對比度調節端 rs資料 命令選擇端 h為資料,l為命令 r w讀寫控制 h l...

51微控制器

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...

51微控制器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...