您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Verilog语言编写的数字钟程序
modulelcd(rst,clk,rw,rs,en,data,key,buzzout);inputclk,rst;input[5:0]key;outputrs,en,rw;output[7:0]data;reg[5:0]swr;reg[7:0]ri,yue,nian,qi;regrs,en_sel;regclkr;reg[7:0]data;reg[7:0]shi,fen,miao;reg[31:0]count,count1;//LCDCLK分频计数器reg[15:0]count2;reglcd_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;reg[7:0]a,b,c,d;parameterstate0=8'h00,//设置8位格式,2行,5*78'h38;state1=8'h01,//整体显示,关光标,不闪烁8'h0C闪烁8'h0estate2=8'h02,//设定输入方式,增量不移位8'h06state3=8'h03,//清除显示8'h01state4=8'h04,//显示第一行的指令80Hstate5=8'h05,//显示第二行的指令80H+40Hscan=8'h06,nul=8'h07;parameterdata0=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//第一行显示Haveagoodday!one_1=;one_2=2;one_3=0;one_4=;one_5=;one_6=-;one_7=;one_8=;one_9=-;one_10=;one_11=;one_12=;one_13=W;one_14=:;one_15=;one_16=;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=;ri=1;yue=1;nian=15;shi=0;fen=0;miao=0;endalways@(posedgeclk)//获得LCD时钟begincount=count+1;if(count==32'd250000)begincount=0;lcd_clk=~lcd_clk;endendalways@(posedgeclk)//延时20mbeginif(count2==16'd49999)begincount2=16'd0;clkr=~clkr;endelsecount2=count2+1'b1;endalways@(posedgeclkr)swr=key;always@(posedgeclkornegedgerst)//时钟计数器beginif(!rst)beginshi=0;fen=0;miao=0;qi=1;a=M;b=o;c=n;d=;ri=1;yue=1;nian=15;count1=0;endelsebeginen_sel=1;one_4=(nian/10)+8'b00110000;one_5=(nian%10)+8'b00110000;one_7=(yue/10)+8'b00110000;one_8=(yue%10)+8'b00110000;one_10=(ri/10)+8'b00110000;one_11=(ri%10)+8'b00110000;one_15=qi+8'b00110000;two_3=(shi/10)+8'b00110000;two_4=(shi%10)+8'b00110000;two_6=(fen/10)+8'b00110000;two_7=(fen%10)+8'b00110000;two_9=(miao/10)+8'b00110000;two_10=(miao%10)+8'b00110000;two_13=a;two_14=b;two_15=c;two_16=d;count1=count1+1'b1;if(count1==49999999)//时钟计数begincount1=0;miao=miao+1;if(miao==59)beginmiao=0;fen=fen+1;if(fen==59)beginfen=0;shi=shi+1;if(shi==23)beginshi=0;ri=ri+1;qi=qi+1;if(qi==7)qi=1;if(ri==31&shi==23)beginri=1;yue=yue+1;if(yue==12&ri==31)beginyue=1;nian=nian+1;if(nian==99)nian=1;endendendendendbeginif(!swr[0])beginif(shi==23)shi=0;elseshi=shi+1;endelseif(!swr[1])beginif(fen==59)fen=0;elsefen=fen+1;endelseif(!swr[2])beginif(ri==31)ri=1;elseri=ri+1;endelseif(!swr[3])beginif(yue==12)yue=1;elseyue=yue+1;endelseif(!swr[4])beginif(nian==99)nian=1;elsenian=nian+1;endelseif(!swr[5])beginif(qi==7)qi=1;elseqi=qi+1;endendbeginif(qi==1)begina=M;b=o;c=n;d=;endelseif(qi==2)begina=T;b=u;c=e;d=s;endelseif(qi==3)begina=W;b=e;c=d;d=;endelseif(qi==4)begina=T;b=h;c=u;d=r;endelseif(qi==5)begina=F;b=r;c=i;d=;endelseif(qi==6)begina=S;b=a;c=t;d=;endelseif(qi==7)begina=S;b=u;c=n;d=;endendendendend/**************************************************************************/always@(posedgelcd_clk)begincase(next)state0:beginrs=0;data=8'h38;next=state1;end//配置液晶state1:beginrs=0;data=8'h0e;next=state2;endstate2:beginrs=0;data=8'h06;next=state3;endstate3:beginrs=0;data=8'h01;next=state4;endstate4:beginrs=0;data=8'h80;next=data0;end//显示第一行data0:beginrs=1;data=one_1;next=data1;enddata1:beginrs=1;data=one_2;next=data2;enddata2:beginrs=1;data=one_3;next=data3;enddata3:beginrs=1;data=one_4;next=data4;enddata4:beginrs=1;data=one_5;next=data5;enddata5:beginrs=1;data=one_6;next=data6;enddata6:beginrs=1;data=one_7;next=data7;enddata7:beginrs=1;data=one_8;next=data8;enddata8:beginrs=1;data=one_9;next=data9;enddata9:beginrs=1;data=one_10;next=data10;enddata10:beginrs=1;data=one_11;next=data11;enddata11:beginrs=1;data=one_12;next=data12;enddata12:beginrs=1;data=one_13;next=data13;enddata13:beginrs=1;data=one_14;next=data14;enddata14:beginrs=1;data=one_15;next=data15;enddata15:beginrs=1;data=one_16;next=state5;endstate5:beginrs=0;data=8'hC0;next=data16;end//显示第二行data16:beginrs=1;data=two_1;next=data17;enddata17:beginrs=1;data=two_2;next=data18;enddata18:beginrs=1;data=two_3;next=data19;enddata19:beginrs=1;data=two_4;next=data20;enddata20:beginrs=1;data=two_5;next=data21;enddata21:beginrs=1;data=two_6;next=data22;enddata22:beginrs=1;data=two_7;next=data23;enddata23:beginrs=1;data=two_8;next=data24;enddata24:beginrs=1;data=two_9;next=data25;enddata25:beginrs=1;data=two_10;next=data26;enddata26:beginrs=1;data=two_11;next=data27;enddata27:beginrs=1;data=two_12;next=data28;enddata28:beginrs=1;data=two_13;next=data29;enddata29:beginrs=1;data=two
本文标题:Verilog语言编写的数字钟程序
链接地址:https://www.777doc.com/doc-6295351 .html