📄 fourchannel.c
字号:
{ case 0x70:kv=6;break;
case 0xb0:kv=5;break;
case 0xd0:kv=4;break;
case 0xe0:kv=14;break;//print
default:kv=15;}
break;
case 4:switch(line)
{ case 0x70:kv=3;break;
case 0xb0:kv=2;break;
case 0xd0:kv=1;break;
default:kv=15;}
break;
}
return (kv);
}
void lcd_busy(void) //忙判断
{ p_di=0;p_rw=1;
P0=0xff;
while(1)//while(1)
{ p_e=1;
if(P0<0x80){break;}
p_e=0;
}
p_e=0;
}
void pwmthreeoutup(uchar outvalue) //电机升速驱动outvalue<0-7>
{ uint data ede;
TH1=0Xf0; TL1=0XC0;
IE|=0x88; TMOD|=0x10;
T2MOD=0X02; TR1=1;
TR2=0;pwml=RCAP2H;pwmh=RCAP2L;TR2=1;
ede=(uint)(5606742/(0xffff-pwma));
while(1)
{ ede=ede+10;
pwma=0xffff-(uint)(5606742/ede); //计算T2初值
while(pwmtimeover){;} //等到T1溢出中断(4MS)
TR2=0;RCAP2H=pwml;RCAP2L=pwmh;TR2=1;
pwmtimeover=1; //清中断时间到标志
if(pwm[outvalue][1]<ede) break;
}
pwma=pwm[outvalue][0];
TR2=0;RCAP2H=pwml;RCAP2L=pwmh;TR2=1;
TR1=0;IE&=0x77;
}
void pwmoutup(uchar outvalue) //启动电机
{ uint data ede=86;
TH1=0Xf0; TL1=0XC0;
IE|=0x88; TMOD|=0x10;
T2MOD=0X02; TR1=1;
while(1)
{ pwma=0xffff-(uint)(5606742/ede); //计算T2初值
ede=ede+4;
while(pwmtimeover){;} //等到T1溢出中断(4MS)
TR2=0;RCAP2H=pwml;RCAP2L=pwmh;TR2=1;
pwmtimeover=1; //清中断时间到标志
if(ede>2400) break; //判断是否到循环次数
}
pwmthreeoutup(outvalue);
}
void pwmoutdown() //pwm降速驱动输出
{ uint data ede;
TH1=0Xf0; TL1=0XC0;
IE|=0x88; TMOD|=0x10;TR1=1;
TR2=0; pwml=RCAP2H; pwmh=RCAP2L; TR2=1;
ede=(uint)(5606742/(0xffff-pwma));
while(1)
{ ede=ede-10;
pwma=0xffff-(uint)(5606742/ede); //计算T2初值
while(pwmtimeover){;} //等到T1溢出中断(4MS)
TR2=0; RCAP2H=pwml; RCAP2L=pwmh; TR2=1;
pwmtimeover=1; //清中断时间到标志
if(11>ede) break;
}
TR1=0; IE&=0xf7;
T2CON=0x00; T2MOD=0x00; pwmplus=0; //关闭T1定时,关闭pwm输出管
}
void setxy(uchar xy) //lcd地址设定
{ lcd_busy();p_di=0;p_rw=0;P0=0x80|xy;p_e=1;p_e=0;
}
void wrcommand(uchar u) //写lcd命令
{ lcd_busy();
p_di=0;
p_rw=0;p_e=1;P0=u;p_e=0;
}
void disphz(uchar valuh,uchar valul) //lcd显示汉字<valuh:汉字内码高位>
{ lcd_busy();p_di=1;p_rw=0;P0=valuh;p_e=1;p_e=0;lcd_busy();p_di=1;p_rw=0;P0=valul;p_e=1;p_e=0;
}
void dispen(uchar valuen) //lcd显示英文<valuen:asicii码>
{ lcd_busy();p_di=1;p_rw=0;P0=valuen;p_e=1;p_e=0;
}
void init(void) //lcd初始化※清屏
{ //wrcommand(0x08);//整体显示off;游标off ;游标闪烁off
wrcommand(0x01);//清除显示屏幕,把ddram位址计数器调整为“00h”
wrcommand(0x02);//把ddram位址计数器调整为“00h”,游标回原点,该功能不影响显示ddram
wrcommand(0x06);//设定光标右移,整体显示不移动
wrcommand(0x14);//整体显示左右移动,光标跟随移动,ac值不变
wrcommand(0x0e);//整体显示on游标on游标位置on
}
void print(uchar prin) //打印函数,汉字应调用两次本函数,高位在前
{ uchar data i=5; //延时
busy=1;stb=0;
while(busy);
P0=prin;while(i--);
stb=1;busy=1; //设busy为输入线
}
void pout1(void) //打印头文件
{ print(0x1b);print(0x38);print(0x04); //打印初始化,设定12*12点阵
print(0x1b);print(0x31);print(0x03);print(0x1b);print(0x20); print(0x00); //行间距3点
print(0xb1);print(0xe0);print(0xba);print(0xc5);print(0x3a);
print(0x30+numbers[0]);print(0x30+numbers[1]);print(0x30+numbers[2]);print(0x30+numbers[3]); //编号:7434
print(0x0d);print(0xd0);print(0xcd);print(0xba);print(0xc5);print(0x3a); //型号:
switch(type)
{ case 1:print(0x54);print(0x51);print(0x47);print(0x39);print(0x42);print(0x20);break; //tqg9b_双通道
case 2:print(0x54);print(0x51);print(0x47);print(0x31);print(0x35);print(0x42);break; //tqg15b_双通道
case 3:print(0x44);print(0x46);print(0x38);print(0x20);print(0x20);print(0x20);break; //df8_双通道
case 4:print(0x54);print(0x51);print(0x47);print(0x31);print(0x35);print(0x44);break; //tqg15d_四通道
case 5:print(0x44);print(0x46);print(0x31);print(0x36);print(0x20);print(0x20);break; //df16_四通道
}print(0xd0);print(0xcd); //型
print(0x0a);print(0x0a);print(0x0a);print(0x0a); //留出空白便于撕纸
}
void pout2(uchar ree,uchar group) //打印信息1ree:'通道号'<0-3>;group'组'<0-2>
{ print(0x1b);print(0x40);print(0x1b);print(0x38);print(0x04); //打印初始化,设定12*12点阵
print(0x1b);print(0x31);print(0x03);print(0x1b);print(0x20); print(0x00); //行间距3点
print(0xd7);print(0xee);print(0xd0);print(0xa1);print(0xd5);print(0xbc);print(0xbf);print(0xd5);print(0xb1);print(0xc8); //最小占空比:
print(0x3a);print(Disp[group][ree].DLDutyRatio[0]+0X30);print(Disp[group][ree].DLDutyRatio[1]+0X30);print(0x25);print(0x0d); //xx%
print(0xd7);print(0xee);print(0xb4);print(0xf3);print(0xd5);print(0xbc);print(0xbf);print(0xd5);print(0xb1);print(0xc8); //最大占空比:
print(0x3a);print(Disp[group][ree].DHDutyRatio[0]+0X30);print(Disp[group][ree].DHDutyRatio[1]+0X30);print(0x25);print(0x0d); //xx%
print(0xd7);print(0xee);print(0xb8);print(0xdf);print(0xb5);print(0xcd);print(0xb5);print(0xe7);print(0xc6);print(0xbd); //最高低电平
print(0x1b);print(0x36); //选择字符集1:
print(0x3a);if(Disp[group][ree].DLLevel[0]==0) print(Disp[group][ree].DLLevel[0]+0X30);print(0x2e);print(Disp[group][ree].DLLevel[1]+0X30);
print(Disp[group][ree].DLLevel[1]+0X30);print(0x56); // x.xxv
print(0x1b);print(0x38);print(0x04); //切换字符集到汉字12*12
print(0xd7);print(0xee);print(0xb5);print(0xcd);print(0xb8);print(0xdf);print(0xb5);print(0xe7);print(0xc6);print(0xbd); //最低高电平
print(0x1b);print(0x36); //选择字符集1:
print(0x3a);if(Disp[group][ree].DHLevel[0]==0) print(0x20);else print(Disp[group][ree].DHLevel[0]+0X30);print(Disp[group][ree].DHLevel[1]+0X30);
print(0x2e);print(Disp[group][ree].DHLevel[2]+0X30);print(0x56);print(0x0d); //xx.xv;
print(0x1b);print(0x38);print(0x04); //切换字符集到汉字12*12
print(0x41+ree);print(0x20);print(0xc2);print(0xf6);print(0xb3);print(0xe5);print(0xca);print(0xfd);print(0x3a);//A/B/C/D:脉冲数:
if(Disp[group][ree].PlusCount[0]!=0){print(Disp[group][ree].PlusCount[0]+0X30);}print(Disp[group][ree].PlusCount[1]+0X30);
print(Disp[group][ree].PlusCount[2]+0X30);print(0x0d); //200
print(0x1b);print(0x38);print(0x04); //切换字符集到汉字12*12
}
void pout3(uchar ree,uchar group) //公共通道打印 ree 0123代表abcd通道
{ print(0x1b);print(0x40);print(0x1b);print(0x38);print(0x04); //打印初始化,设定12*12点阵
print(0x1b);print(0x31);print(0x03);print(0x1b);print(0x20); print(0x00); //行间距3点
if(ree==0||ree==1)
{ print(0xcd);print(0xa8);print(0xb5);print(0xc0);print(0x42);print(0x3a); //通道B:
if(DError[1]==0){print(0xd5);print(0xfd);print(0xb3);print(0xa3);}
else {print(0xb4);print(0xed);print(0xce);print(0xf3);}print(0x0d); //正常/错误
print(0xcd);print(0xa8);print(0xb5);print(0xc0);print(0x41);print(0x3a); //通道A:
if(DError[0]==0){print(0xd5);print(0xfd);print(0xb3);print(0xa3);}
else {print(0xb4);print(0xed);print(0xce);print(0xf3);}print(0x0d); //正常/错误
}
else
{ print(0xcd);print(0xa8);print(0xb5);print(0xc0);print(0x44);print(0x3a); //通道D:
if(DError[3]==0){print(0xd5);print(0xfd);print(0xb3);print(0xa3);}
else {print(0xb4);print(0xed);print(0xce);print(0xf3);}print(0x0d); //正常/错误
print(0xcd);print(0xa8);print(0xb5);print(0xc0);print(0x43);print(0x3a); //通道C:
if(DError[2]==0){print(0xd5);print(0xfd);print(0xb3);print(0xa3);}
else {print(0xb4);print(0xed);print(0xce);print(0xf3);}print(0x0d); //正常/错误
}
print(0xd7);print(0xee);print(0xd0);print(0xa1);print(0xcf);print(0xe0);print(0xb2);print(0xee);print(0x3a); //最小相差
if(Disp[group][ree].DLPhaseDiff[0]!=0)print(Disp[group][ree].DLPhaseDiff[0]+0X30);else print(0x20);
print(Disp[group][ree].DLPhaseDiff[1]+0X30);print(Disp[group][ree].DLPhaseDiff[2]+0X30);print(0xb6);print(0xc8);print(0x0d); //xx 度:
print(0xd7);print(0xee);print(0xb4);print(0xf3);print(0xcf);print(0xe0);print(0xb2);print(0xee);print(0x3a); //最大相差:
if(Disp[group][ree].DHPhaseDiff[0]!=0)print(Disp[group][ree].DHPhaseDiff[0]+0X30);else print(0x20);
print(Disp[group][ree].DHPhaseDiff[1]+0X30);print(Disp[group][ree].DHPhaseDiff[2]+0X30);print(0xb6);print(0xc8);print(0x0d); //xx 度
}
void pout4(void) //打印信息尾
{ print(0x1b);print(0x40);print(0x1b);print(0x38);print(0x04);print(0x1b);print(0x36); //打印初始化,设定12*12点阵,选用字符集1
print(0x1b);print(0x31);print(0x03);print(0x1b);print(0x20); print(0x00); //行间距3点,字间距0点
print(0x1b);print(0x36); //使用字符集1
print(0x32);print(0x30);print(0x30+date[0]);print(0x30+date[1]);print(0x8c); //2005年
if(date[2]!=0) {print(0x30+date[2]);}print(0x30+date[3]);print(0x8d); //06月
if(date[4]!=0) {print(0x30+date[4]);}print(0x30+date[5]);print(0x8e); //15日
if(date[6]!=0) {print(0x30+date[6]);} else print(0x20); print(0x30+date[7]);
print(0x3a);print(0x30+date[8]);print(0x30+date[9]);print(0x0d); //15:40 当时间15:40中的1为零时不显示
print(0x1b);print(0x38);print(0x04); //切换字符集到汉字12*12
print(0xb4);print(0xab);print(0xb8);print(0xd0);print(0xc6);print(0xf7); //传感器
if(DError[0]||DError[1]||DError[2]||DError[3]){print(0xb2);print(0xbb);print(0xba);print(0xcf);print(0xb8);print(0xf1);}
else { print(0xba);print(0xcf);print(0xb8);print(0xf1);}print(0x0d); //不合格,合格
print(0xb1);print(0xe0);print(0xba);print(0xc5);print(0x3a);print(0x30+numbers[0]);
print(0x30+numbers[1]);print(0x30+numbers[2]);print(0x30+numbers[3]);print(0x0d); //编号:743
print(0xd0);print(0xcd);print(0xba);print(0xc5);print(0x3a); //型号:
switch(type)
{ case 1:print(0x54);print(0x51);print(0x47);print(0x39);print(0x42);print(0x20);break; //tqg9b_双通道
case 2:print(0x54);print(0x51);print(0x47);print(0x31);print(0x35);print(0x42);break; //tqg15b_双通道
case 3:print(0x44);print(0x46);print(0x38);print(0x20);print(0x20);print(0x20);break; //df8_双通道
case 4:print(0x54);print(0x51);print(0x47);print(0x31);print(0x35);print(0x44);break; //tqg15d_四通道
case 5:print(0x44);print(0x46);print(0x31);print(0x36);print(0x20);print(0x20);break; //df16_四通道
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -