日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]如圖4.14.2所示,用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線;在數(shù)碼管上顯示每個按鍵的“0-F”序號。對應(yīng)的按鍵的序號排列如圖4.14.1所示500)this.width=500'>300)this.

如圖4.14.2所示,用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線;在數(shù)碼管上顯示每個按鍵的“0-F”序號。對應(yīng)的按鍵的序號排列如圖4.14.1所示


500)this.width=500'>300)this.width=300" border=0>

圖4.14.1

2.硬件電路原理圖

500)this.width=500'>300)this.width=300" border=0>

圖4.14.2

3.系統(tǒng)板上硬件連線

(1. 把“單片機(jī)系統(tǒng)“區(qū)域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區(qū)域中的C1-C4 R1-R4端口上;

(2. 把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0-P0.7/AD7端口用8芯排線連接到“四路靜態(tài)數(shù)碼顯示模塊”區(qū)域中的任一個a-h(huán)端口上;要求:P0.0/AD0對應(yīng)著a,P0.1/AD1對應(yīng)著b,……,P0.7/AD7對應(yīng)著h。

4.程序設(shè)計內(nèi)容

(1. 4×4矩陣鍵盤識別處理

(2. 每個按鍵有它的行值和列值 ,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端(列線)通過電阻接VCC,而接地是通過程序輸出數(shù)字“0”實現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無鍵按下,判斷哪一個鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。兩個并行口中,一個輸出掃描碼,使按鍵逐行動態(tài)接地,另一個并行口輸入按鍵狀態(tài),由行掃描值和回饋信號共同形成鍵編碼而識別按鍵,通過軟件查表,查出該鍵的功能。

5.程序框圖

500)this.width=500'>300)this.width=300" border=0>


2樓 Juliet發(fā)表于2006-5-10 11:22:00  設(shè)計中你是否遇到過這樣的問題:你的產(chǎn)品上要求有幾十個按鍵,處理器IO口很少,PCB的面積又有嚴(yán)格限制,或者你要嚴(yán)格控制成本,無法使用象7219那樣的擴(kuò)展芯片,怎么解決這個問題?


下面有個方法,大家都見過遙控器吧,上面不但有幾十個按鍵,而且功能還挺多什么去抖動,同時按鍵處理都有了,最最重要的是控制芯片體積小,價格便宜(也就1,2塊錢),外圍器件少。。不過具體實現(xiàn)起來有點(diǎn)小麻煩,這類芯片的信號一般是PPM輸出的,通常為了有更遠(yuǎn)的遙控距離,按鍵編碼調(diào)制在一個38k左右的載波上。所以我們不得不再為這個方案多花上1塊錢,加一個有爛運(yùn)放做的低通濾波器,將載波濾除后在接到單片機(jī)的IO腳上,由于兩個頻率相差較多,這個濾波器并不難做。我使用LM324做的。其中有兩級低通,一個比較器。

當(dāng)你的示波器上出現(xiàn)一串可愛的幾百赫茲的方波時,你的硬件就成功啦。既然只用一條IO就擴(kuò)展了幾十個按鍵,軟件上自然會多費(fèi)些事,此類芯片發(fā)碼都是有引導(dǎo)頭,同步部分,用戶碼,鍵碼等部分組成,有三十多個位,具體可參照sc6121資料。下面時一個完整的接收程序,針對的芯片是sc6121,處理器89c51

///////////////////////////////////////////////////////////////////////////////

/*定時器1中斷服務(wù)程序*/

/*

每100us中斷一次,定時檢測HangSignal線上的電平狀態(tài),根據(jù)6121的砝碼格式譯出用戶碼鍵碼.\

ib_KeyCode[0] 用戶碼低位

,ib_KeyCode[1]用戶碼高位

,ib_KeyCode[2]鍵碼

,ib_KeyCode[3]鍵碼的反碼

*/

/////////////////////////////////////////////////////////////////////////////////////

void HandIn() interrupt 3 using 3 {

unsigned char tempbit=0;

bit Hbit;

Hbit=HandSignal; /*采樣信號線*/

if (NewKey==FALSE){ /*如果上一次按鍵事件已經(jīng)北處理*/

switch (ib_HandState){ /*根據(jù)接收狀態(tài)散轉(zhuǎn)*/

case LEAD: /*引導(dǎo)頭接收情況*/

if (Hbit){ /*如果信號線是高電平*/

if ((ib_LowTime>MIN_LeadTime)&&(ib_LowTime

ib_HandState=START; /*正確進(jìn)入同步頭接收狀態(tài)*/

else ib_HandState=RESTART; /*否則復(fù)位接收程序*/

ib_LowTime=0; /*清除低電平時間計數(shù)*/

}

else{ /*如果信號是低電平*/

ib_LowTime++; /*增加低電平時間計數(shù)器*/

if (ib_LowTime>MAX_LeadTime) /*判斷低電平時間是否超時*/

ib_HandState=RESTART; /*是的話復(fù)位接收程序*/

}

break;

case START: /*同步頭接收情況*/

if(Hbit){ /*如果信號線是高電平*/

ib_HighTime++; /*高電平時間計數(shù)器加一*/

if (ib_HighTime>MAX_SynTime) /*如果高電平時間超長,復(fù)位接收程序*/

ib_HandState=RESTART;

}

else{

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式系統(tǒng)開發(fā)中,經(jīng)常通過鍵盤來實現(xiàn)人機(jī)交互。本文介紹了一種直接利用ARM的I/O口擴(kuò)展矩陣鍵盤的方法。同時以TQ2440開發(fā)板為例,對硬件電路連接和相應(yīng)的linux驅(qū)動設(shè)計方法都作了詳細(xì)說明。

關(guān)鍵字: ARM 矩陣鍵盤 linux驅(qū)動

有的單片機(jī)應(yīng)用需要使用的按鍵數(shù)量比較多,比如:密碼鎖,這時如果按照之前的設(shè)計,一個GPIO控制一個按鍵的話,有點(diǎn)浪費(fèi)單片機(jī)資源,這時候我們常常需要使用矩陣鍵盤。

關(guān)鍵字: 矩陣鍵盤

矩陣鍵盤的使用在單品機(jī)的學(xué)習(xí)當(dāng)中十分廣泛,可是對于許多新手,包括本人有時也是搞不明白,昨天晚上和今天早上的思考和同行們的討論,終于有了點(diǎn)頭緒,所以想記錄下讀取鍵盤的思路。

關(guān)鍵字: 矩陣鍵盤 編程方法 讀取鍵值

基于TX-1C開發(fā)板,電路連接圖如下

關(guān)鍵字: 檢測及使用 矩陣鍵盤

矩陣鍵盤是單片機(jī)外部設(shè)備中所使用的排布類似于矩陣的鍵盤組。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。矩陣鍵盤...

關(guān)鍵字: 單片機(jī) 矩陣鍵盤

在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。

關(guān)鍵字: 單片機(jī) 矩陣鍵盤 掃描識別

鍵盤是一組按壓式開關(guān)的集合,是微機(jī)系統(tǒng)不可缺少的輸入設(shè)備,用于輸入數(shù)據(jù)和命令。鍵盤的每一個按鍵都被賦予一個代碼,稱為鍵碼。鍵盤系統(tǒng)的主要工作包括及時發(fā)現(xiàn)有鍵閉合,求閉合鍵的鍵碼。根據(jù)這一過程的不同,鍵盤可以分為兩種,即編...

關(guān)鍵字: 4×4 控制電路 行列式鍵盤

/**************************文件所用資源1.端口:P22.調(diào)用delay_ms函數(shù)**************************/#include #include #define key...

關(guān)鍵字: 4*4 c51程序 矩陣鍵盤

1.代碼:#include typedef unsigned char u8;typedef unsigned int u16;sbit seg_sel = P1^4;sbit bit_sel = P1^5;#defin...

關(guān)鍵字: 矩陣鍵盤 解碼程序

采用反轉(zhuǎn)法判斷按鍵坐標(biāo),即行號與列號獲得按鍵碼。 寫完后發(fā)現(xiàn)Proteus一個問題:直接使用這樣的if(P10xf0!=0xf0)語句時,調(diào)不出來,當(dāng)用了一個中間變量過渡時,就調(diào)出來了,害我花了一個上午的時間,現(xiàn)在...

關(guān)鍵字: 4x4 單片機(jī) 掃描程序 矩陣鍵盤
關(guān)閉