📄 键盘及显示各功能模块.c
字号:
uni_gatevalue.pchar[0]=data10[1];
uni_gatevalue.pchar[1]=data10[2];
*gatevalue=uni_gatevalue.intdata;
}
/*==================================================================*/
/* 各功能函数 */
/*==================================================================*/
/* 时间设置窗口 */
unsigned char LCD_Time_Form()
{
unsigned char i,j,key,cur_pst,hour,munite,second;
LCD_Time_Form_St:
EA=0;
LCD_Wr_Cmd(0x01); /*清屏*/
LCD_Set_DispPositon(1,3);
for(i=0;i<8;i++)
{
LCD_Wr_Data(Time_Lable[i]); /*时间标题*/
}
Read_Time(&hour,&munite,&second);
LCD_Set_DispPositon(3,2); /*时*/
LCD_Wr_Data(0x30+((hour>>4)&0x0F));
LCD_Wr_Data(0x30+(hour&0x0F));
LCD_Set_DispPositon(3,3);
LCD_Wr_Data(Hour_Lable[0]);
LCD_Wr_Data(Hour_Lable[1]); /*时标签*/
LCD_Set_DispPositon(3,4); /*分*/
LCD_Wr_Data(0x30+((munite>>4)&0x0F));
LCD_Wr_Data(0x30+(munite&0x0F));
LCD_Set_DispPositon(3,5);
LCD_Wr_Data(Munite_Lable[0]);
LCD_Wr_Data(Munite_Lable[1]); /*分标签*/
LCD_Set_DispPositon(3,6); /*秒*/
LCD_Wr_Data(0x30+((second>>4)&0x0F));
LCD_Wr_Data(0x30+(second&0x0F));
LCD_Set_DispPositon(3,7);
LCD_Wr_Data(Second_Lable[0]);
LCD_Wr_Data(Second_Lable[1]); /*秒标签*/
j=0; /*0-还未改前半字符,1-改了前半字符,2-改了后半字符*/
i=1; /*按方向键的次数(循环)*/
LCD_Wr_Cmd(0x0F); /*游标显示*/
LCD_Time_Formkey_scan:
switch(i)
{
case 1:
cur_pst=2;
break;
case 2:
cur_pst=4;
break;
case 3:
cur_pst=6;
break;
//default:
//cur_pst=2;
//break;
}
if(j==0)LCD_Set_DispPositon(3,cur_pst);
while(!Key_Press_Ack()); /*扫描键盘*/
key=Key_Value();
while(Key_Press_Ack()); /*判断是否起键*/
switch(key)
{
case Key_Up:
EA=1;
return Key_Up;
case Key_Down:
EA=1;
return Key_Down;
case Key_Fuc:
EA=1;
return Key_Fuc;
case Key_Ent:
if(hour>0x23||munite>0x59||second>0x59)
{
LCD_Wr_Cmd(0x0C);
goto LCD_Time_Form_St;
}
Set_Time(hour,munite,second);
EA=1;
return Key_Down;
case Key_Left:
j=0;
i--;
if(i==0) i=3;
goto LCD_Time_Formkey_scan;
case Key_Right:
j=0;
i++;
if(i==4)i=1;
goto LCD_Time_Formkey_scan;
default: /*数字*/
LCD_Wr_Data(0x30+key);
j++;
switch(cur_pst)
{
case 2:
if(j==1)hour=(hour&0x0F)+key*16;
else if(j==2)hour=(hour&0x0F0)+key;
break;
case 4:
if(j==1)munite=(munite&0x0F)+key*16;
else if(j==2)munite=(munite&0x0F0)+key;
break;
case 6:
if(j==1)second=(second&0x0F)+key*16;
else if(j==2)second=(second&0x0F0)+key;
break;
}
if(j==2)
{
j=0;
i++;
if(i==4) i=1;
}
goto LCD_Time_Formkey_scan;
}
}
/* 日期设置窗口 */
unsigned char LCD_Date_Form()
{
unsigned char i,j,key,cur_pst,century,year,month,date;
EA=0;
LCD_Date_Form_St:
LCD_Wr_Cmd(0x01); /*清屏*/
LCD_Set_DispPositon(1,3);
for(i=0;i<8;i++)
{
LCD_Wr_Data(Date_Lable[i]); /*日期标题*/
}
Read_Date(¢ury,&year,&month,&date);
LCD_Set_DispPositon(3,1); /*世纪 年*/
LCD_Wr_Data(0x30+((century>>4)&0x0F));
LCD_Wr_Data(0x30+(century&0x0F));
LCD_Wr_Data(0x30+((year>>4)&0x0F));
LCD_Wr_Data(0x30+(year&0x0F));
LCD_Set_DispPositon(3,3);
LCD_Wr_Data(Year_Lable[0]);
LCD_Wr_Data(Year_Lable[1]); /*年标签*/
LCD_Set_DispPositon(3,4); /*月*/
LCD_Wr_Data(0x30+((month>>4)&0x0F));
LCD_Wr_Data(0x30+(month&0x0F));
LCD_Set_DispPositon(3,5);
LCD_Wr_Data(Month_Lable[0]);
LCD_Wr_Data(Month_Lable[1]); /*月标签*/
LCD_Set_DispPositon(3,6); /*日*/
LCD_Wr_Data(0x30+((date>>4)&0x0F));
LCD_Wr_Data(0x30+(date&0x0F));
LCD_Set_DispPositon(3,7);
LCD_Wr_Data(Day_Lable[0]);
LCD_Wr_Data(Day_Lable[1]); /*日标签*/
j=0; /*0-还未改前半字符,1-改了前半字符,2-改了后半字符*/
i=1; /*按方向键的次数(循环)*/
LCD_Wr_Cmd(0x0F); /*游标显示*/
LCD_Date_Formkey_scan:
switch(i)
{
case 1:
cur_pst=1;
break;
case 2:
cur_pst=2;
break;
case 3:
cur_pst=4;
break;
case 4:
cur_pst=6;
break;
default:
cur_pst=1;
break;
}
if(j==0)LCD_Set_DispPositon(3,cur_pst);
while(!Key_Press_Ack()); /*扫描键盘*/
key=Key_Value();
while(Key_Press_Ack()); /*判断是否起键*/
switch(key)
{
case Key_Up:
EA=1;
return Key_Up;
case Key_Down:
EA=1;
return Key_Down;
case Key_Fuc:
EA=1;
return Key_Fuc;
case Key_Ent:
if(century<0x20||month>0x12||date>0x31)
{
LCD_Wr_Cmd(0x0C);
goto LCD_Date_Form_St;
}
Set_Date(century,year,month,date);
EA=1;
return Key_Down;
case Key_Left:
j=0;
i--;
if(i==0) i=4;
goto LCD_Date_Formkey_scan;
case Key_Right:
j=0;
i++;
if(i==5)i=1;
goto LCD_Date_Formkey_scan;
default: /*数字*/
LCD_Wr_Data(0x30+key);
j++;
switch(cur_pst)
{
case 1:
if(j==1)century=(century&0x0F)+key*16;
else if(j==2)century=(century&0x0F0)+key;
break;
case 2:
if(j==1)year=(year&0x0F)+key*16;
else if(j==2)year=(year&0x0F0)+key;
break;
case 4:
if(j==1)month=(month&0x0F)+key*16;
else if(j==2)month=(month&0x0F0)+key;
break;
case 6:
if(j==1)date=(date&0x0F)+key*16;
else if(j==2)date=(date&0x0F0)+key;
break;
}
if(j==2)
{
j=0;
i++;
if(i==5) i=1;
}
goto LCD_Date_Formkey_scan;
}
}
/* 距离设置窗口 */
unsigned char LCD_Distance_Form()
{
unsigned char i,j,disbit1,disbit2,disbit3,temp,key,cur_pst,distancevalue;
EA=0;
LCD_Distance_Form_St:
LCD_Wr_Cmd(0x01); /*清屏*/
LCD_Set_DispPositon(1,3);
for(i=0;i<8;i++)
{
LCD_Wr_Data(Distance_Lable[i]); /*距离标题*/
}
Read_Distance(&distancevalue);
LCD_Set_DispPositon(3,4); /*距离*/
disbit1=distancevalue/100;
LCD_Wr_Data(0x30+disbit1);
temp=distancevalue%100; /*取余数*/
disbit2=temp/10;
LCD_Wr_Data(0x30+disbit2);
disbit3=temp%10;
LCD_Wr_Data(0x30+disbit3);
LCD_Set_DispPositon(3,6);
LCD_Wr_Data(CMeter_Lable[0]);
LCD_Wr_Data(CMeter_Lable[1]); /*CM标签*/
j=0; /*0-还未改前半字符,1-改了前半字符,2-改了后半字符*/
i=1; /*按方向键的次数(循环)*/
LCD_Wr_Cmd(0x0F); /*游标显示*/
LCD_Distance_Formkey_scan:
switch(i)
{
case 1:
cur_pst=4;
break;
case 2:
cur_pst=5;
break;
default:
cur_pst=4;
break;
}
if(j==0)LCD_Set_DispPositon(3,cur_pst);
while(!Key_Press_Ack()); /*扫描键盘*/
key=Key_Value();
while(Key_Press_Ack()); /*判断是否起键*/
switch(key)
{
case Key_Up:
EA=1;
return Key_Up;
case Key_Down:
EA=1;
return Key_Down;
case Key_Fuc:
EA=1;
return Key_Fuc;
case Key_Ent:
if((disbit1*100+disbit2*10+disbit3)>255)
{
LCD_Wr_Cmd(0x0C);
goto LCD_Distance_Form_St;
}
distancevalue=disbit1*100+disbit2*10+disbit3;
Set_Distance(distancevalue);
EA=1;
return Key_Down;
case Key_Left:
j=0;
i--;
if(i==0) i=2;
goto LCD_Distance_Formkey_scan;
case Key_Right:
j=0;
i++;
if(i==3)i=1;
goto LCD_Distance_Formkey_scan;
default: /*数字*/
LCD_Wr_Data(0x30+key);
j++;
if((j==1)&&(i==2))
{
LCD_Wr_Data(0x20);/*空写一个键*/
j++;
}
switch(cur_pst)
{
case 4:
if(j==1)disbit1=key;
else if(j==2)disbit2=key;
break;
case 5:
if(j==2)disbit3=key;
break;
}
if(j==2)
{
j=0;
i++;
if(i==3) i=1;
}
goto LCD_Distance_Formkey_scan;
}
}
/* 灵敏度设置窗口 */
unsigned char LCD_Scal_Form()
{
unsigned char i,j,Int_Bit[4],Deci_Bit[2],key,cur_pst;
unsigned int temp,IntPart,DeciPart;
EA=0;
LCD_Wr_Cmd(0x01); /*清屏*/
LCD_Set_DispPositon(1,3);
for(i=0;i<10;i++)
{
LCD_Wr_Data(Scal_Lable[i]); /*灵敏度标题*/
}
Read_Scal(&IntPart, &DeciPart);
LCD_Set_DispPositon(3,3); /*灵敏度*/
LCD_Wr_Data(0x30);
LCD_Wr_Data(0x2E); /*0.*/
Int_Bit[0]=IntPart/1000;
temp=IntPart%1000;
Int_Bit[1]=temp/100;
temp=temp%100;
Int_Bit[2]=temp/10;
temp=temp%10;
Int_Bit[3]=temp;
for(i=0;i<4;i++)LCD_Wr_Data(0x30+Int_Bit[i]);
Deci_Bit[0]=DeciPart/10;
temp=DeciPart%10;
Deci_Bit[1]=temp;
for(i=0;i<2;i++)LCD_Wr_Data(0x30+Deci_Bit[i]);
LCD_Set_DispPositon(4,3);
for(i=0;i<10;i++)
{
LCD_Wr_Data(Scal_Unit_Lable[i]); /*公斤/单位*/
}
j=0; /*0-还未改前半字符,1-改了前半字符,2-改了后半字符*/
i=1; /*按方向键的次数(循环)*/
LCD_Wr_Cmd(0x0F); /*游标显示*/
LCD_Scal_Formkey_scan:
switch(i)
{
case 1:
cur_pst=4;
break;
case 2:
cur_pst=5;
break;
case 3:
cur_pst=6;
break;
default:
cur_pst=4;
break;
}
if(j==0)LCD_Set_DispPositon(3,cur_pst);
while(!Key_Press_Ack()); /*扫描键盘*/
key=Key_Value();
while(Key_Press_Ack()); /*判断是否起键*/
switch(key)
{
case Key_Up:
EA=1;
return Key_Up;
case Key_Down:
EA=1;
return Key_Down;
case Key_Fuc:
EA=1;
return Key_Fuc;
case Key_Ent:
IntPart=Int_Bit[0]*1000+Int_Bit[1]*100+Int_Bit[2]*10+Int_Bit[3];
DeciPart=Deci_Bit[0]*10+Deci_Bit[1];
Set_Scal(IntPart, DeciPart);
EA=1;
return Key_Down;
case Key_Left:
j=0;
i--;
if(i==0) i=3;
goto LCD_Scal_Formkey_scan;
case Key_Right:
j=0;
i++;
if(i==4)i=1;
goto LCD_Scal_Formkey_scan;
default: /*数字*/
LCD_Wr_Data(0x30+key);
j++;
switch(cur_pst)
{
case 4:
if(j==1)Int_Bit[0]=key;
else if(j==2)Int_Bit[1]=key;
break;
case 5:
if(j==1)Int_Bit[2]=key;
else if(j==2)Int_Bit[3]=key;
break;
case 6:
if(j==1)Deci_Bit[0]=key;
else if(j==2)Deci_Bit[1]=key;
break;
}
if(j==2)
{
j=0;
i++;
if(i==4) i=1;
}
goto LCD_Scal_Formkey_scan;
}
}
/* 补偿值设置窗口 */
unsigned char LCD_Offset_Form()
{
unsigned char i,offset_Bit[5],key;
unsigned int offset;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -