NIOS II与LCD1602
使用NIOS内置LCD16207 IP核驱动LCD1602
闲话
为了在NIOS中驱动LCD1602,走了很多的弯路,网上搜索了很多,但是这方面的资料太少了。在官方文档《Embedded Peripherals IP User Guide》中有这样一段话,可以使用printf函数在LCD上显示字符,BSP要做相应的设置。
Qsys系统的搭建
如图,
![](https://img2023.cnblogs.com/blog/2126010/202302/2126010-20230227185906548-461384986.png)
搭建好Qsys系统后,Generate生成.qip文件。在Quartus新建项目,芯片选择EP4C6F17C8。创建顶层模块,点击HDL example。将.qip文件添加到项目中。
![](https://img2023.cnblogs.com/blog/2126010/202302/2126010-20230227185906901-1736893371.png)
Verilog代码
module LCD(
input wire clk,
input wire rst,
input wire uart0_rx,
//导出信号
output wire LCD_E,
output wire LCD_RW,
output wire LCD_RS,
output wire uart0_tx,
inout wire [7:0] LCD_Data
);
LCD1602 u0 (
.clk_clk (clk), // clk.clk
.reset_reset_n (rst), // reset.reset_n
.uart0_external_rxd (uart0_rx), // uart0_external.rxd
.uart0_external_txd (uart0_tx), // .txd
.lcd_1602_RS (LCD_RS), // lcd_1602.RS
.lcd_1602_RW (LCD_RW), // .RW
.lcd_1602_data (LCD_Data), // .data
.lcd_1602_E (LCD_E) // .E
);
endmodule
C代码
#include <stdio.h>
int main()
{
printf("hello FPGA\n");
return 0;
}
要在LCD上输出相应的字符BSP要进行相应的设置,为了减少FPGA资源的消耗,要取消某些HAL库。
![](https://img2023.cnblogs.com/blog/2126010/202302/2126010-20230227185907277-2011500221.png)
![](https://img2023.cnblogs.com/blog/2126010/202302/2126010-20230227185907627-457141637.png)
效果演示
NIOS工程烧录:https://blog.csdn.net/Learning1232/article/details/110225728
![](https://img2023.cnblogs.com/blog/2126010/202302/2126010-20230227185908996-328738502.jpg)