<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 采用CPLD的專(zhuān)用鍵盤(pán)接口芯片的方案設計

采用CPLD的專(zhuān)用鍵盤(pán)接口芯片的方案設計

作者: 時(shí)間:2012-04-18 來(lái)源:網(wǎng)絡(luò ) 收藏

在單片機應用系統中,存在多種形式的外部數據輸入界面,例如RS-232C串行通信、輸入等[1,4] 。其中利用輸入數據,是實(shí)現現場(chǎng)實(shí)時(shí)調試、數據調整和控制最常用的方法。單片機的外圍擴展電路有多種實(shí)現方式,例如直接利用I/O線(xiàn)或外接8255A接口,配合適當的接口管理程序,就可以實(shí)現外圍鍵盤(pán)擴展功能。但是,在這些方法中,鍵盤(pán)擴展電路需要占用單片機的資源對按鍵進(jìn)行監控和處理,這對要求高實(shí)時(shí)性處理的單片機系統是不現實(shí)的。

本文引用地址:http://dyxdggzs.com/article/149206.htm

為了解決這一問(wèn)題,可以使用鍵盤(pán)接口(例如Intel8279) [2]來(lái)組建鍵盤(pán)子系統。然而,這類(lèi)鍵盤(pán)接口在使用靈活性方面尚有欠缺,尤其當用戶(hù)需要實(shí)現某些特定功能時(shí),其缺點(diǎn)更為明顯。針對上述問(wèn)題,本文提出一種利用復雜可編程邏輯器件(Complex Programmable Logic Device,)設計技術(shù)[3]實(shí)現鍵盤(pán)接口芯片的方案。

1 系統原理

圖1是單片機系統中鍵盤(pán)子系統的構成原理框圖。其中鍵盤(pán)接口芯片KB-CORE是該子系統的核心部分,它應具備如下功能:第一,產(chǎn)生按鍵掃描時(shí)序,并進(jìn)行硬件去抖動(dòng)。如果有按鍵按下,實(shí)現按鍵編碼、中斷處理等功能。第二,可以區分處理數字鍵和功能鍵。數字鍵將由接口芯片暫存,而當功能鍵被按下時(shí)申請CPU中斷處理;對多個(gè)按鍵同時(shí)按下,按一定的編碼優(yōu)先級處理。第三,提供與MCS-51系列單片機兼容的接口,單片機可以讀取芯片中保存的數據或功能代碼。第四,提供數據顯示接口,可以直接驅動(dòng)4位七段LED數碼管,并進(jìn)行動(dòng)態(tài)掃描顯示。
按鍵根據鍵盤(pán)子系統的服務(wù)對象擬設置了數字鍵(0~9)、功能鍵(ROW、COL、DAT)、清零鍵(CLR)共14個(gè),排成4×4的矩陣,有兩個(gè)未定義。


2 專(zhuān)用鍵盤(pán)接口芯片功能結構設計

根據上述專(zhuān)用鍵盤(pán)芯片KB-CORE的功能要求,圖2示出本芯片內部應有的結構框圖。其工作原理如下:(1)鍵盤(pán)掃描控制及編碼電路中內含一個(gè)環(huán)形計數器。該計數器計數輸出至KSL [0~3]端作為鍵盤(pán)掃描信號。每當掃描信號發(fā)生變化時(shí),鍵盤(pán)掃描控制器從KRL[0~3]端讀入某一行按鍵的狀態(tài)信號。如果沒(méi)有按鍵被按下,則掃描下一行;如果有按鍵被按下,則控制器鎖定被掃描行,并延遲約10ms去抖動(dòng),然后再次掃描被鎖定行以確定按鍵是否誤讀。如果按鍵被證實(shí)按下,則一直等待直至用戶(hù)松開(kāi)該鍵。與此同時(shí),數字鍵碼將被保存到先進(jìn)先出存儲器,功能鍵則直接產(chǎn)生中斷請求信號IRQ,通知CPU讀取鍵碼DBO[0~7]。(2)FIFO RAM中數據容量為16位。每4位對應一個(gè)字形符,所以七段LED數碼管需要4位。(3)掃描發(fā)生器一方面產(chǎn)生LED的位選信號DSL[0~3],另一方面產(chǎn)生掃描顯示輸出控制電路的位數據選通信號。掃描顯示輸出控制電路根據位數據選通信號讀取FIFO RAM中相對應的數據,然后送七段譯碼電路輸出DP[0~6]驅動(dòng)LED顯示屏的段選信號電極。(4)接口控制電路一方面用來(lái)識別CPU的讀時(shí)序;另一方面用來(lái)對地址信號線(xiàn)A1A0譯碼,實(shí)現對輸出數據的選擇。若A0A1=00,則輸出FIFO RAM中的低字節數據;若A0A1=01,則輸出FIFO RAM中的高字節數據;若A0A1=10,則輸出控制數據(表明ROW、COL、DAT中哪一個(gè)被按下);若A0A1=11,則不輸出FIFO RAM中的任何數據。


3 專(zhuān)用鍵盤(pán)接口芯片核心部分的狀態(tài)描述與實(shí)現

為了實(shí)現上述專(zhuān)用鍵盤(pán)接口芯片功能結構,利用可編程邏輯技術(shù)對各個(gè)功能塊進(jìn)行邏輯時(shí)序描述和實(shí)現。由于鍵盤(pán)掃描控制和去抖的邏輯時(shí)序設計較復雜并具典型性,因此下面將對鍵盤(pán)掃描控制和去抖部分的設計思想進(jìn)行介紹。

DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY



上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>