📄 1602cd.c
字号:
#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 + -