FPGA-LCD1602显示-第一次尝试使用task写可综合程序

简介: FPGA-LCD1602显示-第一次尝试使用task写可综合程序

先上接线图:

image.png

VL:对比度,正常接一个1K的电阻就好了,如果电阻过大会出现一个个黑方块,而你要显示的就看不清楚了,反之如果电阻过小,就会根本显示不出东西,亮亮的一片。也可以接1K的电位器实现改对比度的功能。

RS:数据指令选择端: 0 写指令 1 读指令

RW:读写选择端           0 写指令/数据 1 读状态/数据

EN:使能端:下降沿使得指令数据生效

这些都是控制端口,要留心注意他们的接线

D0-D7:这些是数据端口,用来传递数据的。

Bl-  、 Bl+ :这些是背光电源,如果你上电连LCD都不亮就要检查一下这里。

HD44780内置了 DDRAM、CGROM和 CGRAM。

image.png

在 LCD模块上也固化了字模存储器,这就是 CGROM和 CGRAM。HD44780内置了 192个常用字符的字模,存于字符产生器 CGROM(Character Generator ROM)中,另外还有 8 个允许用户自定义的字符产生 RAM,称为 CGRAM(Character Generator RAM)。下图说明了CGROM和 CGRAM与字符的对应关系。

image.png

指令集:

image.png

信号真值表:


 RS     |    R/W    |      E    |     功能     |


  0       |      0       | 下降沿 | 写指令


  0       |      1       | 高电平 | 读状态


  1       |      0       | 下降沿 | 写数据


  1       |      1       | 高电平 | 读数据

简单写一下常用的指令:

显示开关光标设置:0x0f;(打开光标显示闪烁)

清屏设置: 0x01;

功能设置:0x31:;

显示地址设置0x06;

设置流程大概就是先设置好初始配置,然后定义写入地址,送入写的数据

这里我提醒下,因为电压的原因,好像FPGA不能进行两行显示,显示的话可以,但是字符暗的几乎看不到。。。。你们可以试一试,可能我这里有错误

代码如下:

modulelcd1602_driver(
clk,
rst_n,     
RSel,    
R_W,     
En,      
Lcd_data,
Lcd_Vcc, 
Lcd_GND, 
Lcd_A,   
Lcd_K);
inputclk;   //输入时钟inputrst_n;
outputregRSel;   //数据指令选择outputR_W;   //读写选择outputregEn;   //使能outputreg[7:0]Lcd_data;  //数据位outputLcd_Vcc;  //lcd电源开关+outputLcd_GND;  //lcd电源开关-outputLcd_A;  //lcd背光+outputLcd_K;  //lcd背光-/*--------------初始化功能设置-------------*/parameterMode_Set=8'h31,//显示模式设置Cursor_Dis_Set=8'h0c,//光标显示设置Cursor_Move_Set=8'h80,//光标移动设置Clear_Set=8'h01,//清屏Init_ADDr_Set=8'h80;//起始位置/*-------------背光设置--------------------*/assignLcd_Vcc=1'b1;//供电assignLcd_GND=1'b0;//assignLcd_A=1'b1;//背光常开assignLcd_K=1'b0;//assignR_W=1'b0;//只写/*---------任务列表------------*/taskWrite_order;
input [7:0] order;//指令beginRSel<=1'b0;En<=1'b1;state<=state+1'b1;Lcd_data<=order;
endendtasktaskEn_Negedge;
beginEn<=1'b0;state<=state+1'b1;endendtasktaskWrite_data;
input [7:0] order_1;//数据beginRSel<=1'b1;En<=1'b1;state<=state+1'b1;Lcd_data<=order_1;
endendtask/*--------驱动时钟------------*/wirelcd_clk=(cnt_clk==16'd24999);reg [15:0]cnt_clk;
always@(posedgeclkornegedgerst_n)beginif(rst_n==1'b0)begincnt_clk<=1'b0;endelseif(cnt_clk==16'd24999)begin//延时500uscnt_clk<=1'b0;endelsebegincnt_clk<=cnt_clk+1'b1;endend/*---------显示状态配置--------*/reg [4:0] state;
always@(posedgeclkornegedgerst_n)beginif(rst_n==1'b0)beginRSel<=1'b0;En<=1'b0;state<=5'd0;Lcd_data<=1'b0;endelseif(lcd_clk==1'b1)begincase(state)
/*----------------初始化设置---------------------*/5'd0:beginWrite_order(Mode_Set);
end5'd1:beginEn_Negedge();
end5'd2:beginWrite_order(Cursor_Dis_Set);//设置光标显示end5'd3:beginEn_Negedge();
end5'd4:beginWrite_order(Cursor_Move_Set);//设置光标移动end5'd5:beginEn_Negedge();
end5'd6:beginWrite_order(Clear_Set);//清屏end5'd7:beginEn_Negedge();
end/*-----显示区--------*/5'd8:beginWrite_order(Init_ADDr_Set);//设置写入地址end5'd9:beginEn_Negedge();
end5'd10:beginWrite_data("F");
end5'd11:beginEn_Negedge();
end5'd12:beginWrite_data("P");
end5'd13:beginEn_Negedge();
end5'd14:beginWrite_data("G");
end5'd15:beginEn_Negedge();
end5'd16:beginWrite_data("A");
end5'd17:beginEn_Negedge();
enddefault:state<=5'bxxxx;endcaseendelsebeginRSel<=RSel;
En<=En;
Lcd_data<=Lcd_data;
endendendmodule
目录
相关文章
|
8月前
|
算法 计算机视觉 异构计算
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像RGB转HSV实现,包含testbench和MATLAB辅助验证程序
|
8月前
|
算法 计算机视觉 异构计算
基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像PSNR质量评估计算实现,包含testbench和MATLAB辅助验证程序
|
算法 异构计算
基于FPGA的Lorenz混沌系统verilog开发,含testbench和matlab辅助测试程序
基于FPGA的Lorenz混沌系统verilog开发,含testbench和matlab辅助测试程序
|
8月前
|
算法 计算机视觉 异构计算
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
基于FPGA的图像差分运算及目标提取实现,包含testbench和MATLAB辅助验证程序
|
算法 异构计算
m基于FPGA的gardner环定时同步实现,含testbench测试程序
m基于FPGA的gardner环定时同步实现,含testbench测试程序
203 0
|
8月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
3月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
4月前
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。
|
6月前
|
异构计算
FPGA新起点V1开发板(七-语法篇)——程序框架+高级语法(选择性做笔记)
FPGA新起点V1开发板(七-语法篇)——程序框架+高级语法(选择性做笔记)
|
7月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
63 4

热门文章

最新文章