⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1602cd.c

📁 基于51单片机与1602液晶的开发程序,实现了在1602上执行菜单操作的功能
💻 C
📖 第 1 页 / 共 2 页
字号:
#include<reg52.h>
sbit P2_0=P2^0;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
#define LCM_RW P2_6 //定义引脚
#define LCM_RS P2_5
#define LCM_E P2_7
#define LCM_Data P3
#define Busy 0x80 //用于检测LCM状态字中的Busy标识#define NEXT  9
#define LAST  8   //上一选项
#define NEXT  9   //下一选项
#define OPEN  12  //开机
#define CLOSE 7   //关机
#define ENTER 4   //确认
#define BACK  5   //返回


#define uchar unsigned char 
uchar code *word[]={   "                ", "                " ,//画面0
                       "welcome to enjoy", "  the music     " ,//画面1
                       ">>>main land    ", "   hk&taiwan    " ,//2
                       "   main land    ", ">>>hk&taiwan    " ,//3
                       ">>>mail         ", "   femail       " ,//4
                       "   mail         ", ">>>femail       " ,//5
                       ">>>xu wei       ", "   sun nan      " ,//6
                       "  xu wei        ",">>>sun nan       " ,//7
                       ">>>liangy       ", "   an you qi    " ,//8
                       "   liangy       ", ">>>an you qi    " ,//9
                       ">>>wanmeish     ", "                " ,//10
                       ">>>ibelive      ", "                " ,//11
                       ">>>zhang1       ", "                " ,//12
                       ">>>hellozhou    ", "                " ,//13
                       ">>>zhoujielun   ", "   huyanbin     " ,//14
                       "   zhoujielun   ", ">>>huyanbin     " ,//15
                       ">>>mo wenwei    ", "   liuruoyin    " ,//16
                       "   mo wen wei   ", ">>>liuruoyin    " ,//17
                       ">>>fa ruxue     ", "                " ,//18
                       ">>>hongyan      ", "                " ,//19
                       ">>>guangdao     ", "                " ,//20
                       ">>>hudie        ", "                "  //画面21
                    }; 
uchar displaycode[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f};//1-8字型
void manage2_1(void);
void manage2_2(void);
void manage3_1(void);
void manage2_4_1(void);
void manage2_4_2(void);
void manage3_4_1(void);
void manage3_4_2(void);
void manage2_5_1(void);
void manage3_5_1(void);
void manage6_1(void);
void manage6_2(void);
void manage7_1(void);
void manage8_1(void);
void manage8_2(void);
void manage9_1(void);
void manage14_1(void);
void manage14_2(void);
void manage15_1(void);
void manage16_1(void);
void manage16_2(void);
void manage15_1(void);
void manage17_1(void);
void managetask(uchar i);//歌手执行任务
void displaypicture(uchar i);
void WriteDataLCM(uchar  WDLCM);
void WriteCommandLCM(uchar  WCLCM,BuysC) ;//BuysC为0时忽略忙检测
uchar ReadDataLCM(void);
uchar ReadStatusLCM(void);
uchar keyscan(void);
void LCMInit(void); //LCM初始化
void DisplayOneChar(uchar  X, uchar Y, uchar  DData);
void DisplayListChar(uchar  X, uchar Y, uchar  code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
main(){
    uchar key;
    uchar i;
start:while(1){
        Delay400Ms();
        displaypicture(0);//开机不显示
        key=keyscan();
        if(key!=16)break;
        }
    if(key==OPEN)displaypicture(1);//开机画面1,持续3秒左右
    for(i=0;i<8;i++)Delay400Ms();
    while(1){
        displaypicture(2);//进入画面2---一级菜单1/默认选中大陆地区 
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage2_1();//按下一条,选择港台地区
        else if(key==ENTER)
            manage2_2();//确认选择大陆
            else if(key==CLOSE)goto start;
        }
}
//函数名:manage2_1();功能:对一级菜单1(画面2)中按下一条的响应
void manage2_1(void){//选择港台地区
    uchar key;
    while(1){
        displaypicture(3);//显示画面3---一级菜单2/显示港台被选中
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==LAST)break;//返回画面2
        else if(key==ENTER)manage3_1();//确认选择港台
        }
}
//函数名:manage2_2();功能:对一级菜单1(画面2)中按确认的响应
void manage2_2(void){
    uchar key;
    while(1){
        displaypicture(4);//显示画面4---二级菜单1/默认选择男歌手
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage2_4_1();//按下一条选择大陆女歌手
        else if(key==ENTER)manage2_4_2();//确认选择大陆男歌手
        else if(key==BACK)break;//返回一级菜单
        }
}
//函数名:manage3_1();功能:对一级菜单2(画面3)中按确认的响应
void manage3_1(void){
    uchar key;
    while(1){
        displaypicture(4);//显示画面4---二级菜单1/默认选择男歌手
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage3_4_1();//按下一条/选择港台女歌手
        else if(key==ENTER)manage3_4_2();//确认选择港台男歌手
        else if(key==BACK)break;  //返回一级菜单
        }
 }
//函数名:manage2_4_1();功能:对一级菜单1进入二级菜单1(画面4)中按下一条的响应
void manage2_4_1(void){
    uchar key;
    while(1){
        displaypicture(5);//显示画面5---二级菜单2/选择了大陆女歌手
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==LAST)break;//返回画面4
        else if(key==ENTER)manage2_5_1();//确认选择大陆女歌手
        }
}
//函数名:manage2_4_2();功能:对一级菜单1进入二级菜单1(画面4)中按确认的响应
void manage2_4_2(void){
    uchar key;
    while(1){
        displaypicture(6);//显示画面6---三级菜单1/默认选择大陆男歌手许巍
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage6_1();//按下一条/选择孙南
        else if(key==ENTER)manage6_2();//确认选择许巍
        else if(key==BACK)break;//返回上一级菜单
        }
}
//函数名:manage3_4_1();功能:对一级菜单2进入二级菜单1(画面4)中按下一条的响应
void manage3_4_1(void){
    uchar key;
    while(1){
        displaypicture(5);//显示画面5---二级菜单2/选择了港台女
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==LAST)break;//按上一条/返回画面4
        else if(key==ENTER)manage3_5_1();//确认选择港台女
        }
}
//函数名:manage3_4_2();功能:对一级菜单2进入二级菜单1(画面4)中按确认的响应
void manage3_4_2(void){
    uchar key;
    while(1){
        displaypicture(14);//显示画面14---三级菜单5/默认选择周杰伦
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage14_1();//按下一条/选择胡彦宾
        else if(key==ENTER)manage14_2();//确认选择周杰伦
        else if(key==BACK)break;
        }
}
//函数名:manage2_5_1();功能:对一级菜单1进入二级菜单2按确认的响应
void manage2_5_1(void){
    uchar key;
    while(1){
        displaypicture(8);//显示画面8---三级菜单3/默认选择张靓颖
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage8_1();//按下一条/选择安又琪
        else if(key==ENTER)manage8_2();//确认选择张靓颖
        else if(key==BACK)break;
        }
}
//函数名:manage3_5_1();功能:对一级菜单2进入二级菜单2按确认的响应
void manage3_5_1(void){
    uchar key;
    while(1){
        displaypicture(16);//显示画面16---三级菜单7/默认选择莫文蔚
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==NEXT)manage16_1();//按下一条/选择刘若英
        else if(key==ENTER)manage16_2();//确认选择莫文蔚
        else if(key==BACK)break;
        }
}
//函数名:manage6_1();功能:对三级菜单1(画面6)中按下一条的响应
void manage6_1(void){
    uchar key;
    while(1){
        displaypicture(7);//显示画面7---三级菜单2/选择了孙南
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==LAST)break;//返回画面6
        else if(key==ENTER)manage7_1();//确认选择孙南
        }
}
//函数名:manage6_2();功能:对三级菜单1(画面6)中按确认的响应
void manage6_2(void){
    uchar key;
    while(1){
        displaypicture(10);//显示画面10---四级菜单61/完美生活
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==ENTER)managetask(1);//演唱完美生活
        else if(key==BACK)break;//返回一级菜单
        }
}
//函数名:manage7_1();功能:对三级菜单2(画面7)中按确认的响应
void manage7_1(void){
    uchar key;
    while(1){
        displaypicture(11);//显示画面11--四级菜单71/I
        while(1){
            key=keyscan();
            if(key!=16)break;
            }
        if(key==ENTER)managetask(2);//演唱I BELIVE
        else if(key==BACK)break;//返回上一级菜单
        }
}
//函数名:manage8_1();功能:对三级菜单3(画面8)中按下一条的响应
void manage8_1(void){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -