找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1393|回复: 1
打印 上一主题 下一主题
收起左侧

LCD1602菜单显示源码(结合红外模块)

[复制链接]
跳转到指定楼层
楼主
ID:335111 发表于 2018-11-28 12:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;  
                }
        }
       
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-11-28 16:05 | 只看该作者
补全原理图头文件工程包详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表