基于verilog的LCD驱动实时控制电路设计_第1页
基于verilog的LCD驱动实时控制电路设计_第2页
基于verilog的LCD驱动实时控制电路设计_第3页
基于verilog的LCD驱动实时控制电路设计_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

点阵字符型液晶显示器驱动控制电路设计实验目的:熟悉Verilog状态机的一般形式,使用状态机控制LCD1602显示器。实验内容:设计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引脚是没有意义的程序代码源:modulelcd_1602(clk50m,lcd_en,key,sw_data,address,rst,lcd_rw,lcd_rs,lcd_data,lcd_on,lcd_blon);inputrst;inputkey;inputclk50m;input[4:0]address;//显示地址输入input[7:0]sw_data;//显示数据输入outputlcd_en;//连在clk4hz的时钟信号上outputlcd_rw;outputlcd_rs;outputlcd_on;outputlcd_blon;//(背光)悬空,相当于低电平outputreg[7:0]lcd_data;reg[7:0]buf_data;reg[7:0]buf_addr;reglcd_rw,lcd_rs,clk4hz,lcd_on,lcd_blon;reg[7:0]state;reg[23:0]cnt;regload;parameterOP=8'b0000_0001;parameterCLEAR=8'b0000_0010;//清屏parameterSETFUNCTION=8'b0000_0100;//设置CGRAMparameterSWITCHMODE=8'b0000_1000;//工作方式设置1:8/1:4位数据接口;两行/一行显示方式;5x10/5x7点阵parameterSETMODE=8'b0001_0000;//显示状态设置,显示开/关;光标开/关;闪烁开/关parameterJUDGE=8'b0010_0000;//输入方式设置,读写数据后RAM地址增减1,画面不动parameterJUDGE_new=8'b0011_0000;parameterSETCGRAM=8'b0100_0000;//写RAMparameterWRITERAM=8'b1000_0000;parameterCUR_INC=1'b1;//功能参数设定parameterCUR_NOSHIFT=1'b0;parameterOPEN_DISPLAY=1'b1;parameterOPEN_CUR=1'b0;parameterBLANK_CUR=1'b0;parameterDATAWITH8=1'b1;parameterDATAWIHT4=1'b0;parameterTWOLINE=1'b1;parameterONELINE=1'b0;parameterFONT5x10=1'b1;parameterFONT5x7=1'b0;always@(posedgeclk50m)beginif(cnt==23'd125000)begincnt<=0;clk4hz<=~clk4hz;endelsecnt<=cnt+1'b1;endassignlcd_en=clk4hz; always@(posedgeclk4hz)//clk4hz接lcd_en使能引脚beginif(rst)beginstate<=CLEAR;lcd_on<=0;lcd_blon<=0;endelsebeginstate<=CLEAR;lcd_on<=1;lcd_blon<=1; //buf_addr<={3'b100,address}; //buf_data[7:0]<=sw_data;case(state) CLEAR:beginlcd_rs<=0;lcd_rw<=0;lcd_data<=8'b00000001;state<=SETFUNCTION;endSETFUNCTION:begin//00_0011_1000lcd_rs<=0;lcd_rw<=0;lcd_data[7:5]<=3'b001;lcd_data[4]<=DATAWITH8;lcd_data[3]<=TWOLINE;lcd_data[2]<=FONT5x7;lcd_data[1:0]<=2'b00;state<=SETMODE;endSETMODE:begin//该状态可有可无,决定读写数据后光标移动方向lcd_rs<=0;lcd_rw<=0;lcd_data[7:2]<=6'b000001;//00_0000_0110lcd_data[1]<=CUR_INC;lcd_data[0]<=CUR_NOSHIFT;state<=SWITCHMODE;endSWITCHMODE:beginlcd_rs<=0;lcd_rw<=0;//00_0000_1100lcd_data[7:3]<=5'b00001;lcd_data[2]<=OPEN_DISPLAY;lcd_data[1]<=OPEN_CUR;lcd_data[0]<=BLANK_CUR;state<=JUDGE;endJUDGE:beginlcd_rs<=0;lcd_rw<=1;lcd_data<=8'b10000000;//load<=1;load<=key; if(key==load)//利用非阻塞阻塞实现使能控制 //在key被按一直下的时候拨动开关//不会改变屏幕的显示 state<=JUDGE;//且松开key后,以最后的开关状态为最终显示elsebeginstate<=SETCGRAM;if(address[4])beginbuf_addr<={4'b1100,address[3:0]}; //显示第二行数据buf_data<=sw_data;endelsebeginbuf_addr<={3'b100,address};//显示第一行数据buf_data<=sw_data;endendendSETCGRAM:beginlcd_rs<=0;lcd_rw=0;lcd_data<=buf_addr;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论