LCD1602 液晶显示实验报告 1 LCD1602 液晶显示实验报告 一、实验目的 (1)了解LCD1602 的基本原理,掌握其基本的工作流程。 (2)学习用Verilog HDL 语言编写LCD1602 的控制指令程序,能够在液晶屏上显示出正确的符号。 (3)能够自行改写程序,并实现符号的动态显示。 二、实验设备与器件 Quartus II 软件、EP2C8Q208C8 实验箱 三、实验方案设计 1.实验可实现的功能 可以实现在LCD1602 液晶屏第一行左侧第一位的位置循环显示0~9,并且可以用一个拨码开关 BM8 实现显示的复位功能。 2.LCD1602 基本知识 LCD1602 液晶能够同时显示16x02 即 32 个字符,模块内部的字符发生存储器(CGROM)已经存储了160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A”。因为 1602 识别的是 ASCII 码,试验可以用ASCII 码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如“A”。1602 通过 D0~D7 的8 位数据端传输数据和指令。 3.系统工作原理 系统的状态转换流程图如图 3.1.1 所示。通过状态流程图可以看到,LCD1602 液晶屏的状态是不断更新的,依次完成液晶的初始化和 0~9 的动态显示过程,并且过程可由开关控制。 LCD1602 液晶显示实验报告 2 开始IDLEDISP_SET显示模式设置DISP_OFF显示关闭CLR_SCR显示清屏CUTSOR_SET1显示光标移动设置CURSOR_SET2显示开关及光标设置ROW1_ADDR写第一行起始地址ROW1_0字符显示位置不移动数字0~9依次显示拨码复位?结束YN 图3.1.1 状态流程图 4.程序设计 module LCD1602( input clk, // 50MHz 时钟 input rst_n, //开关信号 output reg [7:0] lcd_data, // 数据总线 output lcd_e, // 使能信号 output reg lcd_rs, // 指令、数据选择 output lcd_rw, // 读、写选择 output SEL0, // LCD1602 读写选择 output SEL1, // LCD1602 读写选择 output SEL2 // LCD1602 读写选择 ); reg [127:120] row1_val; // 第一行字符 reg [23:0] cnt,cnt1; assign SEL0 = 1'b0; assign SEL1 = 1'b0; assign SEL2 = 1'b1; always @ (posedge clk, negedge rst_n) LCD1602 液晶显示实验报告 3 if (!rst...