标题: LCD1602菜单显示源码(结合红外模块) [打印本页]

作者: 我是好人qwq    时间: 2018-11-28 12:30
标题: LCD1602菜单显示源码(结合红外模块)
#include "bsp.h"
#define  SIZEOFMENU  5
unsigned char CurMenuIndex =0; //指向当前菜单编号
unsigned char FirstLine[16]=" 123";
unsigned char SecondLine[16]=" 123";
unsigned char lcdflashflag =1;//菜单刷新命令
//unsigned char IRFLAG =0;   //红外操作的健值




typedef struct keymenu
{         
        unsigned char curindex;//当前的菜单编号
        unsigned char keyDNindex;//按下向下按键 进入的编号
        unsigned char keyUPindex;//按下向上按键 进入的编号
        unsigned char keyENTERindex;//按下回车按键 进入的编号
        unsigned char keyCANCELindex;//按下返回按键 进入的编号
        void (*operation)();


} MYMENU;


MYMENU code keytab[SIZEOFMENU] =
{
                 //当前,下,上,回车,返回
                 {0,1,0,2,0,dispmenu0},
                 {1,1,0,3,1,dispmenu1},
                 {2,2,2,2,0,dispmenu2},
                 {3,3,3,3,1,dispmenu3},




};
//根据红外按键进行 菜单切换
void switch_menu(void)
{
          switch(IRKEY)
        {
           case  UPFLAG :  //向上
           CurMenuIndex = keytab[CurMenuIndex].keyUPindex;
           lcdflashflag = 1;
           bsp_LcdClr();
           IRKEY = 0x99;
           break;
           case  DNFLAG :
           CurMenuIndex = keytab[CurMenuIndex].keyDNindex;
           lcdflashflag = 1;
           bsp_LcdClr();
           IRKEY = 0x99;
           break;
           case  ENTERFLAG :
           CurMenuIndex = keytab[CurMenuIndex].keyENTERindex;
           lcdflashflag = 1;
           bsp_LcdClr();
           IRKEY = 0x99;
           break;
           case  CANCELFLAG :
           CurMenuIndex = keytab[CurMenuIndex].keyCANCELindex;
           lcdflashflag = 1;
           bsp_LcdClr();
           IRKEY = 0x99;
           break;
        }
        keytab[CurMenuIndex].operation();       
}


void  dispmenu0(void) //0号界面
{
    strcpy(FirstLine , "    TIMER    ");
        strcpy(SecondLine ," TEMPERATURE ");
        // 光标闪烁函数
//        setcursorlocation(15,1); //第一行
}
void  dispmenu1(void)
{
    strcpy(FirstLine , "    TIMER    ");
        strcpy(SecondLine ," TEMPERATURE ");
        // 光标闪烁函数
        //setcursorlocation(15,2); //第二行


}
void  dispmenu2(void)
{
        strcpy(FirstLine , "  CURRENT TIME");
        strcpy(SecondLine ,"  14 : 51 : 11");
        // 光标闪烁函数
        //setcursorlocation(15,1); //第一行


}
void  dispmenu3(void)
{
           strcpy(FirstLine , " CURRENT TEMP");
        strcpy(SecondLine ,"  T = 28 C   ");
        // 光标闪烁函数
        //setcursorlocation(15,1); //第一行
}
void  fresh(void)  //刷新函数
{       
        if(lcdflashflag ==1)
        {
                 bsp_LCDDispStr(0,1, FirstLine);
                bsp_LCDDispStr(0,2, SecondLine);
                lcdflashflag =0;




                switch(        CurMenuIndex)
                {
                case 0 :
                setcursorlocation(15,1); //第一行
            
                break;
                case 1:
                setcursorlocation(15,2); //第一行
                break;  
                }
        }
       
}



作者: admin    时间: 2018-11-28 16:05
补全原理图头文件工程包详细说明一下电路连接即可获得100+黑币





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1