lcd显示界面,一个按键每按下一次,lcd切换一次显示界面,其中用到了清屏,可以在之前定义一个clear_LCD_falg=0;
lcd12864的清屏用Write_Com(0X01),即向lcd写0x01命令;清屏函数将其包含到里面,清屏函数如下:
void Clear_LCD(void)
{
if(clear_LCD_falg ==1)
{ Write_Com(0X01); //清屏
delay_ms(5);
clear_LCD_falg=0;
}
}
按键函数如下,set_timedata用于切换计数,可以切换4种界面,按键每按下一次,使 clear_LCD_falg=1,则在显示函数中调用一次清屏函数Clear_LCD(),且函数内部又将clear_LCD_falg=0,准备下一次切换时的清屏,按键函数如下:
uchar key_time(void)
{
if((PINB &0x10)!=0x00)//判断按键是否按下 S1
{
delay_ms(50);//延时去抖
if((PINB &0x10)!=0x00)//再次判断按键是否按下
{
set_timedata++;
set_timedata =set_timedata%4;
if(set_timedata>=4) set_timedata=0;
clear_LCD_falg=1;
}
}
}
其中显示一个界面对应的显示函数如下,其中先调用了清屏函数 void Clear_LCD(void):
void Display_welcome(void)
{
Clear_LCD();
Write_Com(0X90);
Write_Data(0x20);
Write_Data(0x20);
Write_Data(0x20);
Write_Data(0x20);
for(i = 0; i < 8; i++)
{ Write_Data(LCD_DispBuff3[i]); }
Write_Data(0x20);
Write_Data(0x20);
Write_Data(0x20);
Write_Data(0x20);
Write_Data(0x20);
Write_Com(0X88+0x01);
for(i = 0; i < 13; i++)
{ Write_Data(LCD_DispBuff12[i]);}
}