yzai的个人空间 https://bbs.21ic.com/?1197968 [收藏] [复制] [RSS] 我想永生,精神或者肉体最终接受不了时间的洗礼

日志

lcd显示菜单的按键切换程序及清屏

已有 346 次阅读2018-3-23 14:59 |个人分类:mega16|系统分类:兴趣爱好

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]);}

     } 

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)