《單片機應用技術》課件-第四章 鍵盤接口及掃描原理_第1頁
《單片機應用技術》課件-第四章 鍵盤接口及掃描原理_第2頁
《單片機應用技術》課件-第四章 鍵盤接口及掃描原理_第3頁
《單片機應用技術》課件-第四章 鍵盤接口及掃描原理_第4頁
《單片機應用技術》課件-第四章 鍵盤接口及掃描原理_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第四章鍵盤接口及掃描原理

——單片機輸入應用

本章教學計劃:

理論+實踐教學12學時本章教學重點:了解鍵盤分類掌握行列掃描鍵盤原理掌握行列鍵盤掃描程序1鍵盤分類2選擇結構程序設計3行列掃描鍵盤原理4行列鍵盤掃描程序5鍵盤的鍵值6線反轉法鍵盤掃描程序主要內容:1、鍵盤的分類鍵盤按結構形式可分為兩種:編碼鍵盤

非編碼鍵盤

編碼鍵盤:由內部硬件邏輯電路自動產生被按鍵的編碼。

特點:使用方便,軟件簡單,成本較高。

非編碼鍵盤:主要由軟件產生被按鍵的編碼。特點:非編碼鍵盤結構簡單、成本低廉,使用不如編碼式鍵盤方便,鍵盤的管理程序的編制比較復雜。在單片機中使用非編碼鍵盤,鍵盤上的鍵按行列構成矩陣,在行列的交點上對應一個鍵。1、鍵盤的分類編碼鍵盤1(獨立按鍵)按鍵開關的連接采用上拉電阻的方法判斷是否有鍵按下:當按鍵不按下時,P1.0-P1.3為高電平;有按鍵按下時,相應引腳為低電平;松開按鍵時,相應引腳變成高電平。編碼鍵盤2利用中斷的形式:(不需要掃描鍵盤)無鍵按下時,與門輸出高電平;有一個鍵按下時,與門輸出低電平,引發中斷,中斷后程序會執行中斷服務程序,對按鍵進行處理。注:若在一個系統設計中,需要使用很多按鍵,采用獨立按鍵的方式,會大量占用IO口1、鍵盤的分類2.1if語句if語句是用來判定所給定的條件是否滿足,根據判定的結果(真或假、非零或零)決定執行給出的兩種操作之一。2.1.1if語句的三種形式C語言提供了三種形式的if語句:1)if(表達式)語句例如:

if(x>y) printf("%d",x);這種if語句的執行過程2、選擇結構程序設計2)

if(表達式)語句1else語句2例如:

if(x>y) printf("%d",x);

else printf(“%d”,y);見圖:練習1、#include<stdio.h>voidmain(){inti=-1;

if

(i<=0)

printf(“****\n”);

else printf(“%%%%\n”);}

A)**** B)%%%% C)%%%%c D)有語法錯誤,不能正確執行3)

if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3…elseif(表達式m)語句melse語句n

例如:有一個程序段

根據學生的成績分為5個等級A.B.C.D.Escanf(“%d”,&results);if(results>89)printf(“%disA”,results);elseif(results>79)printf(“%disB”,results);elseif(results>69)printf(“%disC”,results);elseif(results>59)printf(“%disD”,results);elseprintf(“%disE”,results);練習

x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)#include<stdio.h>voidmain(){floatx,y;scanf(“%f”,&x);

if(x<1) y=x;

elseif((x>=1)&&(x<10)) y=2*x-1;

else y=3*x-11;printf(“x=%f,y=%5.2f\n”,x,y);}(1)三種形式的if語句中在if后面都有“表達式”,一般為邏輯表達式或關系表達式。表達式的類型不限于邏輯表達式,可以是任意的數值類型(包括整型、實型、字符型、指針型數據)。(2)第二、第三種形式的if語句中,在每個else前面有一分號,整個語句結束處有一分號。

else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。(3)在if和else后面可以只含一個內嵌的操作語句;也可以有多個操作語句,此時用花括號“{}”將幾個語句括起來成為一個復合語句。注意2.1.2if語句的嵌套

在if語句中又包含一個或多個if語句稱為if語句的嵌套.語句格式:

if(表達式)

if(表達式1)語句1;

else

語句2;

else

if(表達式2)語句3;

else

語句4;2.2switch語句switch(表達式){

case常量表達式1:

語句1;可以是多行,可以加括號,也可以不加,到下一個case之前,都是本case的語句范圍

[break;]中括號,表示此語句可以沒有

case常量表達式2:

語句2;[break;]……

case常量表達式n:

語句n;[break;]

[default:]

語句n+1;[break;]}#include<reg52.h>//定義特殊功能寄存器庫#defineucharunsignedchar#defineuintunsignedintvoiddelay(uchar);//函數聲明ucharKeyScan(void);//鍵盤掃描函數voidmain(void){ucharKeyValue;while(1){KeyValue=KeyScan();//調用函數,讀取鍵值編碼鍵盤1的參考程序:/*switch(KeyValue)//各個鍵值的應用{case0x0E:……;break;case0x0D:……;break;case0x0B:……;break;case0x07:……;break;}*/}}/********************************************/ucharKeyScan(void){TempValue=P1;//讀端口到變量TempValue&=0x0f;//將高四位置0if(TempValue!=0x0f)//判斷是否有鍵按下{delay(10);//延時后再判斷,為什么?后介紹TempValue=P1;//讀端口到變量TempValue&=0x0f;//將高四位置0if(TempValue!=0x0f)//判斷是否有鍵按下{returnTempValue;//有鍵時的鍵值}}return0;//無鍵按下時,函數返回值為0}voiddelay(ucharx)//延時函數{uchark;while(x--)for(k=0;k<125;k++);}1、鍵盤的分類非編碼鍵盤(矩陣按鍵)行列式結構按矩陣形式排列交叉部分為按鍵用8位IO口實現了16個按鍵共4組按鍵分析其中一組:若P1.0輸出低電平,P1.0相當于GND,就相當于4個獨立按鍵。為了避免其它三組對本組按鍵產生干擾,要求P1.1,P1.2,P1.3必須輸出高電平。3、行列掃描鍵盤原理對于單片機系統中普遍使用非編碼式鍵盤,主要解決以下幾個問題:

(1)鍵的識別; (2)如何消除鍵的抖動; (3)鍵的保護。在以上幾個問題中,最主要的是鍵的識別。3、行列掃描鍵盤原理鍵盤接口應有以下功能:

鍵掃描功能,即檢測是否有鍵閉合;

鍵識別功能,確定被閉合鍵所在的行列位置;

產生相應的鍵的代碼(鍵值)功能;

消除按鍵抖動及對付多鍵串按(復鍵)功能。3、行列掃描鍵盤原理1、鍵盤掃描流程3、行列掃描鍵盤原理鍵盤掃描流程非編碼式鍵盤識別閉合鍵方法:行掃描法。行掃描法所謂行掃描法,就是通過行線發出低電平信號,如果該行線所連接的鍵沒有按下的話,則列線所連接的輸出端口得到的是全“1”信號;如果有鍵按下的話,則得到的是非全“1”信號。3、行列掃描鍵盤原理鍵盤掃描流程

無鍵按下有鍵按下3、行列掃描鍵盤原理鍵盤掃描流程

掃描第0行掃描第1行3、行列掃描鍵盤原理鍵盤掃描流程

掃描第2行掃描第3行鍵值為:11010111P1.0P1.73、行列掃描鍵盤原理鍵盤掃描流程具體過程如下:首先,檢查整個鍵盤中是否有鍵按下;其次,再用逐行掃描的方法來確定閉合鍵的具體位置。方法是:先掃描第0行,即輸出1110(第0行為“0”,其余3行為“1”),然后讀入列信號,判斷是否為全“1”。3、行列掃描鍵盤原理消除鍵的抖動常用鍵盤的鍵是一個機械開關結構,被按下時,由于機械觸點的彈性及電壓突跳等原因,在觸點閉合或斷開的瞬間會出現電壓抖動。抖動時間長短與鍵的機械特性有關,一般為5~10ms。而鍵的閉合時間和操作者的按鍵動作有關,大約為十分之幾秒到幾秒不等。3、行列掃描鍵盤原理消除鍵的抖動

3、行列掃描鍵盤原理消除鍵的抖動去抖動有硬件和軟件兩種方法。硬件方法就是加去抖動電路,從根上避免抖動的產生;而軟件方法則是采用時間延遲以躲過抖動(大約延時10~20ms即可),待信號穩定之后,再進行鍵掃描。一般為簡單起見多采用軟件方法。3、行列掃描鍵盤原理鍵盤接口的控制方式在單片機的運行過程中,何時執行鍵盤掃描和處理,可有以下3種情況:(1)隨機方式,每當CPU空閑時執行鍵盤掃描程序。(2)中斷方式,每當有鍵閉合時才向CPU發出中斷請求,中斷響應后執行鍵盤掃描程序。(3)定時方式,每隔一定時間執行一次鍵盤掃描程序,定時可由單片機的定時器完成。4、行列鍵盤掃描程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintvoiddlms(void);ucharkbscan(void);voidmain(void){ucharkey;while(1){key=kbscan();dlms();}}voiddlms(){uchari;for(i=200;i>0;i--){}}ucharkbscan(){ucharsccode,recode;P1=0xf0;if((P1&0xf0)!=0xf0){dlms();if((P1&0xf0)!=0xf0){sccode=0xfe;while((sccode&0x10)!=0){P1=sccode;if((P1&0xf0)!=0xf0){recode=(P1&0xf0)|0x0f;return((~sccode)|(~recode));}else

溫馨提示

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

評論

0/150

提交評論