• 方案介绍
  • 相关推荐
申请入驻 产业图谱

lcd1602模块驱动代码设计Verilog代码Quartus  开发板

09/08 09:01
1305
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:lcd1602模块驱动代码设计Verilog代码Quartus  开发板

软件:Quartus

语言:Verilog

代码功能:

lcd1602模块驱动代码设计

1、用qartus软件

2、用verilog语言

3、输入两组16位二进制数据,使lcd1602在第一行上显示字符串consume与第一组转换成十进制输入的数据,第二行显示字符串rest与第二组转换成十进制输入的数据

本代码已在开发板验证,开发板如下,其他开发板可以修改管脚适配:

开发板.jpg

部分代码展示:

// LCD_Driver.v
//功能简述:在1602液晶模块上显示字符串
module LCD_Driver(clk_LCD,rst,LCD_EN,RS,RW,DB8,Data_First,Data_Second);
input   clk_LCD,rst;        //rst为全局复位信号
output  LCD_EN,RS,RW;
input        [111:0] Data_First,Data_Second; 
//LCD_EN为LCD模块的使能信号(下降沿触发)
//RS=0时为写指令;RS=1时为写数据
//RW=0时对LCD模块执行写操作;RW=1时对LCD模块执行读操作
output  [7:0] DB8;          //8位指令或数据总线
reg     [7:0] DB8;
reg     [111:0] Data_First_Buf,Data_Second_Buf;     //液晶显示的数据缓存
reg     RS,LCD_EN_Sel;
reg     [3:0] disp_count;
reg     [3:0] state;
parameter   Clear_Lcd = 4'b0000,                            //清屏并光标复位
            Set_Disp_Mode = 4'b0001,                        //设置显示模式:8位2行5x7点阵  
            Disp_On = 4'b0010,                              //显示器开、光标不显示、光标不允许闪烁
            Shift_Down = 4'b0011,                           //文字不动,光标自动右移
            Write_Addr = 4'b0100,                           //写入显示起始地址
            Write_Data_First = 4'b0101,                     //写入第一行显示的数据
            Write_Data_Second = 4'b0110,                    //写入第二行显示的数据
            Idel = 4'b0111;                                 //空闲状态       
assign  RW = 1'b0;                     //RW=0时对LCD模块执行写操作
assign  LCD_EN = LCD_EN_Sel ? clk_LCD : 1'b0;
//通过LCD_EN_Sel信号来控制LCD_EN的开启与关闭
always @(posedge clk_LCD or negedge rst)
begin
   if(!rst)
      begin
          state <= Clear_Lcd;                               //复位:清屏并光标复位  
          RS <= 1'b0;                                       //复位:RS=0时为写指令;                      
          DB8 <= 8'b0;                                      //复位:使DB8总线输出全0
          LCD_EN_Sel <= 1'b1;                               //复位:开启夜晶使能信号
          //Data_First_Buf <= Data_First;
          //Data_Second_Buf <= Data_Second;
          disp_count <= 4'b0;
      end
   else
      case(state)                                           //初始化LCD模块
      Clear_Lcd:
             begin
                state <= Set_Disp_Mode;
                DB8 <= 8'b00000001;                         //清屏并光标复位  
 
 RS <= 1'b0;                                       //复位:RS=0时为写指令;                      
          
                LCD_EN_Sel <= 1'b1;                               //复位:开启夜晶使能信号
                disp_count <= 4'b0;
             end
      Set_Disp_Mode:

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1534

相关推荐