📄 lcm16864zk.c
字号:
{
WritCommand(0x91);
WritData(0xb4);WritData(0xf2);WritData(0xd3);WritData(0xa1); //打印中请等待
WritData(0xd6);WritData(0xd0);WritData(0xc7);WritData(0xeb);
WritData(0xb5);WritData(0xc8);WritData(0xb4);WritData(0xfd);
}
void ShowPart21(void)
{
WritCommand(0x91);
WritData(0xc3);WritData(0xbb);WritData(0xd3);WritData(0xd0); //没有记录可打印
WritData(0xbc);WritData(0xc7);WritData(0xc2);WritData(0xbc);
WritData(0xb4);WritData(0xf2);WritData(0xd3);WritData(0xa1);
}
////////////////////////////////////报警
//////////////////////////////////////////////////////////////////
void RobSet(void) //防抢设置
{
WritCommand(0x01); //清零
WritCommand(0x0c);
WritCommand(0x92);
WritData(0xb7);WritData(0xc0);WritData(0xc7);WritData(0xc0); //防抢设置
WritData(0xc9);WritData(0xe8);WritData(0xd6);WritData(0xc3);
ShowPart5(); //显示 进入 另选
while(1)
{
if(RKEY==0)
{
Delay_ms(10);
if(RKEY==0)
{
while(1){if(RKEY==1) break; }
}
break;
}
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
while(1) {if(LKEY==1)break;}
RobData=0x00; //报警处警向量初始化为00
TeleAlarm(); //报警处警设置 电话报警:Y
WhistleAlarm(); //报警鸣笛:Y
AlarmRelay(); //报警接力:Y
BlankLocal(); //封锁现场:Y
EjectFog(); //喷射眠雾:Y
pdx=0x0101;
*pdx=RobData;
AnlTime(); //设置与等待时间
AnlNum(); //设置最少与数
RobSetNext(); //设置向量
break;
}
}
ShowTime();
}
}
void RobSetNext(void) //设置向量
{
uchar i;
WritCommand(0x0e);
i=EjectorNum(); //发射器编号
EmployeeNum(); //员工编号
AnlSet(); //逻辑关系
RobSet1(); //继续 填写
}
void TeleAlarm(void)
{
bit i=1;
WritCommand(0x01);
WritCommand(0x0e);
ShowPart3(); //电话报警:Y
ShowPart4(); //显示 确认 选择
while(1)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
while(1)
{if(LKEY==1) break;}
if(i==1) //如果选确认后 是Y ROBDATA的第一位为1
{
RobData=RobData|0x01;
}
else
{ //否则为0
RobData=RobData&0xfe;
}
}
break;
} //选择是Y 还是N
if(RKEY==0)
{
Delay_ms(10);
if(RKEY==0)
{
while(1)
{if(RKEY==1) break;}
i=~i;
if(i==1)
{
WritCommand(0x95);
WritData(0xa3);WritData(0xd9);
WritCommand(0x10);
}
else
{
WritCommand(0x95);
WritData(0xa3);WritData(0xce);
WritCommand(0x10);
}
}
}
WritCommand(0x95);
}
}
void WhistleAlarm(void) //鸣警笛设置
{
bit i=1;
WritCommand(0x01);
ShowPart6(); //鸣警笛 :Y
ShowPart4();
while(1)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
while(1)
{if(LKEY==1) break;}
if(i==1) //确认后如果是Y 则ROBDATA的第二位为1
{
RobData=RobData|0x02;
} //否则为0
else
{
RobData=RobData&0xfd;
}
}
break;
} //选择是Y或N
if(RKEY==0)
{
Delay_ms(10);
if(RKEY==0)
{
while(1)
{if(RKEY==1) break;}
WritCommand(0x95);
i=~i;
if(i==1)
{
WritCommand(0x95);
WritData(0xa3);WritData(0xd9);
WritCommand(0x10);
}
else
{
WritCommand(0x95);
WritData(0xa3);WritData(0xce);
WritCommand(0x10);
}
}
}
WritCommand(0x95);
}
}
//设置接力报警
void AlarmRelay(void)
{
bit i=1;
WritCommand(0x01);
ShowPart7(); //接力报警:Y
ShowPart4();
while(1)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{ //确认后是Y 则第三位为1
while(1)
{if(LKEY==1) break;}
if(i==1)
{
RobData=RobData|0x04;
} //否则为0
else
{
RobData=RobData&0xfb;
}
}
break;
} //选择是Y或是N
if(RKEY==0)
{
Delay_ms(10);
if(RKEY==0)
{
while(1)
{if(RKEY==1) break;}
WritCommand(0x95);
i=~i;
if(i==1)
{
WritCommand(0x95);
WritData(0xa3);WritData(0xd9);
WritCommand(0x10);
}
else
{
WritCommand(0x95);
WritData(0xa3);WritData(0xce);
WritCommand(0x10);
}
}
}
WritCommand(0x95);
}
}
void BlankLocal(void)
{
bit i=1;
WritCommand(0x01);
ShowPart8(); //封锁现场:Y
ShowPart4();
while(1)
{ //如果选确认后 是Y ROBDATA的第4位为1
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
while(1)
{if(LKEY==1) break;}
if(i==1)
{
RobData=RobData|0x08;
}
else //否则为0
{
RobData=RobData&0xf7;
}
}
break;
}
if(RKEY==0)
{ //选择是Y或是N
Delay_ms(10);
if(RKEY==0)
{
while(1)
{if(RKEY==1) break;}
WritCommand(0x95);
i=~i;
if(i==1)
{
WritCommand(0x95);
WritData(0xa3);WritData(0xd9);
WritCommand(0x10);
}
else
{
WritCommand(0x95);
WritData(0xa3);WritData(0xce);
WritCommand(0x10);
}
}
WritCommand(0x95);
}
}
}
void EjectFog(void)
{
bit i=1;
WritCommand(0x01);
ShowPart9(); //喷射眠雾:Y
ShowPart4();
while(1)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
while(1) //第五位是否为1 或 0
{if(LKEY==1) break;}
if(i==1)
{
RobData=RobData|0x10;
}
else
{
RobData=RobData&0xef;
}
}
break;
}
if(RKEY==0)
{
Delay_ms(10);
if(RKEY==0)
{
while(1)
{if(RKEY==1) break;}
WritCommand(0x95);
i=~i;
if(i==1)
{
WritCommand(0x95);
WritData(0xa3);WritData(0xd9);
WritCommand(0x10);
}
else
{
WritCommand(0x95);
WritData(0xa3);WritData(0xce);
WritCommand(0x10);
}
}
}
WritCommand(0x95);
}
}
void EmployeeNum(void)
{
uchar k=0,j;
uchar CodeN[4]={0,0,0,0};
WritCommand(0x01);
ShowPart10(); //员工编号 0
ShowPart1();
while(k<4)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
CodeN[k]=j;
while(1)
{
if(LKEY==1) break;
}
break;
}
}
if(MKEY==0) //按MKEY数字从0~9循环显示
{
Delay_ms(5);
if(MKEY==0)
{
j++;
if(j>9) j=0;
WritData(0xa3);
WritData(0xb0+j); //显示下个数
WritCommand(0x10);
while(1)
{
if(MKEY==1) break;
}
}
}
if(RKEY==0)
{ //光标移动到下一位 进行选择
Delay_ms(10); //延时去抖动
if(RKEY==0)
{
CodeN[k]=j;
WritCommand(0x14);
k++;
if(k>=4)
{k=0;WritCommand(0x94);}
WritData(0xa3);
WritData(0xb0);
WritCommand(0x10);
j=0;
while(1)
{
if(RKEY==1) break;
}
}
}
ShowTime();
WritCommand(0x94+k);
Delay_ms(10);
}
k=(CodeN[0]<<4)+CodeN[1]; //存入员工编号到相应的位置
pdx++;
*pdx=k;
pdx++;
k=(CodeN[2]<<4)+CodeN[3];
*pdx=k;
}
void AnlNum(void) //最少与数
{
uchar k=0,j;
WritCommand(0x01);
ShowPart11(); //最少与数 0
ShowPart1();
while(k<2)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
pdx++;
*pdx=j;
RobNum=j;
while(1)
{
if(LKEY==1) break;
}
break;
}
}
if(MKEY==0) //0~9个数字循环显示
{
Delay_ms(5);
if(MKEY==0)
{
j++;
if(j>9) j=0;
WritData(0xa3);
WritData(0xb0+j); //显示下个数
WritCommand(0x10);
while(1)
{
if(MKEY==1) break;
}
}
}
if(RKEY==0) //进入下一个位置选择
{
Delay_ms(10); //延时去抖动
if(RKEY==0)
{
WritCommand(0x96);
WritData(0xa3);
WritData(0xb0);
WritCommand(0x10);
}
}
ShowTime();
WritCommand(0x95);
Delay_ms(10);
}
}
void AnlSet(void) //逻辑关系
{
bit i=1;
WritCommand(0x01);
ShowPart12(); //逻辑关系: A
ShowPart4();
while(1)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0) //1表示是与的关系 0表示不是
{ //1表示是低级 0表示是高级可以直接产生报警
pdx++;
*pdx=i;
while(1)
{
if(LKEY==1) break;
}
break;
}
}
if(RKEY==0) //A 循环显示 B
{
Delay_ms(10); //延时去抖动
if(RKEY==0)
{
WritCommand(0x95);
i=~i;
if(i==1)
{
WritCommand(0x95);
WritData(0xa6);WritData(0xa1);
WritCommand(0x10);
}
else
{
WritCommand(0x95);
WritData(0xa6);WritData(0xa2);
WritCommand(0x10);
}
}
}
ShowTime();
WritCommand(0x95);
Delay_ms(10);
}
}
void AnlTime(void) //与等待时间
{
uchar j=0,k=0;
uchar CodeN[3]={0,0,0};
WritCommand(0x01);
ShowPart13(); //与等时间:000S
ShowPart1();
WritCommand(0x94);
while(k<3)
{
if(LKEY==0)
{
Delay_ms(10);
if(LKEY==0)
{
CodeN[k]=j;
while(1)
{
if(LKEY==1) break;
}
break;
}
}
if(MKEY==0) //0~9数字循环显示
{
Delay_ms(5);
if(MKEY==0)
{
j++;
if(j>9) j=0;
WritData(0xa3);
WritData(0xb0+j); //显示下个数
WritCommand(0x10);
while(1)
{
if(MKEY==1) break;
}
}
}
if(RKEY==0) //进入下一个位置选择
{
Delay_ms(10); //延时去抖动
if(RKEY==0)
{
CodeN[k]=j;
WritCommand(0x14);
k++;
if(k>=3)
{k=0;WritCommand(0x94);}
WritData(0xa3);
WritData(0xb0);
WritCommand(0x10);
j=0;
while(1)
{
if(RKEY==1) break;
}
}
}
ShowTime();
WritCommand(0x94+k);
Delay_ms(10);
}
k=CodeN[0]*100+CodeN[1]*10+CodeN[2];
pdx++;
*pdx=k;
}
void RobSet1(void) //填写 不填 继续
{
uchar i;
WritCommand(0x0c);
ShowPart14();
while(1)
{
if(LKEY==0) //填写则把刚输入完的数据写入外部RAM中
{
Delay_ms(10);
if(LKEY==0)
{
while(1)
{
if(LKEY==1) break;
}
pdx=0x0100;
i=*pdx;
*pdx=i+1;
break;
}
} //不填则放弃刚设定的数据
if(MKEY==0)
{
Delay_ms(10);
if(MKEY==0)
{
RobSetNext();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -