2018年3月刊
0 引言
本设计中使用DE2开发板上的LCD1602液晶显示屏,此显示屏能够显示2行16列的5×7点阵字符,液晶模块内部CGROM中储存的字符包括阿拉伯数字、英文字母的大小写、常用的符号和日文假名等。 使用液晶显示屏相比于数码管或者LED显示有着极大的优势,其应用范围更广、显示功能更强,易于实现当今系统设计中越来越多的人机交互功能。如今LCD液晶在智能电子产品中应用广泛,使用LCD液晶显示的系统设计已经成为电子产品设计中不可或缺的一部分。使用FPGA对LCD1602进行驱动,可以实现系统各模块并行执行,从而使得显示部分实时反映系统状态,而且对于程序的各个模块便于修改与移植。本设计使用Verilog语言对DE2开发板上的FPGA进行编程,驱动LCD1602显示字符。 1 原理
1.1 硬件接口
LCD1602受DE2开发板上的一块Cyclone II FPGA控制,两者相关引脚相连。通过对FPGA进行编程就可以驱动LCD1602,从而实现字符的显
基于FPGA的
LCD1602液晶显示屏系统控制设计
段旭阳1,韩延义2,王晓丹1,宋闻萱1
(1.大连理工大学电子信息与电气工程学部,辽宁 大连 116024;
2.大连理工大学电工电子国家级实验教学示范中心、
国家级虚拟仿真实验教学中心,辽宁 大连 116024)
【摘要】本研究基于FPGA实现驱动LCD1602液晶显示屏显示数字或者英文字符,设计中使用了Verilog硬件描述语言、Quartus II 6.0软件编程调试环境和DE2硬件环境,以完成对LCD1602液晶显示屏的系统设计。最终,此液晶显示屏LCD1602可以完成显示数字或者英文字符的功能,该系统得以验证。
【关键词】Verilog语言;LCD显示;FPGA设计
【中图分类号】G482 【文献标识码】A 【文章编号】2095-5065(2018)03-0056-05
景德镇论坛>汽化热
收稿日期:2017-12-11
作者简介:段旭阳(1997—),男,河北邢台人,本科生在
读,研究方向为电子信息与电气工程;
虎鼬
韩延义(1964—),男,辽宁大连人,工程师,研究方向为
FPGA;
王晓丹(1996—),女,山东东营人,本科生在读,研究方
向为电子信息与电气工程;
宋闻萱(1998—),女,吉林白山人,本科生在读,研究方
向为电子信息与电气工程。
2018年
3月刊
安顺学院学报示。系统框图如图1所示。
相关引脚及功能如表1所示。
图1 系统框图表1 引脚及功能表
1.2 寄存器
LCD1602中有3个与显示相关的重要寄存器,包括显示数据的RAM —DDRAM 、只读字模存储器—CGROM ,以及可读可写字模存储器—CGRAM 。 (1)DDRAM 。DDRAM (Display DATA RAM )在LCD1602中用来寄存将要显示的内容,在DDRAM 中的不同地址下写入待显示内容的代码,显示屏上就将在其相应的位置上显示相应的内容。此寄存器有80字节,其地址与显示屏位置对应关系如图2所示。
容易发现,DDRAM 中有80字节的显存数
据,而LCD 只有16×2个字符显示位置,因此并不是全部(80字节)的内容都可以直接显示在显示屏上,地址为00~10以及40~50的数据可以直接显示在显示屏上,写入其他地址的数据可以通过显示屏具有的“整屏移动”功能显示出来。
(2)CGROM 。CGROM 中存储着常用的字模数据,包括阿拉伯数字、英文字母的大小写、常用的符号和日文假名等。LCD1602是一种字符点阵显示器,CGROM 中的字符数据也是基于点阵设计的,下面以英文大写字母“A ”的字模数据设计及显示为例进行说明。字母“A ”的字模数据如图3所示。
011101000110001100011000110001
11111图3 字母“A ”的字模数据
左边为在CGROM 中存储的字模数据,右边以“○”代表0,以“■”代表1,可以看到以“■”组成的“A ”的字母形状。
CGROM 中的每个字模数据都与一个代码一一对应,当需要显示某一字符时,只需向DDRAM 中写入相对应的代码即可。
(3)CGRAM 。CGRAM 是可读写的字模数据的存储器,当想要显示CGROM 未包含的字形时,用户可以自己在CGRAM 中定义字模数据,然后再对已经定义好的字模进行调用显示需要的字形。需要强调的是,CGRAM 中初始并没有字符,所以使用CGRAM 时,只能先定义后调用,并且在LCD1602掉电后CGRAM 中的数据随即清空,下一次使用前必须重新定义。上港集箱
LCD 16字×2行
000102030405060708090A 0B 0C 0D 0E 0F 10 (67)
27404142434445464748494A 4B 4C 4D 4E 50
4F 图2 DDRAM 地址与显示屏位置对应关系图
2018年3月刊
CGRAM中字模数据的定义与写DDRAM数据类似,即在需要的地址写入相应的字符数据。
2 系统设计
本系统主要功能为通过LCD1602驱动程序显示CGROM中包含的字符,显示过程中可以随意选择在LCD上显示的字符位置,并且可以通过按键实现复位功能。LCD1602通过8位并行信号进行控制。
2.1 并行控制
本系统使用并行控制的方式驱动LCD1602,并行接口可以使数据的各位同时进行传送,其特点是传输速度快,但当传输距离较远、位数又多时,就导致通信线路复杂且成本提高。由于本系统中FPGA芯片与LCD1602直接相连,不必考虑线路成本的问题,并且并行控制的驱动程序相对较容易实现,因此选择并行控制的方式。
在系统的并行控制当中,FPGA作为主机,LCD1602作为从机。主机对从机的控制按照操作时序执行。读操作时序和写操作时序分别如图4和图5所示。
在本系统下只需要对LCD1602进行写操作就可以满足系统功能,主机向从机写数据过程中LCD_EN的宽脉冲信号依据始终时钟实现,当从机接收到主机的宽脉冲信号时依据当前LCD_RS 和LCD_RW的电平状态进行相应的写数据或者写指令的操作。 以写指令为例解释图5中写操作时序的含义,当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,此时RS的状态先变化完成。此后DB0~DB7上的数据进入有效阶段,接着E引
脚有一个整脉冲的跳变,接着要维持时间最小值为t PW=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。在操作时序中E正跳变后接收并锁存DB0~DB7上的数据,E负跳变到来时发送数据,指令执行。写数据时基本操作与写指令类似,只是操作时序中RS为高电平。
一个操作时序LCD可以接收一次DB0~DB7
图4 读操作时序图5 写操作时序
2018
年3月刊
上的数据,也就是一个操作时序LCD可以收到1字节的数据或指令,系统对LCD的所有的写操作都基于此操作时序。
2.2 指令集
LCD为完成相应的显示功能有一套自己的指令集,用户可以通过这些指令集对LCD实现各种操作,从而实现LCD的驱动显示。指令集包括工作方式设置指令、显示开关控制指令、进入模式设置指令、光标复位与清屏指令、设置DDRAM 地址指令等。
(1)工作方式设置指令。如图6所示,X 为不关心,也就是说这个位是0或1都可以,一般取0。DL值控制数据接口位数,DL=1时有8位数据接口(D7~D0),DL=0时有4位数据接口(D7~D4)。N=0时一行显示,N=1时两行显示。F=0时以5×8点阵字符显示,F=1时以5×10点阵字符显示。
RS DB7DB5DB4DB3DB2DB1DB0
DB6
R/W
00001DL N F X X Code
图6 工作方式设置指令
本系统中工作方式为8位数据接口5×8点阵字符显示,工作方式设置指令为0x38。
(2)显示开关控制指令。如图7所示,D=1时显示开,D=0时显示关。C=1时光标显示,C=0时光标不显示。B=1时光标闪烁,B=0时光标不闪烁。
RS DB7DB5DB4DB3DB2DB1DB0
DB6
R/W
0000001D C B Code
图7 显示开关控制指令
在本系统中显示开,不显示光标,光标不闪烁,显示开关控制指令为0x0c。
(3)进入模式设置指令。如图8所示,I/D=1时写入新数据后光标右移,I/D=0时写入新数据后光标左移。S=1时显示移动,S=0时显示不移动。
RS DB7DB5DB4DB3DB2DB1DB0
DB6
R/W
00000001I/D S Code
图8 进入模式设置指令
本系统中显示不移动光标、写入新数据后右移,进入模式设置指令为0x06。
(4)光标复位与清屏指令。根据图9和图10可以知道清屏指令为0x01,光标复位指令为0x02。
RS DB7DB5DB4DB3DB2DB1DB0
DB6
R/W
0000000001 Code
图9 清屏指令
RS DB7DB5DB4DB3DB2DB1DB0
DB6
R/W
000000001X Code
图10 光标复位指令
(5)设置DDRAM地址指令。如图11所示,这个指令用于设置DDRAM地址。在对DDRAM进行读写之前,首先要设置DDRAM地址。前面介绍过,DDRAM就是LCD1602的显示存储器。如果在它上面进行显示,就要把要显示的字符写入DDRAM。同样,如果想知道DDRAM某个地址上有什么字符,也
要先设置DDRAM地址,然后将它读出到单片机。
RS DB7DB5DB4DB3DB2DB1DB0
2004感动中国颁奖词DB6
R/W
001a a a a a a a Code
图11 设置DDRAM地址指令
3 Verilog程序编写及系统实训
3.1 时钟设计
本系统所使用的LCD1602显示器属于低频显示器件。设计中系统频率由DE2开发板上的50MHz晶振提供,由于数据在显示器中的建立需要较长的时间,如果以50MHz频率直接驱动显示屏,显示器无法正常接收数据就不能正常显示。根据LCD1602数据手册中的时序要求容易看到,时间要求都处在μs级别,所以在软件设计中将50MHz频率分频到500Hz为LCD的显示提供频率。
进行程序设计时,Clock_Gen模块中通过计数器的形式将50MHz频率分频为500Hz频率。
2018年3月刊
3.2 驱动设计
本系统根据LCD1602数据手册时序图通过状态机的形式完成对LCD1602的驱动,状态机共有9个状态:Open、Clear_Lcd、Set_Disp_Mode、Disp_On、Shift_Down、Write_Addr、Write_Data_ First、Write_Data_Second、Idel,功能分别为开启LCD1602电源,清屏并光标复位,设置显示模式:8位2行5×7点阵、显示器开,光标不显示、光标不允许闪烁文字不动,光标自动右移,写入显示起始地址,写入第一行显示的数据,写入第二行显示的数据,空闲状态。程序最终在空闲状态循环。
3.3 系统实测
将调试完成的程序下载到DE2开发板上之后,LCD1602屏幕上可以正常显示所需要显示的字形,通过复位按键可以重新刷新LCD1602的显示。
4 结语
LCD1602显示屏的使用在各种智能化产品上随处可见,对于显示屏显示字符的研究有着重要的意义。本设计中对LCD1602的静态字符显示进行了分析研究,由于Verilog程序易于修改、可移植性强的特点,本设计可以简单地移植到其他需要液晶显示的场合中,为其他较为复杂的系统提供显示模块。
【参考文献】
[1] 韩延义,李航,李岳.基于FPGA的音频芯片输出
控制设计[J].实验室研究与探索,2013,32(5):94-96.
[2] 盛象飞.基于FPGA的液晶显示控制器的设计与实现
[J].电子世界,2015(13):187-188.
[3] 李璐,余英.基于FPGA的LCD动态显示控制系统设
计与实现[J].信息系统工程,2016(1):96-97.[4] 梁强.字符型液晶模块1602快速应用[J].科技信
息,2012(35):148-149.
[5] 黄杰勇.基于CPLD实现LCD1602显示设计[J].科技
创新导报,2013(4):83-83.
[6] 刘长荣.时序信号分析系统[D].大连:大连交通大
学,2008.
[7] 邢建平,曾繁泰.VHDL程序设计教程[M].北京:
清华大学出版社,2005.
[8] 陈耀和.VHDL语言设计技术[M].北京:电子工业
出版社,2004.
[9] 姜雪松.VHDL设计实例与仿真[M].北京:机械工
业出版社,2007.
样定理、前置低通滤波等。
5 结语
本文将案例式教学法引入时域取样定理的讲解中,将理论和实际应用结合起来,形象生动地向学生展示了正确取样的条件。从实际教学效果来看,该方式提高了学生的学习关注度和对该知识点的理解,课堂气氛十分活跃。【参考文献】
[1] 陈后金,胡健,薛健,等.信号处理系列课程的改
革与探索[J].中国大学教学,2008(9):36-39.[2] 奥本海姆,等著.信号与系统(第二版)[M].刘树
棠,等译.北京:电子工业出版社,2009.
[3] 吴大正,杨林耀,张永瑞,等.信号与线性系统分
析(第四版)[M].北京:高等教育出版社,2005.[4] 郑君里,应启珩,杨为理.信号与系统(第三版)
[M].北京:高等教育出版社,2011.
[5] 吴京,王展,万建伟,等.信号与系统分析(第二
版)[M].长沙:国防科技大学出版社,2014.[6] 陈后金,胡健,薛健,等.信号与系统(第二版)
[M].北京:清华大学出版社,2005.
(上接第35页)