电子设计心得-LCD 滚屏通用算法
在使用 128×32LCD 液晶做显示设备的时候,可能会遇到显示>4 条的菜单列
表的情况,这种情况下可以考虑使用 LCD 滚屏。本文通过在使用 SPCE061A
做 MCU 控制 LCD 显示的过程中实现 LCD 滚屏的介绍,希望可以总结出一种
LCD 滚屏的通用算法。
【分析】
可以定义如下几个全局变量(Public),来指示 LCD 的显示():
//
*********************************************************************
*****************//
#de!neC_MenuItemCount7
const unsigned int MenuItemCount=C_MenuItemCount;//菜单项数
目
const unsigned int CursorBitArr[4]={0x80,0x90,0x88,0x98};//光标
显示位
signed int SelectedIndex=0;//选中的菜单项(0 --
MenuItemCount-1)
unsigned int Scroll=0;//滚动行数(0--MenuItemCount-4)
const unsigned char MenuItems[C_MenuItemCount][12]=//菜单内
容
{"菜单选项1 ","菜单选项2 ","菜单选项3 ","菜单选项4 ",
"菜单选项5 ","菜单选项6 ","菜单选项7 "};
//note:
1, CursorBitArr[4]为显示指示光标的地址,即 LCD 每行的首列地址;
2, MenuItems 为一个 2 维数组保存菜单数据,LCD 每行显示 8 个汉字,去除
首列显示指针和末列显示滚动条,共显示 6 个汉字,故数组长度定义为 12,即
6 个汉字,不足 6 个汉字的用全角空格补全.
变量间的主要关系为:
1, SelectedIndex-Scroll 属于[0,3]时不需要滚屏,滚屏发生在
SelectedIndex-Scroll>3(执行 Scroll+1 下翻)或<0(执行 Scroll-1 上翻)时,
同时 SelectedIndex-Scroll 也是光标显示位 CursorBitArr 的索引号
//
*********************************************************************
*****************//
【算法结构】
用到的主要函数有:
//这个函数从 iScroll 指定的索引开始依次列出 MenuItems 数组中的 4 条菜单
项,当初始化滚屏刷新菜单显示时调用该函数
//列出菜单-iScroll 滚动栏数*******************************************
***********************//
void MenuList(unsigned int iScroll)
{
LCD_Write_Serial(Command,0x81);
LCD_WriteWord_Serial(MenuItems[iScroll],6);
评论0