您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > FPGA-LCD滚动显示程序
modulelcdz(inputclk,inputrst,output[7:0]LCD_DATA,outputLCD_RS,outputLCD_RW,outputLCD_EN,outputback_light);regLCD_RS;//指令/数据控制reg[7:0]LCD_DATA;//数据线reg[7:0]current_state;//当前状态reg[1:0]state_counter;//状态计数regen_temp;//使能标志reg[15:0]clk_counter;//时钟计数regclk_en;//时钟使能assignback_light=1'b1;//一直设置为高电平assignLCD_RW=1'b0;//一直为写状态/********************状态编码******************************/parameterset0=8'b0000_0000,set1=8'b0000_0001,set2=8'b0000_0011,set3=8'b0000_0100,set4=8'b0000_0101,data1=8'b0000_1000,data2=8'b0000_1001,data3=8'b0000_1010,data4=8'b0000_1011,data5=8'b0000_1100,data6=8'b0000_1101,data7=8'b0000_1110,data8=8'b0000_1111,data9=8'b0001_0000,data10=8'b0001_0001,data11=8'b0001_0011,data12=8'b0001_0100,data13=8'b0001_0101,data14=8'b0001_1000,data15=8'b0001_1001,data16=8'b0001_1010,stop=8'b1111_1111;/********************数据******************************/integera1=8'h44,//字符显示a2=8'h6F,a3=8'hFE,a4=8'h79,a5=8'h6F,a6=8'h75,a7=8'hFE,a8=8'h6C,a9=8'h69,a10=8'h6B,a11=8'h65,a12=8'hFE,a13=8'h6D,a14=8'h69,a15=8'hFE,a16=8'hFE,a17=8'hFE;/********************延时数据******************************/integercnt=0;/**************状态转换时钟***********************/always@(posedgeclk)beginif(clk_counter==16'h8000)beginclk_counter=16'h0;clk_en=~clk_en;endelseclk_counter=clk_counter+1'b1;end/**************状态转换**************************///always@(posedgeclk_enornegedgerst)beginif(!rst)begincurrent_state=set0;endelsebegincase(current_state)/*********************************************************************************/set0:beginLCD_RS=1'b0;LCD_DATA=8'h38;current_state=set1;end//显示模式设置set1:beginLCD_RS=1'b0;LCD_DATA=8'h0c;current_state=set2;end//显示开及光标设置set2:beginLCD_RS=1'b0;LCD_DATA=8'h06;current_state=set3;end//显示光标移动设置set3:beginLCD_RS=1'b0;LCD_DATA=8'h01;current_state=set4;end//显示清屏set4:beginLCD_RS=1'b0;LCD_DATA=8'h80;current_state=data1;end//设置第一行地址/***********************************************************************************/data1:beginLCD_RS=1'b1;LCD_DATA=a1;current_state=data2;end//显示第一个字符data2:beginLCD_RS=1'b1;LCD_DATA=a2;current_state=data3;end//显示第二个字符data3:beginLCD_RS=1'b1;LCD_DATA=a3;current_state=data4;end//显示第四个字符data4:beginLCD_RS=1'b1;LCD_DATA=a4;current_state=data5;end//显示第五个字符data5:beginLCD_RS=1'b1;LCD_DATA=a5;current_state=data6;end//显示第六个字符data6:beginLCD_RS=1'b1;LCD_DATA=a6;current_state=data7;end//显示第七个字符data7:beginLCD_RS=1'b1;LCD_DATA=a7;current_state=data8;end//显示第八个字符data8:beginLCD_RS=1'b1;LCD_DATA=a8;current_state=data9;end//显示第九个字符data9:beginLCD_RS=1'b1;LCD_DATA=a9;current_state=data10;enddata10:beginLCD_RS=1'b1;LCD_DATA=a10;current_state=data11;enddata11:beginLCD_RS=1'b1;LCD_DATA=a11;current_state=data12;enddata12:beginLCD_RS=1'b1;LCD_DATA=a12;current_state=data13;enddata13:beginLCD_RS=1'b1;LCD_DATA=a13;current_state=data14;enddata14:beginLCD_RS=1'b1;LCD_DATA=a14;current_state=data15;enddata15:beginLCD_RS=1'b1;LCD_DATA=a15;current_state=data16;enddata16:beginLCD_RS=1'b1;LCD_DATA=a16;current_state=stop;end/*********************************************************************************/stop:begin//控制指令与数据写入的次数LCD_RS=1'b0;LCD_DATA=8'b0000_0000;if(state_counter!=2'b10)beginen_temp=1'b0;current_state=set0;state_counter=state_counter+1'b1;endelsebegincurrent_state=set0;en_temp=1'b0;//最后数据写入完成后将lcd_en线拉高endenddefault:current_state=set0;endcaseendendassignLCD_EN=clk_en|en_temp;//lcd_en为'1'有效/********************延时******************************/always@(posedgeclk)beginif(cnt=49999999)begincnt=cnt+1;endelsebegina17=a1;a1=a2;a2=a3;a3=a4;a4=a5;a5=a6;a6=a7;a7=a8;a8=a9;a9=a10;a10=a11;a11=a12;a12=a13;a13=a14;a14=a15;a15=a16;a16=a17;cnt=0;endendendmodule
本文标题:FPGA-LCD滚动显示程序
链接地址:https://www.777doc.com/doc-4249498 .html