鍵盤顯示程序的設計說明_第1頁
鍵盤顯示程序的設計說明_第2頁
鍵盤顯示程序的設計說明_第3頁
鍵盤顯示程序的設計說明_第4頁
鍵盤顯示程序的設計說明_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上實驗四 鍵盤顯示程序設計實驗目的1、理解串行接口鍵盤單片機c語言程序的基本結構2、了解單片機c語言程序的設計和調試方法3、掌握幾個的基本的傳送類、控制類指令的使用方法實驗儀器單片機開發板、穩壓電源、計算機實驗原理1按鍵下圖為一個典型的接觸式按鍵(又稱輕觸開關)。下圖是該按鍵的工作特性圖。其中藍色的線表示按鍵未被按下之時的狀態,我成為初始狀態,它是不導通的;而綠色的線是卻永久導通的。所以我們?。?,2)、(1,4)、(3,2)、(3,4)四種組合,都可以起到我們預期的開關作用。2按鍵電平的判定。先看下圖當按鍵按下以后,請問如果這時用萬用表測量導線上任何一處的電壓,得到的

2、結果是VCC 還是GND 的電壓?答案是:GND,即表示測出的電壓為0V。因為導線上,對于兩端的電平是一種類似于程序語言邏輯運算里面的“與”,即對于導線兩端:有零即為零,只有全為一是才為一。3獨立按鍵鍵盤分為編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識別由專用的硬件編碼器實現,并產生鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的鍵盤稱為非編碼鍵盤,在單片機組成的各種系統中,用的較多的是非編碼鍵盤。非編碼鍵盤又分為獨立鍵盤和行列式鍵盤(常說的矩陣鍵盤)。單片機的IO口既可作為輸出也可作為輸入使用,當檢測按鍵時用的是它的輸入功能,我們把按鍵的一端接地,另一端與單片機的某個I/O口相連,

3、開始時先給該IO口賦一高電平,然后讓單片機不斷地檢測該I/O口是杏變為低電平,當按鍵閉合時,即相當于該I/O口通過按鍵與地相連,變成低電平,程序一旦檢測到I/O口變為低電平則說明按鍵被按下,然后執行相應的指令。(2)按鍵抖動理論上講,按鍵按下去后的點評應該為上圖,實際上是下圖。在高低電平直接有一段鋸齒一樣的波形,這就是所謂的按鍵抖動。一般手動按下一次鍵然后接著釋放,按鍵兩片金屬膜接觸的時間大約為50ms 左右,在按下瞬間到穩定的時間為5-10ms,在松開的瞬間到穩定的時間也為5-10ms,如果我們再首次檢測到鍵被按下后延時10ms 左右再去檢測,這時如果是干擾信號將不會被檢測到,如果確實是有鍵

4、被按下,則可確認,以上為按鍵識別去抖動的原理。(3)獨立按鍵開發板獨立按鍵電路圖如下:獨立按鍵一共5個,分別連接在單片機的P3.0到P3.4口。去抖動的方式,我們采用軟件延時的方法。過程如下:1先設置IO口為高電平(一般上電默認就為高)2讀取IO口電平確認是否有按鍵按下3如有IO電平為低電平后,延時幾個ms4再讀取該IO電平,如果任然為低電平,說明對應按鍵按下5執行相應按鍵的程序4矩陣按鍵獨立鍵盤與單片機連接時,每一個按鍵都需要單片機的一個I/O口若某單片機系統需較多按鍵,如果用獨立按鍵便會占用過多的I/O口資源。單片機系統中I/O口資源往往比較寶貴,當用到多個按鍵時為了節省I/O口口線,我們

5、引入矩陣鍵盤。我們以4X4矩陣鍵盤為例講解其工作原理和檢測方法。將16個按鍵排成4行4列,第一行將每個按鍵的一端連接在一起構成行線,第一列將每個按鍵的另一端連接在一起構成列線,這樣便一共有4行4列共8根線,我們將這8根線連接到單片機的8個I/O口上,通過程序掃描鍵盤就可檢測16個鍵。首先看一下電路圖上圖是一個4X4 的矩陣鍵盤,一共是16 個按鍵。我們照習慣稱橫為“行”,“豎”為列。那么5、6、7、8 我們稱之為“行線”,則1、2、3、4 稱為“列線”。要正確記住各個行列線各自對應的IO。現在詳細講述一下矩陣鍵盤掃描的原理和步驟:掃描矩陣鍵盤,即是把某一條(只有一條)行線置為低電平,而列線全部

6、置為輸入方向,然后檢測列線,如果檢測到某一條列線是低電平,那么就表示位于這條列線與輸出低電平的行線的交點處的按鍵被按下了。要掃描16個按鍵,就依次以這樣的方法掃描16次,之后就可以確定哪一個按鍵被按下了。當然這里也少不了延時消除按鍵抖動的環節。實驗內容:P0口連接數碼管,P1口連接矩陣鍵盤。實驗連接圖如下請大家根據以上內容和提示,編寫程序,完成實驗。實驗功能是數碼管靜態顯示矩陣按鍵數值0F.顯示順序如下:F EDCBA9876543210#include<reg51.h>#define GPIO_DIG P0/定義P0口為GPIO_DIG#define GPIO_KEY P1/定義

7、P1口為GPIO_KEY unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;數碼管靜態共陰極編碼unsigned char KeyValue; /(KeyValue什么作用?)void Delay10ms(unsigned int c); /延時10ms(完成下面的延時程序)void KeyDown(); /檢測按鍵函數void main(void)while(1)KeyDown();GPIO_DIG = DIG_CODEKe

8、yValue;void KeyDown(void)char a = 0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/讀取按鍵是否按下Delay10ms(1);/延時10ms進行消抖if(GPIO_KEY!=0x0f)/再次檢測鍵盤是否按下/測試列GPIO_KEY=0X0F;switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e):KeyValue=3;break;/測試行GPIO_KEY=0XF0;switc

9、h(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0):KeyValue=KeyValue+12;break;while(a<50) && (GPIO_KEY!=0xf0) /檢測按鍵松手檢測Delay10ms(1);a+;void Delay10ms(unsigned int c) unsigned char a, b; for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); 寧可累死在路上,也不能閑死在家里!寧可去碰壁,也不能面

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論