⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_wave.vhd

📁 用chdl编写液晶块驱动程序。有详细的说明
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY LCD_WAVE IS
PORT(CLK:IN STD_LOGIC;
     REQ:OUT STD_LOGIC;
    BUSY:IN STD_LOGIC;
    DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY;
ARCHITECTURE ART OF LCD_WAVE IS
SIGNAL    W:STD_LOGIC;
SIGNAL    Q:STD_LOGIC;
SIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL CNT1:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL CNT2:STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL CNT3:STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL DATA_1: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL DATA_2: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL DATA1,DATA2,XXX,YYY,ASN:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
---------------------------------------送数据
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
  IF BUSY='0' THEN
    IF Q='0' THEN
     DOUT<=DATA_1; REQ<='1';
    ELSIF Q='1' THEN
     DOUT<=DATA_2;REQ<='1';
    END IF;
  ELSE
       REQ<='0';DOUT<=X"00";
  END IF;
END IF;
END PROCESS;
---------------------------------------计数
PROCESS(BUSY)
BEGIN
IF BUSY'EVENT AND BUSY='1' THEN
  IF Q='0' THEN
    IF CNT2="10" THEN
        CNT2<="00";
      IF DATA1=X"7B" THEN
        DATA1<=X"00";Q<='1';
      ELSE DATA1<=DATA1+1;
      END IF;
      IF W='1' THEN
        DATA2<=DATA2+1;
      ELSIF W='0' THEN
        DATA2<=DATA2-1;
      END IF; 
    ELSE
        CNT2<=CNT2+1;
    END IF;
  ELSIF Q='1' THEN
    IF CNT3="11" THEN
       CNT3<="00";
      IF COUNT="101" THEN
         COUNT<="000";Q<='0';
      ELSE COUNT<=COUNT+1;
      END IF;
    ELSE   CNT3<=CNT3+1;
      
    END IF;
  END IF;
END IF;
END PROCESS;
PROCESS(DATA2)
BEGIN
IF DATA2=X"1F" THEN
   W<='0';
ELSIF DATA2=X"00" THEN
   W<='1';
END IF;
END PROCESS;
PROCESS(CNT2)
BEGIN
CASE CNT2 IS
  WHEN "00"=>DATA_1<=X"F2";
  WHEN "01"=>DATA_1<=DATA1;
  WHEN "10"=>DATA_1<=DATA2;
  WHEN OTHERS=>DATA_1<=X"00";
END CASE;
END PROCESS;
PROCESS(CNT3)
BEGIN
CASE CNT3 IS
  WHEN "00"=>DATA_2<=X"F1";
  WHEN "01"=>DATA_2<=XXX;
  WHEN "10"=>DATA_2<=YYY;
  WHEN "11"=>DATA_2<=ASN;
  WHEN OTHERS=>DATA_2<=X"00";
END CASE;
END PROCESS;
PROCESS(COUNT)
BEGIN
CASE COUNT IS
  WHEN "000"=>XXX<=X"06";YYY<=X"04";ASN<=X"54"; --"T"
  WHEN "001"=>XXX<=X"07";YYY<=X"04";ASN<=X"3D"; --"="
  WHEN "010"=>XXX<=X"08";YYY<=X"04";ASN<=X"33"; --"3"
  WHEN "011"=>XXX<=X"09";YYY<=X"04";ASN<=X"30"; --"0"
  WHEN "100"=>XXX<=X"0A";YYY<=X"04";ASN<=X"6D"; --"m"
  WHEN "101"=>XXX<=X"0B";YYY<=X"04";ASN<=X"73"; --"s"
  WHEN OTHERS=>XXX<=X"00";YYY<=X"00";ASN<=X"00";
END CASE;
END PROCESS;
END ARCHITECTURE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -