FPGA-LCD滚动显示程序

上传人:我*** 文档编号:135953149 上传时间:2020-06-21 格式:DOC 页数:4 大小:23KB
返回 下载 相关 举报
FPGA-LCD滚动显示程序_第1页
第1页 / 共4页
FPGA-LCD滚动显示程序_第2页
第2页 / 共4页
FPGA-LCD滚动显示程序_第3页
第3页 / 共4页
FPGA-LCD滚动显示程序_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《FPGA-LCD滚动显示程序》由会员分享,可在线阅读,更多相关《FPGA-LCD滚动显示程序(4页珍藏版)》请在金锄头文库上搜索。

1、module lcdz( input clk, input rst, output 7:0 LCD_DATA, output LCD_RS, output LCD_RW, output LCD_EN, output back_light ); reg LCD_RS;/指令/数据控制 reg 7:0 LCD_DATA;/数据线 reg 7:0 current_state;/当前状态 reg 1:0 state_counter;/状态计数 reg en_temp;/使能标志 reg 15:0 clk_counter;/时钟计数 reg clk_en;/时钟使能 assign back_light=

2、1b1;/一直设置为高电平 assign LCD_RW=1b0;/一直为写状态 /*状态编码*/ parameter set0=8b0000_0000, set1=8b0000_0001, set2=8b0000_0011, set3=8b0000_0100, set4=8b0000_0101, data1=8b0000_1000, data2=8b0000_1001, data3=8b0000_1010, data4=8b0000_1011, data5=8b0000_1100, data6=8b0000_1101, data7=8b0000_1110, data8=8b0000_1111,

3、 data9=8b0001_0000, data10=8b0001_0001, data11=8b0001_0011, data12=8b0001_0100, data13=8b0001_0101, data14=8b0001_1000, data15=8b0001_1001, data16=8b0001_1010, stop=8b1111_1111; /*数据*/ integer a1=8h44, /字符显示 a2=8h6F, a3=8hFE, a4=8h79, a5=8h6F, a6=8h75, a7=8hFE, a8=8h6C, a9=8h69, a10=8h6B, a11=8h65,

4、a12=8hFE, a13=8h6D, a14=8h69, a15=8hFE, a16=8hFE, a17=8hFE; /*延时数据*/ integer cnt=0; /*状态转换时钟*/ always (posedge clk) begin if(clk_counter=16h8000) begin clk_counter=16h0; clk_en=clk_en; end else clk_counter=clk_counter+1b1; end /*状态转换*/ always (posedge clk_en or negedge rst) begin if(!rst) begin curr

5、ent_state=set0; end else begin case (current_state) /*/ set0:begin LCD_RS=1b0;LCD_DATA=8h38;current_state=set1; end/显示模式设置 set1:begin LCD_RS=1b0;LCD_DATA=8h0c;current_state=set2; end/显示开及光标设置 set2:begin LCD_RS=1b0;LCD_DATA=8h06;current_state=set3; end/显示光标移动设置 set3:begin LCD_RS=1b0;LCD_DATA=8h01;cur

6、rent_state=set4; end/显示清屏 set4:begin LCD_RS=1b0;LCD_DATA=8h80;current_state=data1; end/设置第一行地址 /*/ data1:begin LCD_RS=1b1;LCD_DATA=a1;current_state=data2; end/显示第一个字符 data2:begin LCD_RS=1b1;LCD_DATA=a2;current_state=data3; end/显示第二个字符 data3:begin LCD_RS=1b1;LCD_DATA=a3;current_state=data4; end/显示第四个

7、字符 data4:begin LCD_RS=1b1;LCD_DATA=a4;current_state=data5; end/显示第五个字符 data5:begin LCD_RS=1b1;LCD_DATA=a5;current_state=data6; end/显示第六个字符 data6:begin LCD_RS=1b1;LCD_DATA=a6;current_state=data7; end/显示第七个字符 data7:begin LCD_RS=1b1;LCD_DATA=a7;current_state=data8; end/显示第八个字符 data8:begin LCD_RS=1b1;LC

8、D_DATA=a8;current_state=data9; end/显示第九个字符 data9:begin LCD_RS=1b1;LCD_DATA=a9;current_state=data10; enddata10:begin LCD_RS=1b1;LCD_DATA=a10;current_state=data11; enddata11:begin LCD_RS=1b1;LCD_DATA=a11;current_state=data12; enddata12:begin LCD_RS=1b1;LCD_DATA=a12;current_state=data13; enddata13:begi

9、n LCD_RS=1b1;LCD_DATA=a13;current_state=data14; enddata14:begin LCD_RS=1b1;LCD_DATA=a14;current_state=data15; enddata15:begin LCD_RS=1b1;LCD_DATA=a15;current_state=data16; enddata16:begin LCD_RS=1b1;LCD_DATA=a16;current_state=stop; end /*/ stop:begin /控制指令与数据写入的次数 LCD_RS=1b0; LCD_DATA=8b0000_0000; i

10、f(state_counter!=2b10) begin en_temp=1b0; current_state=set0; state_counter=state_counter+1b1; end else begin current_state=set0; en_temp=1b0; /最后数据写入完成后将lcd_en线拉高 end end default: current_state=set0; endcase end endassign LCD_EN=clk_en|en_temp; /lcd_en为1有效/*延时*/ always (posedge clk) begin if(cnt=) begin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号