基于verilog的LCD驱动实时控制电路设计教材.docx

基于verilog的LCD驱动实时控制电路设计教材.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
点阵字符型液晶显示器驱动控制电路设计 实验目的:熟悉Verilog状态机的一般形式,使用状态机控制LCD 1602 显示器。 实验内容: 设计LCD102显示器控制器,实现在LCD屏上实时显示ASCII字符。 显示地址、显示ASCII码分别由SW12-SW8和SW7-SW0设定。 LCD1602的硬件特性及引脚功能 LCD1602顾名思义是一种02*16,即为两行十六列的液晶显示屏,液晶两行,每行可以显示16个字符,但是CGRAM及CGROM里面一共有160个字符,包括阿拉伯数字,英文字母大小写,常用符号及日文。每个字符对应于一个ASCII码值,在液晶显示屏上显示对应的字符时候,只需要将对应的ASCII码写到DDRAM中就好,详细的步骤会在下面细说。液晶板上排列着5*8的字符点阵,8行,每行5个点位,高电平1就是该点显示,低电平0就是该点不显示。 当然有的模块是不带背光的,这时候15 和16引脚是没有意义的 程序代码源: module lcd_1602(clk50m,lcd_en,key,sw_data,address,rst,lcd_rw,lcd_rs,lcd_data,lcd_on,lcd_blon); input rst; input key; input clk50m; input [4:0]address; //显示地址输入 input [7:0]sw_data; //显示数据输入 output lcd_en; //连在clk4hz的时钟信号上 output lcd_rw; output lcd_rs; output lcd_on; output lcd_blon; // (背光) 悬空,相当于低电平 output reg[7:0]lcd_data; reg [7:0]buf_data; reg [7:0]buf_addr; reg lcd_rw,lcd_rs, clk4hz,lcd_on,lcd_blon; reg[7:0] state; reg[23:0]cnt; reg load; parameter OP =8b0000_0001; parameter CLEAR =8b0000_0010; //清屏 parameter SETFUNCTION =8b0000_0100; //设置 CGRAM parameter SWITCHMODE=8b0000_1000; //工作方式设置1:8/ 1:4位数据接口; 两行/一行显示方式; 5x10/5x7点阵 parameter SETMODE =8b0001_0000; // 显示状态设置,显示开/关; 光标开/关;闪烁开/关 parameter JUDGE =8b0010_0000; //输入方式设置, 读写数据后RAM地址增减1,画面不动 parameter JUDGE_new =8b0011_0000; parameter SETCGRAM =8b0100_0000; //写RAM parameter WRITERAM =8b1000_0000; parameter CUR_INC =1b1; //功能参数设定 parameter CUR_NOSHIFT =1b0; parameter OPEN_DISPLAY =1b1; parameter OPEN_CUR =1b0; parameter BLANK_CUR =1b0; parameter DATAWITH8 =1b1; parameter DATAWIHT4 =1b0; parameter TWOLINE =1b1 ; parameter ONELINE =1b0; parameter FONT5x10 =1b1; parameter FONT5x7 =1b0; always@(posedge clk50m ) begin if (cnt==23d125000) begin cnt=0; clk4hz=~clk4hz; end else cnt=cnt+1b1; end assign lcd_en=clk4hz; always@(posedge clk4hz ) //clk4hz 接 lcd_en 使能引脚 begin if(rst) begin state=CLEAR; lcd_on=0; lcd_blon=0; en

文档评论(0)

舞林宝贝 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档