📄 lcd.c
字号:
Send_Instr (0x0C); //显示状态:整体显示 游标
DelayX50us (2) ;
Send_Instr (0x80); //设定DDRAM位置:AC=80H
DelayX50us (2) ;
}
/////////////////////////////////////////////////////////////////////////////////
// 函数介绍: 监控量显示第一屏
// 输入参数: 无
// 返回值 : 无
void Monitor_Data(void)
{ UINT8 j,i;
Init_Lcd();
Send_Instr (Lcd_1);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[2][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X18]);
Line34_Data(0x85);
Send_Instr (Lcd_2);
DelayX50us (2) ;
/* for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[3][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X8f]);
Line34_Data(0x95);
Send_Instr (Lcd_3);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[4][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X90]);
Line34_Data(0x8c);
Send_Instr (Lcd_4);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[5][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X91]);
Line34_Data(0x9c); */
while(!Push_C)
{if(Push_D==1)
{Push_D=0;Monitor2_Data();}
}
Push_C =0;
Clr_Disply( );
}
/////////////////////////////////////////////////////////////////////////////////
// 函数介绍: 监控量显示第二屏
// 输入参数: 无
// 返回值 : 无
void Monitor2_Data(void)
{ UINT8 j,i;
Clr_Disply( );
Send_Instr (Lcd_1);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[6][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X92]);
Line34_Data(0x85);
Send_Instr (Lcd_2);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[7][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X93]);
Line34_Data(0x95);
Send_Instr (Lcd_3);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[8][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X94]);
Line34_Data(0x8c);
Send_Instr (Lcd_4);
DelayX50us (2) ;
for(i=0;i<Menu_Word_Num;i++)
{ j=Display_Data[9][0][i];
Send_Data(j);
DelayX50us (2);
}
Data_Char(DBYTE[0X95]);
Line34_Data(0x9c);
while(!Push_D)
{;}
Screen_Logo();
Push_D=0;
}
/***************************结束 初始化LCD ********************************/
/***************************开始 数组下标超限 ********************************/
void Over_Limit_Fun() /*Menu_Y_Num,Menu_X_Num*/
{ if(Menu_Y_Num<1)
{ Menu_Y_Num=Menu_Row_Num;
while(Menu_Data[Menu_X_Num][Menu_Y_Num][0]==' ')
{ Menu_Y_Num--;}
}
else if(Menu_Data[Menu_X_Num][Menu_Y_Num][0]==' ')
{ Menu_Y_Num=1;}
}
/***************************结束 数组下标超限 ********************************/
/***************************开始 数据字符转换 ********************************/
// 函数介绍: 数据字符转换
// 输入参数: Conver_Data (8位16进制数转换数据)
// 返回值 : Conver_Fdata1(个位),Conver_Fdata2(十位),Conver_Fdata3(百位)(8位16进制数)
void Data_Char(UINT16 Conver_Data)
{ if(Conver_Data>=10&&Conver_Data<100) //两位数分解为十位和个位
{ Conver_Fdata2=(Conver_Data/10)+0x30; //十位
Conver_Fdata1=(Conver_Data%10)+0x30; //个位
Conver_Fdata3=0x30;
}
else if(Conver_Data>=100) //三位数分解为百位、十位和个位
{ Conver_Fdata3=(Conver_Data/100)+0x30; //百位
Conver_Fdata2=((Conver_Data/10)%10)+0x30; // 十位
Conver_Fdata1=(Conver_Data%10)+0x30; //个 位
}
else
{Conver_Fdata1=Conver_Data+0x30;
Conver_Fdata2=0x30;
Conver_Fdata3=0x30;
}
}
/***************************结束 数据字符转换 ********************************/
/***************************开始 主程序 ********************************/
void main ()
{ UINT8 i=0;
SP=0x30;
Init_Device( );
Init_Lcd();
for(i=0;i<223;i++)
{DBYTE[0X20+i]=0x00;}
EA=1;
ET0=1;
TR0=1;
*/while(1)
{
//*******************************开始 一级菜单*******************************//
Lcd_Revers(Lcd_REVERS_1);
while(Push_D==0)
{
Send_Line_Data(Lcd_1,Menu_X_Num,0); //送显第一行
if(Push_L==1)
{Push_L=0;Menu_X_Num--;}
else if (Push_R==1)
{Push_R=0;Menu_X_Num++;}
else if(Push_U==1)
{Push_U=0;Menu_X_Num=1;Menu_Y_Num=0;Monitor_Data();
Lcd_Revers(Lcd_REVERS_1);
}
if(Menu_X_Num<1) {Menu_X_Num=Menu_Line_Num;}
if(Menu_X_Num>Menu_Line_Num) {Menu_X_Num=1;}
}
Push_D=0;
Lcd_Revers(Lcd_REVERS_1);
//*********************************结束 一级菜单*******************************//
//*******************************开始 二级菜单*******************************//
Lcd_Revers(Lcd_REVERS_2);
while(Push_U==0)
{ Send_Line_Data(Lcd_2,Menu_X_Num,Menu_Y_Num);
if(Push_L==1)
{Push_L=0;Menu_Y_Num--;}
else if (Push_R==1)
{Push_R=0;Menu_Y_Num++;}
else if(Push_D==1)
{Push_D=0;
Lcd_Revers(Lcd_REVERS_2);
Process_Fun(Menu_X_Num,Menu_Y_Num);
Lcd_Revers(Lcd_REVERS_2);
}
Over_Limit_Fun();
}
Push_U=0;
Lcd_Revers(Lcd_REVERS_2);
Send_Line_Data(Lcd_2,0,0);
//*********************************结束 二级菜单*******************************//
}
}
//*******************************开始 三级四级菜单*******************************//
void Process_Fun(UINT8 Fun_x,UINT8 Fun_y)
{ Send_34Line_Data(Fun_x,Fun_y);
Send_Instr (0x30); //功能设定 :反显
DelayX50us (5);
Send_Instr(0x0E);//功能设定 : 打开反显
DelayX50us (2) ;
Send_Instr(0x9C);//指定位置0xA4
DelayX10ms (1) ;
switch((Fun_x-1)*9+Fun_y)
{ case 1: Menu_Char34(0,1,3,0,0,0);break;
case 2: Menu_Char34(1,2,4,0,0,0);break;
case 3: Menu_Char34(2,3,6,3,4,3);break;
case 4: Menu_Fun34(0,0,0,0,5,102);break;
case 10: Menu_Char34(4,6,2,0,0,0);break;
case 11: Menu_Fun34(1,7,200,0,8,600);break;
case 12: Menu_Fun34(0,9,220,0,10,50);break;
case 13: Menu_Char34(5,11,3,6,12,2);break;
case 14: Menu_Fun34(0, 0, 0,0,14,50);break;
case 15: Menu_Fun34(0, 0, 0,0,15,50);break;
case 16: Menu_Fun34(0, 0, 0,1,16,6);break;
case 17: Menu_Fun34(0, 0, 0,1,17,2);break;
case 19: Menu_Fun34(0, 0, 0,0,18,200);break;
case 20: Menu_Fun34(100,19,200,0,20,20);break;
case 21: Menu_Fun34(0,0,0,0,21,240);break;
case 22: Menu_Fun34(0,22,0,0,23,240);break;
case 23: Menu_Fun34(0,0,0,0,24,240);break;
case 24: Menu_Fun34(0,0,0,0,25,240);break;
case 25: Menu_Fun34(0,0,0,0,26,240);break;
// case 26:Menu_Char34();break;
case 27: Menu_Fun34(0,0,0,0,27,240);break;
case 28: Menu_Fun34(0,0,0,0,28,240);break;
case 29: Menu_Fun34(0,0,0,0,29,60);break;
case 30: Menu_Fun34(0,0,0,0,30,5);break;
case 31: Menu_Fun34(0,0,0,0,31,10);break;
case 32: Menu_Fun34(0,0,0,0,32,15);break;
case 37: Menu_Fun34(0,33,100,0,34,208);break;
case 38: Menu_Fun34(0,0,0,0,35,240);break;
case 39: Menu_Fun34(0,36,0,0,37,240);break;
case 40: Menu_Fun34(0,0,0,0,38,240);break;
case 46: Menu_Fun34(0,0,0,0,39,1);break;
case 47: Menu_Fun34(0,0,0,0,40,1);break;
//case 55: Menu_Char34();break;
case 56: Menu_Fun34(0,0,0,0,41,240);break;
case 64: Menu_Fun34(0,0,0,0,42,1);break;
case 65: Menu_Fun34(0,0,0,0,43,720);break;
case 66: Menu_Fun34(0,0,0,0,44,60);break;
case 73: Menu_Fun34(0,0,0,0,45,100);break;
case 74: Menu_Fun34(0,0,0,0,47,100);break;
case 75: Menu_Fun34(0,48,100,0,49,100);break;
case 76: Menu_Fun34(50,50,100,50,51,100);break;
case 92: Menu_Char34(7,52,2,0,0,0);break;
case 93: Menu_Char34(8,53,2,0,0,0);break;
}
Push_C=0;
Send_Line_Data(Lcd_3,0,0);
Send_Line_Data(Lcd_4,0,0);
Send_Instr (0x0C); //显示状态:整体显示 游标
DelayX50us (2) ;
Send_Instr (0x90); //设定DDRAM位置:AC=80H
DelayX50us (2) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -