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