鍵盤及LED驅(qū)動(dòng)設(shè)計(jì)方案_第1頁(yè)
鍵盤及LED驅(qū)動(dòng)設(shè)計(jì)方案_第2頁(yè)
鍵盤及LED驅(qū)動(dòng)設(shè)計(jì)方案_第3頁(yè)
鍵盤及LED驅(qū)動(dòng)設(shè)計(jì)方案_第4頁(yè)
鍵盤及LED驅(qū)動(dòng)設(shè)計(jì)方案_第5頁(yè)
已閱讀5頁(yè),還剩5頁(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)介

1、.1. 模塊描述 該模塊能夠直接驅(qū)動(dòng)8個(gè)共陰式(或8個(gè)共陽(yáng)式)數(shù)碼管位(或64只獨(dú)立的LED),同時(shí)還可以掃描管理多達(dá)64只按鍵。其中有8只按鍵還可以作為功能鍵使用,如同電腦鍵盤上的Ctrl、Shift、Alt 鍵一樣。2. 模塊總體設(shè)計(jì)2.1總體實(shí)現(xiàn)結(jié)構(gòu) 圖1:鍵盤掃描及LED驅(qū)動(dòng)模塊結(jié)構(gòu)圖2.2 總體實(shí)現(xiàn)描述 timedistribute模塊為displayctrl和keyscan模塊分配工作時(shí)間,并控制interface模塊雙向端口的輸入輸出的轉(zhuǎn)換。 displayctrl模塊根據(jù)dpram提供的顯示數(shù)據(jù)及要掃描的數(shù)碼管的個(gè)數(shù)scannum提供相應(yīng)的顯示控制信號(hào)及顯示數(shù)據(jù)。 keysca

2、n模塊完成對(duì)鍵盤的掃描及對(duì)功能鍵、普通鍵及連擊次數(shù)、按鍵鍵值的判斷。2.3 接口信號(hào)定義 序號(hào)信號(hào)名位寬I/O描述1dpram0dpram764I對(duì)應(yīng)的8個(gè)數(shù)碼管的數(shù)據(jù)。2scannum3I要顯示的數(shù)碼管的個(gè)數(shù)。3sel8O數(shù)碼管的位選信號(hào)。4dt8O數(shù)碼管的顯示數(shù)據(jù)5p_wr1O寄存器PressKey和RepeatCnt的寫信號(hào)。6presskey8O普通按鍵的鍵值。當(dāng)掃描到有普通按鍵按下時(shí),輸出按鍵鍵值,結(jié)果將存于鍵值寄存器PressKey中。7repeatcnt8O普通鍵的連擊次數(shù)。當(dāng)普通按鍵連續(xù)按下時(shí),輸出按鍵的連擊次數(shù),結(jié)果將存于連擊次數(shù)計(jì)數(shù)器RepeatCnt中。8function

3、key8O功能鍵的狀態(tài)。每一位對(duì)應(yīng)一個(gè)功能鍵(F7F0),第0位(LSB)對(duì)應(yīng)F0,第1位對(duì)應(yīng)F1,依次類推,第7位(MSB)對(duì)應(yīng)F7。某一功能鍵被按下時(shí),相應(yīng)的功能鍵寄存器FunctionKey對(duì)應(yīng)的位就清零。9f_wr1O寄存器FunctionKey寫使能信號(hào)。10flashswh8I數(shù)碼管位的閃爍和不閃爍狀態(tài)。例:當(dāng)FlashSwth.0設(shè)置為1時(shí),則對(duì)應(yīng)的管位0處于閃爍狀態(tài);若設(shè)置為0時(shí),該管位不閃爍。(FlashSwth.7FlashSwth.0 對(duì)應(yīng) DIG7DIG0)。11flashfreq8I數(shù)碼管閃爍頻率和占空比。高4 位表示閃爍時(shí)亮的持續(xù)時(shí)間,低4 位表示閃爍時(shí)滅的持續(xù)時(shí)間

4、。FlashFreq的1個(gè)單位相當(dāng)于256ms(亮和滅的時(shí)間范圍為116,0000B相當(dāng)1個(gè)時(shí)間單位)。12chg1ODig端口的控制信號(hào)。13kin8I掃描輸入信號(hào)。14kout_data1O掃描輸出信號(hào)。15kout_sel8OSeg端口控制信號(hào)。3. 模塊劃分 該部分電路可劃分為三個(gè)部分:timedistribute(時(shí)間分配模塊)、displayctrl(顯示控制模塊)、keyscan(鍵盤掃描模塊)。1.timedistribute模塊完成的基本功能 分配displayctrl模塊和keyscan模塊的工作時(shí)間; 提供端口復(fù)用的控制信號(hào); 2.displayctrl模塊完成的基本功能

5、 分析掃描數(shù)碼管的個(gè)數(shù),然后為要顯示的數(shù)碼管分配掃描時(shí)間; 產(chǎn)生數(shù)碼管顯示控制信號(hào),并選擇相應(yīng)的顯示數(shù)據(jù); 分析閃爍信息,控制數(shù)碼管閃爍顯示;3.keyscan模塊完成的基本功能 在系統(tǒng)分配的時(shí)間內(nèi)完成鍵盤的掃描,并檢測(cè)掃描結(jié)果; 消除按鍵抖動(dòng)的影響; 分析判斷按鍵是普通按鍵還是功能鍵; 判斷按鍵鍵值及連擊的次數(shù); 提供產(chǎn)生的按鍵信息數(shù)據(jù)有效信號(hào);4. 分模塊實(shí)現(xiàn)4.1 timedistribute模塊實(shí)現(xiàn) 該模塊將系統(tǒng)時(shí)間分為兩部分,一部分模塊displayctrl工作,另一部分模塊keyscan工作,其中1ms中keyscan工作時(shí)間為8us,其余時(shí)間displayctrl工作;產(chǎn)生控制端

6、口復(fù)用的控制信號(hào)。 該模塊實(shí)際上就是一個(gè)分頻器,將系統(tǒng)1MHz時(shí)鐘分為所需要的時(shí)鐘頻率(1KHz)。具體實(shí)現(xiàn)略。4.2displayctrl模塊實(shí)現(xiàn) 該模塊產(chǎn)生數(shù)碼管的顯示控制信號(hào)及選擇相應(yīng)的輸出數(shù)據(jù)。4.2.1 接口信號(hào)定義序號(hào)信號(hào)名位寬I/O描述1dpram64I8個(gè)數(shù)碼管64個(gè)管段的顯示數(shù)據(jù)。2scannum3I顯示數(shù)碼管的個(gè)數(shù)。3en1I控制信號(hào),為1時(shí)工作,為0時(shí)不工作。4clk1I工作時(shí)鐘。5res1I系統(tǒng)復(fù)位信號(hào)。6sel8O數(shù)碼管顯示控制信號(hào)。7dt8O數(shù)碼管顯示數(shù)據(jù)。 8flashswh8I數(shù)碼管位的閃爍和不閃爍狀態(tài)。例:當(dāng)FlashSwth.0設(shè)置為1時(shí),則對(duì)應(yīng)的管位0處于

7、閃爍狀態(tài);若設(shè)置為0時(shí),該管位不閃爍。(FlashSwth.7FlashSwth.0 對(duì)應(yīng) DIG7DIG0)。 9flashfreq8I數(shù)碼管閃爍頻率和占空比。高4 位表示閃爍時(shí)亮的持續(xù)時(shí)間,低4 位表示閃爍時(shí)滅的持續(xù)時(shí)間。FlashFreq的1個(gè)單位相當(dāng)于256ms(亮和滅的時(shí)間范圍為116,0000B相當(dāng)1個(gè)時(shí)間單位)。4.2.2displayctrl詳細(xì)設(shè)計(jì) 該模塊的電路結(jié)構(gòu)框圖如下: 圖2:displayctrl模塊結(jié)構(gòu)圖 圖中,state_reg是當(dāng)前狀態(tài)寄存器,存儲(chǔ)當(dāng)前的狀態(tài),當(dāng)res無(wú)效且en有效時(shí),在時(shí)鐘的上升沿將下一個(gè)狀態(tài)存入當(dāng)前狀態(tài);可變頻信號(hào)發(fā)生器課產(chǎn)生flashfre

8、q指示的頻率和占空比的信號(hào);其他的模塊如next_state、dig_ctrl、lg_c和data_sel都是組合電路,他們的邏輯描述如下:1、 next_state的邏輯: Scannum=000 y0=0;y1y7=1; Scannum=001 y1=0;y0y7=1; Scannum=010 y2=0;y0y7=1; Scannum=011 y3=0;y0y7=1; Scannum=100 y4=0;y0y7=1; Scannum=101 y5=0;y0y7=1; Scannum=110 y6=0;y0y7=1; Scannum=111 y7=0;y0y6=1; 圖3:displayct

9、rl模塊狀態(tài)轉(zhuǎn)移圖注:s0s7表示當(dāng)前狀態(tài)。2、 dig_ctrl的邏輯: s0:dig=11111110;s1:dig=11111101; s2:dig=11111011;s3:dig=11110111; s4:dig=11101111;s5:dig=11011111; s6:dig=10111111;s7:dig=01111111;3、 data_sel的邏輯: s0:seg=dpram0;s1=flashswh0s1:seg=dpram1;s1=flashswh1 s2:seg=dpram2;s1=flashswh2s3:seg=dpram3;s1=flashswh3 s4:seg=dp

10、ram4;s1=flashswh4s5:seg=dpram5;s1=flashswh5 s6:seg=dpram6;s1=flashswh6s7:seg=dpram7;s1=flashswh7注:dpram0=dpram7:0,dpram1=dpram15:8.dpram7=dpram63:56。4、 lg_c的邏輯: 圖4:lg_c電路邏輯實(shí)現(xiàn)圖4.3 keyscan模塊的實(shí)現(xiàn)4.3.1總體實(shí)現(xiàn)結(jié)構(gòu) 該模塊主要完成鍵盤掃描、按鍵去抖動(dòng)、連擊判斷、按鍵識(shí)別等功能,該模塊系統(tǒng)框圖如下: 圖5: keyscan模塊結(jié)構(gòu)框圖 掃描電路產(chǎn)生逐行掃描信號(hào),對(duì)鍵盤進(jìn)行逐行掃描,同時(shí)將掃描的結(jié)果及產(chǎn)生相關(guān)的

11、控制信號(hào)給按鍵識(shí)別電路;按鍵識(shí)別電路根據(jù)掃描電路傳遞來(lái)的數(shù)據(jù),經(jīng)過(guò)消除抖動(dòng)處理后產(chǎn)生按鍵信息數(shù)據(jù)及數(shù)據(jù)有效的標(biāo)志信號(hào)。4.3.2接口信號(hào)定義序號(hào)信號(hào)名位寬I/O描述1en1I工作使能信號(hào)。2res1I系統(tǒng)復(fù)位信號(hào)。3clk3I工作時(shí)鐘;電路工作時(shí)需3個(gè)頻率的時(shí)鐘,均有外部提供。4kin8I掃描結(jié)果輸入端口。5kout_data1O掃描輸出數(shù)據(jù)端口。 6p_wr1OPressKey、RepeatCnt寄存器的寫使能信號(hào)。 7presskey8O普通按鍵的鍵值。當(dāng)掃描到有普通按鍵按下時(shí),輸出按鍵鍵值,結(jié)果將存于鍵值寄存器PressKey中。 8repeatcnt8O普通鍵的連擊次數(shù)。當(dāng)普通按鍵連續(xù)

12、按下時(shí),輸出按鍵的連擊次數(shù),結(jié)果將存于連擊次數(shù)計(jì)數(shù)器RepeatCnt中。9functionkey8O功能鍵的狀態(tài)。每一位對(duì)應(yīng)一個(gè)功能鍵(F7F0),第0位(LSB)對(duì)應(yīng)F0,第1位對(duì)應(yīng)F1,依次類推,第7位(MSB)對(duì)應(yīng)F7。某一功能鍵被按下時(shí),相應(yīng)的功能鍵寄存器FunctionKey對(duì)應(yīng)的位就清零。16f_wr1O寄存器FunctionKey的寫使能信號(hào)。17kout_sel8O頂層端口Seg轉(zhuǎn)換控制信號(hào)。4.3.3詳細(xì)設(shè)計(jì) 本模塊又可以分為兩個(gè)模塊:掃描電路及按鍵識(shí)別電路。下面分模塊詳細(xì)介紹各模塊的實(shí)現(xiàn)。1、 掃描電路 該模塊主要完成的任務(wù):1.產(chǎn)生掃描信號(hào);2.分析掃描結(jié)果按鍵信息數(shù)據(jù)

13、(keymes0keymes7)。1)接口信號(hào)定義序號(hào)信號(hào)名位寬I/O描述1kin8I掃描輸入數(shù)據(jù)。2kout_data1O掃描數(shù)據(jù)輸出;該電路工作時(shí)輸出0,不工作是輸出1。3kmes8O掃描到的按鍵信息。4clk1I工作時(shí)鐘。5res1I系統(tǒng)復(fù)位信號(hào)。6en1I工作使能信號(hào)。 7pf_w1O寄存器寫信號(hào),0時(shí)寫入pressreg,1時(shí)寫入functionreg。 8kout_sel8O頂層端口Seg轉(zhuǎn)換控制信號(hào)。2)該模塊的結(jié)構(gòu)電路圖 圖6: 掃描電路結(jié)構(gòu)框圖3) 詳細(xì)實(shí)現(xiàn)描述A.掃描信號(hào) 這部分電路的工作邏輯描述如下:當(dāng)res有效時(shí),電路被復(fù)位,復(fù)位時(shí)kout_data=1;否則en有效時(shí)

14、kout_data=0,kout_sel輸出頂層雙向端口Seg的控制信號(hào)(其控制邏輯將在后面描述),p_w為pressreg的寫信號(hào),即在對(duì)普通鍵的一次掃描結(jié)束后將本次掃描結(jié)果寫入pressreg中,f_w為功能鍵寫使能信號(hào),f_w=0時(shí)keymes將寫入functionreg中,為1時(shí)將寫入scanreg(掃描數(shù)據(jù)暫存寄存器)中,state為掃描行信息。kout_sel的邏輯描述:state=000:kout_sel=01111111state=001:kout_sel=10111111state=010:kout_sel=11011111state=011:kout_sel=1110111

15、1state=100:kout_sel=11110111state=101:kout_sel=11111011state=110:kout_sel=11111101state=111:kout_sel=11111110B.數(shù)選器的實(shí)現(xiàn)略。C.編碼器 編碼器這部分電路時(shí)組合電路,主要用來(lái)產(chǎn)生第二次掃描的行掃描信號(hào)和掃描到的普通按鍵的按鍵信息pkd(pkd為8bit,低四位為按鍵的列信息,高四位為行信息)。 這部分的主要邏輯為:當(dāng)kin7:0為FFH時(shí)(無(wú)按鍵按下)輸出scmes、pdk為00H;當(dāng)有按鍵按下時(shí)對(duì)按鍵信息進(jìn)行編碼,編碼格式為:pdk的編碼原則為:低四位為按鍵的列信息,高四位為行信息

16、;當(dāng)按下按鍵為多個(gè)時(shí)(即0的個(gè)數(shù)有2個(gè)以上),只對(duì)優(yōu)先級(jí)最高的進(jìn)行編碼。scmes的編碼原則為:它的編碼只與kin7:0有關(guān),有按鍵按下則為按下按鍵行的掃描信號(hào),如由kin7:0知第二行和第四行同時(shí)有按鍵按下,則輸出第二行的掃描信號(hào)scmes=FDH;沒(méi)按鍵按下scmes=FFH,即不掃描任何行。2、按鍵識(shí)別電路1)該電路的主要功能 該電路主要完成按鍵識(shí)別工作,包括消除按鍵的抖動(dòng)、記錄普通按鍵的連擊次數(shù)、普通按鍵的鍵值、功能按鍵的狀態(tài)及產(chǎn)生相應(yīng)的控制信號(hào)。2)接口信號(hào)定義序號(hào)信號(hào)名位寬I/O描述1en1I工作使能信號(hào)。2res1I系統(tǒng)復(fù)位信號(hào)。3clk1I工作時(shí)鐘。4kmes8I檢測(cè)到的按下按

17、鍵的信息。 5presskey8O普通按鍵的鍵值。當(dāng)掃描到有普通按鍵按下時(shí),輸出按鍵鍵值,結(jié)果將存于鍵值寄存器PressKey中。 6repeatcnt8O普通鍵的連擊次數(shù)。當(dāng)普通按鍵連續(xù)按下時(shí),輸出按鍵的連擊次數(shù),結(jié)果將存于連擊次數(shù)計(jì)數(shù)器RepeatCnt中。7functionkey8O功能鍵的狀態(tài)。每一位對(duì)應(yīng)一個(gè)功能鍵(F7F0),第0位(LSB)對(duì)應(yīng)F0,第1位對(duì)應(yīng)F1,依次類推,第7位(MSB)對(duì)應(yīng)F7。某一功能鍵被按下時(shí),相應(yīng)的功能鍵寄存器FunctionKey對(duì)應(yīng)的位就清零。8f_wr1O寄存器FunctionKey的寫使能信號(hào)。9p_wr1OPressKey、RepeatCnt寄

18、存器的寫使能信號(hào)。 10f_w1I寄存器寫信號(hào),0時(shí)寫入functionregreg,1時(shí)寫入scanreg。 11p_w1I一次掃描結(jié)束信號(hào),0為有效值。3) 寄存器說(shuō)明 普通鍵信息寄存器pressreg(8bit):用來(lái)暫存檢測(cè)到的普通按鍵的鍵值信息。 標(biāo)志寄存器flag(8bit):第0bit為普通按鍵消除抖動(dòng)后的狀態(tài),為1表示按鍵按下, 0表示按鍵沒(méi)按下;第1bit為普通鍵信息寄存器pressreg狀態(tài)標(biāo)志位,0表示寄存器中沒(méi)數(shù)據(jù),1表示有數(shù)據(jù)。 功能鍵狀態(tài)寄存器functionreg(8bit):暫存每次掃描到的功能鍵的狀態(tài)。 掃描數(shù)據(jù)暫存寄存器scanreg(8bit):暫存一次掃

19、描的中掃描到的普通按鍵的鍵值信息,在一次掃描結(jié)束后,將其中的數(shù)據(jù)寫入pressreg中。 4) 電路實(shí)現(xiàn)結(jié)構(gòu) 圖7:按鍵識(shí)別電路結(jié)構(gòu)圖 圖中pressreg、flag、functionreg、scanreg是8位的寄存器(其功能請(qǐng)參照寄存器說(shuō)明);pscancnt用來(lái)記錄presseg里記錄的按鍵連續(xù)被掃描到的次數(shù);keynum產(chǎn)生按下按鍵的鍵值;repeat用來(lái)記錄pressreg中按鍵的連擊的次數(shù);f_cnt記錄每個(gè)功能鍵按下?tīng)顟B(tài)持續(xù)的時(shí)間,分析記錄結(jié)果后產(chǎn)生功能鍵的狀態(tài)信息;ctrl是pressreg和pscancnt的控制中心,對(duì)相關(guān)信息分析后產(chǎn)生對(duì)其的控制信號(hào)。5) 各部分的詳細(xì)設(shè)計(jì) A. ctrl詳細(xì)設(shè)計(jì) 圖8:ctrl電路實(shí)現(xiàn)邏輯圖 圖中cmp為比較器,sdata比pdata小,則s1輸出0,否則輸出1;相等時(shí)s2輸出0,否則輸出1;ps_lg的邏輯描述如下:c_en=0:fd0=0,p_w=0,s2=0;fd0=1,p_w=0,s2=1;c_clr=0:p_w=0,s2=1;p_w=0,s3=0;B. pa

溫馨提示

  • 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)論