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

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]如圖4.14.2所示,用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線;在數(shù)碼管上顯示每個(gè)按鍵的“0-F”序號(hào)。對(duì)應(yīng)的按鍵的序號(hào)排列如圖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ù)碼管上顯示每個(gè)按鍵的“0-F”序號(hào)。對(duì)應(yīng)的按鍵的序號(hào)排列如圖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ū)域中的任一個(gè)a-h(huán)端口上;要求:P0.0/AD0對(duì)應(yīng)著a,P0.1/AD1對(duì)應(yīng)著b,……,P0.7/AD7對(duì)應(yīng)著h。

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

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

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

5.程序框圖

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


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


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

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

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

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

/*

每100us中斷一次,定時(shí)檢測(cè)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; /*采樣信號(hào)線*/

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

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

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

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

if ((ib_LowTime>MIN_LeadTime)&&(ib_LowTime

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

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

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

}

else{ /*如果信號(hào)是低電平*/

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

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

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

}

break;

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

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

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

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

ib_HandState=RESTART;

}

else{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

關(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),即行號(hào)與列號(hào)獲得按鍵碼。 寫完后發(fā)現(xiàn)Proteus一個(gè)問題:直接使用這樣的if(P10xf0!=0xf0)語(yǔ)句時(shí),調(diào)不出來(lái),當(dāng)用了一個(gè)中間變量過(guò)渡時(shí),就調(diào)出來(lái)了,害我花了一個(gè)上午的時(shí)間,現(xiàn)在...

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