

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 設(shè)計(jì)目的:</b></p><p> 熟練掌握和使用基于CPLD/FPGA的數(shù)字系統(tǒng)開(kāi)發(fā)工具、開(kāi)發(fā)流程,能</p><p> 夠自主進(jìn)行成熟的基于CPLD/FPGA的數(shù)字系統(tǒng)設(shè)計(jì),能夠發(fā)現(xiàn)和獨(dú)立解決</p><p> 開(kāi)發(fā)過(guò)程中遇到的問(wèn)題。 </p><p> 2、了解時(shí)序電路FPG
2、A的實(shí)現(xiàn)。</p><p> 3、學(xué)習(xí)用VHDL語(yǔ)言來(lái)描述時(shí)序電路的過(guò)程。</p><p> 4、了解LCD1602液晶顯示器的工作原理。</p><p><b> 二.設(shè)計(jì)環(huán)境:</b></p><p> QUARTUSH 9.0 軟件 MARS-1270 CPLD實(shí)驗(yàn)版 1602液晶</p>
3、<p> MARS-1270 CPLD實(shí)驗(yàn)版是針對(duì)CPLD/FPGA的初中級(jí)學(xué)者設(shè)計(jì),該板可 以配合其擴(kuò)展板進(jìn)行相應(yīng)的實(shí)驗(yàn),也可以作為相關(guān)CPLD/FPGA研發(fā)的原型。核心板簡(jiǎn)單實(shí)用擴(kuò)展性好,板上提供ISP接口,并將CPLD/FPGA的部分IO引腳引出,為用戶提供一個(gè)幫助用戶快速開(kāi)始可編程邏輯器件學(xué)習(xí)之旅的硬件平臺(tái)。</p><p><b> 設(shè)計(jì)要求:</b></p
4、><p> 要求用1602液晶顯示字符;</p><p> 顯示內(nèi)容:學(xué)號(hào)+英文姓名;</p><p> 顯示方式:流動(dòng)顯示,開(kāi)關(guān)控制字符流動(dòng)速度及方向;具有暫停和清屏 </p><p><b> 的功能;</b></p><p> 擴(kuò)展部分:設(shè)計(jì)漢字字符及其他功能</p>&
5、lt;p> 四.設(shè)計(jì)思路及實(shí)現(xiàn)方法</p><p> 下圖所示1602字符液晶接口與實(shí)驗(yàn)板內(nèi)部相連之圖</p><p> 上圖所示是從MARS-1270 CPLD實(shí)驗(yàn)版 的手冊(cè)上截取的1602與實(shí)驗(yàn)板相連的圖,1,2,3,15,16均與實(shí)驗(yàn)板內(nèi)部電壓相連,顯示時(shí)只需注意給1602的</p><p><b> 4-14管腳賦值。</b&g
6、t;</p><p> ?。?)1602引腳定義</p><p> 1602采用標(biāo)準(zhǔn)的16腳接口,其中: </p><p> 第1腳:VSS為地電源</p><p> 第2腳:VDD接5V正電源</p><p> 第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)
7、生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度</p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p> 第5腳:RW為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和RW共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。</p>
8、;<p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p> 第15~16腳:空腳</p><p> ?。?) 1602實(shí)際寫(xiě)時(shí)每位的地址</p><p> 第一行:首地址為80H,”10000000”,最多能顯示27個(gè)
9、數(shù);尾地址為A7H,”10100111”</p><p> 第二行:首地址為 C0H,”11000000”, 最多能顯示27個(gè)數(shù);尾地址為</p><p> E7H,”11100111”</p><p> (3) 1602內(nèi)部</p><p> 1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如
10、表1所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用 的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地 址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”</p><p> LCD1602的工作時(shí)序可查閱其他資料</p><p> 下圖為CGROM中字符碼與字符字模關(guān)系對(duì)照表</p>
11、<p> 從下圖可以看出,“A”字的對(duì)應(yīng)上面高位代碼為0100,對(duì)應(yīng)左邊低位代碼為0001,合起來(lái)就是01000001,也就是41H??梢?jiàn)它的代碼與我們PC中的字符代碼是基本一致的。因此我們?cè)谙駾DRAM 寫(xiě)C51字符代碼程序時(shí)甚至可以直接用P1='A'這樣的方法。PC在編譯時(shí)就把“A”先轉(zhuǎn)為41H代碼了。</p><p> 字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(
12、對(duì)于5X8點(diǎn)陣的字符,可以存放8組,5X10點(diǎn)陣的字符,存放4組),就是CGRAM了。</p><p> 0x20~0x7F 為標(biāo)準(zhǔn)的ASCII 碼,0xA0~0xFF 為日文字符和希臘文字</p><p> 符,其余字符碼(0x10~0x1F及0x80~0x9F)沒(méi)有定義。</p><p> ?。?)對(duì)DDRAM的內(nèi)容和地址進(jìn)行操作的指令(只介紹本次設(shè)計(jì)中涉及
13、的一些)</p><p> 一.清屏指令:使液晶不顯示任何東西</p><p> 二.設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令</p><p> 三.顯示模式設(shè)置:寫(xiě)程序時(shí)從38H開(kāi)寫(xiě),是使液晶處于開(kāi)始狀態(tài)</p><p><b> 四.暫停及流動(dòng)</b></p><p> 注:上述四個(gè)功能均在RS
14、為0時(shí)方可寫(xiě)入;若RS為1,則可寫(xiě)入在1602上顯示字符的代碼;E一般選取系統(tǒng)時(shí)鐘分頻后的時(shí)鐘;</p><p> 設(shè)計(jì)思路及實(shí)現(xiàn)方法.</p><p> 根據(jù)寫(xiě)1602的一般順序:(1)開(kāi)始38H.(2)顯示模式設(shè)置.(3)顯示關(guān)閉08H.(4)顯示清屏01H.(5)顯示光標(biāo)移動(dòng)設(shè)置06H.(6)顯示開(kāi)及光標(biāo)移動(dòng)設(shè)置0CH</p><p> 根據(jù)這幾步?jīng)Q定用
15、VHDL語(yǔ)言中的狀態(tài)機(jī)描述方式進(jìn)行編寫(xiě)程序,與其他描述方式相比,狀態(tài)機(jī)的表述豐富多樣,程序?qū)哟畏置?,結(jié)構(gòu)清晰,易讀易懂;</p><p> 其中,在設(shè)計(jì)程序的過(guò)程中,由于程序包含地址和顯示內(nèi)容,考慮用到元件例化語(yǔ)句,將每個(gè)地址要顯示的內(nèi)容存到相應(yīng)的元件例化語(yǔ)句中去。元件例化就是將預(yù)先設(shè)計(jì)好的設(shè)計(jì)實(shí)體定義為一個(gè)元件,然后利用特定的語(yǔ)句將此元件與當(dāng)前的設(shè)計(jì)實(shí)體中的指定端口相連接。</p><p&
16、gt; 五.程序源文件與設(shè)計(jì)結(jié)果分析</p><p> 1.顯示內(nèi)容:學(xué)號(hào)+英文姓名</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> us
17、e IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity yejing2 is</p><p> Port ( clk : in std_logic;--40MHZ</p><p> Reset : in std_logic;--rst</p><p> lcd_rs : out s
18、td_logic;--data/mingling(en0)</p><p> lcd_rw : out std_logic;--read/write(en1)</p><p> lcd_e : buffer std_logic;--enable(en2)</p><p> data : out std_logic_vector(7 down
19、to 0);--//data shumaguan</p><p> key:in std_logic; --撥碼開(kāi)關(guān)0</p><p> key1:in std_logic; --撥碼開(kāi)關(guān)1</p><p> key2:in std_logic --撥碼開(kāi)關(guān)2</p><p><b> );</b><
20、;/p><p> end yejing2 ;</p><p> architecture Behavioral of yejing2 is</p><p> constant IDLE : std_logic_vector(10 downto 0) :="00000000000";--//閑置</p><p> con
21、stant CLEAR : std_logic_vector(10 downto 0) :="00000000001";--//清屏 </p><p> constantRETURNCURSOR:std_logic_vector(10downto0) :="00000000010" ;--//
22、光標(biāo)返回</p><p> constantSETMODE : std_logic_vector(10 downto 0) :="00000000100";--//輸入方式--//0x06--//顯示光標(biāo)移動(dòng)設(shè)置,當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加1,且光標(biāo)加1</p><p> constantSWITCHMODE:std_logic_vector(10downto0)
23、 :="00000001000";-/顯示開(kāi)關(guān)--//0x0c--//開(kāi)顯示;不顯示光標(biāo);光標(biāo)不閃爍</p><p> constant SHIFT : std_logic_vector(10 downto 0) :="00000011000";</p><p> --//移位調(diào)整--//0x81--//顯示位移;左移</p>&l
24、t;p> constantSETFUNCTION:std_logic_vector(10downto0) :="00000100000";--//功能設(shè)置--//0x3C--//8位;兩行顯示16*2 ; </p><p> constantSETCGRAM:std_logic_vector(10downto 0) :="00001000000";--//字符發(fā)生
25、存儲(chǔ)器地址ACG</p><p> constantSETDDRAM:std_logic_vector(10downto 0) :="00010000000";--//設(shè)置DDRAM(顯示數(shù)據(jù)RAM)的地址--//0x80 顯示數(shù)據(jù)儲(chǔ)存器地址ADD --//0xc0 顯示數(shù)據(jù)儲(chǔ)存器地址ADD 第二行開(kāi)頭</p><p> constant READFLAG :
26、std_logic_vector(10 downto 0) :="00100000000";--//忙標(biāo)志</p><p> constant WRITERAM: std_logic_vector(10 downto 0) :="01000000000"; -寫(xiě)數(shù)據(jù)到CGRAM或者DDRAM</p><p> constantREADRAM:
27、std_logic_vector(10 downto 0) :="10000000000";--//從CGRAM或者DDRAM讀數(shù)</p><p> signal state : std_logic_vector(10 downto 0);</p><p> signal counter : integer range 0 to 127;</p>&l
28、t;p> signal div_counter : integer range 0 to 15;</p><p> signal flag : std_logic;</p><p> constant DIVSS : integer :=15;</p><p> signal char_addr: std_logic_vector(6 downto
29、0);</p><p> signal data_in : std_logic_vector(7 downto 0);</p><p> component char_ram2</p><p> port( address : in std_logic_vector(6 downto 0) ;</p><p> data :
30、 out std_logic_vector(7 downto 0)</p><p><b> );</b></p><p> end component;--元件例化語(yǔ)句</p><p> signal clk_int: std_logic;</p><p> signal clkcnt: std_logic_v
31、ector(18 downto 0);</p><p> constant divcnt: std_logic_vector(18 downto 0):="1111001110001000000"; --//498752</p><p> signal a:in
32、teger;</p><p> signal clkdiv: std_logic;</p><p> signal tc_clkcnt: std_logic; </p><p> signal k: integer; --顯示步進(jìn)</p><p> signal yi: std_logic; --顯示左移還是右移</p>
33、<p> signal zanting: std_logic;--顯示暫停還是流動(dòng)</p><p><b> begin</b></p><p> process(key)--該部分控制分頻步進(jìn)是1還是5,即是控制字符流動(dòng)速度</p><p><b> begin</b></p><
34、p> case key is</p><p> when '0'=>k<=1;</p><p> when '1'=>k<=5;</p><p> when others=>null; </p><p> end case;</p><p>
35、; end process;</p><p> process(key1)—該部分控制液晶整屏左移還是右移1是左移, 0右移</p><p><b> begin</b></p><p> case key1 is</p><p> when '1'=>yi<='1'
36、;</p><p> when '0'=>yi<='0';</p><p> when others=>null;</p><p><b> end case;</b></p><p> end process;</p><p> pro
37、cess(key2)—該部分控制整屏?xí)和_€是流動(dòng)1暫停,0流動(dòng)</p><p><b> begin</b></p><p> case key2 is</p><p> when '1'=>zanting<='1';</p><p> when '0'
38、=>zanting<='0';</p><p> when others=>null;</p><p><b> end case;</b></p><p> end process;</p><p> process(clk,reset)</p><p>
39、;<b> begin</b></p><p> if(reset='0')then</p><p> clkcnt<="0000000000000000000";</p><p> elsif(clk'event and clk='1')then</p>
40、<p> if(clkcnt=divcnt)then----// t=498752*25ns=12.5ms</p><p> clkcnt<="0000000000000000000";</p><p><b> else</b></p><p> clkcnt<=clkcnt+k;<
41、/p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> tc_clkcnt<='1' when clkcnt=divcnt else --//12.5ms產(chǎn)生計(jì)數(shù)溢出脈沖
42、</p><p><b> '0';</b></p><p> process(tc_clkcnt,reset)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> c
43、lkdiv<='0';</p><p> elsif(tc_clkcnt'event and tc_clkcnt='1')then</p><p> clkdiv<=not clkdiv; --//翻轉(zhuǎn)時(shí)鐘 t=25ms f=40hz</p><p><b> end if;</b>&
44、lt;/p><p> end process;</p><p> process(clkdiv,reset)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> clk_int<='0';
45、</p><p> elsif(clkdiv'event and clkdiv='1')then</p><p> clk_int<= not clk_int; --//分頻 t=50ms f=20hz</p><p><b> end if;</b></p><p> end pr
46、ocess;</p><p> process(clkdiv,reset)</p><p><b> begin</b></p><p> if(reset='0')then</p><p> lcd_e<='0';</p><p> elsif(c
47、lkdiv'event and clkdiv='0')then</p><p> lcd_e<= not lcd_e; --//使能信號(hào)翻轉(zhuǎn) t=100ms f=10hz</p><p><b> end if;</b></p><p> end process;</p><p>
48、aa:char_ram2—例化程序</p><p> port map( address=>char_addr,data=>data_in);</p><p> lcd_rs <= '1' when state =WRITERAM or state = READRAM else '0'; --//當(dāng)lcd_rs=1時(shí),為數(shù)據(jù);=0時(shí),
49、為命令</p><p> lcd_rw <= '0' when state =CLEAR or state = RETURNCURSOR or state=SETMODE or state=SWITCHMODE or state=SHIFT or state= SETFUNCTION or state=SETCGRAM or state =SETDDRAM or state =
50、WRITERAM else</p><p> '1'; --//=0,寫(xiě);=1,讀</p><p> data <="00000001" when state =CLEAR else --//0x01--清屏</p><p> "00000010" when state =RETURNCU
51、RSOR else --//0x02--光標(biāo)返回</p><p> "00000110" when state = SETMODE else --//0x06--//顯示光標(biāo)移動(dòng)設(shè)置,當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加1,且光標(biāo)加1</p><p> "00001100" when state =SWITCHMODE else --//0x0c--/
52、/開(kāi)顯示;不顯示光標(biāo);光標(biāo)不閃爍</p><p> "0001" & zanting & yi &"00" when state = SHIFT else --//0x81--//顯示位移;左移</p><p> "00111100" when state=SETFUNCTION else--//0x3
53、C--//8位;兩行顯示16*2 ; 字體5*10</p><p> "01000000" when state =SETCGRAM else --//0x40 字符發(fā)生器儲(chǔ)存器地址ACG</p><p> "10000000" when state =SETDDRAM and counter =0 else --//0x80 顯示數(shù)據(jù)儲(chǔ)存器地址
54、ADD</p><p> "11000000" when state =SETDDRAM and counter /=0 else --//0xc0 顯示數(shù)據(jù)儲(chǔ)存器地址ADD 第二行開(kāi)頭</p><p> data_in when state = WRITERAM else --//寫(xiě)入數(shù)據(jù)</p><p> "ZZZZZZZ
55、Z";</p><p> char_addr <=conv_std_logic_vector( counter,7) when state =WRITERAM and counter<40 else --//默認(rèn)第一個(gè)字符地址為0x80 --// 0--39</p><p> conv_std_logic_vector( counter,7) when
56、state= WRITERAM and counter>40 and counter<88 else --//counter>40 and counter<73 相當(dāng)于在第二行中后移8個(gè)字符顯示以區(qū)分第一行8--39</p><p> conv_std_logic_vector( counter,7) when state= WRITER
57、AM and counter>88 and counter<89 else --//counter>73 and counter<81 1--7</p><p> "0000001"; </p><p> process(clk_int,Reset)</p><p><b> begin<
58、;/b></p><p> if(Reset='0')then </p><p> state<=IDLE;</p><p> counter<=0;</p><p> flag<='0';</p><p> div_counter<=0;<
59、/p><p> elsif(clk_int'event and clk_int='1')then --//分頻 t=50ms f=20hz</p><p> case state is</p><p> when IDLE => --//(1)</p><p> if(flag='0
60、')then </p><p> state<=SETFUNCTION; --//--//0x3C--//8位;兩行顯示16*2 ; flag<='1';</p><p> counter<=0; --//初始地址</p><p> div_counter<=0;</p><
61、;p><b> else</b></p><p> if(div_counter<DIVSS )then --//constant DIVSS : integer :=15;</p><p> div_counter<=div_counter +1;</p><p> state<=IDLE;</p>
62、<p><b> else</b></p><p> div_counter<=0;</p><p> state <=SHIFT; --//0x81--//顯示位移;左移 --最后一直在這里 移動(dòng):t=50ms*15=750ms=0.75s</p><p><b> end if;</b&
63、gt;</p><p><b> end if;</b></p><p> when SETFUNCTION => --//(2)--//--//0x3C--//8位;兩行顯示16*2 ; state<=SWITCHMODE;</p><p> when SWITCHMODE =>--//(3
64、)--//0x0c--//開(kāi)顯示;不顯示光標(biāo);光標(biāo)不閃爍</p><p> state<=CLEAR; </p><p> when CLEAR =>--//(4) --//0x01--清屏</p><p> state<=SETMODE;</p><p> when SETMODE =>--/
65、/(5)--//0x06--//顯示光標(biāo)移動(dòng)設(shè)置,當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加1,且光標(biāo)加1</p><p> state<=WRITERAM; </p><p> when WRITERAM =>--//(6)</p><p> if(counter =40)then </p><p> state<=S
66、ETDDRAM;</p><p> counter<=counter+1;</p><p> elsif(counter/=40 and counter<81)then</p><p> state<=WRITERAM;</p><p> counter<=counter+1;</p><p
67、><b> else</b></p><p> state<=SHIFT; --//開(kāi)始位移</p><p><b> end if;</b></p><p> when SETDDRAM => --//(7)</p><p> state<=WRITERAM
68、;</p><p> when SHIFT => --//(7)</p><p> state<=IDLE; </p><p> when SETCGRAM =></p><p> state<=IDLE;</p><p> when RETURNCURSOR
69、 =></p><p> state<=WRITERAM;</p><p> when READFLAG =></p><p> state<=IDLE;</p><p> when READRAM =></p><p> state<=IDLE;</p>
70、;<p> when others =></p><p> state<=IDLE;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><
71、;p> end Behavioral;</p><p><b> 元件例化的程序:</b></p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p&g
72、t;<p> entity char_ram2 is</p><p> port( address : in std_logic_vector(6 downto 0) ;</p><p> data : out std_logic_vector(7 downto 0)</p><p><b> );</b></
73、p><p> end char_ram2;</p><p> architecture fun of char_ram2 is</p><p> function char_to_integer ( indata :character) return integer is</p><p> variable result : intege
74、r range 0 to 16#7F#;</p><p><b> begin</b></p><p> case indata is</p><p> when ' ' =>result := 32;</p><p> when '!' =>result :
75、= 33;</p><p> when '"' =>result := 34;</p><p> when '#' =>result := 35;</p><p> when '$' =>result := 36;</p><p> when
76、39;%' =>result := 37;</p><p> when '&' =>result := 38;</p><p> when ''' =>result := 39;</p><p> when '(' =>result := 40;&l
77、t;/p><p> when ')' =>result := 41;</p><p> when '*' =>result := 42;</p><p> when '+' =>result := 43;</p><p> when ',' =&
78、gt;result := 44;</p><p> when '-' =>result := 45;</p><p> when '.' =>result := 46;</p><p> when '/' =>result := 47;</p><p>
79、 when '0' =>result := 48;</p><p> when '1' =>result := 49;</p><p> when '2' =>result := 50;</p><p> when '3' =>result := 51;&l
80、t;/p><p> when '4' =>result := 52;</p><p> when '5' =>result := 53;</p><p> when '6' =>result := 54;</p><p> when '7' =&
81、gt;result := 55;</p><p> when '8' =>result := 56;</p><p> when '9' =>result := 57;</p><p> when ':' =>result := 58;</p><p>
82、 when ';' =>result := 59;</p><p> when '<' =>result := 60;</p><p> when '=' =>result := 61;</p><p> when '>' =>result :=
83、 62;</p><p> when '?' =>result := 63;</p><p> when '@' =>result := 64;</p><p> when 'A' =>result := 65;</p><p> when 'B
84、9; =>result := 66;</p><p> when 'C' =>result := 67;</p><p> when 'D' =>result := 68;</p><p> when 'E' =>result := 69;</p><p
85、> when 'F' =>result := 70;</p><p> when 'G' =>result := 71;</p><p> when 'H' =>result := 72;</p><p> when 'I' =>result := 73
86、;</p><p> when 'J' =>result := 74;</p><p> when 'K' =>result := 75;</p><p> when 'L' =>result := 76;</p><p> when 'M'
87、=>result := 77;</p><p> when 'N' =>result := 78;</p><p> when 'O' =>result := 79;</p><p> when 'P' =>result := 80;</p><p>
88、 when 'Q' =>result := 81;</p><p> when 'R' =>result := 82;</p><p> when 'S' =>result := 83;</p><p> when 'T' =>result := 84;<
89、;/p><p> when 'U' =>result := 85;</p><p> when 'V' =>result := 86;</p><p> when 'W' =>result := 87;</p><p> when 'X' =>
90、;result := 88;</p><p> when 'Y' =>result := 89;</p><p> when 'Z' =>result := 90;</p><p> when '[' =>result := 91;</p><p> w
91、hen '\' =>result := 92;</p><p> when ']' =>result := 93;</p><p> when '^' =>result := 94;</p><p> when '_' =>result := 95;<
92、/p><p> when '`' =>result := 96;</p><p> when 'a' =>result := 97;</p><p> when 'b' =>result := 98;</p><p> when 'c' =>
93、;result := 99;</p><p> when 'd' =>result := 100;</p><p> when 'e' =>result := 101;</p><p> when 'f' =>result := 102;</p><p>
94、 when 'g' =>result := 103;</p><p> when 'h' =>result := 104;</p><p> when 'i' =>result := 105;</p><p> when 'j' =>result := 1
95、06;</p><p> when 'k' =>result := 107;</p><p> when 'l' =>result := 108;</p><p> when 'm' =>result := 109;</p><p> when 'n&
96、#39; =>result := 110;</p><p> when 'o' =>result := 111;</p><p> when 'p' =>result := 112;</p><p> when 'q' =>result := 113;</p>
97、<p> when 'r' =>result := 114;</p><p> when 's' =>result := 115;</p><p> when 't' =>result := 116;</p><p> when 'u' =>r
98、esult := 117;</p><p> when 'v' =>result := 118;</p><p> when 'w' =>result := 119;</p><p> when 'x' =>result := 120;</p><p> w
99、hen 'y' =>result := 121;</p><p> when 'z' =>result := 122;</p><p> when '{' =>result := 123;</p><p> when '|' =>result := 124;
100、</p><p> when '}' =>result := 125;</p><p> when '~' =>result := 126;</p><p> whenothers => result :=32;</p><p><b> end case;<
101、/b></p><p> return result;</p><p> end function;</p><p><b> begin </b></p><p> process (address)</p><p><b> begin</b></
102、p><p> case address is</p><p> when "0000000" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0000001" =>data<=conv_st
103、d_logic_vector(char_to_integer ('1') ,8);</p><p> when "0000010" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0000011" =>
104、data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when "0000100" =>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when "000
105、0101" =>data<=conv_std_logic_vector(char_to_integer ('4') ,8);</p><p> when "0000110" =>data<=conv_std_logic_vector(char_to_integer ('0') ,8);</p><p>
106、 when "0000111" =>data<=conv_std_logic_vector(char_to_integer ('0') ,8);</p><p> when "0001000" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</
107、p><p> when "0001001" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0001010" =>data<=conv_std_logic_vector(char_to_integer ('Y
108、') ,8);</p><p> when "0001011" =>data<=conv_std_logic_vector(char_to_integer ('Q') ,8);</p><p> when "0001100" =>data<=conv_std_logic_vector(char_to
109、_integer ('Q') ,8);</p><p> when "0001101" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0001110" =>data<=conv_std_logi
110、c_vector(char_to_integer (' ') ,8);</p><p> when "0001111" =>data<=conv_std_logic_vector(char_to_integer (' 1') ,8);</p><p> when "0010000" =>data&
111、lt;=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0010001" =>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when "0010010&
112、quot; =>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when "0010011" =>data<=conv_std_logic_vector(char_to_integer (' 4') ,8);</p><p> wh
113、en "0010100" =>data<=conv_std_logic_vector(char_to_integer (' 0') ,8);</p><p> when "0010101" =>data<=conv_std_logic_vector(char_to_integer ('0') ,8);</p&g
114、t;<p> when "0010110" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0010111" =>data<=conv_std_logic_vector(char_to_integer ('
115、9;) ,8);</p><p> when "0011000" =>data<=conv_std_logic_vector(char_to_integer ('Y ') ,8);</p><p> when "0011001" =>data<=conv_std_logic_vector(char_to_i
116、nteger ('Q') ,8);</p><p> when "0011010" =>data<=conv_std_logic_vector(char_to_integer ('Q') ,8);</p><p> when "0011011" =>data<=conv_std_logic_
117、vector(char_to_integer (' ') ,8);</p><p> when "0011100" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0011101" =>data<
118、=conv_std_logic_vector(char_to_integer ('1 ') ,8);</p><p> when "0011110" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0011111&qu
119、ot; =>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when "0100000" =>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when
120、"0100001" =>data<=conv_std_logic_vector(char_to_integer ('4') ,8);</p><p> when "0100010" =>data<=conv_std_logic_vector(char_to_integer ('0') ,8);</p>
121、<p> when "0100011" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0100100" =>data<=conv_std_logic_vector(char_to_integer ('3')
122、,8);</p><p> when "0100101" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0100110" =>data<=conv_std_logic_vector(char_to_intege
123、r (' S') ,8);</p><p> when "0100111" =>data<=conv_std_logic_vector(char_to_integer (' N') ,8);</p><p> when "0101001" =>data<=conv_std_logic_vec
124、tor(char_to_integer (' ') ,8);</p><p> when "0101010" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0101011" =>data<=co
125、nv_std_logic_vector(char_to_integer ('1') ,8);</p><p> when "0101100" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0101101"
126、=>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when "0101110" =>data<=conv_std_logic_vector(char_to_integer ('8') ,8);</p><p> when &quo
127、t;0101111" =>data<=conv_std_logic_vector(char_to_integer ('4') ,8);</p><p> when "0110000" =>data<=conv_std_logic_vector(char_to_integer ('0') ,8);</p><
128、p> when "0110001" =>data<=conv_std_logic_vector(char_to_integer ('2') ,8);</p><p> when "0110010" =>data<=conv_std_logic_vector(char_to_integer ('3') ,8);
129、</p><p> when "0110011" =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);</p><p> when "0110100" =>data<=conv_std_logic_vector(char_to_integer (&
130、#39;S') ,8);</p><p> when "0110101" =>data<=conv_std_logic_vector(char_to_integer ('N') ,8);</p><p> when "0110110" =>data<=conv_std_logic_vector(ch
131、ar_to_integer (' ') ,8);</p><p> when others =>data<=conv_std_logic_vector(char_to_integer (' ') ,8);--//顯示空格</p><p><b> end case;</b></p><p> e
132、nd process;</p><p><b> end fun;</b></p><p><b> 顯示結(jié)果:</b></p><p> 結(jié)果分析:當(dāng)實(shí)驗(yàn)板上電后,液晶屏幕會(huì)顯示如圖(1).</p><p> 當(dāng)撥碼開(kāi)關(guān)2處于“off”時(shí),液晶屏幕會(huì)整體移動(dòng);</p>&l
133、t;p> 當(dāng)撥碼開(kāi)關(guān)1處于“on”時(shí),液晶屏幕會(huì)整體右移,處于“off” 時(shí),液晶屏幕會(huì)整體左移;</p><p> 當(dāng)撥碼開(kāi)關(guān)1處于“on”時(shí),液晶屏幕移動(dòng)速度相對(duì)較慢,處于 </p><p> “off”時(shí),液晶屏幕移動(dòng)速度相對(duì)較快</p><p><b> 六.心得體會(huì):</b></p>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- fpga課程設(shè)計(jì)
- fpga課程設(shè)計(jì)
- fpga課程設(shè)計(jì)報(bào)告書(shū)
- fpga課程設(shè)計(jì)--交通燈設(shè)計(jì)
- fpga課程設(shè)計(jì)---基于fpga多功能電子鐘設(shè)計(jì)
- 基于fpga的數(shù)字時(shí)鐘課程設(shè)計(jì)
- fpga課程設(shè)計(jì)--簡(jiǎn)易電子琴設(shè)計(jì)及fpga功能驗(yàn)證
- fpga課程設(shè)計(jì)--簡(jiǎn)易電子琴設(shè)計(jì)及fpga功能驗(yàn)證
- fpga正交信號(hào)發(fā)生器課程設(shè)計(jì)
- 基于fpga的交通燈課程設(shè)計(jì)
- 基于fpga的數(shù)字鐘課程設(shè)計(jì)
- 基于fpga的異步電機(jī)課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于fpga的數(shù)字鐘設(shè)計(jì)
- 課程設(shè)計(jì)-基于fpga的vga圖像顯示設(shè)計(jì)
- 基于fpga的交通燈設(shè)計(jì)課程設(shè)計(jì)
- fpga課程設(shè)計(jì)報(bào)告--基于fpga的fir濾波器的設(shè)計(jì)
- 基于fpga的異步電機(jī)課程設(shè)計(jì)
- eda課程設(shè)計(jì)---基于fpga的數(shù)字鐘設(shè)計(jì)
- 基于fpga的樂(lè)曲演奏電路設(shè)計(jì)課程設(shè)計(jì)
- fpga課程設(shè)計(jì)源碼-時(shí)鐘-樂(lè)曲-函數(shù)信號(hào)電路
評(píng)論
0/150
提交評(píng)論