久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 19549|回復: 4
打印 上一主題 下一主題
收起左側

VHDL-LCD1602顯示程序 包括英文數字簡單漢字

[復制鏈接]
跳轉到指定樓層
樓主
ID:77367 發表于 2015-4-19 03:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式








Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Entity LCD1602 is
Port(clk,CR:in std_logic;
     RW,EN,RS:out std_logic;
       Qdata:out std_logic_vector(7 downto 0));
end;
Architecture LCD of LCD1602 is
signal Qfp:integer range 0 to 4999999;
signal cp:std_logic;
begin
  process(clk,CR)
     begin
          if CR='0' then
                Qfp<=0;
                    cp<='0';
               elsif clk'event and clk='1' then
                     Qfp<=Qfp+1;
                         if Qfp=0 then
                            cp<=not cp;
                         end if;
               end if;
     end process;
     RW<='0';
     EN<=cp;
     process(cp)
        variable cnt:integer range 0 to 37;
        begin
          if CR='0' then
             cnt:=0;
               Qdata<="00000001";
          elsif cp'event and cp='1' then
              cnt:=cnt+1;
          end if;
          case cnt is
          -------Init LCD1602-----------
          when 0 =>RS<='0';Qdata<="00111000";  --0x38,
          when 1 =>RS<='0';Qdata<="00001100";  --0x0C
          when 2 =>RS<='0';Qdata<="00000001";  --0x01
          when 3 =>RS<='0';Qdata<="00000110";  --0x60
          ----------------------------------
          when 4 =>RS<='0';Qdata<="10000000";  --display,0x00+0x80,1h1w
          -------data display-------------
          when 5=>RS<='1';Qdata<="10100000";--空格   
      when 6=>RS<='1';Qdata<="10100000";--空格   
      when 7=>RS<='1';Qdata<="10100000";--空格
      when 8=>RS<='1';Qdata<="01011001"; --Y   
      when 9=>RS<='1';Qdata<="01110101";--u   
      when 10=>RS<='1';Qdata<="01101010";--j   
      when 11=>RS<='1';Qdata<="01101001";--i   
      when 12=>RS<='1';Qdata<="01100001";--a   
      when 13=>RS<='1';Qdata<="01101110";--n   
      when 14=>RS<='1';Qdata<="01110001";--q      
      when 15=>RS<='1';Qdata<="01110101";--u   
      when 16=>RS<='1';Qdata<="01100001";--a   
      when 17=>RS<='1';Qdata<="01101110";--n   
      when 18=>RS<='1';Qdata<="10100000";---空格   
      when 19=>RS<='1';Qdata<="10100000";---空格   
      when 20=>RS<='1';Qdata<="10100000";---空格
     ---------------------------
        when 21=>RS<='0';Qdata<="11000000";--設定顯示的位置在10H+80H,
       ----------------------------
       when 22=>RS<='1';Qdata<="01000100";---D diangong xueyuan   
     when 23=>RS<='1';Qdata<="01101001";---i   
     when 24=>RS<='1';Qdata<="01100001";---a
     when 25=>RS<='1';Qdata<="01101110";---n   
     when 26=>RS<='1';Qdata<="01100111";---g   
     when 27=>RS<='1';Qdata<="01101111";---o
     when 28=>RS<='1';Qdata<="01101110";--n   
     when 29=>RS<='1';Qdata<="01100111";---g   
     when 30=>RS<='1';Qdata<="10100000";--- 空格   
     when 31=>RS<='1';Qdata<="01011000";---X
     when 32=>RS<='1';Qdata<="01110101";---u   
     when 33=>RS<='1';Qdata<="01100101";---e   
     when 34=>RS<='1';Qdata<="01111001";---y
     when 35=>RS<='1';Qdata<="01110101";---u   
     when 36=>RS<='1';Qdata<="01100001";---a   
     when 37=>RS<='1';Qdata<="01101110";---n      
     end case;
      end process;
     end;
LCD1602顯示自定義字符或漢字
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
Use ieee.std_logic_arith.all;
Entity LCD1602 is
Port(clk,CR:in std_logic;
     RW,EN,RS:out std_logic;
   Qdata:out std_logic_vector(7 downto 0));
end;
Architecture LCD of LCD1602 is
signal Qfp:integer range 0 to 499999;
signal cp:std_logic;
Type GCROM is array(0 to 63)of std_logic_vector(7 downto 0);
constant xx:GCROM:=(
X"00",X"00",X"00",X"1F",X"00",X"00",X"00",X"00",--一
X"00",X"00",X"0E",X"00",X"1F",X"00",X"00",X"00",--二
X"00",X"1F",X"00",X"0E",X"00",X"1F",X"00",X"00",--//三
X"02",X"04",X"0F",X"12",X"0F",X"0A",X"1F",X"02",--//年
X"0F",X"09",X"0F",X"09",X"0F",X"09",X"09",X"11",--//月
X"1F",X"11",X"11",X"1F",X"11",X"11",X"1F",X"00",--//日
X"00",X"00",X"00",X"0A",X"15",X"0A",X"04",X"00",--//心型
X"00",X"04",X"15",X"0E",X"1F",X"0E",X"11",X"00"      
                  );
constant yy:GCROM:=(
"01000000","01000001","01000010","01000011", "01000100","01000101","01000110","01000111",
"01001000","01001001","01001010","01001011", "01001100","01001101","01001110","01001111",
"01010000","01010001","01010010","01010011", "01010100","01010101","01010110","01010111",
"01011000","01011001","01011010","01011011", "01011100","01011101","01011110","01011111",
"01100000","01100001","01100010","01100011", "01100100","01100101","01100110","01100111",
"01101000","01101001","01101010","01101011", "01101100","01101101","01101110","01101111",
"01110000","01110001","01110010","01110011", "01110100","01110101","01110110","01110111",
"01111000","01111001","01111010","01111011", "01111100","01111101","01111110","01111111"  
                   );
begin
  process(clk,CR)
     begin
      if CR='0' then
        Qfp<=0;
    cp<='0';
     elsif clk'event and clk='1' then
         Qfp<=Qfp+1;
     if Qfp=0 then
        cp<=not cp;      
     end if;     
   end if;
end process;
RW<='0';
EN<=cp;
process(cp)
    variable cnt:integer range 0 to 195;
  begin
  if CR='0' then
     cnt:=0;
   Qdata<="00000001";
  elsif cp'event and cp='1' then            
       cnt:=cnt+1;      
  end if;
  case cnt is  
  when 0=>RS<='0';Qdata<="01000000";  
      when 1=>RS<='1';Qdata<=xx(cnt-1);
  when 2=>RS<='0';Qdata<="01000001";  
      when 3=>RS<='1';Qdata<=xx(cnt-2);
      when 4=>RS<='0';Qdata<="01000010";  
      when 5=>RS<='1';Qdata<=xx(cnt-3);
  when 6=>RS<='0';Qdata<="01000011";  
      when 7=>RS<='1';Qdata<=xx(cnt-4);
      when 8=>RS<='0';Qdata<="01000100";  
      when 9=>RS<='1';Qdata<=xx(cnt-5);
  when 10=>RS<='0';Qdata<="01000101";  
      when 11=>RS<='1';Qdata<=xx(cnt-6);
      when 12=>RS<='0';Qdata<="01000110";  
      when 13=>RS<='1';Qdata<=xx(cnt-7);
  when 14=>RS<='0';Qdata<="01000111";  
      when 15=>RS<='1';Qdata<=xx(cnt-8);
      when 16=>RS<='0';Qdata<="01001000";  
      when 17=>RS<='1';Qdata<=xx(cnt-9);
  when 18=>RS<='0';Qdata<="01001001";  
      when 19=>RS<='1';Qdata<=xx(cnt-10);
      when 20=>RS<='0';Qdata<="01001010";  
      when 21=>RS<='1';Qdata<=xx(cnt-11);
  when 22=>RS<='0';Qdata<="01001011";  
      when 23=>RS<='1';Qdata<=xx(cnt-12);
      when 24=>RS<='0';Qdata<="01001100";  
      when 25=>RS<='1';Qdata<=xx(cnt-13);
  when 26=>RS<='0';Qdata<="01001101";  
      when 27=>RS<='1';Qdata<=xx(cnt-14);
      when 28=>RS<='0';Qdata<="01001110";  
      when 29=>RS<='1';Qdata<=xx(cnt-15);
  when 30=>RS<='0';Qdata<="01001111";  
      when 31=>RS<='1';Qdata<=xx(cnt-16);   
  --------------
      when 32=>RS<='0';Qdata<="01010000";  
      when 33=>RS<='1';Qdata<=xx(cnt-17);
  when 34=>RS<='0';Qdata<="01010001";  
      when 35=>RS<='1';Qdata<=xx(cnt-18);
      when 36=>RS<='0';Qdata<="01010010";  
      when 37=>RS<='1';Qdata<=xx(cnt-19);
  when 38=>RS<='0';Qdata<="01010011";  
      when 39=>RS<='1';Qdata<=xx(cnt-20);
      when 40=>RS<='0';Qdata<="01010100";  
      when 41=>RS<='1';Qdata<=xx(cnt-21);
  when 42=>RS<='0';Qdata<="01010101";  
      when 43=>RS<='1';Qdata<=xx(cnt-22);
      when 44=>RS<='0';Qdata<="01010110";  
      when 45=>RS<='1';Qdata<=xx(cnt-23);
  when 46=>RS<='0';Qdata<="01010111";  
      when 47=>RS<='1';Qdata<=xx(cnt-24);
      when 48=>RS<='0';Qdata<="01011000";  
      when 49=>RS<='1';Qdata<=xx(cnt-25);
  when 50=>RS<='0';Qdata<="01011001";  
      when 51=>RS<='1';Qdata<=xx(cnt-26);
      when 52=>RS<='0';Qdata<="01011010";  
      when 53=>RS<='1';Qdata<=xx(cnt-27);
  when 54=>RS<='0';Qdata<="01011011";  
      when 55=>RS<='1';Qdata<=xx(cnt-28);
      when 56=>RS<='0';Qdata<="01011100";  
      when 57=>RS<='1';Qdata<=xx(cnt-29);
  when 58=>RS<='0';Qdata<="01011101";  
      when 59=>RS<='1';Qdata<=xx(cnt-30);
      when 60=>RS<='0';Qdata<="01011110";  
      when 61=>RS<='1';Qdata<=xx(cnt-31);
  when 62=>RS<='0';Qdata<="01011111";  
      when 63=>RS<='1';Qdata<=xx(cnt-32);
  ---------------------------------
  when 64=>RS<='0';Qdata<="01100000";  
      when 65=>RS<='1';Qdata<=xx(cnt-33);
  when 66=>RS<='0';Qdata<="01100001";  
      when 67=>RS<='1';Qdata<=xx(cnt-34);
      when 68=>RS<='0';Qdata<="01100010";  
      when 69=>RS<='1';Qdata<=xx(cnt-35);
  when 70=>RS<='0';Qdata<="01100011";  
      when 71=>RS<='1';Qdata<=xx(cnt-36);
      when 72=>RS<='0';Qdata<="01100100";  
      when 73=>RS<='1';Qdata<=xx(cnt-37);
  when 74=>RS<='0';Qdata<="01100101";  
      when 75=>RS<='1';Qdata<=xx(cnt-38);
      when 76=>RS<='0';Qdata<="01100110";  
      when 77=>RS<='1';Qdata<=xx(cnt-39);
  when 78=>RS<='0';Qdata<="01100111";  
      when 79=>RS<='1';Qdata<=xx(cnt-40);
      when 80=>RS<='0';Qdata<="01101000";  
      when 81=>RS<='1';Qdata<=xx(cnt-41);
  when 82=>RS<='0';Qdata<="01101001";  
      when 83=>RS<='1';Qdata<=xx(cnt-42);
      when 84=>RS<='0';Qdata<="01101010";  
      when 85=>RS<='1';Qdata<=xx(cnt-43);
  when 86=>RS<='0';Qdata<="01101011";  
      when 87=>RS<='1';Qdata<=xx(cnt-44);
      when 88=>RS<='0';Qdata<="01101100";  
      when 89=>RS<='1';Qdata<=xx(cnt-45);
  when 90=>RS<='0';Qdata<="01001101";  
      when 91=>RS<='1';Qdata<=xx(cnt-46);
      when 92=>RS<='0';Qdata<="01101110";  
      when 93=>RS<='1';Qdata<=xx(cnt-47);
  when 94=>RS<='0';Qdata<="01101111";  
      when 95=>RS<='1';Qdata<=xx(cnt-48);   
  --------------
      when 96=>RS<='0';Qdata<="01110000";  
      when 97=>RS<='1';Qdata<=xx(cnt-49);
  when 98=>RS<='0';Qdata<="01110001";  
      when 99=>RS<='1';Qdata<=xx(cnt-50);
      when 100=>RS<='0';Qdata<="01110010";  
      when 101=>RS<='1';Qdata<=xx(cnt-51);
  when 102=>RS<='0';Qdata<="01110011";  
      when 103=>RS<='1';Qdata<=xx(cnt-52);
      when 104=>RS<='0';Qdata<="01010100";  
      when 105=>RS<='1';Qdata<=xx(cnt-53);
  when 106=>RS<='0';Qdata<="01110101";  
      when 107=>RS<='1';Qdata<=xx(cnt-54);
      when 108=>RS<='0';Qdata<="01110110";  
      when 109=>RS<='1';Qdata<=xx(cnt-55);
  when 110=>RS<='0';Qdata<="01110111";  
      when 111=>RS<='1';Qdata<=xx(cnt-56);
      when 112=>RS<='0';Qdata<="01111000";  
      when 113=>RS<='1';Qdata<=xx(cnt-57);
  when 114=>RS<='0';Qdata<="01111001";  
      when 115=>RS<='1';Qdata<=xx(cnt-58);
      when 116=>RS<='0';Qdata<="01111010";  
      when 117=>RS<='1';Qdata<=xx(cnt-59);
  when 118=>RS<='0';Qdata<="01111011";  
      when 119=>RS<='1';Qdata<=xx(cnt-60);
      when 120=>RS<='0';Qdata<="01111100";  
      when 121=>RS<='1';Qdata<=xx(cnt-61);
  when 122=>RS<='0';Qdata<="01111101";  
      when 123=>RS<='1';Qdata<=xx(cnt-62);
      when 124=>RS<='0';Qdata<="01111110";  
      when 125=>RS<='1';Qdata<=xx(cnt-63);
  when 126=>RS<='0';Qdata<="01111111";  
      when 127=>RS<='1';Qdata<=xx(cnt-64);
  -------Init LCD1602-----------
  when 128 =>RS<='0';Qdata<="00111000";  --0x38,
  when 129 =>RS<='0';Qdata<="00001100";  --0x0C
  when 130=>RS<='0';Qdata<="00000001";  --0x01
  when 131 =>RS<='0';Qdata<="00000110";  --0x60
  -------------------------------
  
  ----------------------------------
  when 132 =>RS<='0';Qdata<="10000000";  --display,0x00+0x80,1h1w
  -------data display-------------
  when 133=>RS<='1';Qdata<="00000000";--空格   
      when 134=>RS<='1';Qdata<="00000001";--空格   
      when 135=>RS<='1';Qdata<="00000010";--空格
      when 136=>RS<='1';Qdata<="00000011"; --Y   
      when 137=>RS<='1';Qdata<="00000100";--u   
      when 138=>RS<='1';Qdata<="00000101";--j   
      when 139=>RS<='1';Qdata<="00000110";--i   
      when 140=>RS<='1';Qdata<="00000111";--a   
      when 141=>RS<='1';Qdata<="00000000";--n   
      when 142=>RS<='1';Qdata<="00000001";--q      
      when 143=>RS<='1';Qdata<="00000010";--u   
      when 144=>RS<='1';Qdata<="00000100";--a   
      when 145=>RS<='1';Qdata<="00000110";--n   
      when 146=>RS<='1';Qdata<="00000111";---空格   
      when 147=>RS<='1';Qdata<="10100100";---空格   
      when 148=>RS<='1';Qdata<="10100110";---空格
     ---------------------------
    when 149=>RS<='0';Qdata<="11000000";--設定顯示的位置在10H+80H,
   ----------------------------
   when 150=>RS<='1';Qdata<="00000111";---D diangong xueyuan   
     when 151=>RS<='1';Qdata<="00000110";---i   
     when 152=>RS<='1';Qdata<="00000101";---a
     when 153=>RS<='1';Qdata<="00000100";---n   
     when 154=>RS<='1';Qdata<="00000011";---g   
     when 155=>RS<='1';Qdata<="00000010";---o
     when 156=>RS<='1';Qdata<="00000001";--n   
     when 157=>RS<='1';Qdata<="00000000";---g   
     when 158=>RS<='1';Qdata<="00000000";--- 空格   
     when 159=>RS<='1';Qdata<="00000001";---X
     when 160=>RS<='1';Qdata<="00000010";---u   
     when 161=>RS<='1';Qdata<="00000011";---e   
     when 162=>RS<='1';Qdata<="00000100";---y
     when 163=>RS<='1';Qdata<="00000101";---u   
     when 164=>RS<='1';Qdata<="00000110";---a   
     when 165=>RS<='1';Qdata<="00000111";---n
--------------------------------------------
      when 166 =>RS<='0';Qdata<="10000000";  --display,0x00+0x80,1h1w
  -------data display-------------
  when 167=>RS<='1';Qdata<="00000000";--空格   
      when 168=>RS<='1';Qdata<="00000001";--空格   
      when 169=>RS<='1';Qdata<="00000010";--空格
      when 170=>RS<='1';Qdata<="00000011"; --Y   
      when 171=>RS<='1';Qdata<="00000100";--u   
      when 172=>RS<='1';Qdata<="00000101";--j   
      when 173=>RS<='1';Qdata<="00000110";--i   
      when 174=>RS<='1';Qdata<="00000111";--a   
      when 175=>RS<='1';Qdata<="00000000";--n   
      when 176=>RS<='1';Qdata<="00000001";--q      
      when 177=>RS<='1';Qdata<="00000010";--u   
      when 178=>RS<='1';Qdata<="00000011";--a   
      when 179=>RS<='1';Qdata<="00000100";--n   
      when 180=>RS<='1';Qdata<="00000101";---空格
     
  when 181 =>RS<='1';Qdata<="00000110";  --display,0x00+0x80,1h1w
  -------data display-------------
  when 182=>RS<='1';Qdata<="00000000";--空格   
      when 183=>RS<='1';Qdata<="00000001";--空格   
      when 184=>RS<='1';Qdata<="00000010";--空格
      when 185=>RS<='1';Qdata<="00000011"; --Y   
      when 186=>RS<='1';Qdata<="00000100";--u   
      when 187=>RS<='1';Qdata<="00000101";--j   
      when 188=>RS<='1';Qdata<="00000110";--i   
      when 189=>RS<='1';Qdata<="00000111";--a   
      when 190=>RS<='1';Qdata<="00000000";--n   
      when 191=>RS<='1';Qdata<="00000001";--q      
      when 192=>RS<='1';Qdata<="00000010";--u   
      when 193=>RS<='1';Qdata<="00000100";--a   
      when 194=>RS<='1';Qdata<="00000110";--n   
      when 195=>RS<='1';Qdata<="00000111";---空格
     when others=>null;   
     end case;
  end process;
end;

LCD1602相比大家都比較了解,但是我們一般只用來顯示字符,數字。

最近在網上看許多人用LCD1602來顯示漢字,覺得有趣
于是拜讀了一些資料,教程,但感覺大部分相當晦澀難懂,本人認為既然是教程,就不必要相當的復雜,畢竟人家看完許久后還是不能得出實驗結果~!
接下我談談我得做法,保證你10分鐘之內一樣可以在LCD1602上顯示你想顯示的各種符號,漢字!!

首先:我們要弄清楚一個概念,其實我們使用1602顯示中文漢字,就是利用其內部的自定義字節空間,我們都知道LCD1602內部有一個64字節的自定義CGRAM,那么好,我們就是要利用自定義字節來達到顯示漢字的效果.
我們知道一個字符占8個字節,所以在CGRAM能夠存放8個字符。
也就是說,這個64字節的CGRAM是給我們提供寫入數據的,
那么我們怎么把我們要的漢字寫入CGRAM呢?
不要急,大家查看LCD1602的用戶手冊,里面提到當我們需要想CGRAM寫入數據時,我們需要先寫入CGRAM的地址,從手冊上可知,CGRAM的地址為0x40.所以當我們要寫入數據時,要先寫入一條地址命令 write_com(0x040);
然后把你要寫入的數據通過寫數據命令寫入  write_date( 你要寫得數據);

做完以上步驟了,是不是LCD1602就會顯示你輸入的漢字呢?
不要急,以上你只是把你要顯示漢字的代碼存放在CGRAM里,就相當于其他常用字符一樣固定在LCD里面了,如果你不把它讀出來,LCD是不會顯示的。。

當你把上面的步驟做完后,接下來要做的與你平常怎么使用LCD1602是一樣的,只不過是LCD1602里面增加了一些你自定義的字符,漢字。

可能到這里,也許會有些疑問,既然自定義字符、漢字的代碼需要我們自己輸入,那么我該怎么編寫這些代碼,呵呵,不要著急,接下來就要用到下面這個取字模軟件。。

相信有的朋友應該都用過這個軟件。那么我們怎么來使用這個軟件來獲取代碼呢?大家有沒有注意到,我們的LCD1602是5*8點陣(可以數一數)。但是5*8不能提取代碼,最少只能8*8,所以我們這里只用后前5列,前3列不用。。
新建圖像 8*8.然后再圖像里面點你要顯示的字符,漢字,注意是在后5列中點,黑點表示顯示,白點不顯示,用鼠標左鍵可以切換,下面是我點得一個坦克~~

點好后,就可以產生代碼了,這軟件里面可以選擇C51或匯編,這里選擇C51。
下面的8個代碼就是要產生這個字符的數據。。也就是要輸入到自定義字符CGRAM里面的
。

好的,怎么把獲取漢字代碼,怎么把代碼輸入到CGRAM里面都知道了,
下面就是要把我們的自定義漢字、字符顯示在LCD1602屏幕上了。。
我們知道常用字符是從0x20開始顯示,而0x00—0x0f都是沒有用的,其實這個正式為我們自定義顯示字符準備的。當你把上面的代碼輸入到CGRAM中,LCD1602機會把漢字或字符賦予地址,這個地址是從0x00開始,因為最多只能8個字符,所以當在CGRAM里面輸入8個字符代碼時,這8個字符的代碼的數據地址就是0x00開始到0x07。
所以當你要在LCD1602上顯示自定義字符時,只需要把這個地址用數據輸入就OK。
  Write_date(0x00—0x07);
也就是說現在你要顯示自定義字符和你顯示常用字符一樣的做法了,先寫地址,然后寫數據
自定義字符的數據就是0x00—0x07。也就是你自定義的8個字符。
這里用 Proteus 仿真軟件演示


附程序

編寫時間:2011-11-25
功能:LCD顯示自定義字符、漢字
  1. #include"reg52.h"



  2. #define uchar unsigned char

  3. #define uint unsigned int



  4. sbit lcdrs=P2^4;

  5. sbit lcdrw=P2^5;

  6. sbit lcden=P2^6;



  7. uchar code table[]={

  8. 0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一

  9. 0x00,0x00,0x0E,0x00,0x1F,0x00,0x00,0x00,//二

  10. 0x00,0x1F,0x00,0x0E,0x00,0x1F,0x00,0x00,//三

  11. 0x02,0x04,0x0F,0x12,0x0F,0x0A,0x1F,0x02,//年

  12. 0x0F,0x09,0x0F,0x09,0x0F,0x09,0x09,0x11,//月

  13. 0x1F,0x11,0x11,0x1F,0x11,0x11,0x1F,0x00,//日

  14. 0x00,0x00,0x00,0x0A,0x15,0x0A,0x04,0x00,//心型

  15. 0x00,0x04,0x15,0x0E,0x1F,0x0E,0x11,0x00//坦克

  16. };

  17. uchar code table1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};  //自定義字符數據地址

  18. uchar code table2[]="QQ:598852247";

  19. /******************************

  20.               ms延時函數

  21. ******************************/

  22. void delay(uchar z)

  23. {

  24.        uint x,y;

  25.        for(x=z;x>0;x--)

  26.               for(y=122;y>0;y--);      

  27. }

  28. /******************************

  29.               lcd1602寫命令函數

  30. ******************************/

  31. void write_cmd(uchar cmd)

  32. {

  33.        lcdrs=0;

  34.        lcdrw=0;    //選擇指令寄存器

  35.        lcden=1;

  36.        P0=cmd;     //寫了命令

  37.        delay(5);

  38.        lcden=0;    //使能拉低

  39.        lcden=1;

  40. }

  41. /******************************

  42.               lcd1602寫數據函數

  43. ******************************/

  44. void write_date(uchar date)

  45. {

  46.        lcdrs=1;

  47.        lcdrw=0;    //選擇數據寄存器

  48.        lcden=1;

  49.        P0=date;     //寫了命令

  50.        delay(5);

  51.        lcden=0;    //使能拉低

  52.        lcden=1;

  53. }

  54. /******************************

  55.               lcd1602初始化

  56. ******************************/

  57. void init_lcd1602()

  58. {

  59.        write_cmd(0x01);  //清屏

  60.        write_cmd(0x38);  //功能設置

  61.        write_cmd(0x0c);  //顯示設置

  62.        write_cmd(0x06);  //輸入方式從左到右

  63.        delay(1);

  64. }

  65. /******************************

  66.                      主函數

  67. ******************************/

  68. void main()

  69. {

  70.        uchar i;

  71.        init_lcd1602();

  72.        delay(1);

  73.       

  74.        while(1)

  75.        {

  76.               write_cmd(0x40);    //開始寫入你要顯示的自定義字符、漢字代碼

  77.               for(i=0;i<64;i++)

  78.               {

  79.                      write_date(table[i]);

  80.                      delay(5);

  81.               }

  82.               write_cmd(0x80);    //從第一行第一列開始顯示

  83.               for(i=0;i<8;i++)       //顯示自定義字符

  84.               {

  85.                      write_date(table1[i]);  

  86.                      delay(5);

  87.               }

  88.               write_cmd(0xc0);   //顯示QQ:598852247

  89.               for(i=0;i<12;i++)

  90.               {

  91.                      write_date(table2[i]);

  92.                      delay(5);

  93.               }

  94.        }

  95. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:109610 發表于 2016-3-18 22:23 | 只看該作者
帖子很有用,很好
回復

使用道具 舉報

板凳
ID:197648 發表于 2017-5-19 15:28 | 只看該作者
好 正好需要 謝謝分享
回復

使用道具 舉報

地板
ID:258682 發表于 2017-12-7 15:55 | 只看該作者
跪求大神解決,燒寫上去之后,只能閃亮一下該怎么解決
回復

使用道具 舉報

5#
ID:730662 發表于 2020-4-16 16:11 | 只看該作者
請問  大神 這個程序  可以從ise實現嗎 我用的basys2開發板  引腳約束 不會寫
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本网站免费在线观看 | 国产精品久久久久aaaa樱花 | 特黄视频 | 日韩激情网 | 成人在线免费电影 | 永久精品| 一区二区在线免费观看 | 精品国产免费一区二区三区五区 | 亚洲视频在线看 | 91一区二区三区 | 亚洲风情在线观看 | 欧美一区2区三区3区公司 | 精品成人在线观看 | 欧美日韩一区二区在线观看 | 国产精品久久久免费 | 国产精品成人一区二区三区 | 精品伊人久久 | 先锋资源亚洲 | 欧美456 | 国产精品久久久久久久久图文区 | 亚洲精品9999久久久久 | 国产精品18久久久久久白浆动漫 | 在线小视频 | 国产成人免费网站 | 99精品国产一区二区青青牛奶 | 亚洲日韩中文字幕一区 | 国产精品美女久久久久aⅴ国产馆 | 欧美极品一区二区 | 免费一级欧美在线观看视频 | 在线色| 2018国产精品 | 黄久久久| 国产精产国品一二三产区视频 | 国产精品精品视频一区二区三区 | www.日本精品 | 蜜桃精品视频在线 | 久草欧美视频 | 在线视频91 | 激情在线视频 | 国产成人一区 | 国产成人精品一区二区三区在线 |