數字電路與邏輯設計實驗報告_第1頁
數字電路與邏輯設計實驗報告_第2頁
數字電路與邏輯設計實驗報告_第3頁
數字電路與邏輯設計實驗報告_第4頁
數字電路與邏輯設計實驗報告_第5頁
已閱讀5頁,還剩39頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數字電路與邏輯設計實驗報告學院:電子工程學院班級:2014211212姓名:學號:班內序號:一、設計課題的任務要求簡易秒表的設計與實現設計制作一個計時精度為百分之一秒的計時秒表基本要求:1. 用lcd 1602液晶屏顯示計時;2. 秒表計吋長度為23小吋59分59. 99秒;3. 用btn0作為啟動/停止開關;4. 用btn1作為復位開關,在任何情況下,只要按下復位開關,秒表都要無 條件執行清零操作。提高要求:1 增加定時器功能,可根據用戶設定的吋間進行倒計吋,吋間到0后蜂鳴器 報警提示;2. 自擬其他功能。二、系統設計(設計思路、總體框圖、分塊設計)1. 設計思路: 分別設計6進制計數器、1

2、0進制計數器和24進制計數器用于秒表計時 部分。具體來說:將兩個10進制計數器級聯分別作為秒表的十分秒位(最 小單位為0.1秒)和百分秒位(最小單位為0.01秒);將一個10進制計 數器和6進制計數器級聯,分別作為秒表秒鐘部分的個位(最小單位為1 秒)和十位(最小單位為10秒);再將一個10進制計數器和6進制計數 器級聯,分別作為秒表分鐘部分的個位(最小單位為1分鐘)和十位(最 小單位為10分鐘);將24進制計數器作為秒表小時部分,其中低位輸 出作為秒表小時部分的個位(最小單位為1小時),高位輸出作為秒表小 時部分的十位(最小單位為10小吋)。最后把秒表百分秒、十分秒部分、 秒鐘部分、分鐘部分

3、、小時部分這四部分級聯起來便構成了簡易數字秒 表的計時部分。 將各個計數器部分的輸出信號通過譯碼模塊,變成lcd 1602液晶屏能夠 讀取并從而顯示相關字符的8位二進制數據。再定義一個存儲器ram, 存儲各個計數器部分的輸出信號經過譯碼部分之后得到的數據,然后將 這個存儲器ram代表的數據在lcd 1602液晶屏上顯示。 考慮到秒表的最小計時長度為0. 01秒(頻率為100hz),如果系統時鐘設 置為50mhz,則需要500000分頻;實驗時發現lcd 1602液晶屏的時鐘在 1khz時,顯示效果較好,故需要在系統時鐘為50mhz的基礎上進行50000 分頻。 考慮到基本要求屮需要用btn0作

4、為啟動/停止開關,用btn1作為復位 開關,所以需要設計相應的按鍵防抖電路,這里我采用的是計數型防抖。2. 總體框圖:圖1系統結構框圖3.分塊設計:系統共通過9個模塊實現,分別是:500000分頻模塊fpq50000分頻模塊fpql6進制計數器模塊cnt610進制計數器模塊cntlo24進制計數器模塊cnt24譯碼模塊yimalcd1602顯示模塊lcd1602btn0啟動/停止開關消抖模塊xiaodoubtn1復位開關消抖模塊fuweixiaodou具體設計如下:500000分頻模塊fpq輸入端口: elk :in std logic;輸出端口: clkout : out std_logic

5、; 生成符號:設計思路:利用計數法實現分頻主要代碼:(完整代碼請見源程序)signal clktmp : stdlogic;signal tmp : integer range 0 to 249999; beginprocess (elk)beginif elk" eve nt and elk 二 t thenif tmp二249999 then500000 分頻tmp<=0; elktmp二not clktmp;elsetmp<=tnip+l;end if;end if;end process;clkout<=clktmp;(2)50000 分頻模塊 fpql:輸

6、入端口: elk :in std_logic;輸岀端口: clkout : out std_logic;生成符號:設計思路:利用計數法實現分頻 主要代碼:(完整代碼請見源程序) signal elktmp : stdlogic;signal tmp : integer range 0 to 24999; beginprocess (elk)beginif elk" event and elk1 thenif ti叩二24999 then50000 分頻tmp<=0; elktmp二not clktmp;elsetmp<=tmp+l;end if;end if;end pr

7、ocess;clkout二clktmp; 6進制計數器模塊cnt6:輸入端口: reset, en, clk:tn std_l0gtc; 輸出端口: carry:0ut std_l0gic;:out std_logic_vector (3 downto 0);生成符號:設計思路:正常的計數狀態是0->1->2->3->4->5->0->1; 當計數到5時,進位信號變為 t;否則狀態自增, 進位信號保持在'(t主要代碼:(完整代碼請見源程序)signal qs :std_l0gic_vect0r(3 downto 0);signal ca :st

8、d_logic;beginprocess (elk)beginif(reset二t')then qs二0000; elsif(clk,event and elk二'l')thenif(en= ) thenif(qs二0101)then-計數到 5qs<= "0000"ca<=,;elseqs二qs+1; ca<=,0'end if;end if;end if;end process;process (ca, en)beginq二qs;carry二ca;end process;10進制計數器模塊cntlo:輸入端口: rese

9、t, en, clk:in std_logic;輸出端口: carry:out std_logic;q:out std_logic_vector (3 downto 0);生成符號:設計思路:正常的計數狀態是;0->1->2->3->4->5->6->7->8->9->0->1當計數到9時,進位信號變為 t;否則狀態自增, 進位信號保持在主要代碼:(完整代碼請見源程序)signal qs :std_l0gic_vect0r(3 downto 0);signal ca :std_logic;beginprocess (elk)be

10、ginif(reset二t')then qs二0000; elsif(clk,event and elk二'l')thenif(en= ) thenif(qs二 1001)then -計數到 9 qs<= 0000; ca<=,;elseqs二qs+1; ca<=,0'end if;end if;end if;end process;process (ca)beginq二qs; carry<=ca;end process; 24進制計數器模塊cnt24:輸入端口 en, reset, elk: in std_logic;輸出端口carry

11、: out std logic;qa: out std_logic_vector (3 downto 0);qb: out std_logic_vector (3 downto 0);生成符號:設計思路:正常的計數狀態是;低位qa狀態變化:0->1->2->3->4->5->6->7->8->9->0->1 高位qb狀態變化:0-> 1 ->2->0-1當低位qa計數到9吋,qb自增,進位信號保持在,0' 當低位qa為3且高位qb為2吋,進位信號變為 同時qa變為0、qb變為0主要代碼:(完整代碼請見源

12、程序)signal ca :std_logic;beginprocess (elk,resct, cn)variable tma: std_log1c_vector(3 downto 0); variable tmb: std_l0gic_vect0r(3 downto 0); beginif reset 二'1' then turn:二0000" tmb:二0000"elseif clk,event and elk二'1' thenif(en= 0j) then-當btno鍵沒有第一次按下時,正常計數if tma二 1001 then tm

13、a:二0000"tmb:二tinb+1; elsif tmb二0010 and tma二"0011 then-計數到23tma:二0000;tmb:二0000" ca<=,'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

14、_vector(7 downto 0); 生成符號:(八位二進制) (八位二進制) (八位二進制) (八位二進制)'3'(四位二進制)譯為33設計思路:根據輸入信號的不同,使用case語句進行不同的譯碼操作即可。具體來說:,0,(四位二進制)譯為30t'(四位二進制)譯為31'2'(四位二進制)譯為32,4,(四位二進制)'5'(四位二進制)'6'(四位二進制)'7'(四位二進制),8,(四位二進制),9,(四位二進制)譯為 34 譯為 35 譯為 36 譯為 37 譯為 38 譯為 39(八位二進制) (

15、八位二進制) (八位二進制) (八位二進制) (八位二進制) (八位二進制)其他譯為20(八位二進制)主要代碼:(完整代碼請見源程序)signal dis:std_logic_vector(7 downto 0); beginprocess(data)beginif (carry=,1') thendis二11111111;whe n0000>dis<when"0001>dis<when"0010>dis<when0011>dis<when0100>dis<whe n0101>dis<when&

16、quot;0110>dis<when"0111>dis<when1000>dis<when"1001">dis<whe nothers>dis<end ease;end if;end process; dataout<=di s;elsecase data is00110000;一' o'譯為30 00110001;-' 1'譯為31 "00110010;-2'譯為32 ”00110011;-' 3'譯為33 00110100;-&#

17、39;4'譯為34 00110101;一'5'譯為35 00110110;-' 6'譯為36 "00110111;-7'譯為37 "00111000;-'8'譯為38 00111001;-'9 譯為39 00100000; -其他譯為 20 lcd 1602顯示模塊lcd1602:yima_data1:ytma_data2: yima_data3: yima data4: y1ma_data5: yima_data6: ytma_data7: yima_data8:in std_logic_vector

18、(7 in std_logic_vector(7 in std_logic_vector(7 in std logic vector (7 in std_logic_vector(7 in std_logic_vector(7 in std_logic_vector(7 in std_logic_vector(7downto 0) downto 0) downto 0) downto 0) downto 0) downto 0) downto 0) downto 0)譯碼數據信號1譯碼數據信號2譯碼數據信號3譯碼數據信號4譯碼數據信號5譯碼數據信號6譯碼數據信號7譯碼數據信號8輸入端口:lcd

19、clk :in stdlogic;狀態機吋鐘信號同時也是液晶吋鐘信號,其周 期應該滿足液晶數據的建立時間carry:in std_logic;輸岀端口:lcd_rs :out std_logic;寄存器選擇信號lcd_rw :out std_logic; -液晶讀寫信號lcd_en :out std_logic;液晶時鐘信號lcddata: out std logic vector (7 downto 0);液晶數據信號牛成符號:設計思路:將各個計數器部分的輸出信號通過譯碼模塊,變成 lcd 1602液晶屏能夠讀取并從而顯示相關字符的8位 二進制數據。再定義一個存儲器ram,存儲各個計數 器部

20、分的輸出信號經過譯碼部分之后得到的數據,然 后晉這個存儲器ram代表的數據在lcd 1602液晶屏上 顯不。主要代碼:(完整代碼請見源程序)type ram is array(0 to 10) of std_logic_vcctor(7 downto 0); signal rami:ram;beginlcd_en <= lcd_clk ; 一液晶時鐘信號 lcd_rw u ' o'液晶讀寫信號rami (0) <=yima_data8;譯碼數據信號8,秒表小時部分十位 raml(l)<=ylma_data7;譯碼數據信號7,秒表小時部分個位 rami (2)二

21、x3a"-顯示冒號:rami<=yima_data6;譯碼數據信號6,秒表分鐘部分十位 rami (4) <=ytma_data5;譯碼數據信號5,秒表分鐘部分個位 rami (5)二x3a;-顯示冒號:rami<=yima_data4;譯碼數據信號4,秒表秒鐘部分十位 rami (7) <=ytma_data3;譯碼數據信號3,秒表秒鐘部分個位 rami (8) ux"2e"顯示小數點.rami (9) <=yima data2;譯碼數據信號2,秒表十分秒位 rami (10) <=y1ma_data1譯碼數據信號1,秒表百分

22、秒位process(lcd_clk) variable ent :integer range 0 to 37;beginif lcd_clk,event and lcd clk = '1' then if ent 二37 then ent :二0;else ent :=cnt +1;end if;end if;case ent istnit lcd1602初始化部分 when 0 =>lcd_rs<=,; lcd_data<=,00111000" 0x38 when 1 =>lcd rs<='0'lcd data二0000

23、1100;一oxoc when 2 =>lcd_rs<= 0* ; lcd_data<=,z0000000rz0x01 when 3 二lcd_rs<='o'lcd_data<=00000110;-0x06when 4 二lcd_rs二'0' ; lcd_dcita<=,z 10000000" 0x80 一一display, 0x00+0x80when whe n whe n when when when when whe n when when when when whe n whendata display5二l

24、cd_rs< 6=>lcd_rs< 7=>lcd_rs< 8=>lcd rs< 9二>lcd_rs 10二lcd_rs 11=>lcd_rs 12=>lcd_rs 13=>lcd rs 14=>lcd_rs 15二lcd_rs 16=>lcd_rs 17=>lcd_rs 18=>lcd rsr ;lcd_data二 10100000;-空格 r ;lcd_data<=/z 10100000"空格r ;lcd_data二 10100000;一空格lcd_data<=raml (2);-

25、冒號: lcd_data<=raml (3);-秒表分鐘部分十位 lcd_data<=rciml (4);-秒表分鐘部分個位 led data<=raml (5);-冒號: lcd_data<=raml (6);-秒表秒鐘部分十位 lcd_data<=raml (7); -秒表秒鐘部分個位 lcd_data<=raml (8); -小數點. lcd_data<=raml (9); -秒表十分秒位 led data<=raml (10); -秒表百分秒位v ; led data<=raml (0); -秒表小時部分十位 r ; lcd_dat

26、a<=raml (1); -秒表小時部分個位 r -,1',1',1',r1'i,r,1when 19=>lcd_rs< when 20二lcd rs<r ; lcd_data<=z,10100000"空格1' ;lcd data二 10100000;-空格when 21=>lcd_rs<= 0, ; lcd_data<=z,l 1000000"-設定顯示的位置在40h+80h,when 22=>lcd_rs<= 1' ; lcd_data二 10100000;一空格

27、 when 23=>lcd_rs<= v ; lcd_data= 10100000;一空格 when 24=>lcd_rs<=,1' ; lcd_data<=,z 10100000"空格 when 25二lcd_rs二'1' ; lcd_data二 10100000;一空格 when 26=>lcd_rs<= t ; lcd_data二 10100000;一空格 when 27=>lcd_rs<= 1' ; lcd_data<=zz 10100000"空格 when 28=>l

28、cd_rs<=,v ; lcd_data= 10100000;一空格 when 29=>lcd_rs<=,1' ; 1 cd_data<=,z 10100000"空格 when 30二lcd_rs二t' ; lcd_data二 10100000;一空格 when 31=>lcd_rs<= t ; lcd_data二 10100000;一空格 when 32=>lcd_rs<= 1' ; lcd_data<=zz 10100000"空格 when 33=>lcd_rs<= v ; lcd

29、_data= 10100000;一空格 when 34=>lcd_rs<=,1' ; lcd_data<=,z 10100000"空格 when 35二lcd_rs二t' ; lcd_data二 10100000;一空格 when 36=>lcd_rs<= t ; lcd_data二 10100000;一空格 when 37=>lcd_rs<=,v ; lcd_data<=,z 10100000"空格 end case;end process;®btn0啟動/停止開關消抖模塊xiaodou:輸入端口:

30、 elk : in std_logic;key_en:in std_logic;輸岀端口: en out:out std logic; 生成符號:""設計思路:采用計數型防抖當key_en第一次為t'時,en_out延遲一段時間后變為t', 并且en_out就此保持在高電平;1';直到key_en第二次為1'時,en_out延遲一段時間后變為'0'。主要代碼:(完整代碼請見源程序)_signal ent: integer range 0 to 3;-采用計數型防抖signal cn,cn_tmp:std_logic;begin

31、 po:process (elk)beginif elk' event and elk 二'1 then if key_en 二'1 thenif ent 二 3 then en二'1' else cnt二cnt+l;cn0; end if;else cnt<=0;en<=,0"end if;end if;end process po;pl:process(en) beginif en'event and en二t then cn_tmp<=not cn_tmp;end if; en_out<=en_tmp; e

32、nd process pl;in std_logic; in std_logic; out stdlogic;©btnl復位開關消抖模塊fuweixiaodou:輸入端口: elk :fuwei:輸出端口: fuwei out:生成符號:"/“m“/設計思路:采用計數型防抖當fuwei為t'時,fuwei_out延遲-段時間后變為t', 然后fuwci_out又重新回到低電平o' o主要代碼:(完整代碼請見源程序)signal ent: integer range 0 to 3;-采用計數型防抖signal en:std_logic;beginpro

33、cess (elk)beginif elk' event and elk 二'then if fuwei 二1' thenif ent 二 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輸入端口: elk :in std_logic;輸出端口: clkout : out std logic; 仿真波

34、形:20 0 mb 0> x200 m20mirwvt120 0 »80 9 m<|»|ponter40 9 mkamter tmbar10.48576 porter267 74 usirieiv1022m$startofnend1000rm)pi209f2 bi41 9362 9)5 *183 空和|3 0 ra1波形分析:輸入i寸鐘信號為elk,頻率為50mhz (周期為20ns) 輸出時鐘信號為clkout,頻率為100i1z (周期為10ms) 達到了 500000分頻的目的。 50000分頻模塊fpql輸入端口: elk :in std_logic;輸

35、出端口: clkout : out std_logic;仿真波形:波形分析:輸入時鐘信號為elk,頻率為50mhz (周期為20ns) 輸出時鐘信號為clkout,頻率為1khz (周期為ims) 達到了 50000分頻的目的。 6進制計數器模塊cnt6:輸入端口:reset,en,elk: instd_l0gic;輸出端口:carry:0utstd_log1c;q:outstd_l0gic_vect0r(3d0wnt0 0);仿真波形:17.s25mporter5614 minterval:4062mstmendmmtet tme baavelr)ps6.1? u10.24 u15.36 u

36、s20.48 ns25. § “30 72 w35 m ui1? 525 mj傀edelkijtrmrlrlnnjirlruvumnrrlrlrumrlnjmnnnjmarutnjinrlnnre3r«s«tii1rqgsssdss目也叵1波形分析:ctrry正常計數狀態變化(16進制表示)是:0->1->2->3->4->5->0->1;當reset信號為1'時(此時按下了復位開關btn1),執行清零操作,狀態變為0;當en信號為t'時(此時第一次按下了啟動/停止開關btno), 狀態保持不變,停止計數;

37、當en信號為'0,時(此時第二次按下了啟動/停止開關btn0), 又繼續計數。 10進制計數器模塊cntlo:輸入端口: reset, en, elk: in 輸 lb端口: carry:outq: out仿真波形:std_logic;std_logic;std_l0gtc_vect0r(3 downto 0);17525mportermgec tmebar5814m4062m波形分析:正常計數狀態變化(16進制表示)是: 0-1-2->3->4->5-6-7-8->9-0->1;當reset信號為t'時(此時按下了復位開關btn1), 執行清零操

38、作,狀態變為0;當en信號為r吋(此時第一次按下了啟動/停止開關btn0), 狀態保持不變,停止計數;當en信號為'0,時(此時第二次按下了啟動/停止開關btn0), 乂繼續計數。 24進制計數器模塊cnt24:輸入端口 en, reset, elk:instd_l0gic;輸岀端口carry:out stdl0g1c;qa:outstd丄0gic_vect0r(3 downto0);qb:outsti)j,0gtc_vect0r(3 downto0);仿真波形:647.7 m start§ mastec time bai17 525 m 出 porter(6522m iri

39、etval波形分析:qa狀態變化(16進制表示)是:0->1->2-3->4-5->6->7-8->9->0->1;qb狀態變化(16進制表示)是:0->1->2->0->1;且當qa為9 (16進制表示)時,qb的狀態發生改變。當reset信號為t'時(此時按下了復位開關btn1), 執行清零操作,狀態變為0;當en信號為t'吋(此時第一次按下了啟動/停止開關btn0), 狀態保持不變,停止計數;當en信號為'0,時(此時第二次按下了啟動/停止開關btn0), 乂繼續計數。 譯碼模塊yima:輸入

40、端口:carry:in std_logic;data:in std_logic_vector(3 downto 0);輸出端口: dataout:out std_logic_vector(7 downto 0);仿真波形:當carry信號為t'時, dataout輸出為ff(二進制表示為 11111111);當carry信號為'0'吋,正常譯碼:data為'0'(二進制表示為"0000")時,dataout輸出為"30(二進制表示為00110000);data為t'(二進制表示為"0001")時,

41、dataout輸出為"31(二進制表示為00110001);data為'2'(二進制表示為0010)時,dataout輸出為32(二進制表示為00110010);data為'3'(二進制表示為"0011")時,dataout輸出為"33"(二進制表示為00110011);data為'4'(二進制表示為0100)時,dataout輸出為"34(二進制表示為00110100);data為'5'(二進制表示為”0101)時,dataout輸出為"35(二進制表示為00

42、110101);data為'6'(二進制表示為0110)時,dataout輸出為36(二進制表示為00110110);data為'7'(二進制表示為"0111")時,dataout輸出為37(二進制表示為00110111);data為'8'(二進制表示為"1000")時,dataout輸出為"38"(二進制表示為00111000);data為'9'(二進制表示為1001)時,dataout輸出為"39(二進制表示為00111001);data為其他數據時,dat

43、aout輸出為"20(二進制表示為00100000); lcd1602顯示模塊lcd1602:輸入端口:lcd_clk: in std_logic;carry:狀態機時鐘信號,同時也是液晶時鐘信號,其周 期應該滿足液晶數據的建立時間in std logtc;前級計數部分輸出的進位信號16.875 mq mdtfec tmebar波形分析:<| »|porter26163 m244 78msunintervalytma_data1:ytma_data2:yima_data3:y1ma_data4:yima_data5:yima_data6:ytma_data7:yima

44、_data8: 輸h端口:in in in in in in in instdjogicstdlogicstdlogicstdlogicstdlogicstdlogicstdlogicstdlogicvector (7 vector (7 vector (7 vector (7 vector (7 vector (7 vector (7 vector (7downto 0) downto 0) downto 0) downto 0) downto 0) downto 0) downto 0) downto 0)譯碼數據信號1譯碼數據信號2譯碼數據信號3譯碼數據信號4譯碼數據信號5譯碼數據信號6

45、譯碼數據信號7譯碼數據信號8lcd_rslcd_rwlcd_enlcd_dataout std_logic;寄存器選擇信號out std_logic; -液晶讀寫信號out std_logic; -液晶吋鐘信號out std_logic_vector (7 down to 0); -液晶數據信號仿真波形:kmastec tfneb«16875 m<p|porteciriefsatstatendavc)pi 2 ui 5 1? m 7 6 m 10.24 ui 12 f vi is. 3* us 17 平 ui 20. 48 us 23 (m ui 25. § at茨1

46、66 85 m1q”0xd.cnjmnj"lnjmjtrlrlrlrlnj"lrlrlru"lrlru"lnj"utrlrlrlydu.datalb 0oonoooitdu.data2b 000110001 19ydu-dau3b 000110001ay128stdu.datmb 0oonodoif137stdu.data5b 0oonoooiqo 46atdujata6b 000110001or>i a_|155idtdu.data?b 0bonoooi矢164a!ou_data8b 0oonoooionxd.m>74itd.bm

47、rln rln n rlrlrlrlrlrlrlrlrlrln rlnjin rlrln rltln rl0 75lcd.rsl±j接下圖mastet tme bar16875 m <| »| porterb 0data81du.data6 1du data?dcd.wdcdjmicdjslcd.dtte2q33us2031end32.64 us37.76 us42. ob uoonoooioonoooioonoooi"lrlrlnrlrlrlrlrlrlrutrlrlrlrlrlrlrltlrlrlrlrlrlnjtr00110001oonoooi0011

48、000100110001"in_rln_njtrln_n_njm_n_n_rln_rmn_rln_rln_rlrlrlrlr00110001接下圖a茨16xd.clkq tima.datalb 0q tdujata2b 0lk19q tdu.data3b 0128q tima.datmb 0lk37q tdu.data5b 0s !ixa_data6b 0s tdu.data7b 0q tdu.data8b 0<>?3lcdjw0 74xdjm075lcd-rs36s xd.dttt4tmebac芳 04 a.60 16 m66 26 ui?0 f us75.5 ui80

49、 m nirln n n n n n n rln rln n n n rln rlnjn n n n rlrltlrl0011000100110001oonoooioonoooi00110001oonoooioonoooioonoooinrlrlrlrlrlrumnrlrlrlrlrlrlrlnnj"lrlrlrlrj"lrlrli_i寸燉何a廠曠丫aoi ao x aoao7108m7106 sstartirienat16875 m土jpg波形分析: 仿真時假設yima_data1 二00110001;-代表數字 1 yima_data2二00110001;-代表數字 1

50、yima_data3 二00110001;代表數字 1yima data4二00110001;代表數字 1yima_data5= 00110001 ;代表數字 1yima_data6= "00110001";代表數字 1y1ma_data7=z,oo110001"; -代表數字 1yima_data8= "00110001"; -代表數字 1 則對于輸出信號lcd_data:在初始化部分(lcd_rsu'0)依次為38、 0c、 01、 06、 80;在開始顯示時(lcd_rs二1')依次為a0、 a0、 a0顯不空格31、 3

51、1顯示數字113a-顯示冒號:31、 31顯示數字113a顯示冒號:31、 31顯示數字112e-顯示小數點.31、 31顯示數字11a0、 a0顯不空格c0 (此時 lcd_rs<=,0")-在lcd 1602液品屏第二行顯示a0、 a0、 a0、 a0、 a0-顯示空格a0、 a0、 a0、 a0、 a0、a0-顯示空格a0、 a0、 a0、 a0-顯示空格btn0啟動/停止開關消抖模塊xiaodou:輸入端口: elk:in stdlogic;key_en: in std_logic;輸出端口: en_out: out std_logic; 仿真波形:接下圖moslet

52、time bara6000 ms startmh0porter(000 rm intervaloik b c kty.th b c en out b c/mjinjmnnrnrmruuuuuuimrmnjuuuuuuuuiwmiwiwuinjuuiwifmnr1.019 s 0 ” 683 yez tgs861 營935.甲波形分析:當key_en第一次為t,時,en_out延遲一段時間后變為,f,并且en_out就此保持在高電平1';直到key_en第二次為1'吋,en_out延遲一段吋間后變為'0,。 以后的狀態與此類似。in stdlogic; in std_lo

53、gic; out std_logic;btn1復位開關消抖模塊fuweixiaodou:輸入端口: elk :fuwci:輸出端口: fuwei_out:仿真波形:kmaster time bar17.525 ru<| »| pointer6.54 m$interval6 54 msstatop:end100.0mav<lu«)ps10.4$6 as 20 97231 47 as 41 93 as 52 4962.915 as73. f ass3怦” 94 32 bs/svkin.626 mq1*0elkb c1_1 11 11 11 11 11 11 11 1

54、1 1-4b cj"32i fwti.outbc波形分析:當fuwei為1,吋,fuwei_out延遲一段吋間后變為'1', 然后fuwei_out又重新回到低電平'o' o四、源程序(完整代碼、含注釋) 頂層文件library ieee;use ieee. std_logic_1164. all;use ieee. std logic unsigned. all;entity clock isport (reset 1:start:clkl:lcd_rs1 :lcd rw1 :lcd en1 :lcddatal :end clock;in std l

55、ogicin std_logicin std_l0gicbtnlbtno-系統時鐘50mhzout std_logic;寄存器選擇信號out std_logic;液晶讀寫信號out std_logic;液晶時鐘信號out std_logic_vcctor(7 downto 0)液晶數據信號architecture struc of clock iscomponent fpq-分頻器模塊fpq (500000分頻)port(elk :in std logic;clkout : out std_logicend component;component fpql一分頻器模塊 fpql (50000 分頻)port(elk :in std_logic;clkout : out std

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。