2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  FPGA課程設(shè)計(jì)報(bào)告</p><p>  題 目:基于CPLD的1602字符液晶顯示系統(tǒng)設(shè)計(jì) </p><p>  院 系: 信息與電氣工程學(xué)院 </p><p>  班 級(jí): 電子信息工程 </p><p>  學(xué) 號(hào):

2、 </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  成 績(jī):

3、 </p><p><b>  2011年7月</b></p><p>  基于CPLD的1602字符液晶顯示系統(tǒng)設(shè)計(jì)</p><p><b>  設(shè)計(jì)題目:</b></p><p>  基于CPLD的1602字符液晶顯示系統(tǒng)設(shè)計(jì)</p><p><b

4、>  設(shè)計(jì)要求技術(shù)指標(biāo):</b></p><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>

5、<b>  設(shè)計(jì)平臺(tái):</b></p><p>  QUARTUSII 6.0軟件 MARS-1270 CPLD 1602液晶</p><p>  設(shè)計(jì)思路與設(shè)計(jì)步驟:</p><p>  1.1602液晶指令介紹:</p><p>  要想控制1602液晶顯示字符,首先需要弄清楚1602有那些可控管腳,

6、 </p><p>  有哪些控制命令,如何控制其顯示,如何控制其移動(dòng)及如何控制其移動(dòng)速度及方向等,下面首先介紹一下我所要用的指令及管腳等。</p><p><b> ?。?)接口說(shuō)明:</b></p><p> ?。?)基本操作時(shí)序:</p><p>  A.讀狀態(tài):輸入:RS=L,RW=H,E=H, 輸出:DB

7、0--DB7=狀態(tài)字</p><p>  B.寫(xiě)指令:輸入:RS=L,RW=L,E=下降沿脈沖,DBO--DB7=指令碼, 輸出:無(wú)</p><p>  C.讀數(shù)據(jù):輸入:RS=H,RW=H,E=H,輸出:DB0--DB7=數(shù)據(jù)</p><p>  D.寫(xiě)數(shù)據(jù):輸入:RS=H,RW=L,E=下降沿脈沖,DBO--DB7=數(shù)據(jù), 輸出:無(wú)</p><

8、;p>  (3)指令集及其設(shè)置說(shuō)明:</p><p><b>  清屏指令:</b></p><p>  功能:<1> 清除液晶顯示器即將DDRAM 的內(nèi)容全部填入"空白"的ASCII碼20H;</p><p>  <2> 光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方;</p><

9、;p>  <3> 將地址計(jì)數(shù)器(AC)的值設(shè)為0。</p><p><b>  進(jìn)入設(shè)置模式指令:</b></p><p>  功能:設(shè)定每次定入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫(xiě)入的一個(gè)</p><p>  字符是否移動(dòng)。參數(shù)設(shè)定的情況如下所示:</p><p><b>  位名設(shè)置&

10、lt;/b></p><p>  I/D 0=寫(xiě)入新數(shù)據(jù)后光標(biāo)左移 1=寫(xiě)入新數(shù)據(jù)后光標(biāo)右移</p><p>  S 0=寫(xiě)入新數(shù)據(jù)后顯示屏不移 1=寫(xiě)入新數(shù)據(jù)后顯示屏整體右移1字符</p><p><b>  顯示開(kāi)關(guān)控制指令:</b></p><p>  功能:控制顯示器

11、開(kāi)/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。參數(shù)設(shè)定的情</p><p><b>  況如下:</b></p><p><b>  位名設(shè)置</b></p><p>  D 0=顯示功能關(guān) 1=顯示功能開(kāi)</p><p>  C 0=無(wú)光標(biāo) 1=有光標(biāo)</p&

12、gt;<p>  B 0=光標(biāo)閃爍 1=光標(biāo)不閃爍</p><p>  設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令:</p><p>  功能:使光標(biāo)移位或使整個(gè)顯示屏幕移位。參數(shù)設(shè)定的情況如下:</p><p>  S/C R/L 設(shè)定情況</p><p>  0 0 光標(biāo)左移1格,且AC值減1</p

13、><p>  0 1 光標(biāo)右移1格,且AC值加1</p><p>  1 0 顯示器上字符全部左移一格,但光標(biāo)不動(dòng)</p><p>  1 1 顯示器上字符全部右移一格,但光標(biāo)不動(dòng)</p><p><b>  功能設(shè)定指令:</b></p><p>  功能:設(shè)定數(shù)

14、據(jù)總線(xiàn)位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下:</p><p><b>  位名設(shè)置</b></p><p>  DL 0=數(shù)據(jù)總線(xiàn)為4位 1=數(shù)據(jù)總線(xiàn)為8位</p><p>  N 0=顯示1行 1=顯示2行</p><p>  F 0=5×7點(diǎn)陣/每字

15、符 1=5×10點(diǎn)陣/每字符</p><p>  設(shè)定CGRAM地址指令:</p><p>  功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAM的地址。</p><p>  DB5DB4DB3 為字符號(hào),也就是你將來(lái)要顯示該字符時(shí)要用到的字符</p><p>  地址。(000~111)(能定義八個(gè)字符)</p><

16、;p>  DB2DB1DB0為行號(hào)。(000~111)(八行)</p><p>  設(shè)定DDRAM地址指令;</p><p>  功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的DDRAM的地址。</p><p>  數(shù)據(jù)寫(xiě)入DDRAM或CGRAM指令:</p><p>  功能:<1> 將字符碼寫(xiě)入DDRAM,以使液晶顯示屏顯示出相對(duì)應(yīng)的字符

17、;</p><p>  <2> 將使用者自己設(shè)計(jì)的圖形存入CGRAM。</p><p>  DB7DB6DB5可為任何數(shù)據(jù),一般取“000”。</p><p>  DB4DB3DB2DB1DB0對(duì)應(yīng)于每行5點(diǎn)的字模數(shù)據(jù)。</p><p><b>  設(shè)計(jì)流程:</b></p><p>

18、  弄懂1602中各種管腳及其控制方法以及各種指令的指令碼后,就可以進(jìn) 行程序的編寫(xiě)了,首先整理一下編寫(xiě)流程:</p><p><b>  初始化</b></p><p><b>  設(shè)置狀態(tài)</b></p><p><b>  狀態(tài)轉(zhuǎn)換</b></p><p><b&g

19、t;  3.設(shè)計(jì)源程序:</b></p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  use IEEE.STD_LOGIC_ARITH.ALL;</p><p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;<

20、/p><p>  entity lcd_1602 is</p><p>  Port ( clk : in std_logic;</p><p>  reset:in std_logic;</p><p>  lcdrs : out std_logic;--讀或?qū)懼噶顋數(shù)據(jù)控制端</p><p>  lcdrw : o

21、ut std_logic;--讀|寫(xiě)控制端</p><p>  lcden : buffer std_logic; --使能端</p><p>  data : out std_logic_vector(7 downto 0);</p><p>  key1: in std_logic; --撥碼開(kāi)關(guān)控制移動(dòng)與不動(dòng);</p>

22、<p>  key2: in std_logic);</p><p>  end lcd_1602;</p><p>  Architecture Behavioral of lcd_1602 is</p><p>  Type state is</p><p>  (set_qingping,set_nobusy,set_

23、cursor,set_switch,set_ddram,write_data,set_ddram1,write_data1,set_ddram2,write_data2,set_ddram3,write_data3,set_ddram4,write_data4,set_ddram5,write_data5, set_ddram6,write_data6, set_ddram7,write_data7,set_ddram8,wr

24、ite_data8,set_ddram9,write_data9, set_ddram10,write_data10,set_ddram11,write_data11,set_ddram12,write_data12,set_ddram13,write_data13,set_ddram14,write_data14,set_ddram15,write_data15,set_ddram17,write_data17

25、,set_ddram16,write_data16,set_d</p><p>  type ram2 is array(0 to 7) of std_logic_vector(7 downto 0);</p><p>  constant cgram:ram2:=(("00011111"),("00000100"),("00000100&

26、quot;),</p><p>  ("00011111"),("00000100"),("00000100"),("00000100"),("00011111"));</p><p>  --把“王”字字模寫(xiě)入數(shù)組;</p><p>  signal current

27、_state:state;</p><p>  signal clkcnt: std_logic_vector(18 downto 0);</p><p>  Constant divcnt:std_logic_vector(18 downto 0):="1111001110001000000";</p><p>  signal clkdiv:

28、 std_logic;</p><p>  signal tc_clkcnt: std_logic; </p><p>  signal clk_int: std_logic;</p><p>  signal clkdiv2: std_logic;</p><p>  signal clkdiv3: std_logic;</p>

29、<p>  signal clkdiv6: std_logic;</p><p><b>  begin </b></p><p>  lcdrw <= '0' ; --讀寫(xiě)控制端設(shè)為寫(xiě)有效</p><p>  process(clk,reset)</p><p><b>

30、;  Begin</b></p><p>  if(reset='0')then</p><p>  clkcnt<="0000000000000000000";</p><p>  elsif(clk'event and clk='1')then</p><p>

31、  if(clkcnt=divcnt)then clkcnt<="0000000000000000000";</p><p><b>  else</b></p><p>  clkcnt<=clkcnt+1; --對(duì)系統(tǒng)時(shí)鐘進(jìn)行分頻使其工作周期為12.5ms</p><p><b

32、>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  tc_clkcnt<='1' when clkcnt=divcnt else '0'; --tc_clkcnt為12.5ms</p&

33、gt;<p>  process(tc_clkcnt,reset)</p><p><b>  begin</b></p><p>  if(reset='0')then</p><p>  clkdiv<='0';</p><p>  elsif(tc_clkcnt&

34、#39;event and tc_clkcnt='1')then</p><p>  clkdiv<=not clkdiv; --進(jìn)一步分頻使clkdiv=2*12.5ms;</p><p><b>  end if;</b></p><p>  end process;</p><p>  pr

35、ocess(clkdiv,reset)</p><p><b>  begin</b></p><p>  if(reset='0')then</p><p>  clk_int<='0';</p><p>  elsif(clkdiv'event and clkdiv=&#

36、39;1')then</p><p>  clk_int<= not clk_int; --再進(jìn)一步分頻使clk_int=4*12.5ms </p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clk_int,rese

37、t)</p><p><b>  begin</b></p><p>  if(reset='0')then</p><p>  clkdiv2<='0'; --再進(jìn)一步分頻使clkdiv2=8*12.5ms</p><p>  elsif(clk_int'event an

38、d clk_int='1')then</p><p>  clkdiv2<= not clkdiv2; </p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clkdiv2,reset)</p><

39、p><b>  begin</b></p><p>  if(reset='0')then</p><p>  clkdiv3<='0'; --再進(jìn)一步分頻使clkdiv3=16*12.5ms</p><p>  elsif(clkdiv2'event and clkdiv2='

40、1')then</p><p>  clkdiv3<= not clkdiv3; </p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clkdiv3,reset)</p><p><b>

41、;  begin</b></p><p>  if(reset='0')then</p><p>  clkdiv6<='0'; --還是進(jìn)一步分頻使clkdiv6=32*12.5ms</p><p>  elsif(clkdiv3'event and clkdiv3='1')then

42、</p><p>  clkdiv6<= not clkdiv6; </p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clkdiv3,reset)</p><p><b>  begin</

43、b></p><p>  if(reset='0')then</p><p>  lcden<='0';</p><p>  elsif(clkdiv3'event and clkdiv3='0')then</p><p>  lcden<= not lcden;

44、--設(shè)置使能信號(hào)頻率</p><p><b>  end if;</b></p><p>  end process; </p><p>  附注:進(jìn)行多次分頻的目地是為了使字符顯示速度及移動(dòng)速度等合適,便于觀察。</p><p>  control:process(clk,reset,current_state

45、)</p><p>  variable cnt1: std_logic_vector(3 downto 0); --控制各種狀態(tài)及其轉(zhuǎn)換 </p><p><b>  begin</b></p><p>  if reset='0'then</p><p>  current_state<

46、=set_nobusy ;</p><p>  cnt1:=(others => '1');</p><p>  lcdrs<='0';</p><p>  elsif rising_edge(clkdiv6)then </p><p>  --使用clkdiv6是為了和lcden吻合,達(dá)到使能

47、目地</p><p>  current_state <= current_state ;</p><p>  lcdrs <= '0';</p><p>  case current_state is</p><p>  when set_nobusy=> --測(cè)試空閑狀態(tài) <

48、;/p><p>  data<="00111000";--38H</p><p>  current_state<=set_cursor;</p><p>  when set_cursor=></p><p>  data<="00000110"; --進(jìn)入模式設(shè)置狀態(tài)寫(xiě)入新數(shù)

49、據(jù)后光標(biāo)右移</p><p>  current_state<=set_switch;</p><p>  when set_switch=></p><p>  data<="00001100"; --顯示開(kāi)關(guān)控制狀態(tài);顯示功能開(kāi)</p><p>  current_state<=set_qi

50、ngping;</p><p>  when set_qingping=></p><p>  data<="00000001"; --清屏指令</p><p>  current_state<=set_ddram;</p><p>  when set_ddram=></p>&

51、lt;p>  data<="10000000"; --設(shè)置要顯示數(shù)據(jù)的位置:第1行第1列80H</p><p>  current_state<=write_data;</p><p>  when write_data=> </p><p>  lcdrs<='1';<

52、/p><p>  data<="00110001";--設(shè)置要顯示的數(shù)據(jù)1</p><p>  current_state<=set_ddram1;</p><p>  when set_ddram1=></p><p>  lcdrs<='0'; -- 設(shè)置要顯示數(shù)據(jù)的位置:

53、第1行第2列81H</p><p>  data<="10000001";</p><p>  current_state<=write_data1;</p><p>  when write_data1=></p><p>  lcdrs<='1'; --設(shè)置要顯示的

54、數(shù)據(jù)2</p><p>  data<="00110010";</p><p>  current_state<=set_ddram2;</p><p>  when set_ddram2=></p><p>  lcdrs<='0'; -- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第3

55、列82H</p><p>  data<="10000010";--82H</p><p>  current_state<=write_data2;</p><p>  when write_data2=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)8

56、</p><p>  data<="00111000";</p><p>  current_state<=set_ddram3;</p><p>  when set_ddram3=></p><p>  lcdrs<='0';-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第4列83H<

57、/p><p>  data<="10000011";</p><p>  current_state<=write_data3;</p><p>  when write_data3=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)8</p>&

58、lt;p>  data<="00111000";</p><p>  current_state<=set_ddram4;</p><p>  when set_ddram4=></p><p>  lcdrs<='0'; -- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第5列84H</p>&l

59、t;p>  data<="10000100";--82H</p><p>  current_state<=write_data4;</p><p>  when write_data4=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)4</p><

60、p>  data<="00110100";</p><p>  current_state<=set_ddram5;</p><p>  when set_ddram5=></p><p>  lcdrs<='0';</p><p>  data<="10000

61、101"; -- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第6列85H</p><p>  current_state<=write_data5;</p><p>  when write_data5=></p><p>  lcdrs<='1';</p><p>  data<="001100

62、00"; --設(shè)置要顯示的數(shù)據(jù)0</p><p>  current_state<=set_ddram6;</p><p>  when set_ddram6=></p><p>  lcdrs<='0';</p><p>  data<="10000110";-- 設(shè)

63、置要顯示數(shù)據(jù)的位置:第1行第7列86H</p><p>  current_state<=write_data6;</p><p>  when write_data6=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)1</p><p>  data<="0011000

64、1";</p><p>  current_state<=set_ddram7;</p><p>  when set_ddram7=></p><p>  lcdrs<='0';</p><p>  data<="10000111";-- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第8

65、列87H</p><p>  current_state<=write_data7;</p><p>  when write_data7=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)5</p><p>  data<="00110101";</p&

66、gt;<p>  current_state<=set_ddram8;</p><p>  when set_ddram8=></p><p>  lcdrs<='0';</p><p>  data<="10001000";-- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第9列88H</p>

67、<p>  current_state<=write_data8;</p><p>  when write_data8=></p><p>  lcdrs<='1';</p><p>  data<="00101101"; --設(shè)置要顯示的數(shù)據(jù)-</p><p>  c

68、urrent_state<=set_ddram9; </p><p>  when set_ddram9=></p><p>  lcdrs<='0';</p><p>  data<="10001001";-- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第10列89H</p><p>  cur

69、rent_state<=write_data9;</p><p>  when write_data9=></p><p>  lcdrs<='1';</p><p>  data<="01011010"; --設(shè)置要顯示的數(shù)據(jù)Z</p><p>  current_state&l

70、t;=set_ddram10;</p><p>  when set_ddram10=></p><p>  lcdrs<='0';</p><p>  data<="10001010";-- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第11列90H</p><p>  current_state<

71、;=write_data10;</p><p>  when write_data10=></p><p>  lcdrs<='1';</p><p>  data<="01000111"; --設(shè)置要顯示的數(shù)據(jù)G </p><p>  current_state<=set_ddr

72、am11;</p><p>  when set_ddram11=></p><p>  lcdrs<='0';</p><p>  data<="10001011";-- 設(shè)置要顯示數(shù)據(jù)的位置:第1行第12列91H</p><p>  current_state<=write_da

73、ta11;</p><p>  when write_data11=></p><p>  lcdrs<='1';</p><p>  data<="01001100"; --設(shè)置要顯示的數(shù)據(jù)L</p><p>  current_state<=set_ddram12;</p

74、><p>  when set_ddram12=></p><p>  lcdrs<='0';</p><p>  data<="11000000";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第1列C0H</p><p>  current_state<=write_data12;</p&

75、gt;<p>  when write_data12=> </p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)1</p><p>  data<="00110001";</p><p>  current_state<=set_ddram13;<

76、;/p><p>  when set_ddram13=></p><p>  lcdrs<='0';</p><p>  data<="11000001";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第2列C1H</p><p>  current_state<=write_data13;<

77、/p><p>  when write_data13=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)2</p><p>  data<="00110010";</p><p>  current_state<=set_ddram14;</p>&l

78、t;p>  when set_ddram14=></p><p>  lcdrs<='0';</p><p>  data<="11000010";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第3列C2H</p><p>  current_state<=write_data14;</p><

79、;p>  when write_data14=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)8</p><p>  data<="00111000";</p><p>  current_state<=set_ddram15;</p><p>  

80、when set_ddram15=></p><p>  lcdrs<='0';</p><p>  data<="11000011";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第4列C3H</p><p>  current_state<=write_data15;</p><p>  w

81、hen write_data15=></p><p>  lcdrs<='1';</p><p>  data<="00111000";--設(shè)置要顯示的數(shù)據(jù)8</p><p>  current_state<=set_ddram16;</p><p>  when set_ddram

82、16=></p><p>  lcdrs<='0';</p><p>  data<="11000100";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第5列C4H</p><p>  current_state<=write_data16;</p><p>  when write_data

83、16=></p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)4</p><p>  data<="00110100";</p><p>  current_state<=set_ddram17;</p><p>  when set_ddram17=><

84、/p><p>  lcdrs<='0';</p><p>  data<="11000101";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第6列C5H</p><p>  current_state<=write_data17;</p><p>  when write_data17=><

85、/p><p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)0</p><p>  data<="00110000";</p><p>  current_state<=set_ddram18;</p><p>  when set_ddram18=></p><

86、p>  lcdrs<='0';</p><p>  data<="11000110";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第7列C6H</p><p>  current_state<=write_data18;</p><p>  when write_data18=></p><

87、p>  lcdrs<='1'; --設(shè)置要顯示的數(shù)據(jù)2</p><p>  data<="00110010";</p><p>  current_state<=set_ddram19;</p><p>  when set_ddram19=></p><p>  lcdr

88、s<='0';</p><p>  data<="11000111";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第8列C7H</p><p>  current_state<=write_data19;</p><p>  when write_data19=></p><p>  lcdr

89、s<='1'; --設(shè)置要顯示的數(shù)據(jù)8</p><p>  data<="00111000";</p><p>  current_state<=set_ddram20;</p><p>  when set_ddram20=></p><p>  lcdrs<='

90、;0';</p><p>  data<="11001000";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第9列C8H</p><p>  current_state<=write_data20;</p><p>  when write_data20=></p><p>  lcdrs<='

91、;1'; --設(shè)置要顯示的數(shù)據(jù)-</p><p>  data<="00101101";</p><p>  current_state<=set_ddram21;</p><p>  when set_ddram21=></p><p>  lcdrs<='0';&l

92、t;/p><p>  data<="11001001";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第10列C9H</p><p>  current_state<=write_data21;</p><p>  when write_data21=></p><p>  lcdrs<='1';

93、 --設(shè)置要顯示的數(shù)據(jù)X</p><p>  data<="01011000";</p><p>  current_state<=set_ddram22;</p><p>  when set_ddram22=></p><p>  lcdrs<='0';</p>

94、<p>  data<="11001010";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第11列CAH</p><p>  current_state<=write_data22;</p><p>  when write_data22=></p><p>  lcdrs<='1'; --設(shè)置要顯

95、示的數(shù)據(jù)H</p><p>  data<="01001000";</p><p>  current_state<=set_ddram23;</p><p>  when set_ddram23=></p><p>  lcdrs<='0';</p><p>

96、;  data<="11001011";-- 設(shè)置要顯示數(shù)據(jù)的位置:第2行第12列CBH</p><p>  current_state<=write_data23; </p><p>  when write_data23=></p><p>  lcdda<='1'; --設(shè)置要顯示的數(shù)

97、據(jù)Y</p><p>  data<="01011001";</p><p>  current_state<=set_cgram;</p><p>  when set_cgram=></p><p>  lcdda<='0';</p><p>  data

98、<="01000000"; --設(shè)定CGRAM地址指令;</p><p>  current_state<=write_cgram;</p><p>  when write_cgram=> </p><p>  lcdda<='1';</p><p>

99、  cnt1:=cnt1+1; --向CGRAM中寫(xiě)入“王”字;</p><p>  data<=cgram(conv_integer(cnt1)); </p><p>  if cnt1 = "1000" then</p><p>  current_state<=set_ddram24;</p>

100、<p><b>  end if; </b></p><p>  when set_ddram24=></p><p>  lcdda<='0'; --設(shè)定王字的顯示位置 第1行第13列 92H</p><p>  data<="10001100";</p>

101、;<p>  current_state<=write_data24;</p><p>  when write_data24=></p><p>  lcdda<='1'; --設(shè)置要顯示的王字</p><p>  data<="00000000";</p><p

102、>  current_state<=set_ddram25;</p><p>  when set_ddram25=></p><p>  lcdda<='0'; --設(shè)定王字的顯示位置 第2行第13列 CCH</p><p>  data<="11001100";</p>

103、<p>  current_state<=write_data25;</p><p>  when write_data25=></p><p>  lcdda<='1'; --設(shè)置要顯示的王字</p><p>  data<="00000000";</p><p>

104、  if key1='1' then</p><p>  current_state<=shift_cur;</p><p>  elsif key2='1' then</p><p>  current_state<=shift_display;</p><p>  end if; <

105、/p><p>  when shift_cur=></p><p>  lcdda<='0';</p><p>  data<="00010100";</p><p>  current_state<=shift_cur;</p><p>  when shift

106、_display=></p><p>  lcdda<='0';</p><p>  data<="00011100";</p><p>  when others=>null;</p><p>  end case; </p><p><

107、b>  end if;</b></p><p>  end process;</p><p>  end Behavioral;</p><p><b>  設(shè)計(jì)結(jié)果:</b></p><p>  顯示12884015-ZGL王</p><p>  12884028-XHY 王&

108、lt;/p><p><b>  自定義漢字顯示:</b></p><p><b>  步驟如下:</b></p><p>  先將自定義字符或漢字寫(xiě)入CGRAM,如下圖定義A的字模一樣所示:如果想自定義一個(gè)"十",則八行的字符串構(gòu)成一個(gè)數(shù)組,每個(gè)元素是一個(gè)八位的二進(jìn)制字符串,則十所構(gòu)成的字模為(不夠八位的前

109、三位補(bǔ)零):</p><p>  data[8]=(“00000100”,“00000100”,“00000100”,“00011111”,“00000100”,</p><p>  “00000100”,“00000100”,“00000100”,)</p><p>  把這個(gè)數(shù)組寫(xiě)到CGRAM中某一個(gè)位置中,比如第一個(gè)留下來(lái)的位置中,則這個(gè)“十”字就可以和CGR

110、OM中已有的字符一樣的顯示到液晶中了。</p><p>  共七行(剩余略去) </p><p><b>  設(shè)計(jì)總結(jié):</b></p><p>  要想控制1602液晶顯示,首先需要了解1602的各種參數(shù)指令及控制,其次就是需要熟悉 QUARTUSII 6.0軟件的用法,會(huì)使用VHDL語(yǔ)言來(lái)編寫(xiě)程序控制,</p><

111、p>  在寫(xiě)程序時(shí)還需注意各種狀態(tài)之間的轉(zhuǎn)換,特別注意時(shí)鐘的協(xié)調(diào)設(shè)置,程序比較長(zhǎng),比較繁瑣,要注意有耐心且一定要細(xì)心認(rèn)真。</p><p><b>  六.設(shè)計(jì)體會(huì):</b></p><p>  通過(guò)這一周的忙碌,終于把我和組員的學(xué)號(hào)及姓名的首字母成功的顯示到了</p><p>  1602液晶上,通過(guò)這次課程設(shè)計(jì),我們組再一次鞏固了FP

112、GA的有關(guān)知識(shí),更深入的掌握了VHDL語(yǔ)言的用法,更重要的是我們學(xué)會(huì)了利用mars-1270編寫(xiě)程序去控制1602液晶顯示,掌握了1602的各種指令及控制方法,雖然很累,中間遇到了很多困難,但在老師和同學(xué)的幫助下,最終還是完成了,我們很滿(mǎn)意。過(guò)程很累,程序很繁瑣,讓人看著頭疼,但在老師和同學(xué)的鼓勵(lì)和幫助下,最終勝利完成任務(wù)的感覺(jué)還是非常好的,再次感謝鄭老師和田同學(xué)的耐心幫助。</p><p><b> 

113、 附:</b></p><p>  CGROM中部分字符碼與部分字符字模關(guān)系對(duì)照表:</p><p><b>  參考文獻(xiàn):</b></p><p>  CPLD/FPGA設(shè)計(jì)及應(yīng)用 羅朝霞 高書(shū)莉著 人民郵電出版社</p><p>  液晶LCD1602中文資料 </p><p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論