利用已有的LED显示屏和FPGA电路板硬件,实现一个用FPGA控制LED显示屏工作的控制器。
利用已有的LED显示屏和FPGA电路板硬件,实现一个用FPGA控制LED显示屏工作的控制器。汉字显示屏的大小为16×64(16行64列)。使用QuartusII软件,用V...
利用已有的LED显示屏和FPGA电路板硬件,实现一个用FPGA控制LED显示屏工作的控制器。 汉字显示屏的大小为16×64(16行64列)。
使用Quartus II软件,用VHDL语言编写显示屏的控制程序。
led的行驱动电路由两块74LS138组成,列驱动电路由八块74hc595组成。
显示四个字“华航电子”。 展开
使用Quartus II软件,用VHDL语言编写显示屏的控制程序。
led的行驱动电路由两块74LS138组成,列驱动电路由八块74hc595组成。
显示四个字“华航电子”。 展开
展开全部
懒得写了,给你个以前写的。是8*8的点阵显示,你可以在这段程序的基础上修改。原理是一样的。
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY seg70 IS
PORT (
clk : IN std_logic; --clk 50MHZ
rst : IN std_logic; --REST
dataout : OUT std_logic_vector(7 DOWNTO 0); --各段数据输出
en : OUT std_logic_vector(7 DOWNTO 0)); --COM使能输出
END seg70;
ARCHITECTURE arch OF seg70 IS
signal cnt_scan : std_logic_vector(17 downto 0 ); --计数器分频用
signal data4 : std_logic_vector(2 downto 0);
signal dataout_xhdl1 : std_logic_vector(7 downto 0);
signal en_xhdl : std_logic_vector(7 downto 0);
begin
dataout<=dataout_xhdl1;
en<=en_xhdl;
process(clk,rst)
begin
if(rst='0')then
cnt_scan<="000000000000000000";
elsif(clk'event and clk='1')then
cnt_scan<=cnt_scan+1; --计数器累加
end if;
end process;
process(cnt_scan(17 downto 15)) --计数器分频
begin
case cnt_scan(17 downto 15) is --这里有8种状态,一个状态的时间间隔是一样的。
when"000"=> en_xhdl<="11111110"; --每一次轮流选择一排点阵灯
when"001"=> en_xhdl<="11111101";
when"010"=> en_xhdl<="11111011";
when"011"=> en_xhdl<="11110111";
when"100"=> en_xhdl<="11101111";
when"101"=> en_xhdl<="11011111";
when"110"=> en_xhdl<="10111111";
when"111"=> en_xhdl<="01111111";
when others=> en_xhdl<="11111111";
end case;
end process;
process(en_xhdl)
begin
case en_xhdl is --每一选择一排灯,同时还要给点阵的数据端口送数据
when "11111110"=> data4<="000";
when "11111101"=> data4<="001";
when "11111011"=> data4<="010";
when "11110111"=> data4<="011";
when "11101111"=> data4<="100";
when "11011111"=> data4<="101";
when "10111111"=> data4<="110";
when "01111111"=> data4<="111";
when others => data4<="111";
end case;
end process;
process(data4)
begin
case data4 is
--给点阵的数据端口送数据
--点阵数据口对应的管脚为1时,那个点不会亮。
--当点阵数据口对应的管脚为0时,那个点会亮。
WHEN "000" =>
dataout_xhdl1 <= "11111111"; --第一行
WHEN "001" =>
dataout_xhdl1 <= "11111111";
WHEN "010" =>
dataout_xhdl1 <= "10011001";
WHEN "011" =>
dataout_xhdl1 <= "01100110";
WHEN "100" =>
dataout_xhdl1 <= "01111110";
WHEN "101" =>
dataout_xhdl1 <= "10111101";
WHEN "110" =>
dataout_xhdl1 <= "11011011";
WHEN "111" =>
dataout_xhdl1 <= "11100111"; --第八行
WHEN OTHERS =>
dataout_xhdl1 <= "11111111";
END CASE;
END PROCESS;
end arch;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY seg70 IS
PORT (
clk : IN std_logic; --clk 50MHZ
rst : IN std_logic; --REST
dataout : OUT std_logic_vector(7 DOWNTO 0); --各段数据输出
en : OUT std_logic_vector(7 DOWNTO 0)); --COM使能输出
END seg70;
ARCHITECTURE arch OF seg70 IS
signal cnt_scan : std_logic_vector(17 downto 0 ); --计数器分频用
signal data4 : std_logic_vector(2 downto 0);
signal dataout_xhdl1 : std_logic_vector(7 downto 0);
signal en_xhdl : std_logic_vector(7 downto 0);
begin
dataout<=dataout_xhdl1;
en<=en_xhdl;
process(clk,rst)
begin
if(rst='0')then
cnt_scan<="000000000000000000";
elsif(clk'event and clk='1')then
cnt_scan<=cnt_scan+1; --计数器累加
end if;
end process;
process(cnt_scan(17 downto 15)) --计数器分频
begin
case cnt_scan(17 downto 15) is --这里有8种状态,一个状态的时间间隔是一样的。
when"000"=> en_xhdl<="11111110"; --每一次轮流选择一排点阵灯
when"001"=> en_xhdl<="11111101";
when"010"=> en_xhdl<="11111011";
when"011"=> en_xhdl<="11110111";
when"100"=> en_xhdl<="11101111";
when"101"=> en_xhdl<="11011111";
when"110"=> en_xhdl<="10111111";
when"111"=> en_xhdl<="01111111";
when others=> en_xhdl<="11111111";
end case;
end process;
process(en_xhdl)
begin
case en_xhdl is --每一选择一排灯,同时还要给点阵的数据端口送数据
when "11111110"=> data4<="000";
when "11111101"=> data4<="001";
when "11111011"=> data4<="010";
when "11110111"=> data4<="011";
when "11101111"=> data4<="100";
when "11011111"=> data4<="101";
when "10111111"=> data4<="110";
when "01111111"=> data4<="111";
when others => data4<="111";
end case;
end process;
process(data4)
begin
case data4 is
--给点阵的数据端口送数据
--点阵数据口对应的管脚为1时,那个点不会亮。
--当点阵数据口对应的管脚为0时,那个点会亮。
WHEN "000" =>
dataout_xhdl1 <= "11111111"; --第一行
WHEN "001" =>
dataout_xhdl1 <= "11111111";
WHEN "010" =>
dataout_xhdl1 <= "10011001";
WHEN "011" =>
dataout_xhdl1 <= "01100110";
WHEN "100" =>
dataout_xhdl1 <= "01111110";
WHEN "101" =>
dataout_xhdl1 <= "10111101";
WHEN "110" =>
dataout_xhdl1 <= "11011011";
WHEN "111" =>
dataout_xhdl1 <= "11100111"; --第八行
WHEN OTHERS =>
dataout_xhdl1 <= "11111111";
END CASE;
END PROCESS;
end arch;
111
2024-12-20 广告
2024-12-20 广告
作为合肥鑫义达科技有限公司的工作人员,我认为工业级LCD显示屏之所以被广泛使用,主要归因于其高可靠性、耐用性和多功能性。在工业环境中,设备需长时间运行并面临恶劣条件,如温度变化、震动和尘埃,而工业级LCD显示屏采用特殊材料和工艺,能有效抵御...
点击进入详情页
本回答由111提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询