AVR單片機(jī)C語(yǔ)言項(xiàng)目開(kāi)發(fā)實(shí)踐教程項(xiàng)目6 按鍵識(shí)別應(yīng)用_第1頁(yè)
AVR單片機(jī)C語(yǔ)言項(xiàng)目開(kāi)發(fā)實(shí)踐教程項(xiàng)目6 按鍵識(shí)別應(yīng)用_第2頁(yè)
AVR單片機(jī)C語(yǔ)言項(xiàng)目開(kāi)發(fā)實(shí)踐教程項(xiàng)目6 按鍵識(shí)別應(yīng)用_第3頁(yè)
AVR單片機(jī)C語(yǔ)言項(xiàng)目開(kāi)發(fā)實(shí)踐教程項(xiàng)目6 按鍵識(shí)別應(yīng)用_第4頁(yè)
AVR單片機(jī)C語(yǔ)言項(xiàng)目開(kāi)發(fā)實(shí)踐教程項(xiàng)目6 按鍵識(shí)別應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

AVR單片機(jī)(C語(yǔ)言)項(xiàng)目開(kāi)發(fā)實(shí)踐教程項(xiàng)目6按鍵識(shí)別應(yīng)用任務(wù)1項(xiàng)目知識(shí)點(diǎn)學(xué)習(xí)任務(wù)2多功能按鍵控制LED燈任務(wù)3矩陣式鍵盤(pán)鍵值識(shí)別任務(wù)4電話撥號(hào)顯示控制項(xiàng)目六

按鍵識(shí)別應(yīng)用【知識(shí)目標(biāo)】了解按鍵的確認(rèn)與去抖原理以及方法學(xué)會(huì)矩陣鍵盤(pán)的工作原理與內(nèi)部連接學(xué)會(huì)矩陣鍵盤(pán)的鍵值識(shí)別方法一、單片機(jī)的IO輸入接口假如把一個(gè)單片機(jī)嵌入式系統(tǒng)比做一個(gè)人的話,那么單片機(jī)就相當(dāng)于人的心臟和大腦,而輸入接口就好似人的感官系統(tǒng),用于獲取外部世界的變化、狀態(tài)等各種信息,并把這些信息輸送進(jìn)人的大腦。嵌入式系統(tǒng)的人機(jī)交互通道、前向通道、數(shù)據(jù)交換和通信通道的各種功能都是由單片機(jī)的輸入接口及相應(yīng)的外圍接口電路實(shí)現(xiàn)的。對(duì)于一個(gè)電子系統(tǒng)來(lái)講,外部現(xiàn)實(shí)世界各種類型和形態(tài)的變化和狀態(tài)都需要一個(gè)變換器將其轉(zhuǎn)換成電信號(hào),而且這個(gè)電信號(hào)有時(shí)還需要經(jīng)過(guò)處理,使其成為能被MCU容易識(shí)別和處理的數(shù)字邏輯信號(hào),這是因?yàn)閱纹瑱C(jī)常用的輸入接口通常都是數(shù)字接口。單片機(jī)I/O接口的邏輯是數(shù)字邏輯電平,即以電壓的高和低作為邏輯“1”和“0”,因此進(jìn)入單片機(jī)的信號(hào)要求是電壓信號(hào)。這些電壓信號(hào)又可分為單次信號(hào)和連續(xù)信號(hào)。按鍵的分類按鍵輸入原理按鍵開(kāi)關(guān)的抖動(dòng)問(wèn)題鍵盤(pán)由一組規(guī)則排列的按鍵組成,一個(gè)按鍵實(shí)際上是一個(gè)開(kāi)關(guān)元件,也就是說(shuō)鍵盤(pán)是一組規(guī)則排列的開(kāi)關(guān)。單片機(jī)使用的按鍵是一種常開(kāi)型的開(kāi)關(guān),平時(shí)按鍵的兩個(gè)觸點(diǎn)處于斷開(kāi)狀態(tài),按下鍵時(shí)它們才閉合。二、按鍵1.按鍵的分類

按鍵按照結(jié)構(gòu)原理可分為兩類:1.觸點(diǎn)式開(kāi)關(guān)按鍵,如機(jī)械式開(kāi)關(guān)、導(dǎo)電橡膠式開(kāi)關(guān)等;2.無(wú)觸點(diǎn)開(kāi)關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。按鍵按照接口原理可分為:1.編碼鍵盤(pán)2.非編碼鍵盤(pán)

編碼鍵盤(pán)主要是用硬件來(lái)實(shí)現(xiàn)對(duì)鍵的識(shí)別,非編碼鍵盤(pán)主要是由軟件來(lái)實(shí)現(xiàn)鍵盤(pán)的定義與識(shí)別。前者造價(jià)低,后者壽命長(zhǎng)。目前單片機(jī)系統(tǒng)中最常見(jiàn)的是觸點(diǎn)式開(kāi)關(guān)按鍵。

2.按鍵輸入原理

在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門(mén)的復(fù)位電路及專一的復(fù)位功能外,其他按鍵都是以開(kāi)關(guān)狀態(tài)來(lái)設(shè)置控制功能或輸入數(shù)據(jù)。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),單片機(jī)系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,按鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過(guò)程。對(duì)于一個(gè)鍵盤(pán)或一組按鍵,單片機(jī)系統(tǒng)中總有一個(gè)接口電路與CPU相連。CPU可以采用查詢或中斷方式了解有無(wú)按鍵輸入并檢查是哪一個(gè)鍵按下,然后轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。3.按鍵開(kāi)關(guān)的抖動(dòng)問(wèn)題

單片機(jī)系統(tǒng)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的按鍵。當(dāng)機(jī)械觸點(diǎn)斷開(kāi)、閉合時(shí),會(huì)有抖動(dòng),如下圖所示。在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。常用的去抖動(dòng)方法有兩種:

a.硬件方法

b.軟件方法PD7a.硬件方法

在硬件上可采用在鍵輸出端加R-S觸發(fā)器(雙穩(wěn)態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成去抖動(dòng)電路,如圖所示。電路工作過(guò)程

按鍵未按下時(shí),a=0,b=1,輸出Q=1,按鍵按下時(shí),因按鍵的機(jī)械彈性作用的影響,使按鍵產(chǎn)生抖動(dòng),當(dāng)開(kāi)關(guān)沒(méi)有穩(wěn)定到達(dá)b端時(shí),因與非門(mén)2輸出為0反饋到與非門(mén)1的輸入端,封鎖了與非門(mén)1,雙穩(wěn)態(tài)電路的狀態(tài)不會(huì)改變,輸出保持為1,輸出Q不會(huì)產(chǎn)生抖動(dòng)的波形。當(dāng)開(kāi)關(guān)穩(wěn)定到達(dá)b端時(shí),因a=1,b=0,使Q=0,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn)。當(dāng)釋放按鍵時(shí),在開(kāi)關(guān)未穩(wěn)定到達(dá)a端時(shí),因Q=0,封鎖了與非門(mén)2,雙穩(wěn)態(tài)電路的狀態(tài)不變,輸出Q保持不變,消除了后沿的抖動(dòng)波形。當(dāng)開(kāi)關(guān)穩(wěn)定到達(dá)a端時(shí),因a=0,b=1,使Q=1,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn),輸出Q重新返回原狀態(tài)。由此可見(jiàn),鍵盤(pán)輸出經(jīng)雙穩(wěn)態(tài)電路之后,輸出已變?yōu)橐?guī)范的矩形方波。電路工作過(guò)程:

軟件方法其實(shí)很簡(jiǎn)單,就是在單片機(jī)獲得P1.0口為低電平的信息后,不是立即認(rèn)定S已被按下,而是延時(shí)10ms或更長(zhǎng)一些時(shí)間后再次檢測(cè)P1.0口,如果仍為低電平,說(shuō)明S的確按下了,這實(shí)際上是避開(kāi)了按鍵按下時(shí)的抖動(dòng)時(shí)間。而在檢測(cè)到按鍵釋放后(P1.0為高電平)再延時(shí)5~10ms,消除后沿的抖動(dòng),然后再對(duì)鍵值處理。當(dāng)然,在實(shí)際應(yīng)用中,對(duì)按鍵的要求也是千差萬(wàn)別的,要根據(jù)不同的需要來(lái)編制處理程序,但以上是消除按鍵抖動(dòng)的原則。b.軟件方法

如果系統(tǒng)只需幾個(gè)按鍵,可直接采用I/O線構(gòu)成單個(gè)按鍵電路,各個(gè)按鍵之間相互獨(dú)立,一根線上的按鍵狀態(tài)不會(huì)影響其他輸入線上的工作狀態(tài),又稱獨(dú)立式鍵盤(pán)接口電路。這種電路每個(gè)按鍵需要占用一根I/O線,在按鍵數(shù)量較多時(shí),輸入口浪費(fèi)大且電路結(jié)構(gòu)很煩瑣,因此這種鍵盤(pán)接口電路只適用于按鍵較少或要求較高操作速度的場(chǎng)合。三、鍵盤(pán)與單片機(jī)的連接PD4PD6PD7PD5PD5PD6PD7INT0三、鍵盤(pán)與單片機(jī)的連接1.矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理2.矩陣式鍵盤(pán)按鍵的識(shí)別3.鍵盤(pán)的編碼4.鍵盤(pán)的工作方式四、矩陣式鍵盤(pán)1.矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理用I/O口線組成行、列結(jié)構(gòu),行列線分別連在按鍵開(kāi)關(guān)的兩端,按鍵處在行列線的交叉點(diǎn)上K1K2K3K4K5K6K7K8K9K10K11K12K13K14K15K16a.掃描法b.線反轉(zhuǎn)法2.矩陣式鍵盤(pán)按鍵的識(shí)別

以4×4鍵盤(pán)為例:(1)判斷是否有鍵按下:使行線都輸出0,檢測(cè)列線的電平。如果列線上的電平全為高,則表示沒(méi)有鍵被按下。如果列線上的電平不全為高,則表示有鍵被按下。(2)按鍵鍵值:如果沒(méi)有鍵閉合,就返回掃描。如果有鍵閉合,再進(jìn)行逐行掃描,找出閉合鍵的鍵號(hào)。先使D0=0,D1~D3=1,檢測(cè)D4~D7上的電平,如果D4=0,表示K1鍵被按下;同理,如果D5~D7=0,分別表示K2、K3、K4鍵被按下;如果D4~D7=1,則表示這一行沒(méi)有鍵被按下。再使D1=0,D0、D2、D3為1,對(duì)第二行進(jìn)行掃描,這樣依次進(jìn)行下去,直到把閉合的鍵找到為止。a.掃描法ucharkey_scan()//掃描法{

uchari,j,m,n;

ucharkey=0;

uchart[4]={0xf7,0xfb,0xfd,0xfe};

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

{

DDRD=0X0f;

j=t[i];

PORTD=j;

if((PIND&0X10)==0)

{

delay(5);

if((PIND&0X10)==0)

{

while((PIND&0X10)==0);

returnkey;

break;

}

}

key++;

if((PIND&0X20)==0)

{

delay(5);

if((PIND&0X20)==0)

{

while((PIND&0X20)==0);

returnkey;

break;

}

}

key++;

if((PIND&0X40)==0)

{

delay(5);

if((PIND&0X40)==0)

{

while((PIND&0X40)==0);

returnkey;

break;

}

}

key++;

if((PIND&0X08)==0)

{

delay(5);

if((PIND&0X08)==0)

{

while((PIND&0X08)==0);

returnkey;

break;

}

}

key++;

}

return0xff;//如果沒(méi)有健按下返回0xff}b.線反轉(zhuǎn)法

(a)線反轉(zhuǎn)法第一步(b)線反轉(zhuǎn)法第二步圖線反轉(zhuǎn)法原理b.線反轉(zhuǎn)法a.獨(dú)立式鍵盤(pán)按鍵數(shù)量少,可根據(jù)實(shí)際需要靈活編碼。b.矩陣式鍵盤(pán)按鍵的位置由行號(hào)和列號(hào)唯一確定,因此可分別對(duì)行號(hào)和列號(hào)進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高4位是行號(hào),低4位是列號(hào)。無(wú)論以何種方式編碼,均應(yīng)以處理問(wèn)題方便為原則,而最基本的就是鍵所處的物理位置即行號(hào)和列號(hào),它是各種編碼之間相互轉(zhuǎn)換的基礎(chǔ),編碼相互轉(zhuǎn)換可通過(guò)計(jì)算或查表的方法實(shí)現(xiàn)。

總結(jié):3.鍵盤(pán)的編碼a.編程掃描方式b.定時(shí)掃描方式c.中斷掃描方式

4.鍵盤(pán)的工作方式編程掃描方式是利用CPU完成其他工作的空余調(diào)用鍵盤(pán)掃描子程序來(lái)響應(yīng)鍵盤(pán)輸入的要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求,直到CPU重新掃描鍵盤(pán)為止。

鍵盤(pán)掃描程序一般應(yīng)包括以下內(nèi)容:

(1)判別有無(wú)鍵按下。(2)鍵盤(pán)掃描取得閉合鍵的行、列值。(3)用計(jì)算法或查表法得到鍵值。(4)判斷閉合鍵是否釋放,如沒(méi)釋放則繼續(xù)等待。(5)將閉合鍵鍵號(hào)保存,同時(shí)轉(zhuǎn)去執(zhí)行該閉合鍵的功能。

a.編程掃描方式定時(shí)掃描方式就是每隔一段時(shí)間對(duì)鍵盤(pán)掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定時(shí)間(例如10ms)的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷,CPU響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描,并在有鍵按下時(shí)識(shí)別出該鍵,再執(zhí)行該鍵的功能程序。b.定時(shí)掃描方式當(dāng)無(wú)鍵按下時(shí),CPU處理自己的工作,當(dāng)有鍵按下時(shí),產(chǎn)生中斷請(qǐng)求,CPU轉(zhuǎn)去執(zhí)行鍵盤(pán)掃描子程序,并識(shí)別鍵號(hào)。中斷掃描方式可以提高CPU工作效率。圖中的4輸入與門(mén)用于產(chǎn)生按鍵中斷,其輸入端與各列線相連,再通過(guò)上拉電阻接至+5V電源,輸出端接至16的外部中斷輸入端。具體工作如下:當(dāng)鍵盤(pán)無(wú)鍵按下時(shí),與門(mén)各輸入端均為高電平,保持輸出端為高電平;當(dāng)有鍵按下時(shí),端為低電平,向CPU申請(qǐng)中斷,若CPU開(kāi)放外部中斷,則會(huì)響應(yīng)中斷請(qǐng)求,轉(zhuǎn)去執(zhí)行鍵盤(pán)掃描子程序。c.中斷掃描方式PB0PB1PB2PB3PB4PB5PB6PB7ATmega16單片機(jī)的PB口作為鍵盤(pán)I/O口,鍵盤(pán)的列線接到PB口的高4位,鍵盤(pán)的行線接到PB口的低4位。作為輸入時(shí)要打開(kāi)內(nèi)部上拉電阻功能。在按鍵和I/O之間有一排限流電阻。4根行線和4根列線形成16個(gè)相交點(diǎn),即:4*4鍵盤(pán)。五、矩陣鍵盤(pán)的接口實(shí)例(1)檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的方法是PB0~PB3輸出全“0”,讀取PB4~PB7的狀態(tài),若PB4~PB7為全“1”,則無(wú)鍵閉合,否則有鍵閉合。(2)高四位PB4~PB7輸出“0”,低四位PB0~PB3為輸入。讀取PB0~PB3狀態(tài)。(3)把兩次輸入的值組合成一個(gè)8位的數(shù)據(jù),即按鍵編碼,由于每一行和列的交叉點(diǎn)唯一確定一個(gè)按鍵,所以這個(gè)按鍵編碼對(duì)應(yīng)一個(gè)唯一的按鍵。

如果01110111,則這個(gè)編碼對(duì)應(yīng)著十六進(jìn)制數(shù)?(4)后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。(5)執(zhí)行相應(yīng)的按鍵對(duì)應(yīng)程序。任務(wù)2多功能按鍵控制LED燈一、任務(wù)要求:利用ATmega16單片機(jī)數(shù)字I/O口,實(shí)現(xiàn)對(duì)按鍵狀態(tài)的讀取,控制霓虹燈的不同顯示花樣。例如:當(dāng)按下開(kāi)關(guān)按鍵K0按下LED進(jìn)入可以點(diǎn)亮狀態(tài),K1有效,再按一下LED進(jìn)入熄滅狀態(tài),K1無(wú)效;連續(xù)按功能按鍵K1可以實(shí)現(xiàn)彩燈D1,D2,D3,D4的交替點(diǎn)亮,模擬家庭多功能彩燈功能。二、硬件電路三、程序設(shè)計(jì)任務(wù)3矩陣式鍵盤(pán)鍵值識(shí)別一、任務(wù)要求:設(shè)計(jì)一個(gè)4×4的矩陣鍵盤(pán)識(shí)別顯示系統(tǒng),利用ATmega16單片機(jī)的4個(gè)數(shù)字I/O口作為行線、4個(gè)數(shù)字I/O端口作為列線,有按鍵按下數(shù)碼管顯示對(duì)應(yīng)鍵值,并通過(guò)數(shù)碼管顯示按鍵的鍵值。二、硬件電路將十六個(gè)按鍵按照4×4的矩陣排列,按鍵兩端按照下圖所示分別接到PD0~PD7,顯示部分采用了單個(gè)數(shù)碼管。三、程序設(shè)計(jì)任務(wù)4電話撥號(hào)顯示控制一、任務(wù)要求:設(shè)計(jì)一個(gè)電話撥號(hào)顯示系統(tǒng),利用ATmega16單片機(jī)作為控制器,4×4的矩陣

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論