1、
LCD12864 是一种单片机常用显示屏,按照其字库共可显示164个英文字母 或者 84个汉字,按数据传输方式具有很多分类。以下为较为常见的8数据线接口的显示教程。
2、
其工作原理是通过驱动RW,RS,E 、8位数据口 来写命令和写数据。在
RW表读“1”、写“0”操作。本次只进行读操作,故RW设为“0”。
E为使能端:高电平写入,故可与clock时钟相同。
RS在写入数据是为“1”。
PSB接高电平
BLK接GND
BLA与接电位器以控制lcd背光亮度
按照单片机使用它的一般工作顺序:指令初始化---->写数据。
3、
首先是指令初始化:下面是其指令表:
首先通过状态机写指令(注意虽然12864指令具有默认值,但还是需要进行配置,否则非正常显示)。首先设置对其功能进行设定,这儿有个坑,刚开始看数据手册没有注意到这点,导致浪费很多时间,此坑如下:
就是对此指令设置,必须要进行两次。一次设置选用的指令集,一次设置控制接口宽度。
随后就是按照指令表内容,设置光标、进入点等。很简单,详见代码
4、
写入数据。
写数据是应将RS设“1”。在写入数据时应注意其行数的选择,其不能自动换行,应进行指令操控换行。本里程使用ST7920字库。其英文字库可以直接使用英文字母如“A”。注意如果现实数值需要加0'd48
.
(没有数据手册可以点击后面链接下载,PDF支持Ctr+F查找汉字很是方便:
下载链接:https://download.csdn.net/download/szsfate/10526436)。
使用汉字可以在数据手册自行查找如下:
5、
注意其时钟频率的设定,经实测3KHz左右基本为其最大时钟频率,5k会在指令和数据转换之间出现错误。
6、
以下为其代码:具有详细备注说明。为演示,程序中将data_buf接口注释掉。
/*
* Title: <话机屏幕显示>
* description:
* @author: fateszs
* @data: 2018.7.06
*
*/
module lcd_12864(
input clk_50M,
input rst,
// input [511:0]data_buf, //使用时去掉注释。
output lcd