采用CPLD的專用鍵盤接口芯片的方案設(shè)計(jì)
在單片機(jī)應(yīng)用系統(tǒng)中,存在多種形式的外部數(shù)據(jù)輸入接口界面,例如RS-232C串行通信、鍵盤輸入等[1,4] 。其中利用鍵盤接口輸入數(shù)據(jù),是實(shí)現(xiàn)現(xiàn)場實(shí)時(shí)調(diào)試、數(shù)據(jù)調(diào)整和控制最常用的方法。單片機(jī)的外圍鍵盤擴(kuò)展電路有多種實(shí)現(xiàn)方式,例如直接利用I/O接口線或外接8255A接口芯片,配合適當(dāng)?shù)慕涌诠芾沓绦?,就可以?shí)現(xiàn)外圍鍵盤擴(kuò)展功能。但是,在這些方法中,鍵盤擴(kuò)展電路需要占用單片機(jī)的資源對按鍵進(jìn)行監(jiān)控和處理,這對要求高實(shí)時(shí)性處理的單片機(jī)系統(tǒng)是不現(xiàn)實(shí)的。
本文引用地址:http://butianyuan.cn/article/149206.htm為了解決這一問題,可以使用專用鍵盤接口芯片(例如Intel8279) [2]來組建鍵盤子系統(tǒng)。然而,這類專用鍵盤接口芯片在使用靈活性方面尚有欠缺,尤其當(dāng)用戶需要實(shí)現(xiàn)某些特定功能時(shí),其缺點(diǎn)更為明顯。針對上述問題,本文提出一種利用復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)設(shè)計(jì)技術(shù)[3]實(shí)現(xiàn)專用鍵盤接口芯片的方案。
1 系統(tǒng)原理
圖1是單片機(jī)系統(tǒng)中鍵盤子系統(tǒng)的構(gòu)成原理框圖。其中鍵盤接口芯片KB-CORE是該子系統(tǒng)的核心部分,它應(yīng)具備如下功能:第一,產(chǎn)生按鍵掃描時(shí)序,并進(jìn)行硬件去抖動(dòng)。如果有按鍵按下,實(shí)現(xiàn)按鍵編碼、中斷處理等功能。第二,可以區(qū)分處理數(shù)字鍵和功能鍵。數(shù)字鍵將由接口芯片暫存,而當(dāng)功能鍵被按下時(shí)申請CPU中斷處理;對多個(gè)按鍵同時(shí)按下,按一定的編碼優(yōu)先級處理。第三,提供與MCS-51系列單片機(jī)兼容的接口,單片機(jī)可以讀取芯片中保存的數(shù)據(jù)或功能代碼。第四,提供數(shù)據(jù)顯示接口,可以直接驅(qū)動(dòng)4位七段LED數(shù)碼管,并進(jìn)行動(dòng)態(tài)掃描顯示。
按鍵根據(jù)鍵盤子系統(tǒng)的服務(wù)對象擬設(shè)置了數(shù)字鍵(0~9)、功能鍵(ROW、COL、DAT)、清零鍵(CLR)共14個(gè),排成4×4的矩陣,有兩個(gè)未定義。
2 專用鍵盤接口芯片功能結(jié)構(gòu)設(shè)計(jì)
根據(jù)上述專用鍵盤芯片KB-CORE的功能要求,圖2示出本芯片內(nèi)部應(yīng)有的結(jié)構(gòu)框圖。其工作原理如下:(1)鍵盤掃描控制及編碼電路中內(nèi)含一個(gè)環(huán)形計(jì)數(shù)器。該計(jì)數(shù)器計(jì)數(shù)輸出至KSL [0~3]端作為鍵盤掃描信號。每當(dāng)掃描信號發(fā)生變化時(shí),鍵盤掃描控制器從KRL[0~3]端讀入某一行按鍵的狀態(tài)信號。如果沒有按鍵被按下,則掃描下一行;如果有按鍵被按下,則控制器鎖定被掃描行,并延遲約10ms去抖動(dòng),然后再次掃描被鎖定行以確定按鍵是否誤讀。如果按鍵被證實(shí)按下,則一直等待直至用戶松開該鍵。與此同時(shí),數(shù)字鍵碼將被保存到先進(jìn)先出存儲(chǔ)器,功能鍵則直接產(chǎn)生中斷請求信號IRQ,通知CPU讀取鍵碼DBO[0~7]。(2)FIFO RAM中數(shù)據(jù)容量為16位。每4位對應(yīng)一個(gè)字形符,所以七段LED數(shù)碼管需要4位。(3)掃描發(fā)生器一方面產(chǎn)生LED的位選信號DSL[0~3],另一方面產(chǎn)生掃描顯示輸出控制電路的位數(shù)據(jù)選通信號。掃描顯示輸出控制電路根據(jù)位數(shù)據(jù)選通信號讀取FIFO RAM中相對應(yīng)的數(shù)據(jù),然后送七段譯碼電路輸出DP[0~6]驅(qū)動(dòng)LED顯示屏的段選信號電極。(4)接口控制電路一方面用來識(shí)別CPU的讀時(shí)序;另一方面用來對地址信號線A1A0譯碼,實(shí)現(xiàn)對輸出數(shù)據(jù)的選擇。若A0A1=00,則輸出FIFO RAM中的低字節(jié)數(shù)據(jù);若A0A1=01,則輸出FIFO RAM中的高字節(jié)數(shù)據(jù);若A0A1=10,則輸出控制數(shù)據(jù)(表明ROW、COL、DAT中哪一個(gè)被按下);若A0A1=11,則不輸出FIFO RAM中的任何數(shù)據(jù)。
3 專用鍵盤接口芯片核心部分的狀態(tài)描述與實(shí)現(xiàn)
為了實(shí)現(xiàn)上述專用鍵盤接口芯片功能結(jié)構(gòu),利用可編程邏輯技術(shù)對各個(gè)功能塊進(jìn)行邏輯時(shí)序描述和實(shí)現(xiàn)。由于鍵盤掃描控制和去抖的邏輯時(shí)序設(shè)計(jì)較復(fù)雜并具典型性,因此下面將對鍵盤掃描控制和去抖部分的設(shè)計(jì)思想進(jìn)行介紹。
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
評論