新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于FPGA的RS232行列式矩陣鍵盤接口設計

        基于FPGA的RS232行列式矩陣鍵盤接口設計

        作者: 時間:2014-04-24 來源:網絡 收藏

        一、引言

        本文引用地址:http://www.104case.com/article/245960.htm

        本方案是用VHDL語言來實現的基于按位串行通信總線的行列式矩陣鍵盤接口電路,具有復位和串行數據的接收與發送功能,根據發光二極管led0-led2的顯示狀態可判斷芯片的工作情況;實現所有電路功能的程序均是在美國ALTERA公司生產的具有現場可編程功能的芯片EPM7128SLC84-15上調試通過的。能通過動態掃描來判有鍵按下、將鍵值轉換成對應的ASCII碼值,在時鐘脈沖的作用實現串行數據的接收與發送。

        二、設計方案

        1.芯片引腳定義

        ?

        ?

        reset復位輸入端;clk時鐘輸入端;rxd串行數據接收端;retn0-retn7鍵盤掃描行輸入線;txd串行數據發送端;scan0-scan7鍵盤掃描列輸出線;led0-led2顯示輸出端。

        2.鍵盤與芯片的連接圖(如圖2所示,為8×8的64鍵鍵盤)

        3.動態掃描原理

        (1)依次使列線scan0-scan7輸出0電平,檢查行線retn0-retn7的電平狀態。如果行線retn0-retn7的電平全為高電平,表示沒鍵按下。如果retn0-retn7上的電平不全為高電平,表示有鍵按下。

        ?

        ?

        (2)如果沒鍵按下,就返回掃描。有鍵按下則進行逐行掃描,找出閉合鍵的鍵號。其過程是:先使scan0=0,scan1-scan7=1,檢測retn0-retn7上的電平,如果retn=0,則表示第一行第一列的鍵被按下,如果retn1=0,則表示第二行第二列的鍵被按下,其它依次類推;如果retn0-retn7均不為0,則表示這一列沒鍵按下;然后再使scan1=0,檢測第二列按鍵,這樣一直循環下去,知道把閉合的鍵找到為止。

        當有鍵按下時,根據該時刻的scan值和retn值就可判斷按下的是哪一個鍵。

        4.芯片內部模塊框圖

        ?

        ?

        三、芯片設計

        數據接收模塊框圖如圖4所示。

        ?

        ?

        Reset復位輸入端;clk時鐘輸入端;rxd串行數據接收端;led[20]輸出按下鍵對應的ASCII碼值的低三位去驅動發光二極管。

        該模塊實現對串行數據的接收記數和串并變換的控制功能。

        1.串行數據接收控制單元

        ?

        ?

        Reset 復位輸入端;clk 時鐘輸入端;rxd 串行數據接收端;sh_rx[30]接收計數器高4位;sl_rx[10]接收計數器低2位。

        將串行數據接收計數器設置位一個6位計數器,高4位為sh_r,低2位為sl_r,利用該計數器的狀態實現串行數據的同步控制和記數控制。

        2.串并轉換電路單元

        從RXD端接收的串行數據進經過串并變換后,將其低三位經LED輸出端輸出,驅動發光二極管LED0,LED1,LED2發光,從而顯示接收端RXD的每個數據的低三位。當每個數據的低三位相同時,顯示狀態就不變化,否則就出現閃爍現象,以此來檢查芯片的工作情況。

        四、總結

        本方案是用VHDL語言來實現的基于按位串行通信總線的行列式矩陣鍵盤接口電路的設計,具有復位和串行數據的接收與發送功能,根據發光二極管led0-led2的顯示狀態可判斷芯片的工作情況;實現所有電路功能的程序均是在美國ALTERA公司生產的具有現場可編程功能的芯片EPM7128SLC84-15上調試通過的。該電路的設計貼近生活,實用性強,制成芯片后可作為一般的PC機鍵盤與主機的接口使用。

        fpga相關文章:fpga是什么


        電子鎮流器相關文章:電子鎮流器工作原理


        電子鎮流器相關文章:


        塵埃粒子計數器相關文章:
        塵埃粒子計數器原理



        關鍵詞: FPGA RS232

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 浏阳市| 乡宁县| 高碑店市| 太白县| 布尔津县| 竹山县| 托里县| 巴中市| 芮城县| 北碚区| 丰台区| 元江| 杭锦后旗| 伊金霍洛旗| 常熟市| 兖州市| 瑞丽市| 梧州市| 清镇市| 钦州市| 河南省| 承德县| 康乐县| 龙里县| 台前县| 社会| 泾源县| 辰溪县| 正镶白旗| 仲巴县| 铁岭县| 申扎县| 奉化市| 渭南市| 五大连池市| 山东| 洪洞县| 县级市| 西贡区| 阳原县| 突泉县|