原文鏈接:熬夜到了1點了,終于寫出了1602的時鐘計數器代碼。為什么是時鐘計數器呢?因為我還沒來得及做校準時間,所以只能稱之為時鐘計數器,不能成為電子鐘。網上很少用人公開這一類代碼,一搜FPGA? 1602,都是寫一個靜態的顯示,在實際應用中,是沒有用的,因此這個簡單的例子,給大家拋磚引玉了!上代碼: Qii 9.0編譯過,21EDA 開發板測試OKmodule LCD??(??rst,??key1,??clk,??rw,??rs,??en,??data?);?input clk,rst,key1;?output rs,en,rw;?output [7:0] data;??reg rs,en_sel;?reg [7:0] data;?reg [7:0] shi,fen,miao;?reg [31:0]count,count1;??//LCD CLK 分頻計數器?reg lcd_clk;?reg [7:0] one_1,one_2,one_3,one_4,one_5,one_6,one_7,one_8,one_9,one_10,one_11,one_12,one_13,one_14,one_15,one_16;?reg [7:0] two_1,two_2,two_3,two_4,two_5,two_6,two_7,two_8,two_9,two_10,two_11,two_12,two_13,two_14,two_15,two_16;?reg [7:0] next,xianshi,two;?parameter?state0 ?=8'h00,???? //設置8位格式,2行,5*7? ??8'h38;?????state1 ?=8'h01,??//整體顯示,關光標,不閃爍 ?8'h0C??? 閃爍 8'h0e????state2 ?=8'h02,??//設定輸入方式,增量不移位?8'h06????state3 ?=8'h03,??//清除顯示?????8'h01????state4 ?=8'h04,??//顯示第一行的指令??80H????state5 ?=8'h05,??//顯示第二行的指令??80H+40H????????scan?=8'h06,??????nul??=8'h07;???parameter?data0 ?=8'h10,?? //2行,共32個數據????data1 ?=8'h11,????data2 ?=8'h12,????data3 ?=8'h13,????data4 ?=8'h14,????data5 ?=8'h15,????data6 ?=8'h16,????data7 ?=8'h17,????data8 ?=8'h18,????data9 ?=8'h19,????data10 ?=8'h20,????data11 ?=8'h21,????data12 ?=8'h22,????data13 ?=8'h23,????data14 ?=8'h24,????data15 ?=8'h25,????data16 ?=8'h26,????data17?=8'h27,????data18?=8'h28,????data19?=8'h29,????data20?=8'h30,????data21 ?=8'h31,????data22 ?=8'h32,????data23 ?=8'h33,????data24 ?=8'h34,????data25 ?=8'h35,????data26 ?=8'h36,????data27 ?=8'h37,????data28 ?=8'h38,????data29 ?=8'h39,????data30 ?=8'h40,????data31 ?=8'h41;?initial?????????? //初始值?begin???//第一行顯示?TEL:13868160569???one_1<="T"; one_2<="E"; one_3<="L"; one_4<=":"; one_5<="1"; one_6<="3"; one_7<="8"; one_8<="6";????one_9<="8";one_10<="1";one_11<="6";one_12<="0";one_13<="5";one_14<="6";one_15<="9";one_16<=" ";???//第二行顯示 Clock:00-00-00???two_1<="C"; two_2<="l"; two_3<="o"; two_4<="c"; two_5<="k"; two_6<=":"; two_7<=" "; two_8<=" ";????two_9<="-";two_10<=" ";two_11<=" ";two_12<="-";two_13<=" ";two_14<=" ";two_15<=" ";two_16<=" ";???????shi<=0;fen<=0;miao<=0;?end?????always @(posedge clk )???//獲得LCD時鐘?begin??count<=count+1;??if(count==250000)??begin???count<=0;???lcd_clk<=~lcd_clk;??end?end?always @(posedge clk or negedge rst?)???//時鐘計數器?begin??if(!rst)??begin???shi<=0;fen<=0;miao<=0;???count1<=0;??end??else??begin???en_sel<=1;??????two_7<=?(shi/10)+8'b00110000;???two_8<=?(shi%10)+8'b00110000;???two_10<=(fen/10)+8'b00110000;???two_11<=(fen%10)+8'b00110000;???two_13<=(miao/10)+8'b00110000;???two_14<=(miao%10)+8'b00110000;??????count1<=count1+1'b1;???if(count1==49999999)??? // 時鐘計數???begin????count1<=0;????miao<=miao+1;????if(miao==59)????begin?????miao<=0;?????fen<=fen+1;?????if(fen==59)?????begin??????fen<=0;??????shi<=shi+1;??????if(shi==23)??????begin???????shi<=0;??????end?????end????end???end??end????end??always @(posedge lcd_clk? )?begin???case(next)????state0 :?????begin rs<=0; data<=8'h38; next<=state1; end?????? //配置液晶????state1 :?????begin rs<=0; data<=8'h0e; next<=state2; end????state2 :?????begin rs<=0; data<=8'h06; next<=state3; end????state3 :?????begin rs<=0; data<=8'h01; next<=state4; end??????????????state4 :?????begin rs<=0; data<=8'h80; next<=data0; end?//顯示第一行????data0 :?????begin rs<=1; data<=one_1; next<=data1 ; end????data1 :?????begin rs<=1; data<=one_2; next<=data2 ; end????data2 :?????begin rs<=1; data<=one_3; next<=data3 ; end????data3 :?????begin rs<=1; data<=one_4; next<=data4 ; end????data4 :?????begin rs<=1; data<=one_5; next<=data5 ; end????data5 :?????begin rs<=1; data<=one_6; next<=data6 ; end????data6 :?????begin rs<=1; data<=one_7; next<=data7 ; end????data7 :?????begin rs<=1; data<=one_8; next<=data8 ; end????data8 :?????begin rs<=1; data<=one_9; next<=data9 ; end????data9 :?????begin rs<=1; data<=one_10; next<=data10 ; end????data10 :?????begin rs<=1; data<=one_11; next<=data11 ; end????data11 :?????begin rs<=1; data<=one_12; next<=data12 ; end????data12 :?????begin rs<=1; data<=one_13; next<=data13 ; end????data13 :?????begin rs<=1; data<=one_14; next<=data14 ; end????data14 :?????begin rs<=1; data<=one_15; next<=data15 ; end????data15 :?????begin rs<=1; data<=one_16; next<=state5 ; end??????????state5:????????begin rs<=0;data<=8'hC0; next<=data16; end //顯示第二行????data16 :?????begin rs<=1; data<=two_1; next<=data17 ; end????data17 :?????begin rs<=1; data<=two_2; next<=data18 ; end????data18 :?????begin rs<=1; data<=two_3; next<=data19 ; end????data19 :?????begin rs<=1; data<=two_4; next<=data20 ; end????data20 :?????begin rs<=1; data<=two_5; next<=data21 ; end????data21 :?????begin rs<=1; data<=two_6; next<=data22 ; end????data22 :?????begin rs<=1; data<=two_7; next<=data23 ; end????data23 :?????begin rs<=1; data<=two_8; next<=data24 ; end????data24 :?????begin rs<=1; data<=two_9; next<=data25 ; end????data25 :?????begin rs<=1; data<=two_10; next<=data26 ; end????data26 :?????begin rs<=1; data<=two_11; next<=data27 ; end????data27 :?????begin rs<=1; data<=two_12; next<=data28 ; end????data28 :?????begin rs<=1; data<=two_13; next<=data29 ; end????data29 :?????begin rs<=1; data<=two_14; next<=data30 ; end????data30 :?????begin rs<=1; data<=two_15; next<=data31 ; end????data31 :?????begin rs<=1; data<=two_16; next<=scan ; end?????????scan?:???//交替更新第一行和第二行數據??????????begin??????next<=state4;?????end????default:?? next<=state0;????endcase?end?assign en=lcd_clk && en_sel;?assign rw=0;endmodule
FPGA verilog實現的1602時鐘計數器
- FPGA(591969)
- 1602時鐘計數器(726)
相關推薦
計數器應用實例
計數器應用實例
除了計數功能外,計數器產品還有一些附加功能,如異步復位、預置數(注意,有同步預置數和異步預置數兩種。前者受時鐘脈沖控制,后者不受時鐘
2010-05-27 09:37:55
5544


基于FPGA和單片機的多功能計數器設計
本文設計了一種以超低功耗單片機MSP430F149為控制器,以高速的FPGA(現場可編程門陣列)實現等精度測量正弦信號的頻率、周期和相位差的多功能計數器。在設計中依據等精度計數原理,應
2012-07-16 16:02:09
4299


如何通過交換位提高FPGA-PWM計數器性能
1?)。 圖1?一個簡單的低通濾波器將FPGA的PWM數字輸出更改為模擬電壓電平。最大紋波出現在占空比為50%的情況下。 假設Enable為高電平,則計數器在每個時鐘周期遞增計數,PWM輸出的頻率為時鐘頻率除以2個計數位。您可以使用啟用將其連接到預分頻器來降低輸
2021-05-13 16:22:44
4592


32位MCU APT32F1023F6U6在計數器的應用
計數器不僅具有對時鐘脈沖計數功能,還具有多種輸出和控制功能,通過對參數進行設置,可實現頻率、轉速以及計數之間的轉換。
2022-07-26 11:25:59
503

10進制計數器是什么?
學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內容。提示:以下是本篇文章正文內容,編程實現10進制計數器,具有異步復位功能,十位和個位用8421BCD碼表示一、4選1多路選擇器是什么?示例:pandas 是基于NumPy 的一種工具,該工具是為了解決
2022-02-09 07:33:15
FPGA verilog語言學習 加法器
我是剛開始學FPGA,現在對其verilog語言還不是很懂。下面題目:設計一個十進制的加法計數器,功能包含復位信號,置位信號,每個時鐘的正跳變沿計數器加一。計數0-99即可。請幫忙給個參考的程序。
2012-05-11 23:03:24
FPGA提高篇——禁止使用分頻時鐘、計數器時鐘
,分享給大家吧。——高手應該是這樣做時鐘信號的。禁止用計數器分頻后的信號做其它模塊的時鐘,而要用改成時鐘使能的方式。否則這種時鐘滿天飛的方式對設計的可靠性極為不利,也大大增加了靜態時序分析的復雜性。時鐘
2018-08-08 11:13:26
N進制計數器的實現
N進制計數器的實現 一、用集成計數器可以實現任意進制的計數器二、集成計數器控制功能的歸類三、集成計數器的級聯擴展四、復位法組成任意進制加法計數器五、置位法組成任意進制加法計數器六
2008-07-05 13:41:26
SysTick計數器有哪些應用呢
實現軟件的短時間延遲利用 Cortex-M3 內核包含的 SysTick 時鐘代替 Delay(N) ,實現延時N毫秒的精確值。SysTick 為一個24位遞減計數器,SysTick 設定初值并使能
2021-12-07 09:37:56
評論