📄 p_hot.c
字号:
write_ds(0x00); //打开写保护
cs=0;
//delay();
//delay1(2);
sclk=0;
write_cm(0xc0);
write_ds(temp1);
cs=0;
//delay1(2);
sclk=0;
write_cm(0xc2);
write_ds(temp2);
cs=0;
//delay1(2);
sclk=0;
temp1=point1a;
temp2=point1a/256;
write_cm(0xc4);
write_ds(temp1);
cs=0;
//delay1(2);
sclk=0;
write_cm(0xc6);
write_ds(temp2);
cs=0;
//delay1(2);
sclk=0;
write_cm(0x8e);
write_ds(0x80); //关闭写保护,禁止写操作
cs=0;
//delay1(2);
sclk=0;
min_c=0; //清一分钟数据开始位标志位
max_c=0;
}
////////////////////////////////////////////////////////////////////
void printend()
{
unsigned char tempj1,tempj2,hour[5],ic1;
tempj1=temp_hour;
hour[0]=tempj1/100;
tempj1=tempj1-hour[0]*100;
hour[1]=tempj1/10;
hour[2]=tempj1-hour[1]*10;
tempj1=temp_minute;
hour[3]=temp_minute/10;
hour[4]=tempj1-hour[3]*10;
send(ESC); //初始化打印机
send(0x40);
send(0x0a);
send(0x0a);
send(0x1c); //让字符旋转270度打印
send(0x49);
send(0x00);
send(ESC); //打印16*16点阵汉字
send(0x38);
send(0x00);
send(ESC); //设置左限112
send(0x6c);
send(0x00);
send(ESC); //设置字间距为4个空白点
send(WORDSPACE);
send(0x04);
send(ESC); //设置行间距为10
send(0x31);
send(0x0d);
send(0xb4); //打印汉字:打印时间
send(0xf2);
send(0xd3);
send(0xa1);
send(0xca);
send(0xb1);
send(0xbc);
send(0xe4);
send(0x0a);
send(ESC); //打印字符集1
send(0x36);
send(ESC); //设置左限64
send(0x6c);
send(0x30);
send(ESC); //设置字间距为4个空白点
send(WORDSPACE);
send(0x04);
send(ESC); //设置行间距为10
send(0x31);
send(0x0a);
tempj1=geted_time[4]&0xf0;
tempj1=tempj1>>4;
tempj1=tempj1+0x30;
tempj2=geted_time[4]&0x0f;
tempj2=tempj2+0x30;
send(tempj1);
send(tempj2);
send(0xc8);
tempj1=geted_time[3]&0xf0;
tempj1=tempj1>>4;
tempj1=tempj1+0x30;
tempj2=geted_time[3]&0x0f;
tempj2=tempj2+0x30;
send(tempj1);
send(tempj2);
send(0xc8);
tempj1=geted_time[2]&0xf0;
tempj1=tempj1>>4;
tempj1=tempj1+0x30;
tempj2=geted_time[2]&0x0f;
tempj2=tempj2+0x30;
send(tempj1);
send(tempj2);
send(0x20);
tempj1=geted_time[1]&0xf0;
tempj1=tempj1>>4;
tempj1=tempj1+0x30;
tempj2=geted_time[1]&0x0f;
tempj2=tempj2+0x30;
send(tempj1);
send(tempj2);
send(0x3a);
tempj1=geted_time[0]&0xf0;
tempj1=tempj1>>4;
tempj1=tempj1+0x30;
tempj2=geted_time[0]&0x0f;
tempj2=tempj2+0x30;
send(tempj1);
send(tempj2);
send(0x3a);
tempj1=geted_time[5]&0xf0;
tempj1=tempj1>>4;
tempj1=tempj1+0x30;
tempj2=geted_time[5]&0x0f;
tempj2=tempj2+0x30;
send(tempj1);
send(tempj2);
send(0x0d);
send(0x1c); //让字符旋转270度打印
send(0x49);
send(0x00);
send(ESC); //打印16*16点阵汉字
send(0x38);
send(0x00);
send(ESC); //设置左限112
send(0x6c);
send(0x00);
send(ESC); //设置字间距为4个空白点
send(WORDSPACE);
send(0x04);
send(ESC); //设置行间距为10
send(0x31);
send(0x0d);
send(0xb4); //打印汉字:打印区间长
send(0xf2);
send(0xd3);
send(0xa1);
send(0xc7);
send(0xf8);
send(0xbc);
send(0xe4);
send(0xb3);
send(0xa4);
send(0x0a);
send(ESC); //打印字符集1
send(0x36);
send(ESC); //设置左限64
send(0x6c);
send(0x30);
send(ESC); //设置字间距为4个空白点
send(WORDSPACE);
send(0x04);
send(ESC); //设置行间距为10
send(0x31);
send(0x0a);
for(ic1=0;ic1<5;ic1++)
{
hour[ic1]=hour[ic1]+0x30;
}
send(hour[0]);
send(hour[1]);
send(hour[2]);
send(0x68);
send(0x6f);
send(0x75);
send(0x72);
send(0x73);
send(0x20);
send(hour[3]);
send(hour[4]);
send(0x6d);
send(0x69);
send(0x6e);
send(0x75);
send(0x74);
send(0x65);
send(0x73);
send(0x0d);
}
///////////////////////////////////////////////////////////////
void intial() //打印曲线头
{ int m1,m2;
//IE=0x00; //关串行口中断
send(ESC); //初始化打印机
send(0x40);
send(0x0a);
send(0x0a);
send(0x1c); //让字符旋转270度打印
send(0x49);
send(0x03);
//send(ESC); //打印16*16点阵汉字
send(0x1c);
send(0x26);
send(ESC); //设置左限64
send(0x6c);
send(0x40);
send(ESC); //设置字间距为8
send(0x70);
send(0x08);
send(ESC); //设置行间距为0
send(0x31);
send(0x00);
if(flag168==1)
{
for(m1=0;m1<=7;) //打印说明
{ for(m2=0;m2<=11;)
{ send(direction1[m1][m2]);
m2++;
}
send(0x0d);
m1++;
}
}
else
{
for(m1=0;m1<=6;) //打印说明
{ for(m2=0;m2<=11;)
{ send(direction[m1][m2]);
m2++;
}
send(0x0d);
m1++;
}
}
/* if(fan_wei==0)
{
send(ESC); //打印字符集1
send(0x36);
send(ESC); //设置左限0
send(0x6c);
send(0x00);
send(ESC); //设置字间距为12个空白点
send(WORDSPACE);
send(0x0c);
send(ESC); //设置行间距为0
send(0x31);
send(0x00);
send(0x20);
/////////////////
send(0x31);
send(0x31);
send(0x0a);
send(ESC); //设置字间距为12个空白点
send(WORDSPACE);
send(0x0c); //换行
send(0x20);
send(0x31);
send(0x30);
for(m1=0x39;m1>=0x32;m1--) send(m1); //打印“9-2”
send(0x0a);
send(0x49);
////////////////////////////
send(ESC); //设置字间距为12个空白点
send(WORDSPACE);
send(0x0c); //换行
for(m1=9;m1>=0;m1--) send(0x30); //打印9个"0"
send(0x0a);
}
else
{
send(ESC); //打印字符集1
send(0x36);
send(ESC); //设置左限0
send(0x6c);
send(0x00);
send(ESC); //设置字间距为32个空白点
send(WORDSPACE);
send(0x20);
send(ESC); //设置行间距为0
send(0x31);
send(0x00);
for(m1=0x36;m1>=0x31;m1--) send(m1); //打印“1-6”
send(0x0a);
//send(0x49);
for(m1=5;m1>=0;m1--) send(0x30); //打印6个"0"
send(0x0a);
}
send(ESC); //画一竖线
send(0x27);
send(0xc9);
for(m1=0;m1<201;m1++) send(m1);
send(0x0d);
//IE=0x92; //开串行口中断
*/
}
////////////////////////////////////////////////////////
void print8()
{
unsigned int temp_id,temp_y,temp1;
unsigned char temp2;
flag8=1;
j2=0;
last_max=200;
last_min=0;
led_print();
out2=0x00; //打开继电器
delay3(1);
//send(0x1b); //请打印机缓冲区
//send(0x40);
temp_id=point1;
if(eight_c==0)
{
temp1=temp_id;
temp_hour=temp1/120;
temp_minute=(temp1%120)/2;
}
else
{
temp_hour=8;
temp_minute=0;
}
intial();
delay3(120);
if(eight_c==0) //判断参数的数据是否超过八小时,打印第一个数据
{
draw(0,temp_id);
if(flag_end==1)goto end_8;
}
else //数据超过八小时
{ if(temp_id<960) //如果数据指针正好在八小时以内
{ temp_y=49151+temp_id-960; //求出八小时前指针的位置
draw(temp_y,49151);
if(flag_end==1)goto end_8;
draw(0,temp_id);
if(flag_end==1)goto end_8;
}
else //如果数据指针正好在八小时以外
{ temp_y=temp_id-960+1; // 求出八小时前指针的位置
draw(temp_y,temp_id);
if(flag_end==1)goto end_8;
}
}
printend();
end_8:
//send(0x1b); //请打印机缓冲区
//send(0x40);
flag_end=0;
key_i=0xff;
lpaper(7); //走纸
flag8=0;
delay3(60);
out2=0x80;
//send(0x1b); //请打印机缓冲区
//send(0x40);
//lpaper(1);
//flag8=0;
}
////////////////////////////////////////////////////////
void print24()
{
unsigned int temp_id,temp_y,temp1;
flag24=1;
j2=0;
last_max=200;
last_min=0;
led_print();
out2=0x00; //打开继电器
delay3(1);
//send(0x1b); //请打印机缓冲区
//send(0x40);
temp_id=point1;
if(day_c==0)
{
temp1=temp_id;
temp_hour=temp1/120;
temp_minute=(temp1%120)/2;
}
else
{
temp_hour=24;
temp_minute=0;
}
intial();
delay3(120);
if(day_c==0) //判断参数的数据是否超过24小时,打印第一个数据
{
draw(0,temp_id);
if(flag_end==1)goto end_24;
}
else //数据超过24小时
{ if(temp_id<2880) //如果数据指针正好在24小时以内
{ temp_y=49151+temp_id-2880; //求出24小时前指针的位置
draw(temp_y,49151);
if(flag_end==1)goto end_24;
draw(0,temp_id);
if(flag_end==1)goto end_24;
}
else //如果数据指针正好在八小时以外
{ temp_y=temp_id-2880+1; // 求出八小时前指针的位置
draw(temp_y,temp_id);
if(flag_end==1)goto end_24;
}
}
printend();
end_24:
flag_end=0;
key_i=0xff;
lpaper(7); //走纸
flag24=0;
delay3(60);
//send(0x1b); //请打印机缓冲区
//send(0x40);
//send(0);
out2=0x80;
//send(0x1b); //请打印机缓冲区
//send(0x40);
}
////////////////////////////////////////////////////////
void print168()
{
unsigned int temp_id,temp_y,temp1;
flag168=1;
j2=0;
last_max=200;
last_min=0;
led_print();
out2=0x00; //打开继电器
delay3(1);
//send(0x1b); //请打印机缓冲区
//send(0x40);
temp_id=point1;
if(week_c==0)
{
temp1=temp_id;
temp_hour=temp1/120;
temp_minute=(temp1%120)/2;
}
else
{
temp_hour=168;
temp_minute=0;
}
//hot_head();
intial();
delay3(120);
if(week_c==0) //判断参数的数据是否超过八小时,打印第一个数据
{
draw(0,temp_id);
if(flag_end==1)goto end_168;
}
else //数据超过八小时
{ if(temp_id<20160) //如果数据指针正好在八小时以内
{ temp_y=49151+temp_id-20160; //求出八小时前指针的位置
draw(temp_y,49151);
if(flag_end==1)goto end_168;
draw(0,temp_id);
if(flag_end==1)goto end_168;
}
else //如果数据指针正好在八小时以外
{ temp_y=temp_id-20160+1; // 求出八小时前指针的位置
draw(temp_y,temp_id);
if(flag_end==1)goto end_168;
}
}
printend();
end_168:
flag_end=0;
key_i=0xff;
lpaper(7); //走纸
flag168=0;
delay3(60);
zhenprint=0;
out2=0x80; //关继电器
//send(0x1b); //请打印机缓冲区
//csend(0x40);
//flag168=0;
}
//////////////////////////////////////////////////////////////
void lian(unsigned char data_1,unsigned char data_2)
{
unsigned char tempmax,tempmin,ss1;
unsigned char tempi1,i2;
unsigned char print_data;
if(data_1>=data_2){tempmax=data_1;tempmin=data_2;}
else{tempmax=data_2;tempmin=data_1;}
if(tempmin>last_max){tempmin=last_max;}
if(tempmax<last_min){tempmax=last_min;}
last_max=tempmax;
last_min=tempmin;
if(fan_wei==0)
{
if(tempmax>200){tempmax=200;}
if(tempmin>200){tempmin=200;}
}
if(fan_wei==1)
{
if(tempmax<120){tempmax=120;}
tempmax=tempmax*2-240;
if(tempmin<120){tempmin=120;}
tempmin=tempmin*2-240;
}
send(ESC); //画曲线
send(0x27);
print_data=tempmax-tempmin; //计算最大值与最小值之间的差值
if(j1==0) //每隔10点画横坐标,打印新x+16个点
{ print_data=print_data+16; //把两点之间的阶跃空白补上
send(print_data); //打印x+16个点
for(tempi1=tempmin;tempi1<=tempmax;)
{ send(tempi1);
tempi1++;
}
for(tempi1=0;tempi1<199;) //发送坐标轴点
{ send(tempi1);
tempi1=tempi1+20;
}
send(0xcc);
send(0xcb);
send(0xca);
send(0xc9);
send(0xc8); //横坐标轴点
send(0x0d); //回车换行
if(j3==0){flag1=0;}
}
else
{
if(flag1==0)
{ switch(j2)
{
case 5: //在横坐标轴上打印坐标5共5行
ss++;
if(ss>5){ss=0;flag1=1;}
break;
case 10: //在横坐标轴上打印坐标10共9行
ss++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -