




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 數(shù)字電路與邏輯設(shè)計(jì)實(shí) 驗(yàn) 報(bào) 告學(xué)院: 電子工程學(xué)院班級: 2014211212姓名: 學(xué)號: 班內(nèi)序號:一、 設(shè)計(jì)課題的任務(wù)要求簡易秒表的設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)制作一個計(jì)時精度為百分之一秒的計(jì)時秒表基本要求:1. 用LCD1602液晶屏顯示計(jì)時;2. 秒表計(jì)時長度為23小時59分59.99秒;3. 用BTN0作為啟動/停止開關(guān);4. 用BTN1作為復(fù)位開關(guān),在任何情況下,只要按下復(fù)位開關(guān),秒表都要無條件執(zhí)行清零操作。提高要求:1.增加定時器功能,可根據(jù)用戶設(shè)定的時間進(jìn)行倒計(jì)時,時間到0后蜂鳴器報(bào)警提示;2.自擬其他功能。二、 系統(tǒng)設(shè)計(jì)(設(shè)計(jì)思路、總體框圖、分塊設(shè)計(jì))1. 設(shè)計(jì)思路:分別設(shè)計(jì)6進(jìn)制計(jì)
2、數(shù)器、10進(jìn)制計(jì)數(shù)器和24進(jìn)制計(jì)數(shù)器用于秒表計(jì)時部分。具體來說:將兩個10進(jìn)制計(jì)數(shù)器級聯(lián)分別作為秒表的十分秒位(最小單位為0.1秒)和百分秒位(最小單位為0.01秒);將一個10進(jìn)制計(jì)數(shù)器和6進(jìn)制計(jì)數(shù)器級聯(lián),分別作為秒表秒鐘部分的個位(最小單位為1秒)和十位(最小單位為10秒);再將一個10進(jìn)制計(jì)數(shù)器和6進(jìn)制計(jì)數(shù)器級聯(lián),分別作為秒表分鐘部分的個位(最小單位為1分鐘)和十位(最小單位為10分鐘);將24進(jìn)制計(jì)數(shù)器作為秒表小時部分,其中低位輸出作為秒表小時部分的個位(最小單位為1小時),高位輸出作為秒表小時部分的十位(最小單位為10小時)。最后把秒表百分秒、十分秒部分、秒鐘部分、分鐘部分、小時部分
3、這四部分級聯(lián)起來便構(gòu)成了簡易數(shù)字秒表的計(jì)時部分。將各個計(jì)數(shù)器部分的輸出信號通過譯碼模塊,變成LCD1602液晶屏能夠讀取并從而顯示相關(guān)字符的8位二進(jìn)制數(shù)據(jù)。再定義一個存儲器ram,存儲各個計(jì)數(shù)器部分的輸出信號經(jīng)過譯碼部分之后得到的數(shù)據(jù),然后將這個存儲器ram代表的數(shù)據(jù)在LCD1602液晶屏上顯示。考慮到秒表的最小計(jì)時長度為0.01秒(頻率為100HZ),如果系統(tǒng)時鐘設(shè)置為50MHZ,則需要500000分頻;實(shí)驗(yàn)時發(fā)現(xiàn)LCD1602液晶屏的時鐘在1KHZ時,顯示效果較好,故需要在系統(tǒng)時鐘為50MHZ的基礎(chǔ)上進(jìn)行50000分頻。考慮到基本要求中需要用BTN0作為啟動/停止開關(guān),用BTN1作為復(fù)位開
4、關(guān),所以需要設(shè)計(jì)相應(yīng)的按鍵防抖電路,這里我采用的是計(jì)數(shù)型防抖。2. 總體框圖:圖1 系統(tǒng)結(jié)構(gòu)框圖3. 分塊設(shè)計(jì):系統(tǒng)共通過9個模塊實(shí)現(xiàn),分別是:500000分頻模塊 fpq50000分頻模塊 fpq16進(jìn)制計(jì)數(shù)器模塊 cnt610進(jìn)制計(jì)數(shù)器模塊 cnt1024進(jìn)制計(jì)數(shù)器模塊 cnt24譯碼模塊 yimaLCD1602顯示模塊 LCD1602BTN0啟動/停止開關(guān)消抖模塊 xiaodouBTN1復(fù)位開關(guān)消抖模塊 fuweixiaodou具體設(shè)計(jì)如下:500000分頻模塊fpq 輸入端口:clk : in std_logic; 輸出端口:clkout : out std_logic; 生成符號:
5、設(shè)計(jì)思路:利用計(jì)數(shù)法實(shí)現(xiàn)分頻 主要代碼:(完整代碼請見源程序)signal clktmp : std_logic;signal tmp : integer range 0 to 249999; begin process (clk) beginif clk'event and clk='1' thenif tmp=249999 then -500000分頻tmp<=0; clktmp<=not clktmp;else tmp<=tmp+1;end if;end if; end process; clkout<=clktmp;50000分頻模塊fp
6、q1:輸入端口:clk : in std_logic; 輸出端口:clkout : out std_logic;生成符號:設(shè)計(jì)思路:利用計(jì)數(shù)法實(shí)現(xiàn)分頻 主要代碼:(完整代碼請見源程序)signal clktmp : std_logic;signal tmp : integer range 0 to 24999; begin process (clk) beginif clk'event and clk='1' thenif tmp=24999 then -50000分頻tmp<=0; clktmp<=not clktmp;else tmp<=tmp+1
7、;end if;end if; end process; clkout<=clktmp;6進(jìn)制計(jì)數(shù)器模塊cnt6:輸入端口:reset,en,clk:IN STD_LOGIC; 輸出端口:carry :OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 生成符號: 設(shè)計(jì)思路:正常的計(jì)數(shù)狀態(tài)是0->1->2->3->4->5->0->1; 當(dāng)計(jì)數(shù)到5時,進(jìn)位信號變?yōu)?;否則狀態(tài)自增,進(jìn)位信號保持在0 主要代碼:(完整代碼請見源程序) SIGNAL qs :STD_LOGIC_VECTOR(3 DO
8、WNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROCESS(clk)begin IF(reset='1')THEN qs<="0000" ELSIF(clk'EVENT AND clk='1')THEN IF(en='0') THEN IF(qs="0101") THEN -計(jì)數(shù)到5 qs<= "0000" ca<='1' ELSE qs<=qs+1; ca<='0' END IF; END
9、 IF; END IF; END PROCESS; PROCESS(ca,en) BEGIN q<=qs; carry<=ca; END PROCESS;10進(jìn)制計(jì)數(shù)器模塊cnt10:輸入端口:reset,en,clk:IN STD_LOGIC; 輸出端口:carry :OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);生成符號: 設(shè)計(jì)思路:正常的計(jì)數(shù)狀態(tài)是;0->1->2->3->4->5->6->7->8->9->0->1 當(dāng)計(jì)數(shù)到9時,進(jìn)位信號變?yōu)?;否則狀態(tài)
10、自增,進(jìn)位信號保持在0 主要代碼:(完整代碼請見源程序) SIGNAL qs :STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ca :STD_LOGIC;BEGIN PROCESS(clk)begin IF(reset='1')THEN qs<="0000" ELSIF(clk'EVENT AND clk='1')THEN IF(en='0') THEN IF(qs="1001") THEN -計(jì)數(shù)到9 qs<= "0000" ca<
11、='1' ELSE qs<=qs+1; ca<='0' END IF; END IF; END IF; END PROCESS; PROCESS(ca) BEGIN q<=qs; carry<=ca; END PROCESS;24進(jìn)制計(jì)數(shù)器模塊cnt24: 輸入端口en,Reset,clk: in STD_LOGIC; 輸出端口 carry: out STD_LOGIC;qa: out STD_LOGIC_VECTOR(3 DOWNTO 0); qb: out STD_LOGIC_VECTOR(3 DOWNTO 0); 生成符號: 設(shè)計(jì)思
12、路:正常的計(jì)數(shù)狀態(tài)是;低位qa狀態(tài)變化:0->1->2->3->4->5->6->7->8->9->0->1 高位qb狀態(tài)變化:0->1->2->0->1 當(dāng)?shù)臀籷a計(jì)數(shù)到9時,qb自增,進(jìn)位信號保持在0 當(dāng)?shù)臀籷a為3且高位qb為2時,進(jìn)位信號變?yōu)?, 同時qa變?yōu)?、qb變?yōu)?主要代碼:(完整代碼請見源程序) SIGNAL ca :STD_LOGIC;BEGINprocess(clk,Reset,en)variable tma: STD_LOGIC_VECTOR(3 DOWNTO 0);variabl
13、e tmb: STD_LOGIC_VECTOR(3 DOWNTO 0);beginIf Reset = '1' then tma:="0000" tmb:="0000" else if clk'event and clk='1' then IF(en='0') THEN-當(dāng)BTN0鍵沒有第一次按下時,正常計(jì)數(shù) if tma="1001" then tma:="0000"tmb:=tmb+1; elsif tmb="0010" and tma
14、="0011" then -計(jì)數(shù)到23 tma:="0000"tmb:="0000" ca<='1' else tma:=tma+1; end if; end if; end if; end if; qa<=tma;qb<=tmb;carry<=ca; end process;譯碼模塊yima: 輸入端口:carry: in STD_LOGIC;data: in std_logic_vector(3 downto 0); 輸出端口: dataout: out std_logic_vector(7
15、 downto 0); 生成符號: 設(shè)計(jì)思路: 根據(jù)輸入信號的不同,使用case語句進(jìn)行不同的譯碼操作即可。具體來說: '0'(四位二進(jìn)制)譯為"30"(八位二進(jìn)制)'1'(四位二進(jìn)制)譯為"31"(八位二進(jìn)制)'2'(四位二進(jìn)制)譯為"32"(八位二進(jìn)制)'3'(四位二進(jìn)制)譯為"33"(八位二進(jìn)制)'4'(四位二進(jìn)制)譯為"34"(八位二進(jìn)制)'5'(四位二進(jìn)制)譯為"35"(
16、八位二進(jìn)制)'6'(四位二進(jìn)制)譯為"36"(八位二進(jìn)制)'7'(四位二進(jìn)制)譯為"37"(八位二進(jìn)制)'8'(四位二進(jìn)制)譯為"38"(八位二進(jìn)制)'9'(四位二進(jìn)制)譯為"39"(八位二進(jìn)制)其他譯為"20"(八位二進(jìn)制)主要代碼:(完整代碼請見源程序) signal dis:std_logic_vector(7 downto 0);begin process(data) begin if(carry='1')
17、then dis<="11111111" else case data is when "0000"=>dis<="00110000"-'0'譯為"30" when "0001"=>dis<="00110001"-'1'譯為"31" when "0010"=>dis<="00110010"-'2'譯為"32"
18、 when "0011"=>dis<="00110011"-'3'譯為"33" when "0100"=>dis<="00110100"-'4'譯為"34" when "0101"=>dis<="00110101"-'5'譯為"35" when "0110"=>dis<="00110110&q
19、uot;-'6'譯為"36" when "0111"=>dis<="00110111"-'7'譯為"37" when "1000"=>dis<="00111000"-'8'譯為"38" when "1001"=>dis<="00111001"-'9'譯為"39" when others=>di
20、s<="00100000"-其他譯為"20" end case; end if; end process;dataout<=dis;LCD1602顯示模塊LCD1602: 輸入端口:YIMA_DATA1: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號1 YIMA_DATA2: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號2 YIMA_DATA3: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號3 YIMA_DATA4: in std_lo
21、gic_vector(7 downto 0); -譯碼數(shù)據(jù)信號4 YIMA_DATA5: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號5 YIMA_DATA6: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號6 YIMA_DATA7: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號7 YIMA_DATA8: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號8LCD_Clk : in std_logic; -狀態(tài)機(jī)時鐘信號,同時也是液晶時鐘信號,其周期應(yīng)該滿足液
22、晶數(shù)據(jù)的建立時間 carry : in STD_LOGIC; 輸出端口: LCD_RS : out std_logic; -寄存器選擇信號 LCD_RW : out std_logic; -液晶讀寫信號 LCD_EN : out std_logic; -液晶時鐘信號 LCD_Data : out std_logic_vector(7 downto 0); -液晶數(shù)據(jù)信號 生成符號: 設(shè)計(jì)思路:將各個計(jì)數(shù)器部分的輸出信號通過譯碼模塊,變成LCD1602液晶屏能夠讀取并從而顯示相關(guān)字符的8位二進(jìn)制數(shù)據(jù)。再定義一個存儲器ram,存儲各個計(jì)數(shù)器部分的輸出信號經(jīng)過譯碼部分之后得到的數(shù)據(jù),然后將這個存儲器
23、ram代表的數(shù)據(jù)在LCD1602液晶屏上顯示。 主要代碼: (完整代碼請見源程序)type ram is array(0 to 10) of std_logic_vector(7 downto 0);signal ram1:ram;begin LCD_EN <= LCD_Clk ; -液晶時鐘信號 LCD_RW <= '0' ; -液晶讀寫信號 ram1(0)<=YIMA_DATA8;-譯碼數(shù)據(jù)信號8,秒表小時部分十位 ram1(1)<=YIMA_DATA7;-譯碼數(shù)據(jù)信號7,秒表小時部分個位 ram1(2)<=x"3a" -顯
24、示冒號: ram1(3)<=YIMA_DATA6;-譯碼數(shù)據(jù)信號6,秒表分鐘部分十位 ram1(4)<=YIMA_DATA5;-譯碼數(shù)據(jù)信號5,秒表分鐘部分個位 ram1(5)<=x"3a" -顯示冒號: ram1(6)<=YIMA_DATA4;-譯碼數(shù)據(jù)信號4,秒表秒鐘部分十位 ram1(7)<=YIMA_DATA3;-譯碼數(shù)據(jù)信號3,秒表秒鐘部分個位 ram1(8)<=x"2e" -顯示小數(shù)點(diǎn). ram1(9)<=YIMA_DATA2;-譯碼數(shù)據(jù)信號2,秒表十分秒位 ram1(10)<=YIMA_DAT
25、A1;-譯碼數(shù)據(jù)信號1,秒表百分秒位process(LCD_Clk) variable cnt :integer range 0 to 37;begin if LCD_Clk'event and LCD_Clk = '1'thenif cnt =37 then cnt :=0;else cnt :=cnt +1;end if;end if; case cnt is-Init LCD1602初始化部分-when 0 =>LCD_RS<='0'lcd_data<="00111000"-0x38 when 1 =>L
26、CD_RS<='0'lcd_data<="00001100"-0x0Cwhen 2 =>LCD_RS<='0'lcd_data<="00000001"-0x01 when 3 =>LCD_RS<='0'lcd_data<="00000110"-0x06- when 4 =>LCD_RS<='0'lcd_data<="10000000"-0x80-display,0x00+0x80-dat
27、a display-when 5=>LCD_RS<='1'lcd_data<="10100000"-空格 when 6=>LCD_RS<='1'lcd_data<="10100000"-空格 when 7=>LCD_RS<='1'lcd_data<="10100000"-空格 when 8=>LCD_RS<='1'lcd_data<=ram1(0);-秒表小時部分十位 when 9=>LCD_R
28、S<='1'lcd_data<=ram1(1);-秒表小時部分個位 when 10=>LCD_RS<='1'lcd_data<=ram1(2);-冒號: when 11=>LCD_RS<='1'lcd_data<=ram1(3);-秒表分鐘部分十位 when 12=>LCD_RS<='1'lcd_data<=ram1(4);-秒表分鐘部分個位 when 13=>LCD_RS<='1'lcd_data<=ram1(5);-冒號: wh
29、en 14=>LCD_RS<='1'lcd_data<=ram1(6);-秒表秒鐘部分十位 when 15=>LCD_RS<='1'lcd_data<=ram1(7);-秒表秒鐘部分個位 when 16=>LCD_RS<='1'lcd_data<=ram1(8);-小數(shù)點(diǎn). when 17=>LCD_RS<='1'lcd_data<=ram1(9);-秒表十分秒位 when 18=>LCD_RS<='1'lcd_data<=r
30、am1(10);-秒表百分秒位 when 19=>LCD_RS<='1'lcd_data<="10100000"-空格 when 20=>LCD_RS<='1'lcd_data<="10100000"-空格 -when 21=>LCD_RS<='0'lcd_data<="11000000"-設(shè)定顯示的位置在40H+80H,-when 22=>LCD_RS<='1'lcd_data<="101
31、00000"-空格 when 23=>LCD_RS<='1'lcd_data<="10100000"-空格 when 24=>LCD_RS<='1'lcd_data<="10100000"-空格when 25=>LCD_RS<='1'lcd_data<="10100000"-空格 when 26=>LCD_RS<='1'lcd_data<="10100000"-空格 wh
32、en 27=>LCD_RS<='1'lcd_data<="10100000"-空格when 28=>LCD_RS<='1'lcd_data<="10100000"-空格when 29=>LCD_RS<='1'lcd_data<="10100000"-空格 when 30=>LCD_RS<='1'lcd_data<="10100000"-空格 when 31=>LCD_RS&l
33、t;='1'lcd_data<="10100000"-空格when 32=>LCD_RS<='1'lcd_data<="10100000"-空格 when 33=>LCD_RS<='1'lcd_data<="10100000"-空格when 34=>LCD_RS<='1'lcd_data<="10100000"-空格when 35=>LCD_RS<='1'lcd_d
34、ata<="10100000"-空格 when 36=>LCD_RS<='1'lcd_data<="10100000"-空格 when 37=>LCD_RS<='1'lcd_data<="10100000"-空格 end case;end process;BTN0啟動/停止開關(guān)消抖模塊xiaodou: 輸入端口:clk :in std_logic; key_en:in std_logic; 輸出端口: en_out:out std_logic; 生成符號: 設(shè)計(jì)
35、思路:采用計(jì)數(shù)型防抖當(dāng)key_en第一次為'1'時,en_out延遲一段時間后變?yōu)?#39;1', 并且en_out就此保持在高電平'1'; 直到key_en第二次為'1'時,en_out延遲一段時間后變?yōu)?#39;0'。 主要代碼:(完整代碼請見源程序)signal cnt:integer range 0 to 3; -采用計(jì)數(shù)型防抖signal en,en_tmp:std_logic;beginp0:process(clk)beginif clk'event and clk ='1' thenif ke
36、y_en ='1' thenif cnt = 3 then en<='1'else cnt<=cnt+1;en<='0'end if;else cnt<=0;en<='0'end if;end if;end process p0;p1:process(en)beginif en'event and en='1' thenen_tmp<=not en_tmp;end if;en_out<=en_tmp;end process p1;BTN1復(fù)位開關(guān)消抖模塊fuweix
37、iaodou: 輸入端口:clk : in std_logic; fuwei: in std_logic; 輸出端口:fuwei_out: out std_logic; 生成符號: 設(shè)計(jì)思路:采用計(jì)數(shù)型防抖當(dāng)fuwei為'1'時,fuwei_out延遲一段時間后變?yōu)?#39;1', 然后fuwei_out又重新回到低電平'0'。主要代碼:(完整代碼請見源程序)signal cnt:integer range 0 to 3; -采用計(jì)數(shù)型防抖 signal en:std_logic; beginprocess(clk) begin if clk'e
38、vent and clk ='1' then if fuwei ='1' then if cnt = 3 then en<='1' else cnt<=cnt+1;en<='0' end if; else cnt<=0;en<='0' end if; end if;end process; fuwei_out<=en;三、 仿真波形及波形分析500000分頻模塊fpq輸入端口:clk : in std_logic;輸出端口:clkout : out std_logic;仿真波形:
39、 波形分析: 輸入時鐘信號為clk, 頻率為50MHZ (周期為20ns) 輸出時鐘信號為clkout,頻率為100HZ(周期為10ms) 達(dá)到了500000分頻的目的。50000分頻模塊fpq1輸入端口:clk : in std_logic;輸出端口:clkout : out std_logic;仿真波形: 波形分析:輸入時鐘信號為clk, 頻率為50MHZ (周期為20ns) 輸出時鐘信號為clkout,頻率為1KHZ(周期為1ms) 達(dá)到了50000分頻的目的。6進(jìn)制計(jì)數(shù)器模塊cnt6:輸入端口:reset,en,clk:IN STD_LOGIC; 輸出端口:carry :OUT STD
40、_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 仿真波形: 波形分析:正常計(jì)數(shù)狀態(tài)變化(16進(jìn)制表示)是:0->1->2->3->4->5->0->1; 當(dāng)reset信號為'1'時(此時按下了復(fù)位開關(guān)BTN1),執(zhí)行清零操作,狀態(tài)變?yōu)?; 當(dāng)en信號為'1'時(此時第一次按下了啟動/停止開關(guān)BTN0), 狀態(tài)保持不變,停止計(jì)數(shù);當(dāng)en信號為'0'時(此時第二次按下了啟動/停止開關(guān)BTN0), 又繼續(xù)計(jì)數(shù)。 10進(jìn)制計(jì)數(shù)器模塊cnt10:輸入端口:reset,en,
41、clk:IN STD_LOGIC; 輸出端口:carry :OUT STD_LOGIC; q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 仿真波形: 波形分析:正常計(jì)數(shù)狀態(tài)變化(16進(jìn)制表示)是:0->1->2->3->4->5->6->7->8->9->0->1; 當(dāng)reset信號為'1'時(此時按下了復(fù)位開關(guān)BTN1),執(zhí)行清零操作,狀態(tài)變?yōu)?; 當(dāng)en信號為'1'時(此時第一次按下了啟動/停止開關(guān)BTN0), 狀態(tài)保持不變,停止計(jì)數(shù);當(dāng)en信號為'0'
42、;時(此時第二次按下了啟動/停止開關(guān)BTN0), 又繼續(xù)計(jì)數(shù)。24進(jìn)制計(jì)數(shù)器模塊cnt24: 輸入端口en,Reset,clk: in STD_LOGIC; 輸出端口 carry: out STD_LOGIC;qa: out STD_LOGIC_VECTOR(3 DOWNTO 0); qb: out STD_LOGIC_VECTOR(3 DOWNTO 0); 仿真波形: 波形分析:qa狀態(tài)變化(16進(jìn)制表示)是:0->1->2->3->4->5->6->7->8->9->0->1;qb狀態(tài)變化(16進(jìn)制表示)是:0->1-
43、>2->0->1;且當(dāng)qa為9(16進(jìn)制表示)時,qb的狀態(tài)發(fā)生改變。 當(dāng)reset信號為'1'時(此時按下了復(fù)位開關(guān)BTN1),執(zhí)行清零操作,狀態(tài)變?yōu)?; 當(dāng)en信號為'1'時(此時第一次按下了啟動/停止開關(guān)BTN0), 狀態(tài)保持不變,停止計(jì)數(shù);當(dāng)en信號為'0'時(此時第二次按下了啟動/停止開關(guān)BTN0), 又繼續(xù)計(jì)數(shù)。譯碼模塊yima: 輸入端口: carry: in STD_LOGIC;data: in std_logic_vector(3 downto 0); 輸出端口: dataout: out std_logic_
44、vector(7 downto 0); 仿真波形: 波形分析: 當(dāng)carry信號為'1'時,dataout輸出為FF(二進(jìn)制表示為"11111111"); 當(dāng)carry信號為'0'時,正常譯碼:data為'0'(二進(jìn)制表示為"0000")時,dataout輸出為"30"(二進(jìn)制表示為"00110000");data為'1'(二進(jìn)制表示為"0001")時,dataout輸出為"31"(二進(jìn)制表示為"001
45、10001");data為'2'(二進(jìn)制表示為"0010")時,dataout輸出為"32"(二進(jìn)制表示為"00110010");data為'3'(二進(jìn)制表示為"0011")時,dataout輸出為"33"(二進(jìn)制表示為"00110011");data為'4'(二進(jìn)制表示為"0100")時,dataout輸出為"34"(二進(jìn)制表示為"00110100");da
46、ta為'5'(二進(jìn)制表示為"0101")時,dataout輸出為"35"(二進(jìn)制表示為"00110101");data為'6'(二進(jìn)制表示為"0110")時,dataout輸出為"36"(二進(jìn)制表示為"00110110");data為'7'(二進(jìn)制表示為"0111")時,dataout輸出為"37"(二進(jìn)制表示為"00110111");data為'8'(
47、二進(jìn)制表示為"1000")時,dataout輸出為"38"(二進(jìn)制表示為"00111000");data為'9'(二進(jìn)制表示為"1001")時,dataout輸出為"39"(二進(jìn)制表示為"00111001");data為其他數(shù)據(jù)時,dataout輸出為"20"(二進(jìn)制表示為"00100000"); LCD1602顯示模塊LCD1602:輸入端口:LCD_Clk: in std_logic; -狀態(tài)機(jī)時鐘信號,同時也是液晶
48、時鐘信號,其周期應(yīng)該滿足液晶數(shù)據(jù)的建立時間 carry: in STD_LOGIC;-前級計(jì)數(shù)部分輸出的進(jìn)位信號 YIMA_DATA1: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號1 YIMA_DATA2: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號2 YIMA_DATA3: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號3 YIMA_DATA4: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號4 YIMA_DATA5: in std_logic_ve
49、ctor(7 downto 0); -譯碼數(shù)據(jù)信號5 YIMA_DATA6: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號6 YIMA_DATA7: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號7 YIMA_DATA8: in std_logic_vector(7 downto 0); -譯碼數(shù)據(jù)信號8 輸出端口: LCD_RS: out std_logic; -寄存器選擇信號 LCD_RW: out std_logic; -液晶讀寫信號 LCD_EN: out std_logic; -液晶時鐘信號 LCD_Data: o
50、ut std_logic_vector(7 downto 0); -液晶數(shù)據(jù)信號 仿真波形:接下圖接下圖 波形分析: 仿真時假設(shè)YIMA_DATA1= "00110001";-代表數(shù)字1YIMA_DATA2= "00110001";-代表數(shù)字1YIMA_DATA3= "00110001";-代表數(shù)字1YIMA_DATA4= "00110001";-代表數(shù)字1YIMA_DATA5= "00110001";-代表數(shù)字1YIMA_DATA6= "00110001";-代表數(shù)字1YI
51、MA_DATA7= "00110001";-代表數(shù)字1YIMA_DATA8= "00110001";-代表數(shù)字1 則對于輸出信號LCD_Data:在初始化部分(LCD_RS<='0')依次為"38"、"0C"、"01"、"06"、"80";在開始顯示時(LCD_RS<='1')依次為"A0"、"A0"、"A0" 顯示空格"31"、&q
52、uot;31" -顯示數(shù)字11"3a" -顯示冒號:"31"、"31" -顯示數(shù)字11"3a" -顯示冒號:"31"、"31" -顯示數(shù)字11"2e" -顯示小數(shù)點(diǎn)."31"、"31" -顯示數(shù)字11"A0"、"A0" 顯示空格 - "C0" (此時LCD_RS<='0') -在LCD1602液晶屏第二行顯示"A0"、"A0"、"A0"、"A0"、"A0" -顯示空格"A0"、"A0"、"A0"、"A0"、"A0"、"A0" -顯示空格"A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備電流報(bào)警管理制度
- 設(shè)備計(jì)劃檢修管理制度
- 設(shè)計(jì)主管組員管理制度
- 設(shè)計(jì)投標(biāo)規(guī)章管理制度
- 設(shè)計(jì)項(xiàng)目制度管理制度
- 診所醫(yī)保財(cái)務(wù)管理制度
- 診所藥房安全管理制度
- 試驗(yàn)檢測安全管理制度
- 財(cái)務(wù)資金借支管理制度
- 財(cái)政完善權(quán)責(zé)管理制度
- 語文課堂精彩兩分鐘PPT課件
- 三生事業(yè)六大價(jià)值
- 鋯石基本特征及地質(zhì)應(yīng)用
- 絲網(wǎng)除沫器小計(jì)算
- 制缽機(jī)的設(shè)計(jì)(機(jī)械CAD圖紙)
- 學(xué)校財(cái)務(wù)管理制度
- 三年級下冊美術(shù)課件-第15課色彩拼貼畫|湘美版(共11張PPT)
- 水稻病蟲統(tǒng)防統(tǒng)治工作總結(jié)
- 水在不同溫度下的折射率、粘度和介電常數(shù)
- howdoyoucometoschoolPPT課件
- 四柱特高弟子班絕密資料——席學(xué)易
評論
0/150
提交評論