fpga課程設(shè)計_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  設(shè)計目的:</b></p><p>  熟練掌握和使用基于CPLD/FPGA的數(shù)字系統(tǒng)開發(fā)工具、開發(fā)流程,能</p><p>  夠自主進行成熟的基于CPLD/FPGA的數(shù)字系統(tǒng)設(shè)計,能夠發(fā)現(xiàn)和獨立解決</p><p>  開發(fā)過程中遇到的問題。 </p><p>  2、了解時序電路FPG

2、A的實現(xiàn)。</p><p>  3、學習用VHDL語言來描述時序電路的過程。</p><p>  4、了解LCD1602液晶顯示器的工作原理。</p><p><b>  二.設(shè)計環(huán)境:</b></p><p>  QUARTUSH 9.0 軟件 MARS-1270 CPLD實驗版 1602液晶</p>

3、<p>  MARS-1270 CPLD實驗版是針對CPLD/FPGA的初中級學者設(shè)計,該板可 以配合其擴展板進行相應(yīng)的實驗,也可以作為相關(guān)CPLD/FPGA研發(fā)的原型。核心板簡單實用擴展性好,板上提供ISP接口,并將CPLD/FPGA的部分IO引腳引出,為用戶提供一個幫助用戶快速開始可編程邏輯器件學習之旅的硬件平臺。</p><p><b>  設(shè)計要求:</b></p

4、><p>  要求用1602液晶顯示字符;</p><p>  顯示內(nèi)容:學號+英文姓名;</p><p>  顯示方式:流動顯示,開關(guān)控制字符流動速度及方向;具有暫停和清屏 </p><p><b>  的功能;</b></p><p>  擴展部分:設(shè)計漢字字符及其他功能</p>&

5、lt;p>  四.設(shè)計思路及實現(xiàn)方法</p><p>  下圖所示1602字符液晶接口與實驗板內(nèi)部相連之圖</p><p>  上圖所示是從MARS-1270 CPLD實驗版 的手冊上截取的1602與實驗板相連的圖,1,2,3,15,16均與實驗板內(nèi)部電壓相連,顯示時只需注意給1602的</p><p><b>  4-14管腳賦值。</b&g

6、t;</p><p> ?。?)1602引腳定義</p><p>  1602采用標準的16腳接口,其中: </p><p>  第1腳:VSS為地電源</p><p>  第2腳:VDD接5V正電源</p><p>  第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)

7、生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度</p><p>  第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p>  第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)。</p>

8、;<p>  第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  第15~16腳:空腳</p><p>  (2) 1602實際寫時每位的地址</p><p>  第一行:首地址為80H,”10000000”,最多能顯示27個

9、數(shù);尾地址為A7H,”10100111”</p><p>  第二行:首地址為 C0H,”11000000”, 最多能顯示27個數(shù);尾地址為</p><p>  E7H,”11100111”</p><p>  (3) 1602內(nèi)部</p><p>  1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如

10、表1所示,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用 的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地 址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”</p><p>  LCD1602的工作時序可查閱其他資料</p><p>  下圖為CGROM中字符碼與字符字模關(guān)系對照表</p>

11、<p>  從下圖可以看出,“A”字的對應(yīng)上面高位代碼為0100,對應(yīng)左邊低位代碼為0001,合起來就是01000001,也就是41H??梢娝拇a與我們PC中的字符代碼是基本一致的。因此我們在向DDRAM 寫C51字符代碼程序時甚至可以直接用P1='A'這樣的方法。PC在編譯時就把“A”先轉(zhuǎn)為41H代碼了。</p><p>  字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(

12、對于5X8點陣的字符,可以存放8組,5X10點陣的字符,存放4組),就是CGRAM了。</p><p>  0x20~0x7F 為標準的ASCII 碼,0xA0~0xFF 為日文字符和希臘文字</p><p>  符,其余字符碼(0x10~0x1F及0x80~0x9F)沒有定義。</p><p> ?。?)對DDRAM的內(nèi)容和地址進行操作的指令(只介紹本次設(shè)計中涉及

13、的一些)</p><p>  一.清屏指令:使液晶不顯示任何東西</p><p>  二.設(shè)定顯示屏或光標移動方向指令</p><p>  三.顯示模式設(shè)置:寫程序時從38H開寫,是使液晶處于開始狀態(tài)</p><p><b>  四.暫停及流動</b></p><p>  注:上述四個功能均在RS

14、為0時方可寫入;若RS為1,則可寫入在1602上顯示字符的代碼;E一般選取系統(tǒng)時鐘分頻后的時鐘;</p><p>  設(shè)計思路及實現(xiàn)方法.</p><p>  根據(jù)寫1602的一般順序:(1)開始38H.(2)顯示模式設(shè)置.(3)顯示關(guān)閉08H.(4)顯示清屏01H.(5)顯示光標移動設(shè)置06H.(6)顯示開及光標移動設(shè)置0CH</p><p>  根據(jù)這幾步?jīng)Q定用

15、VHDL語言中的狀態(tài)機描述方式進行編寫程序,與其他描述方式相比,狀態(tài)機的表述豐富多樣,程序?qū)哟畏置?,結(jié)構(gòu)清晰,易讀易懂;</p><p>  其中,在設(shè)計程序的過程中,由于程序包含地址和顯示內(nèi)容,考慮用到元件例化語句,將每個地址要顯示的內(nèi)容存到相應(yīng)的元件例化語句中去。元件例化就是將預先設(shè)計好的設(shè)計實體定義為一個元件,然后利用特定的語句將此元件與當前的設(shè)計實體中的指定端口相連接。</p><p&

16、gt;  五.程序源文件與設(shè)計結(jié)果分析</p><p>  1.顯示內(nèi)容:學號+英文姓名</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; --撥碼開關(guān)0</p><p>  key1:in std_logic; --撥碼開關(guān)1</p><p>  key2:in std_logic --撥碼開關(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、光標返回</p><p>  constantSETMODE : std_logic_vector(10 downto 0) :="00000000100";--//輸入方式--//0x06--//顯示光標移動設(shè)置,當讀或?qū)懸粋€字符后地址指針加1,且光標加1</p><p>  constantSWITCHMODE:std_logic_vector(10downto0)

23、 :="00000001000";-/顯示開關(guān)--//0x0c--//開顯示;不顯示光標;光標不閃爍</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、存儲器地址ACG</p><p>  constantSETDDRAM:std_logic_vector(10downto 0) :="00010000000";--//設(shè)置DDRAM(顯示數(shù)據(jù)RAM)的地址--//0x80 顯示數(shù)據(jù)儲存器地址ADD --//0xc0 顯示數(shù)據(jù)儲存器地址ADD 第二行開頭</p><p>  constant READFLAG :

26、std_logic_vector(10 downto 0) :="00100000000";--//忙標志</p><p>  constant WRITERAM: std_logic_vector(10 downto 0) :="01000000000"; -寫數(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;--元件例化語句</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; --顯示步進</p><p>  signal yi: std_logic; --顯示左移還是右移</p>

33、<p>  signal zanting: std_logic;--顯示暫停還是流動</p><p><b>  begin</b></p><p>  process(key)--該部分控制分頻步進是1還是5,即是控制字符流動速度</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)—該部分控制整屏暫停還是流動1暫停,0流動</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)生計數(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)時鐘 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; --//使能信號翻轉(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'; --//當lcd_rs=1時,為數(shù)據(jù);=0時,

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,寫;=1,讀</p><p>  data <="00000001" when state =CLEAR else --//0x01--清屏</p><p>  "00000010" when state =RETURNCU

51、RSOR else --//0x02--光標返回</p><p>  "00000110" when state = SETMODE else --//0x06--//顯示光標移動設(shè)置,當讀或?qū)懸粋€字符后地址指針加1,且光標加1</p><p>  "00001100" when state =SWITCHMODE else --//0x0c--/

52、/開顯示;不顯示光標;光標不閃爍</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ā)生器儲存器地址ACG</p><p>  "10000000" when state =SETDDRAM and counter =0 else --//0x80 顯示數(shù)據(jù)儲存器地址

54、ADD</p><p>  "11000000" when state =SETDDRAM and counter /=0 else --//0xc0 顯示數(shù)據(jù)儲存器地址ADD 第二行開頭</p><p>  data_in when state = WRITERAM else --//寫入數(shù)據(jù)</p><p>  "ZZZZZZZ

55、Z";</p><p>  char_addr <=conv_std_logic_vector( counter,7) when state =WRITERAM and counter<40 else --//默認第一個字符地址為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 相當于在第二行中后移8個字符顯示以區(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--//顯示位移;左移 --最后一直在這里 移動: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--//開顯示;不顯示光標;光標不閃爍</p><p>  state<=CLEAR; </p><p>  when CLEAR =>--//(4) --//0x01--清屏</p><p>  state<=SETMODE;</p><p>  when SETMODE =>--/

65、/(5)--//0x06--//顯示光標移動設(shè)置,當讀或?qū)懸粋€字符后地址指針加1,且光標加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; --//開始位移</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é)果分析:當實驗板上電后,液晶屏幕會顯示如圖(1).</p><p>  當撥碼開關(guān)2處于“off”時,液晶屏幕會整體移動;</p>&l

133、t;p>  當撥碼開關(guān)1處于“on”時,液晶屏幕會整體右移,處于“off” 時,液晶屏幕會整體左移;</p><p>  當撥碼開關(guān)1處于“on”時,液晶屏幕移動速度相對較慢,處于 </p><p>  “off”時,液晶屏幕移動速度相對較快</p><p><b>  六.心得體會:</b></p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論