📄 p_hot.c
字号:
if(v1==1){op1=geted_time[5];}
if(v1==2){op1=geted_time[2];}
np1=op1&0x0f;
np2=op1&0xf0;
np2=np2>>4;
led_7219(1,led_bcd[np1]);
led_7219(2,led_bcd[np2]);
if(v1==1){op1=geted_time[0];}
if(v1==2){op1=geted_time[3];}
np1=op1&0x0f;
np2=op1&0xf0;
np2=np2>>4;
if(flagx==1){led_7219(3,led_bcd[np1]);}
else{temp1=led_bcd[np1]|0x80;led_7219(3,temp1);}
led_7219(4,led_bcd[np2]);
if(v1==1){op1=geted_time[1];}
if(v1==2){op1=geted_time[4];}
np1=op1&0x0f;
np2=op1&0xf0;
np2=np2>>4;
if(flagx==1){led_7219(5,led_bcd[np1]);}
else{temp1=led_bcd[np1]|0x80;led_7219(5,temp1);}
led_7219(6,led_bcd[np2]);
}
//////////////////////////////////////////////
void led_timed(void)
{
unsigned char op1,np1,np2,temp1;
get_time();
if(vv1==1){np1=10;np2=10;}
else
{
if(v1==1){op1=geted_time[5];}
if(v1==2){op1=geted_time[2];}
np1=op1&0x0f;
np2=op1&0xf0;
np2=np2>>4;
}
led_7219(1,led_bcd[np1]);
led_7219(2,led_bcd[np2]);
if(vv1==2){np1=10;np2=10;}
else
{
if(v1==1){op1=geted_time[0];}
if(v1==2){op1=geted_time[3];}
np1=op1&0x0f;
np2=op1&0xf0;
np2=np2>>4;
}
if(flagx==1){led_7219(3,led_bcd[np1]);}
else{temp1=led_bcd[np1]|0x80;led_7219(3,temp1);}
led_7219(4,led_bcd[np2]);
if(vv1==3){np1=10;np2=10;}
else
{
if(v1==1){op1=geted_time[1];}
if(v1==2){op1=geted_time[4];}
np1=op1&0x0f;
np2=op1&0xf0;
np2=np2>>4;
}
if(flagx==1){led_7219(5,led_bcd[np1]);}
else{temp1=led_bcd[np1]|0x80;led_7219(5,temp1);}
led_7219(6,led_bcd[np2]);
}
////////////////////////////////////////////////////////
void main(void)
{
unsigned char tempi1,tempi2,jjx,temp_v5;
float wx;
unsigned int temp_led;
dir=0xfc;
dir1=0x00;
dir2=0x80;
out2=0x80;
//////////////////
/*lcd_ini();
dataouto(0x01);
delay1(100);
WAIT();
lcd_char(0,"***Orient Sun***");
//lcd_char(16,"*Welcome To You*");
//lcd_data(16,0xaa);
//delay1(60000);
*/
///////////////////
write_cm(0x8e); //实时时钟的初始化
write_ds(0x00); //打开写保护
cs=0;
//delay();
//delay1(2);
sclk=0;
write_cm(0x80);
write_ds(0x00); //启动时钟
cs=0;
//delay1(2);
sclk=0;
write_cm(0x90);
write_ds(0xab); //充电设置
cs=0;
//delay1(2);
sclk=0;
write_cm(0x8e);
write_ds(0x80); //关闭写保护,禁止写操作
cs=0;
//delay1(2);
sclk=0;
TCON=0x01; //外部中断的边沿触发
SCON=0x50; //串行口工作方式1
PCON=0x00; //SMOD=0
//TMOD=0x20; //定时器1工作为方式2,8位定时器
TMOD=0x21; //定时器0工作为方式1,16位定时器;定时器1工作为方式2,8位定时器
TL0=0xaf;
TH0=0x3c; //使定时器0 每50ms溢出一次
TR0=1;
TL1=0xf3; //波特率为2400
TH1=0xf3;
IE=0x00; //暂时不开中断,等初始化完毕再开中断
TR1=1; //启动定时器1
ADCCON1=0x62; //a/d转换初始化
ADCCON2=0;
RCAP2L=0x00;
RCAP2H=0x60;
TL2=0x00;
TH2=0x60;
//EA=1;
EADC=1;
TR2=1;
/*pa2=0; //复位热敏打印机
out=temp_pa;
delay1(1000);
pa2=1;
out=temp_pa;
*/
///////////////////max7219初始化
pa4=1;
pa5=0;
out=temp_pa;
led_7219(0x09,0x00); //不采用BCD码显示
led_7219(0x0a,0x02); //选择亮度
led_7219(0x0b,0x05); //扫描六个数码管
led_7219(0x0c,0x01); //0 关闭所有显示器 1 允许显示
led_7219(0x0f,0x00); //0 led处于正常工作状态 1 允许显示
intial();
while(1){;}
/////////////////
IE=0xc2;
//////////////// //取指针
write_cm(0xc1);
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi1=xx2;
write_cm(0xc3);
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi2=xx2;
point1=tempi2*256+tempi1;
//lcd_data(24,tempi1);
write_cm(0xc5);
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi1=xx2;
write_cm(0xc7);
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi2=xx2;
point1a=tempi2*256+tempi1;
if(point1==~point1a)
{
count1=point1;
fpread(count1);
if(flash_read!=0xff){count1=count1+1;}
}
else{count1=0;point1=0;}
//lcd_data(28,tempi1);
write_cm(0xc9); //取变比
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi1=xx2;
write_cm(0xcb);
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi2=xx2;
if(tempi1==~tempi2){read_s=tempi1;}
else{read_s=1;}
//////////////
write_cm(0xcd); //取纵坐标范围
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi1=xx2;
write_cm(0xcf);
read_ds();
cs=0;
//delay1(2);
sclk=0;
tempi2=xx2;
if(tempi1==~tempi2){fan_wei=tempi1;}
else{fan_wei=0;}
//--------------------------------------
read_over_from_ds();
if((write_over_byte&0x01)==0)eight_c=0;else eight_c=1;
if((write_over_byte&0x02)==0)day_c=0;else day_c=1;
if((write_over_byte&0x04)==0)week_c=0;else week_c=1;
///////////////////////////////// //主循环
qqq:
if(minute_c==1)
{
process(); //调用数据处理程序
minute_c=0; //清分钟结束标志位
}
if(count1>=960&&eight_c==0){eight_c=1;write_over_flag=1;}
if(count1>=2880&&day_c==0){day_c=1;write_over_flag=1;}
if(count1>=20160&&week_c==0){week_c=1;write_over_flag=1;}
if(write_over_flag==1){write_over_flag=0;write_over_byte=0;
if(eight_c==1)write_over_byte|=0x01;
if(day_c==1)write_over_byte|=0x02;
if(week_c==1)write_over_byte|=0x04;
write_over_to_ds();
}
key_i=in1;
if(key_i==0xef){get_time();print8();}
if(key_i==0xdf){get_time();print24();}
if(key_i==0xbf){get_time();print168();}
if(key_i==0x7f)
{
out2=0x00;
delay3(1);
ledlp();
lpaper(7);
delay3(60);
out2=0x80;
//send(0x1b); //请打印机缓冲区
//send(0x40);
//send(0);
} //走纸
if(key_i==0xf6)
{
count1=0;
//fperase(0);
point1=count1;
point1a=~count1;
eight_c=0;
day_c=0;
week_c=0;
led_clear();
write_over_byte=0;
write_over_to_ds();
delay3(4);
}
//////////////////////////// //实时时钟的键盘和显示
if(key_i==0xfb)
{
flag_led=1;
delay2();
v1++;
if(v1==5){v1=1;}
if(flag2==1){vv1=1;}
}
if(flag_led==1) //以下程序完成从时钟设置状态自动回到电流记录显示状态
{
if((key_i&0x0f)!=0x0f)
{
IE=0x00;
TH0=0;
TL0=0;
TR0=1;
xtime=0;
}
if(TF0==1)
{
TF0=0;
TH0=0;
TL0=0;
xtime=xtime+1;
if(xtime>85)
{
xtime=0;
key_i=0xf7;
}
}
}
if(flag_led==1) //以下是实时时钟的主程序
{
switch(v1)
{
case 1:
if(flag2==1&jjx>13){led_timed();}
else {led_time();}
if(jjx>13){flagx=1;}
else{flagx=0;}
if(jjx>15){jjx=0;}
jjx++;
delay5();
break;
case 2: //读分
if(flag2==1&jjx>13){led_timed();}
else{led_time();}
if(jjx>13){flagx=1;}
else{flagx=0;}
if(jjx>15){jjx=0;}
jjx++;
delay5();
break;
case 3:
if(flag_led==1){led_dog(read_s);}
delay5();
break;
case 4:
if(flag_led==1){led_wei();}
delay5();
delay1(3000);
break;
}
if(key_i==0xfd) //时钟修改允许
{
write_cm(0x8e);
write_ds(0x00);
cs=0;
//delay1(2);
sclk=0;
delay2(); //原来的delay1();
vv1++;
if(vv1==4){vv1=1;}
flag2=1;
}
if(key_i==0xf7) //保存参数,修改保护,返回.
{
flag_led=0;
flag2=0;
v1=0;
vv1=0;
write_cm(0xc8); //存入变比
write_ds(read_s);
cs=0;
//delay1(2);
sclk=0;
tempi1=~read_s;
write_cm(0xca);
write_ds(tempi1);
cs=0;
//delay1(2);
sclk=0;
write_cm(0xcc); //存入纵坐标范围
write_ds(fan_wei);
cs=0;
//delay1(2);
sclk=0;
tempi1=~fan_wei;
write_cm(0xce);
write_ds(tempi1);
cs=0;
//delay1(2);
sclk=0;
write_cm(0x8e);
write_ds(0x80); //关闭写保护,禁止写操作
cs=0;
//delay1(2);
sclk=0;
TL0=0xb0;
TH0=0x3c;
//TR0=1;
IE=0xc2;
}
if(flag2==1)
{
if(key_i==0xfe) //修改参数
{
delay5();
delay5();
get_time();
if(v1==1&vv1==2)
{
xx2=geted_time[0];
bcd_bcd();
if(temp_hex>=59){temp_hex=0;}
else{temp_hex=temp_hex+1;}
}
if(v1==1&vv1==3)
{
xx2=geted_time[1];
bcd_bcd();
if(temp_hex>=23){temp_hex=0;}
else{temp_hex=temp_hex+1;}
}
if(v1==2&vv1==1)
{
xx2=geted_time[2];
bcd_bcd();
if(temp_hex>=31){temp_hex=1;}
else{temp_hex=temp_hex+1;}
}
if(v1==2&vv1==2)
{
xx2=geted_time[3];
bcd_bcd();
if(temp_hex>=12){temp_hex=1;}
else{temp_hex=temp_hex+1;}
}
if(v1==2&vv1==3)
{
xx2=geted_time[4];
bcd_bcd();
if(temp_hex>=99){temp_hex=0;}
else{temp_hex=temp_hex+1;}
}
bcd(temp_hex); //转化为BCD码
if(v1==1&vv1==2){temp_v5=0x82;} //修改分
if(v1==1&vv1==3){temp_v5=0x84;} //时
if(v1==2&vv1==1){temp_v5=0x86;} //日
if(v1==2&vv1==2){temp_v5=0x88;} //月
if(v1==2&vv1==3){temp_v5=0x8c;} //年
write_cm(temp_v5); //写入设定好的参数
write_ds(v7);
cs=0;
//delay1(2);
sclk=0;
//delay();
if(v1==3)
{
read_s=read_s+1;
if(read_s>=5){read_s=1;}
}
if(v1==4)
{
if(fan_wei==1){fan_wei=0;}
else{fan_wei=1;}
}
}
}
}
////////////////////////// //A/D采样后显示采样值
if(flag_ad==1)
{
flag_ad=0;
wx=ad_data*2.5/4095.0; //满度值为2.5V时A/D转换器的输入电压
if(read_s==1){wx=wx*50.0;}
else{wx=wx*read_s*100.0/3.0;} //0-2.5V对应0-250个点
if(flag_led==0&flag168==0&flag24==0&flag8==0)
{
temp_led=wx*10;
sum=sum+temp_led;
sum_i++;
if(sum_i>=6)
{
temp_led=sum/sum_i;
if(temp_led<(30+read_s*20))temp_led=0;
led_led(temp_led);
sum_i=0;
sum=0;
}
}
}
goto qqq;
}
///////////////////////////////////
void write_over_to_ds(void)
{
write_cm(0xd0); //存入over
write_ds(write_over_byte);
cs=0;
//delay1(2);
sclk=0;
write_cm(0xd2);
write_ds(~write_over_byte);
cs=0;
//delay1(2);
sclk=0;
}
void read_over_from_ds(void)
{
unsigned char temp_over1,temp_over2;
write_cm(0xd1); //取over
read_ds();
cs=0;
//delay1(2);
sclk=0;
temp_over1=xx2;
write_cm(0xd3);
read_ds();
cs=0;
//delay1(2);
sclk=0;
temp_over2=xx2;
if(temp_over1==~temp_over2)write_over_byte=temp_over1;else write_over_byte=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -