基于NiosII处理器的LCD滚屏设计
2 软件设计
使用NIOS对LCD进行控制主要是通过对LCD的控制器进行编程来实现的,在本文中采用T6963c控制器,其软件方案流程图如图2所示。本文引用地址:https://www.eepw.com.cn/article/148056.htm
2.1 LCD初始化
LCD模块的初始化就是对LCD模块的奇存器进行初始化,也就是对LCD控制器当中的寄存器写入要预设的数据,设置好LCD的特性。LCD模块的初始化包括地址指针设置,显示区域设置,显示方式设置,显示状态设置。其软件实现主要依据表1指令来实现。
T6963C模块的控制指令可带有0个、1个或2个参数。在执行每条指令时都是先送入参数(如果有的话),再送入指令代码。设计软件时无论输入哪种指令,首先进行以下操作,
(1)设置数据总线为输出模式输出
IOWR ALTERA AVALON PIO DIRECTION(LCD_DB_BASE,0xff);//数据总线:输出
(2)设置片选信号有效
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CS_BASE,0);
(3)设置写信号有效
IOWR_ALTERA_AVALON_PIO_DATA(LCD_WR_BASE,0);
然后根据不同指令,编写程序。
对于无参数指令,
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1);//选择命令,即T6963C内部通过一根地址线来确定两个寄存器,当地址线为低电平,选择DATA寄存器;当地址线为高电平,则选择COMMAND/STATUS寄存器。
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE,无参数指令);
对于一个参数指令,首先输入参数,然后输入指令,即
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,0);//选择数据
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE,参数数据);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1);//选择命令
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE,指令);
对于两个个参数指令,首先输入2个参数,然后输入指令,即
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,0)://选择数据
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE,参数数据1);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE,参数数据2);
IOWR_ALTERA_AVALON_PIO_DATA(LCD_CD_BASE,1);//选择命令
IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE,指令)。
2.2 显示汉字
汉字显示的基本方法有两种,即文本显示方式和图形显示方式。二者显示的方法不同,但都必须先在程序区设定汉字的字模数据。
本文采用的是图形方式下显示汉字,使用的液晶显示屏是240*128。该液晶显示屏横向的8个点即8×1点阵(也称图形显示单位)是一个字节数据,每个字节在显示缓冲区中均有对应的地址,液晶屏幕的左上角横向8个点对应液晶模块显示缓冲区的首地址。16*16点阵汉字对应32个图形显示单位。采用图形显示方式时,根据汉字的存储规律将32个图形显示单位信息写入存储单元,则对应的位置就会显示出汉字。
在显示汉字时,关键是确定要读取的存储单元的位置。本文中采用的汉字存储方式是按照区位的顺序排列的,前一个字节为该汉字的区号,后一个字节为该字的位号。每一个区记录94个汉字,位号则为该字在该区中的位置。因此,汉字在汉字库中的具体位置计算公式为:
94*(区号-1)+(位号-1) (1)
这是以汉字为单位得到的该汉字在汉字库中的位置,由此可得到16*16点阵字库以字节为单位的该汉字在汉字库中的位置:
(94*(区号-1)+(位号-1))*32 (2)
这样通过将字模数据逐个字节地写入图形显示区,即可在显示屏上坐标为(X,Y)处顺序显示出汉字。软件实现如下。
alt_u32m_Addr=图形区地址高八文*256+图形区地址高八位+v*30+x;
LCD显示屏相关文章:lcd显示屏原理
lcd相关文章:lcd原理
评论