利用按鍵開關控制液晶顯示器進行十六進制數(shù)字顯示.._第1頁
利用按鍵開關控制液晶顯示器進行十六進制數(shù)字顯示.._第2頁
利用按鍵開關控制液晶顯示器進行十六進制數(shù)字顯示.._第3頁
利用按鍵開關控制液晶顯示器進行十六進制數(shù)字顯示.._第4頁
利用按鍵開關控制液晶顯示器進行十六進制數(shù)字顯示.._第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、中北大學課程設計說明書 學生姓名學生姓名:冷鑫磊學學 號:號:0606024111學學 院院: 電子與計算機科學技術(shù)學院專專 業(yè)業(yè): 微電子學題題 目目:利用按鍵開關控制液晶顯示器進行十六進制數(shù)字顯示 指導教師:指導教師: 王紅亮王紅亮 職稱職稱: : 講師講師 22010 年 6 月 25 日目 錄1、課程設計目的32、課程設計內(nèi)容及要求32.1、設計內(nèi)容32.2、設計要求33、設計方案及實現(xiàn)情況33.1、設計思路33.2、工作原理及框圖33.3、各模塊功能描述43.4、仿真結(jié)果113.5、試驗箱驗證情況114、課程設計總結(jié)145、參考文獻14附錄 1:液晶顯示屏說明書1531 1、課程設計

2、目的、課程設計目的1.學習操作數(shù)字電路設計實驗開發(fā)系統(tǒng),掌握液晶顯示模塊的工作原理及應用。2.掌握組合邏輯電路、時序邏輯電路的設計方法。3.學習掌握可編程器件設計的全過程。2 2、課程設計內(nèi)容和要求:、課程設計內(nèi)容和要求:2.1、設計內(nèi)容用 VHDL 語言編寫程序,實現(xiàn)利用按鍵開關控制液晶屏顯示 16 進制數(shù)。2.2、設計要求1學習掌握按鍵開關控制模塊、液晶顯示模塊的工作原理及應用;2. 熟練掌握 VHDL 編程語言,編寫按鍵開關控制模塊的控制邏輯;3. 仿真所編寫的程序,模擬驗證所編寫的模塊功能;4. 下載程序到芯片中,硬件驗證所設置的功能,能夠?qū)崿F(xiàn)十六進制數(shù)字的顯示;5. 整理設計內(nèi)容,編

3、寫設計說明書。3 3、 設計方案及實現(xiàn)情況設計方案及實現(xiàn)情況3.1、設計思路根據(jù)題目設計要求,用按鍵控制液晶屏顯示 16 進制數(shù),開始的實際本來是要用 16 個按鍵來實現(xiàn),但在硬件實現(xiàn)的過程中,一直出現(xiàn)各種問題,所以采用了一個按鍵,循環(huán)顯示0f。由于是按鍵控制,所以加入了消抖程序,對液晶屏的控制則是通過狀態(tài)機來實現(xiàn)的。先輸入4F9,選擇 8*16ascII 碼顯示模式,在輸入坐標 XX YY。3.2、工作原理及框圖本設計將系統(tǒng)分為四個模塊,消抖模塊,按鍵輸入模塊,譯碼模塊和液晶屏控制模塊,先分別用 MAX+PLUS II 文本設計輸入編寫每個模塊 ,模塊功能好了就可以實現(xiàn)最后的結(jié)果了。信號由消

4、抖模塊的 XD 管腳輸入,經(jīng)過消抖程序后,在譯碼模塊中將四位二進制代碼翻譯成八位 2 進制的 ASCII 碼,輸入到液晶屏控制模塊中,實現(xiàn)對液晶屏的控制。與此同時,每按下一次按鍵,按鍵模塊中的變量就會+1,當加到 1111B 時,自動清零,實現(xiàn)了 0-F 循環(huán)顯示。最重要也是最難的液晶屏控制模塊采用狀態(tài)機程序編寫,原理祥見附錄 1(如圖 1) 。圖 1 系統(tǒng)原理圖3.3、各模塊功能描述(1)消抖電路加入本模塊的原因是因為按鍵開關在按下時信號會產(chǎn)生抖動,在硬件實現(xiàn)是可能出現(xiàn)按一下跳過很多個數(shù)的情況,對程序的輸入會產(chǎn)生影響,加入模塊后消除抖動(如圖 2) 。程序代碼:library ieee;us

5、e ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; 圖 2 消抖模塊硬件原理圖entity xd is port( rst:in std_logic;5 xd: in std_logic; clk: in std_logic; xdout: out std_logic );end xd;architecture a of xd is signal count:integer range 0 to 100; begin process(clk,rst,xd) begin

6、if(rst=0)then count=0; xdout=0; elsif(clkevent and clk=1)then if(count=30)then count=0; xdout=not xd; else count=count+1; end if; end if; end process;end a;(2)按鍵輸入和譯碼模塊該模塊的作用是將按鍵輸入進來的信號進行處理,每按一次,數(shù)自動+1,并將數(shù)字的ASCII 碼編譯成 8 位 2 進制 ASCII 碼送給液晶屏控制程序,當顯示到 F 時置 0(如圖 3)。程序代碼:按鍵輸入模塊library ieee;6use ieee.std_l

7、ogic_1164.all;use ieee.std_logic_unsigned.all; 圖 3 按鍵及譯碼模塊硬件原理圖 use ieee.std_logic_arith.all;entity aj isport( aj:in std_logic; rst:in std_logic; ajout:out std_logic_vector(3 downto 0) );end aj;architecture ajwork of aj issignal q: std_logic;signal count : std_logic_vector(3 downto 0);begin q=aj whe

8、n rst=1else 0; process(q,rst) begin if(rst=0)then count=0000; elsif qevent and q=1 then if count=1111 then count=0000; else count=count+1; end if; end if; ajout=count; end process; end ajwork;7譯碼模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ym is port(ym:in std_lo

9、gic_vector(3 downto 0); Y:out std_logic_vector(7 downto 0);end ym;architecture yima_arch of ym issignal a:std_logic_vector(3 downto 0);begina=ym;YIF busy=0 THEN9IF ready=1 THEN current_state = XX;ready = 0;ELSEdb = 11111001;req = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENI

10、F ready=1 THENcurrent_state = YY;ready = 0;ELSEdb = 00000111;req = 1;ready = 0;END IF;ELSEreq = 0;ready = 1;current_state IF busy=0 THENIF ready=1 THENcurrent_state = ASCII;ready = 0;ELSEdb = 00000011;req = 1;ready = 0;END IF;ELSEreq = 0;ready =1;current_state IF busy=0 THENIF ready=1 THENcurrent_st

11、ate = CMD;ready = 0;ELSE db =db_ascii; req = 1;ready = 0END IF;ELSEreq = 0;ready = 1;current_state = ASCII;11END IF;END CASE;END IF;END PROCESS;END rtl;3.4、仿真結(jié)果本實驗結(jié)果主要表現(xiàn)在波形的 DB7.0信號的波形輸出,實現(xiàn)了 16 進制數(shù)的顯示(如圖 5、6) 。圖 5 09 仿真波形圖 圖 6 AF 并置 0 波形圖3.5、實驗箱驗證情況(1)部分管腳分配(自動分配) (如圖 7) 。12圖 7 部分管腳圖(自動分配)(2)程序硬件實現(xiàn)結(jié)

12、果的部分顯示(如圖 815) 。 圖 8 數(shù)字 1 圖 9 數(shù)字 2 圖 10 數(shù)字 3 圖 11 數(shù)字 813 圖 12 數(shù)字 9 圖 13 數(shù)字 10圖 14 數(shù)字 11 圖 15 數(shù)字 12(3)總體硬件圖(如圖 16) 。14 圖 16 整體硬件圖4 4、課程設計總結(jié)、課程設計總結(jié) 通過本次課程設計我學到了很多東西,以前雖然也做過不少 VHDL 程序的設計,但都是在已經(jīng)有寫好的程序的情況下。這次從設計到實現(xiàn)都獨立完成還是第一次,自己親身試過之后才會發(fā)現(xiàn),軟件上做出來的正確結(jié)果和硬件的實現(xiàn)有著巨大的差距。編譯好的程序在硬件實現(xiàn)時還有很多的因素要考慮,要處理。比如,消抖程序中的 count

13、 值的設定,有的同學count=5 就足夠了,而有的在設定為 5 時抖動的相當厲害,這都需要在硬件實現(xiàn)時再進行調(diào)試,有時候甚至整個程序都要重新編寫。這次課程設計我收獲了很多。5 5、參考文獻、參考文獻1侯伯亨,顧新.VHDL 硬件描述語言與數(shù)字邏輯電路設計. 西安:西安電子科技大學出版15社,19992求是科技.CPLD/FPGA 應用開發(fā)技術(shù)與工程實踐. 北京:人民郵電出版社,20053羅苑棠.CPLD/FPGA 常用模塊與綜合系統(tǒng)設計實例精講. 北京:電子工業(yè)出版社,20074任勇峰,莊新敏.VHDL 與硬件實現(xiàn)速成.北京:國防工業(yè)出版社,2005附錄附錄 1 1:液晶顯示屏說明書:液晶顯

14、示屏說明書1)表1:OCMJ2X8(128X32)引腳說明引腳引腳 名稱名稱方向方向說明說明引腳引腳名稱名稱方向方向說明說明1 1VLED+VLED+I I背光源正極(背光源正極(LED+5VLED+5V)8 8DB1DB1I I數(shù)據(jù)數(shù)據(jù) 1 12 2VLED-VLED-I I背光源負極(背光源負極(LED-OVLED-OV)9 9DB2DB2I I數(shù)據(jù)數(shù)據(jù) 2 23 3VSSVSSI I地地1010DB3DB3I I數(shù)據(jù)數(shù)據(jù) 3 34 4VDDVDDI I(+5V+5V)1111DB4DB4I I數(shù)據(jù)數(shù)據(jù) 4 45 5REQREQI I請求信號,高電平有效請求信號,高電平有效1212DB5D

15、B5I I數(shù)據(jù)數(shù)據(jù) 5 56 6BUSYBUSYO O應答信號應答信號=1=1:已收到數(shù)據(jù)并正在處理中:已收到數(shù)據(jù)并正在處理中 =0=0:模塊空閑,可接收數(shù)據(jù):模塊空閑,可接收數(shù)據(jù)1313DB6DB6I I數(shù)據(jù)數(shù)據(jù) 6 67 7DB0DB0I I數(shù)據(jù)數(shù)據(jù) 0 01414DB7DB7I I數(shù)據(jù)數(shù)據(jù) 7 7硬件接口硬件接口16接口協(xié)議為 請求/應答(REQ/BUSY) 握手方式。應答 BUSY 高電平(BUSY =1) 表示 OCMJ 忙于內(nèi)部處理,不能接收用戶命令;BUSY 低電平(BUSY =0)表示 OCMJ 空閑,等待接收用戶命令。發(fā)送命令到 OCMJ 可在 BUSY =0 后的任意時刻開

16、始,先把用戶命令的當前字節(jié)放到數(shù)據(jù)線上,接著發(fā)高電平 REQ 信號(REQ =1)通知 OCMJ 請求處理當前數(shù)據(jù)線上的命令或數(shù)據(jù)。OCMJ 模塊在收到外部的 REQ 高電平信號后立即讀取數(shù)據(jù)線上的命令或數(shù)據(jù),同時將應答線 BUSY 變?yōu)楦唠娖?,表明模塊已收到數(shù)據(jù)并正在忙于對此數(shù)據(jù)的內(nèi)部處理,此時,用戶對模塊的寫操作已經(jīng)完成,用戶可以撤消數(shù)據(jù)線上的信號并可作模塊顯示以外的其他工作,也可不斷地查詢應答線 BUSY 是否為低(BUSY =0?) ,如果 BUSY =0,表明模塊對用戶的寫操作已經(jīng)執(zhí)行完畢??梢栽偎拖乱粋€數(shù)據(jù)。如向模塊發(fā)出一個完整的顯示漢字的命令,包括坐標及漢字代碼在內(nèi)共需 5 個字

17、節(jié),模塊在接收到最后一個字節(jié)后才開始執(zhí)行整個命令的內(nèi)部操作,因此,最后一個字節(jié)的應答 BUSY 高電平(BUSY =1)持續(xù)時間較長,具體的時序圖參見 圖圖-1-1,對應的具體時間參數(shù)說明參見 表表-1T Tr rT Tb bT Ts s1 1T Ts s2 2B BU US SY YD DB BR RE EQ QT Tr rt tt1t2t3t4t5圖1:對模塊寫漢字時序圖電性能參數(shù)電性能參數(shù)模塊時間參數(shù)表值值編號編號名稱名稱單位單位最小值最小值最大值最大值說說 明明1TruS0.4-數(shù)據(jù)線上數(shù)據(jù)穩(wěn)定時間2TbuS220最大模塊響應時間3TrtuS11-最小 REQ 保持時間4Ts1uS20

18、45最大數(shù)據(jù)接收時間5Ts2mS-0.130*最大命令指令處理時間*:不同命令所占用的時間各不相同,具體時間在命令表中給出模塊主要電氣參數(shù)表值值編號編號名稱名稱單單位位2X84X85X10說說 明明171電源工作電壓V5552電源電流mAmA2353輸入引腳電壓V V5554最大輸入電壓建立時間uSuS1115最小復位電壓持續(xù)時間uSuS666RES 端高電平時間6復位內(nèi)部處理時間mSmS151515此時模塊不接收命令7背光電壓V V5558標稱背光電流mAmA1201802509外接灰度調(diào)節(jié)電位器5K20010K用戶命令用戶命令 用戶通過用戶命令調(diào)用 OCMJ 系列液晶顯示器的各種功能。命令

19、分為操作碼及操作數(shù)兩部分,操作數(shù)為十六進制。1)顯示國標漢字命令格式: F0 XX YY QQ WW該命令為 5 字節(jié)命令(最大執(zhí)行時間為 1.2 毫秒,Ts2=1.2mS) ,其中XX:為以漢字為單位的屏幕行坐標值,取值范圍 00 到 07、02 到 09、00 到 09YY:為以漢字為單位的屏幕列坐標值,取值范圍 00 到 01、00 到 03、00 到 04QQ WW:坐標位置上要顯示的 GB 2312 漢字區(qū)位碼2) 顯示 8X8 ASCII 字符命令格式:F1 XX YY AS該命令為 4 字節(jié)命令(最大執(zhí)行時間為 0.8 毫秒,Ts2=0.8mS) ,其中XX:為以 ASCII 碼

20、為單位的屏幕行坐標值,取值范圍 00 到 0F、04 到 13、00 到 13YY:為以 ASCII 碼為單位的屏幕列坐標值,取值范圍 00 到 1F、00 到 3F、00 到 4FAS:坐標位置上要顯示的 ASCII 字符碼3) 顯示 8X16 ASCII 字符命令格式:F9 XX YY AS該命令為 4 字節(jié)命令(最大執(zhí)行時間為 1.0 毫秒,Ts2=1.0mS) ,其中XX:為以 ASCII 碼為單位的屏幕行坐標值,取值范圍 00 到 0F、04 到 13、00 到 13YY:為以 ASCII 碼為單位的屏幕列坐標值,取值范圍 00 到 1F、00 到 3F、00 到 4FAS:坐標位置

21、上要顯示的 ASCII 字符碼4) 顯示位點陣 命令格式: F2 XX YY 該命令為 3 字節(jié)命令(最大執(zhí)行時間為 0.1 毫秒,Ts2=0.1mS) ,其中18XX:為以 1*1 點陣為單位的屏幕行坐標值,取值范圍 00 到 7F、20 到 9F、00 到 9FYY:為以 1*1 點陣為單位的屏幕列坐標值,取值范圍 00 到 40、00 到 40、00 到 405) 顯示字節(jié)點陣命令格式: F3 XX YY BT該命令為 4 字節(jié)命令(最大執(zhí)行時間為 0.1 毫秒,Ts2=0.1mS) ,其中XX:為以 1*8 點陣為單位的屏幕行坐標值,取值范圍 00 到 0F、04 到 13、00 到

22、13YY:為以 1*1 點陣為單位的屏幕列坐標值,取值范圍 00 到 1F、00 到 3F、00 到 4FBT:字節(jié)像素值,0 顯示白點,1 顯示黑點 (顯示字節(jié)為橫向) 8051 與 OCMJ4X8 模塊連接 1) 寫模塊子程序(雙線應答方式)-該程序使用 REQ 及 BUSY 兩條控制線的握手方式對模塊進行寫操作。 SUB1: JB BUSY,SUB1 ;確信模塊空閑(BUSY=0)MOV P1,A ;向總線送數(shù)NOP;等待數(shù)據(jù)總線穩(wěn)定SETB REQ ;置模塊 REQ 端為高電平(REQ=1) ,向模塊發(fā)請求命令 HE3: JNB BUSY,HE3 ;等待模塊響應(BUSY =1) CL

23、R REQ ;撤消 REQ 請求信號,數(shù)據(jù)輸入結(jié)束RET ;返回2) 寫模塊子程序(單線延時方式)19-該程序僅使用 REQ 一條控制線方式對模塊進行寫操作。在 MPU 的 I/O 口短缺的情況下非常適用。 SUB2: MOV P1,A ;向總線送數(shù)NOP;等待數(shù)據(jù)總線穩(wěn)定SETB REQ ;置模塊 REQ 端為高電平(REQ=1) ,向模塊發(fā)請求命令 LCALL DALEY1 ;調(diào)延時子程序 DALEY1 等待模塊響應 *1 CLR REQ ;撤消 REQ 請求信號,數(shù)據(jù)輸入結(jié)束 LCALL DALEY2 ;調(diào)延時子程序 DALEY2 等待模塊內(nèi)部處理完成 *2RET ;返回注:*1、延時時

24、間參照表4 中的 Tb 及 Trt*2、延時時間參照表4 中的 Ts1 及 Ts23) 寫漢字程序-該程序顯示一個漢字“啊” (區(qū)位碼為 1001H )MOV A,#0F0H ;選顯示漢字命令字ACALL SUB1 ;調(diào)用寫子程序MOV A,#02H ;O2H,XX,16*16 點陣為單位的屏幕坐標ACALL SUB1 ;調(diào)用寫子程序MOV A,#00H ;00H,YY,16*16 點陣為單位的屏幕坐標ACALL SUB1;調(diào)用寫子程序MOV A,#10H ;10H,QQ,GB2312 漢字區(qū)位碼高位ACALL SUB1;調(diào)用寫子程序MOV A,#01H ;01H,WW,GB2312 漢字區(qū)位

25、碼低位ACALL SUB1;調(diào)用寫子程序4) 寫 8*16 ASCII 碼程序 -該程序顯示一個 8*16 ASC碼 “A” :MOV A,#0F9H ;選顯示 8*16 ASCII 字符命令字ACALL SUB1 ;調(diào)用寫子程序MOV A,#04H ;04H,XX,8*8 點陣為單位的屏幕坐標值 XACALL SUB120MOV A,#00H ;00H,YY,1*1 點陣為單位的屏幕坐標值 YACALL SUB1MOV A,#41H ;AS,ASCII 字符代碼“A”ACALL SUB1注:X 坐標(本例中的 #04H)與 ASC碼中規(guī)定的相同,Y 坐標(本例中的 #00H)以點陣單元為單位。5) 寫 8*8 ASCII 碼程序 -該程序顯示一個 8*8 ASC碼 “A” :MOV A,#0F1H ;選顯示 8*8 ASCII 字符命令字ACALL SUB1 ;調(diào)用寫子程序MOV A,#04H ;04H,XX,8*8 點陣為單位的屏幕坐標值 XACALL SUB1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論