亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? lcd_driver.vhd

?? 一些很好的FPGA設(shè)計(jì)實(shí)例
?? VHD
字號(hào):
--文件名:lcd_driver.vhd

--功  能:驅(qū)動(dòng)LCD顯示,并可以對(duì)顯示的數(shù)據(jù)進(jìn)行設(shè)置

--說(shuō)  明:液晶顯示的數(shù)值
--------------############################################-------------

---------              AB:CD:EF

--            “S4”鍵控制“A”段的數(shù)據(jù)
--            “S6”鍵控制“B”段的數(shù)據(jù)

--            “S7”鍵控制“C”段的數(shù)據(jù)
--            “S8”鍵控制“D”段的數(shù)據(jù)

--            “S9” 鍵控制“E”段的數(shù)據(jù)
--            “S10”鍵控制“F”段的數(shù)據(jù)

--------------############################################-------------

--注  意:在使用液晶的時(shí)候,千萬(wàn)要注意防靜電(手最好不要觸碰液晶表面)

--        否則液晶很容易被損壞;


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity lcd_driver is
    generic(N:integer:=5000;
	       delay:integer:=10);

     Port ( clk : in std_logic;   --系統(tǒng)時(shí)鐘輸入
           reset : in std_logic;  --復(fù)位信號(hào),在下完程序之后需要對(duì)液晶進(jìn)行復(fù)位清零
           set1,set2,set3,set4,set5,set6,set7 : in std_logic;  
		    --set1~set6為數(shù)據(jù)的預(yù)置位,set7是復(fù)位清零信號(hào);
           lcden : out std_logic; --接LCD使能端
           lcdda : out std_logic; --接LCD_da信號(hào)輸入端
           lcdrw : out std_logic; --接LCD讀寫(xiě)信號(hào)輸入端
           data :inout std_logic_vector(7 downto 0));--接LCD數(shù)據(jù)輸入位 
end lcd_driver;

architecture Behavioral of lcd_driver is
type state is (set_dlnf,clear_lcd,set_cursor,set_dcb,set_location,write_data);
signal current_state:state;
type ram is array(0 to 7) of std_logic_vector(7 downto 0);
signal dataram :ram;
signal yz1:std_logic_vector(3 downto 0); 
signal yz2:std_logic_vector(3 downto 0); 
signal tq1: std_logic_vector(3 downto 0); 
signal tq2: std_logic_vector(3 downto 0); 
signal jb1: std_logic_vector(3 downto 0); 
signal jb2: std_logic_vector(3 downto 0); 
signal yz_dout1: std_logic_vector(7 downto 0); 
signal yz_dout2: std_logic_vector(7 downto 0);
signal tq_dout1: std_logic_vector(7 downto 0);
signal tq_dout2: std_logic_vector(7 downto 0);
signal jb_dout1: std_logic_vector(7 downto 0);
signal jb_dout2: std_logic_vector(7 downto 0);
signal clk_2hz,clk_500hz: std_logic;
begin

--(液晶)數(shù)據(jù)交換頻率
lcd_clk:process(clk,reset)
variable c: integer range 0 to 10000;
variable clk0: std_logic;
begin
if reset='0' then c:=0; clk0:='0';
elsif clk'event and clk='1' then c:=c+1;
  if c=N then clk0:='1';
  elsif c=2*N then clk0:='0';c:=0;
  end if;
 end if;
clk_500hz<=clk0;
end process;   

--2赫茲的分頻模塊
set_clk:process(clk,reset)
variable c: integer range 0 to 25000000;
variable clk0: std_logic;
begin
if reset='0' then c:=0;clk0:='0';
elsif clk'event and clk='1' then c:=c+1;
 if c=12500000 then clk0:='1';
  elsif c=25000000 then clk0:='0';c:=0;
    end if;
	end if;
clk_2hz<=clk0;
end process;

--按鍵置數(shù)模塊
set:process(clk_2hz,set7)
variable p1,p2,p3,p4,p5,p6:std_logic_vector(3 downto 0); 	  
begin
  if set7='0' then  yz1<="0000";yz2<="0000";tq1<="0000";tq2<="0000";jb1<="0000";jb2<="0000";
    					   p1:="0000";p2:="0000"; p3:="0000";p4:="0000";	p5:="0000"; p6:="0000";		  
	 elsif clk_2hz'event and clk_2hz='1' then 
	      if  set1='0' then  if p1="1001" then p1:="0000";
									  	    else p1:=p1+1;
										   end if;
										  end if;
			 if  set2='0' then  if p2="1001" then p2:="0000";
									  	     else p2:=p2+1;
										   end if;
										  end if;
			 if  set3='0' then  if p3="1001" then p3:="0000";
									  	     else p3:=p3+1;
										   end if;
										  end if;
	
			   if  set4='0' then  if p4="1001" then p4:="0000";
									  	     else p4:=p4+1;
										   end if;
										  end if;
			   if  set5='0' then  if p5="1001" then p5:="0000";
									  	     else p5:=p5+1;
										   end if;
										  end if;
				 if  set6='0' then  if p6="1001" then p6:="0000";
									  	     else p6:=p6+1;
										   end if;
										  end if;
			  end if;
		 yz1<=p1;yz2<=p2;tq1<=p3;tq2<=p4;jb1<=p5;jb2<=p6;
	   end process;

--數(shù)據(jù)譯碼
lcd_decoder_yz1: process(clk)
begin
if clk'event and clk='1' then 
  case yz1 is 
               when "0000"=>yz_dout1<="00110000";
					when "0001"=>yz_dout1<="00110001";
					when "0010"=>yz_dout1<="00110010";
					when "0011"=>yz_dout1<="00110011";
					when "0100"=>yz_dout1<="00110100";
					when "0101"=>yz_dout1<="00110101";
					when "0110"=>yz_dout1<="00110110";
					when "0111"=>yz_dout1<="00110111";
					when "1000"=>yz_dout1<="00111000";
					when "1001"=>yz_dout1<="00111001";
					when "1010"=>yz_dout1<="01000001";
					when "1011"=>yz_dout1<="01000010";
					when "1100"=>yz_dout1<="01000011";
					when "1101"=>yz_dout1<="01000100";
					when "1110"=>yz_dout1<="01000101";
					when "1111"=>yz_dout1<="01000110";
					when others=>yz_dout1<="00111111";
			 end case;
		  end if;
	   end process;

lcd_decoder_yz2:process(clk)
begin
if clk'event and clk='1' then 
  case yz2 is 
               when "0000"=>yz_dout2<="00110000";
					when "0001"=>yz_dout2<="00110001";
					when "0010"=>yz_dout2<="00110010";
					when "0011"=>yz_dout2<="00110011";
					when "0100"=>yz_dout2<="00110100";
					when "0101"=>yz_dout2<="00110101";
					when "0110"=>yz_dout2<="00110110";
					when "0111"=>yz_dout2<="00110111";
					when "1000"=>yz_dout2<="00111000";
					when "1001"=>yz_dout2<="00111001";
					when "1010"=>yz_dout2<="01000001";
					when "1011"=>yz_dout2<="01000010";
					when "1100"=>yz_dout2<="01000011";
					when "1101"=>yz_dout2<="01000100";
					when "1110"=>yz_dout2<="01000101";
					when "1111"=>yz_dout2<="01000110";
					when others=>yz_dout2<="00111111";
			 end case;
		  end if;
	   end process;

lcd_decoder_tq1:process(clk)
begin
if clk'event and clk='1' then 
  case tq1 is 
               when "0000"=>tq_dout1<="00110000";
					when "0001"=>tq_dout1<="00110001";
					when "0010"=>tq_dout1<="00110010";
					when "0011"=>tq_dout1<="00110011";
					when "0100"=>tq_dout1<="00110100";
					when "0101"=>tq_dout1<="00110101";
					when "0110"=>tq_dout1<="00110110";
					when "0111"=>tq_dout1<="00110111";
					when "1000"=>tq_dout1<="00111000";
					when "1001"=>tq_dout1<="00111001";
					when "1010"=>tq_dout1<="01000001";
					when "1011"=>tq_dout1<="01000010";
					when "1100"=>tq_dout1<="01000011";
					when "1101"=>tq_dout1<="01000100";
					when "1110"=>tq_dout1<="01000101";
					when "1111"=>tq_dout1<="01000110";
					when others=>tq_dout1<="00111111";
			 end case;
		  end if;
	   end process;

lcd_decoder_tq2:process(clk)
begin
if clk'event and clk='1' then 
  case tq2 is 
  when "0000"=>tq_dout2<="00110000";
					when "0001"=>tq_dout2<="00110001";
					when "0010"=>tq_dout2<="00110010";
					when "0011"=>tq_dout2<="00110011";
					when "0100"=>tq_dout2<="00110100";
					when "0101"=>tq_dout2<="00110101";
					when "0110"=>tq_dout2<="00110110";
					when "0111"=>tq_dout2<="00110111";
					when "1000"=>tq_dout2<="00111000";
					when "1001"=>tq_dout2<="00111001";
					when "1010"=>tq_dout2<="01000001";
					when "1011"=>tq_dout2<="01000010";
					when "1100"=>tq_dout2<="01000011";
					when "1101"=>tq_dout2<="01000100";
					when "1110"=>tq_dout2<="01000101";
					when "1111"=>tq_dout2<="01000110";
					when others=>tq_dout2<="00111111";
			 end case;
		  end if;
	   end process;

lcd_decoder_jb1:process(clk)
begin
if clk'event and clk='1' then 
  case jb1 is 
               when "0000"=>jb_dout1<="00110000";
					when "0001"=>jb_dout1<="00110001";
					when "0010"=>jb_dout1<="00110010";
					when "0011"=>jb_dout1<="00110011";
					when "0100"=>jb_dout1<="00110100";
					when "0101"=>jb_dout1<="00110101";
					when "0110"=>jb_dout1<="00110110";
					when "0111"=>jb_dout1<="00110111";
					when "1000"=>jb_dout1<="00111000";
					when "1001"=>jb_dout1<="00111001";
					when "1010"=>jb_dout1<="01000001";
					when "1011"=>jb_dout1<="01000010";
					when "1100"=>jb_dout1<="01000011";
					when "1101"=>jb_dout1<="01000100";
					when "1110"=>jb_dout1<="01000101";
					when "1111"=>jb_dout1<="01000110";
					when others=>jb_dout1<="00111111";
			 end case;
		  end if;
	   end process;

lcd_decoder_jb2:process(clk)
begin
if clk'event and clk='1' then 
  case jb2 is 
               when "0000"=>jb_dout2<="00110000";
					when "0001"=>jb_dout2<="00110001";
					when "0010"=>jb_dout2<="00110010";
					when "0011"=>jb_dout2<="00110011";
					when "0100"=>jb_dout2<="00110100";
					when "0101"=>jb_dout2<="00110101";
					when "0110"=>jb_dout2<="00110110";
					when "0111"=>jb_dout2<="00110111";
					when "1000"=>jb_dout2<="00111000";
					when "1001"=>jb_dout2<="00111001";
					when "1010"=>jb_dout2<="01000001";
					when "1011"=>jb_dout2<="01000010";
					when "1100"=>jb_dout2<="01000011";
					when "1101"=>jb_dout2<="01000100";
					when "1110"=>jb_dout2<="01000101";
					when "1111"=>jb_dout2<="01000110";
					when others=>jb_dout2<="00111111";
			 end case;
		  end if;
	   end process;

--設(shè)定數(shù)據(jù)顯示的位置
loaddata:process(clk,set7)
begin
   if reset='0'then	
	 dataram<=(("00110000"),("00110000"),("00111010"),("00110000"),
	          ("00110000"),("00111010"),("00110000"),("00110000"));
   elsif rising_edge(clk)then
	 dataram(0)<=yz_dout1;
	 dataram(1)<=yz_dout2;
	 dataram(2)<="00111010";
	 dataram(3)<=tq_dout1;
	 dataram(4)<=tq_dout2;
	 dataram(5)<="00111010";
	 dataram(6)<=jb_dout1;
	 dataram(7)<=jb_dout2;
   end if;
end process;

--液晶驅(qū)動(dòng)部分
control: process(clk_500hz,reset)
variable cntt,cnt2:integer;
variable cnt3:std_logic_vector(3 downto 0);
begin
   if reset='0'then
 	 current_state<=set_dlnf;
	 cntt:=0;cnt2:=0;
   elsif rising_edge(clk_500hz)then cnt3:=cnt3+1;
      case current_state is
	 when set_dlnf=>			      --功能設(shè)置
				  lcden<='0';
				  lcdda<='0';
				  lcdrw<='0';
				  data<="00111100";
				  cntt:=cntt+1;
				if cntt>delay and cntt<=delay*2 then	--延時(shí)操作
				  lcden<='1';	--保證液晶有足夠的使能時(shí)間	    
				else                
				  lcden<='0';
				end if;

				if cntt=delay*3 then
				  current_state<=clear_lcd;
				  cntt:=0;
				end if;

	  when clear_lcd=>				 --清屏操作 
   				   lcden<='0';
				   lcdda<='0';
				   lcdrw<='0';
				   data<="00000001";
				   cntt:=cntt+1;
                     if cntt>delay and cntt<=delay*2 then --延時(shí)操作
				   lcden<='1';	--保證液晶有足夠的使能時(shí)間						    
				 else                
				   lcden<='0';
				 end if;

				 if cntt=delay*3 then
				   current_state<=set_cursor;
				   cntt:=0;
				 end if;

       when set_cursor=>				   --光標(biāo)顯示設(shè)置
				    lcden<='0';
				    lcdda<='0';
				    lcdrw<='0';
				    data<="00000110";
				    cntt:=cntt+1;
                      if cntt>delay and cntt<=delay*2 then --延時(shí)操作
				    lcden<='1'; --保證液晶有足夠的使能時(shí)間							    
				  else                
				    lcden<='0';
				  end if;

				  if cntt=delay*3 then
				    current_state<=set_dcb;
				    cntt:=0;
				  end if;

	 when set_dcb=>				     --顯示開(kāi)關(guān)控制
				    lcden<='0';
				    lcdda<='0';
				    lcdrw<='0';
				    data<="00001111";
				    cntt:=cntt+1;
				  if cntt>delay and cntt<=delay*2 then --延時(shí)操作
				    lcden<='1'; --保證液晶有足夠的使能時(shí)間							    
				  else                
				    lcden<='0';
				  end if;

				  if cntt=delay*3 then
				    current_state<=set_location;
				    cntt:=0;
				  end if;

	 when set_location=>			  --設(shè)置顯示數(shù)據(jù)的初始位置
				    lcden<='0';
				    lcdda<='0';
				    lcdrw<='0';
				    data<="11000000";
				    cntt:=cntt+1;
				  if cntt>delay and cntt<=delay*2 then --延時(shí)操作
				    lcden<='1'; --保證液晶有足夠的使能時(shí)間							    
				  else                
				    lcden<='0';
				  end if;

				  if cntt=delay*3 then
				    current_state<=write_data;
				    cntt:=0;
				  end if;

      when write_data=>		              --將數(shù)據(jù)寫(xiě)入液晶
				    lcden<='0';
				    lcdda<='1';
				    lcdrw<='0';
				  if cnt2<=7 then
				    data<=dataram(cnt2);
				    cntt:=cntt+1;
				    if cnt3<="1000"then
					 if cnt2=2 then										    
					    data<="00100000";
  					 end if;
				    end if;

				    if cntt>delay and cntt<=delay*2 then
					    lcden<='1';							    
				    else                
					    lcden<='0';
				    end if;

				    if cntt=delay*3 then
					  current_state<=write_data;
					  cntt:=0;
					  cnt2:=cnt2+1;
				    end if;
				  else
					cnt2:=0;
					current_state<=set_location;
				  end if;
	    end case;
	end if;
end process;
end Behavioral;




?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类久久久精品2019| 青椒成人免费视频| 日韩三级免费观看| www.久久精品| 蜜桃视频在线观看一区| 一区二区在线观看免费视频播放| 精品卡一卡二卡三卡四在线| 色老头久久综合| 成人国产免费视频| 国产一区美女在线| 日产欧产美韩系列久久99| 一区二区三区在线观看动漫| 国产拍欧美日韩视频二区| 欧美一级黄色片| 欧洲亚洲精品在线| 成人黄色免费短视频| 国产一区在线观看视频| 婷婷六月综合网| 亚洲一区二区精品视频| 亚洲婷婷综合色高清在线| 亚洲精品一区二区三区精华液| 欧美日韩国产系列| 欧洲中文字幕精品| 91看片淫黄大片一级| 成人小视频免费在线观看| 久久国产精品区| 日韩成人一区二区三区在线观看| 一区二区三区日韩在线观看| 亚洲欧洲色图综合| 中文字幕一区在线观看| 国产精品国产三级国产三级人妇 | 欧美男生操女生| 99久久99久久免费精品蜜臀| 国产成人亚洲综合色影视| 精品制服美女久久| 久久超碰97人人做人人爱| 麻豆国产欧美一区二区三区| 免费人成精品欧美精品| 蜜桃免费网站一区二区三区| 蜜臀久久久99精品久久久久久| 免费在线看成人av| 六月婷婷色综合| 精品一区精品二区高清| 国产乱一区二区| 国产成人在线视频免费播放| 国产精品一二三四| 国产成人免费av在线| 99久久精品99国产精品| 欧美中文字幕一区二区三区| 欧美精品一二三| 欧美大白屁股肥臀xxxxxx| 久久色视频免费观看| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品久久久久国产精品日日| 亚洲男人天堂av| 亚洲va欧美va天堂v国产综合| 天天av天天翘天天综合网色鬼国产| 亚洲电影一区二区| 免费成人美女在线观看| 国产精品原创巨作av| av男人天堂一区| 欧美日韩一区国产| 精品奇米国产一区二区三区| 国产视频一区在线观看| 亚洲美女精品一区| 日本欧美韩国一区三区| 国产成人av电影在线播放| 91麻豆精东视频| 欧美一区2区视频在线观看| 国产三级欧美三级| 亚洲天堂精品在线观看| 日韩精品亚洲一区| 成人国产一区二区三区精品| 欧美日韩免费观看一区二区三区 | 欧美v日韩v国产v| 国产精品欧美精品| 亚洲成人av免费| 国产成人在线色| 欧美日韩一区二区三区四区| 久久婷婷一区二区三区| 亚洲精品乱码久久久久| 国内成人免费视频| 色呦呦一区二区三区| 日韩无一区二区| 综合色中文字幕| 蜜桃一区二区三区在线观看| 不卡的av电影| 日韩欧美电影在线| 一区二区三区四区在线| 国产乱理伦片在线观看夜一区| 99re热视频这里只精品| 日韩一级大片在线观看| 亚洲精品视频免费看| 国产麻豆视频一区| 欧美三级视频在线观看| 国产精品看片你懂得| 久久99久久久久| 欧美日韩卡一卡二| 亚洲日本一区二区三区| 国产激情精品久久久第一区二区 | 精品国产1区二区| 亚洲一区二区三区美女| 国产成人精品亚洲午夜麻豆| 欧美高清视频一二三区 | 中文字幕亚洲一区二区av在线| 美国毛片一区二区| 在线观看免费成人| 成人免费在线播放视频| 国产精品18久久久久久vr| 69堂国产成人免费视频| 一区二区视频在线| 成人精品视频一区二区三区尤物| 欧美tickling挠脚心丨vk| 午夜精品免费在线| 91丨porny丨户外露出| 国产精品无圣光一区二区| 国产一区久久久| 久久夜色精品国产噜噜av| 男人操女人的视频在线观看欧美| 欧美日韩在线免费视频| 亚洲精品午夜久久久| 91在线国内视频| 国产精品色婷婷| 懂色中文一区二区在线播放| 日韩三级免费观看| 蜜臀久久99精品久久久画质超高清 | 秋霞电影一区二区| 欧美久久久久免费| 视频在线观看一区二区三区| 欧美日韩国产区一| 手机精品视频在线观看| 91精品综合久久久久久| 亚洲777理论| 欧美丰满高潮xxxx喷水动漫| 日韩在线a电影| 日韩一区和二区| 久久国产免费看| 久久久.com| jizzjizzjizz欧美| 国产精品福利影院| 91天堂素人约啪| 亚洲精品自拍动漫在线| 精品视频在线免费观看| 日本欧美一区二区| 26uuu精品一区二区 | 欧美军同video69gay| 午夜视频在线观看一区二区| 在线综合+亚洲+欧美中文字幕| 视频一区在线播放| 精品999久久久| 豆国产96在线|亚洲| 亚洲图片你懂的| 欧美日韩在线亚洲一区蜜芽| 免费人成黄页网站在线一区二区| 26uuu久久综合| 99久久伊人网影院| 亚洲国产日产av| 精品伦理精品一区| 成人app软件下载大全免费| 亚洲一区二区在线播放相泽| 91精品国产手机| 国产米奇在线777精品观看| 亚洲欧洲性图库| 91精品国产综合久久蜜臀| 国产精品1024| 亚洲一区二区三区四区不卡| 日韩免费福利电影在线观看| 不卡的av在线| 日本女优在线视频一区二区| 久久色.com| 欧美曰成人黄网| 国产一区二区三区久久久| 亚洲精品国产视频| 精品国产一区二区亚洲人成毛片 | 欧美va亚洲va国产综合| 99久免费精品视频在线观看| 亚洲动漫第一页| 国产日产欧产精品推荐色| 欧美色电影在线| 国产成人亚洲综合a∨猫咪| 亚洲一区二区精品视频| 国产欧美日韩不卡免费| 欧美日韩三级一区二区| 成人激情免费网站| 日韩国产成人精品| 亚洲视频每日更新| 精品三级在线观看| 在线观看日韩精品| 粉嫩av亚洲一区二区图片| 日韩黄色免费网站| 亚洲人成在线播放网站岛国| 2021中文字幕一区亚洲| 欧美日韩一级二级三级| 成人免费视频播放| 美女视频免费一区| 亚洲高清一区二区三区| 1区2区3区精品视频| 国产午夜精品理论片a级大结局| 欧美老女人第四色| 97精品久久久午夜一区二区三区 |