📄 ocm12864.c
字号:
pScr_Row++;
}
}
}
/*****************************/
/*函数原型:Clear_Dis(unsigned char ucCurRow,unsigned char y)
/*参数:ucCurRow,y
/*功能:清区
/*说明:ucCurRow为1,2,3,4时分别表示为第1,2,3,4行;y为液晶显示的列值
/*****************************/
void Clear_Dis(unsigned char ucCurRow,unsigned char y)
{
unsigned char i,x = 0;
switch(ucCurRow)
{
case 1:
x = 0;
break;
case 2:
x = 1;
break;
case 3:
x = 2;
break;
case 4:
x = 3;
break;
default:
return ;
}
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
set_adr(2*x,y); //设置页地址
for(i = 0;i < 64 - y;i ++)
wdata(0,cs1,cs2);
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
set_adr(2*x + 1,y); //设置页地址
for(i = 0;i < 64 - y;i ++)
wdata(0,cs1,cs2);
}
/*****************************/
/*函数原型:Show_Scr(unsigned char ucCurScr,unsigned char ucCurRow,unsigned char ucSelect,unsigned char * pScr_Row)
/*参数:ucCurScr,ucCurRow,ucSelect,* pScr_Row
/*功能:显示屏信息
/*说明:ucCurScr为屏显号;ucCurRow为1,2,3,4时分别表示为第1,2,3,4行;
/* ucSelect为0时为正选,反之则为反显;* pScr_Row指向字模显示的内容
/*****************************/
void Show_Scr(unsigned char ucCurScr,unsigned char ucCurRow,unsigned char ucSelect,unsigned char * pScr_Row)
{
unsigned char str[15] = {""},i = 0,*p;
// Clear_Dis(ucCurRow,0); //清区
if(ucCurScr == 5&&ucCurRow == 1)
{
p = FnZM[ucFn]; //是第五屏一区的话,先加上Fn??????
while(*p)
{
str[i ++ ] = *p ++;
}
}
if(bChinese == 1) //选择中文菜单
p = Scr_Dis[ucCurScr + 19][ucCurRow - 1]; //取区固定信息
else
p = Scr_Dis[ucCurScr][ucCurRow - 1]; //取区固定信息
while(*p)
{
str[i ++ ] = *p ++;
}
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
p = pScr_Row;
if(ucCurScr == 5&&ucCurRow == 1) //是第五屏一区的话,处理中文变量,为刀或笔时
{
if(bChinese == 1)
{
if(*p == 'K') //为刀
p = KnorPenZM[2];
else if(*p == 'H') //为半刀
p = KnorPenZM[1];
else //为笔
p = KnorPenZM[0];
}
while(*p)
{
str[i ++ ] = *p ++;
}
}
else
{
//处理中文变量,为中文或英文
if(ucCurScr == 15&&ucCurRow == 1)
{
if(*p == 'C') //选中文
{
bChinese = 1;
p = EnorChZM[0];
}
else if(bChinese == 1&&*p == 'E') //选英文
{
bChinese = 0;
}
}
while(*p)
{
str[i ++ ] = *p ++;
}
}
for(;i < 8;i ++) //添满整区
str[i] = 32;
str[i] = '\0';
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
switch(ucCurRow)
{
case 1:
Show12832_Row(0,0,ucSelect,str); //区信息显示函数,x为显示页,c为显示左右屏,lenght为字符长度,pScr_Row为显示信息内容
break;
case 2:
Show12832_Row(0,64,ucSelect,str); //区信息显示函数,x为显示页,c为显示左右屏,lenght为字符长度,pScr_Row为显示信息内容
break;
case 3:
Show12832_Row(1,0,ucSelect,str); //区信息显示函数,x为显示页,c为显示左右屏,lenght为字符长度,pScr_Row为显示信息内容
break;
case 4:
Show12832_Row(1,64,ucSelect,str); //区信息显示函数,x为显示页,c为显示左右屏,lenght为字符长度,pScr_Row为显示信息内容
break;
default:;
}
}
/****************************/
/********/
/*函数原型:ShowError(unsigned char bShow)
/*功能:液晶屏出错处理
/*说明:
/*************/
/****************************************/
void ShowError(unsigned char bShow) //出错提示函数
{
// unsigned char ScrRow[] = "刀笔速度刀笔速度";
// Show12832_Row(1,0,0,ScrRow);
// set_adr(0,63); //设置页地址
// wdata(0x01,1); //在最右上角显示一点
if(bShow)
{
set_adr(3,63); //设置页地址
wdata(0x80,1); //在最右下角显示一点
}
else
{
set_adr(3,63); //设置页地址
wdata(0x00,1); //在最右下角显示一点
}
}
/****************************/
/********/
/*函数原型:DataSR()
/*功能:下位机接收数据处理
/*说明:
/*************/
/****************************************/
void DataSR() //处理接收的数据
{
if(ucDCount != ucRCount)
{
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
if(Buffer[ucDCount][0] == 14) //第十四屏,特殊处理
{
if(Buffer[ucDCount][1] < 3) //为第一行
{
Clear_Dis(1,0); //清区
Clear_Dis(2,0); //清区
if(bChinese == 1) //选择中文菜单
Show12832_Row(0,16,Buffer[ucDCount][2],Scr_Dis[14 + 19][0]); //取区固定信息
else
Show12832_Row(0,20,Buffer[ucDCount][2],Scr_Dis[14][0]); //取区固定信息
}
else
{
Clear_Dis(3,0); //清区
Clear_Dis(4,0); //清区
if(bChinese == 1) //选择中文菜单
Show12832_Row(1,32,Buffer[ucDCount][2],Scr_Dis[14 + 19][2]); //取区固定信息
else
Show12832_Row(1,32,Buffer[ucDCount][2],Scr_Dis[14][2]); //取区固定信息
}
}
else if(Buffer[ucDCount][0] < 100) //为屏显信息,放在前面提高处理速度
Show_Scr(Buffer[ucDCount][0],Buffer[ucDCount][1],Buffer[ucDCount][2],&Buffer[ucDCount][3]);
else if(Buffer[ucDCount][0] == 126) //接收当前选中的刀号Fn
{
if(Buffer[ucDCount][1] > 0&&Buffer[ucDCount][1] < 5)
ucFn = Buffer[ucDCount][1] - 1;
}
else if(Buffer[ucDCount][0] == 124) //为显示坐标信息,即0屏
{
if(Buffer[ucDCount][1] == 1)
{
Clear_Dis(1,44); //清区
Clear_Dis(2,0); //清区
Show12832_Row(0,44,0,&Buffer[ucDCount][2]);
}
else if(Buffer[ucDCount][1] == 2)
{
Clear_Dis(3,44); //清区
Clear_Dis(4,0); //清区
Show12832_Row(1,44,0,&Buffer[ucDCount][2]);
}
else if(Buffer[ucDCount][1] == 3) //显示固定信息
{
Lcd_Init(); //清屏
Show12832_Row(0,28,0,Scr_Dis[0][0]);
Show12832_Row(1,28,0,Scr_Dis[0][2]);
}
}
else if(Buffer[ucDCount][0] == 101)
P33 = 0; //点亮暂停灯
else if(Buffer[ucDCount][0] == 102)
P33 = 1; //熄灭暂停灯
else if(Buffer[ucDCount][0] == 103)
P05 = 0; //设置新加工起点灯亮
else if(Buffer[ucDCount][0] == 104)
P05 = 1; //设置新加工起点灯灭
else if(Buffer[ucDCount][0] == 119)
P07 = 0; //点亮X暂停灯
else if(Buffer[ucDCount][0] == 120)
P07 = 1; //熄灭X暂停灯
else if(Buffer[ucDCount][0] == 121)
P27 = 0; //点亮Y暂停灯
else if(Buffer[ucDCount][0] == 122)
P27 = 1; //熄灭Y暂停灯
else if(Buffer[ucDCount][0] == 105) //点亮数据接收灯
P06 = 0;
else if(Buffer[ucDCount][0] == 106) //熄灭数据接收灯
P06 = 1;
else if(Buffer[ucDCount][0] == 118) //为英文界面
bChinese = 0;
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
ucDCount++;
if(ucDCount >= RDCOUNT)
ucDCount = 0;
if(bErrorFlag)
{
ShowError(0); //清出错标志
bErrorFlag = 0;
}
}
//这样就保证每次只发送一次按键,以使上位机能接收到
if(bReceError1||bReceError2) //产生通讯错误
{
if(bReceError1) //add by zhx,05.12.29, 如果校验和有错,输出提示信息
{
Show12832_Row(1,64,1,StrError[0]);
bReceError1 = 0;
}
if(bReceError2 && ! bLast) //add by zhx,05.12.29, 如果校验和有错,输出提示信息
{
Show12832_Row(1,0,1,StrError[1]);
bReceError2 = 0;
}
// bReceError1 = bReceError2 = 0;
ShowError(1); //显示出错标志
bErrorFlag = 1;
if(! bLast) //非Last下
{
//发送率新键REFRESH
KeyValue[0] = REFRESH; //add by zhx,06.2.8, 发送率新REFRESH
Send_Info(1);
}
}
else if(bAllUp == 1) //当产生Last,并结束发送Up时,发送一次AllUP按键
{
bAllUp = 0;
KeyValue[0] = 34; //AllUP按键
Send_Info(1);
}
WDTRST = 0x1E; //启动看门狗
WDTRST = 0xE1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -