📄 a123.c
字号:
#include <reg52.h>
#include <string.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//#define addata P1
//#define disdata P0
#define t_set 25
uchar code sega_7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管无小数点
uchar code segb_7[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //共阳数码管有小数点
sbit aa=P2^0; //数码管片选0
sbit bb=P2^1; //数码管片选1
sbit cc=P2^2; //数码管片选2
sbit ysj=P2^3; // 压缩机
sbit nx=P2^4; //逆转
sbit qf=P2^5; //强风
sbit zf=P2^6; //中风
sbit rf=P2^7; //弱风
sbit keyset=P3^0; //温度设定
sbit keydown=P3^1; //温度减
sbit keyup=P3^2; //温度加
sbit adeoc=P3^6; //EOC
sbit adst=P3^3; //START
sbit adoe=P3^7; //OE
uint t0; //设定温度
uint t1; //室温
uint time_c;
uint time_c1;
int q;
//50ms定时 ( 师傅的)
void T0_time() interrupt 1 using 1
{
TH0=(65536-50000)/256; //50ms延时
TL0=(65536-50000)%256;
time_c++;
}
void T1_time() interrupt 3 using 1
{
TH1=(65536-50000)/256; //50ms延时
TL1=(65536-50000)%256;
time_c1++;
}
//(师傅的)
void delay(uint i)
{
uint j;
for(;i>0;i--)
for(j=0;j<125;j++);
}
void initial(void)
{
P2=0xff;
P1=0xff;
P0=0xff;
P3=0x17;
t0=200;
EA=0;
time_c=0;
time_c1=0;
q=1;
//ysj=1;
//nx=1;
//qf=1;
//rf=1;
//zf=1;
}
void display(uint temp)
{
uint k;
for(k=1;k<4;k++)
{
if (k==1)
{
P0=sega_7[temp%10];//0
aa=0;
}
else
{
if(k==2)
{
P0=segb_7[temp%100/10];//1
bb=0;
}
else
{
if(k==3)
{
P0=sega_7[temp/100];//2
cc=0;
}
}
}
delay(20);
aa=1;
bb=1;
cc=1;
}
}
uint zh()
{
uint zz,tt;
adst=0;
adst=1;
_nop_();
adst=0;
while(adeoc==0);
//_nop_();
adoe=1;
zz=P1;
adoe=0;
tt=196*zz/100+78*zz/100000; //转换温度,tt=500/255对应50度
return(tt);
}
void keyupscan()
{
t0=t0+5;
display(t0);
while(keyup==0);
}
void keydownscan()
{
t0=t0-5;
display(t0);
while(keydown==0) ;
}
void keyscan()
{
TR0=1;
while(time_c<=100)
{ display(t0);
if((keyup==0)||(keydown==0)||(keyset==0))
{
delay(20);
time_c1=time_c1+time_c;
if((keyup==0)||(keydown==0)||(keyset==0))
{
time_c=0;
if(keyup==0) keyupscan();
if(keydown==0) keydownscan();
}
}
}
TR0=0;
time_c=0;
}
void fd()
{
if(t0!=t1)
{
//int z;
//z=ysj;
ysj=0;
// q=1;
//if(ysj!=z)
//time_c1=0;
if(TR1!=1)
{
time_c1=0;
}
TR1=1;
if(t0>t1)
{
nx=0;
q=nx;
if((t0-t1)>=20)
{
qf=0;
rf=1;
zf=1;
}
else
{
zf=0;
qf=1;
rf=1;
}
}
if(t0<t1)
{
nx=1;
if((t1-t0)>=20)
{
qf=0;
rf=1;
zf=1;
}
else
{
zf=0;
qf=1;
rf=1;
}
}
/* if(((t1-t0)>=20)||((t0-t1)>=20))
{
qf=0;
rf=1;
zf=1;
}
else
{
zf=0;
qf=1;
rf=1;
}*/
}
else
{
rf=0;
qf=1;
zf=1;
nx=q;
if(time_c1<2400)
{
//TR1=1;
ysj=0;
if(q==0)
nx=0;
if((keyup==0)||(keydown==0)||(keyset==0))
{
delay(20);
if((keyup==0)||(keydown==0)||(keyset==0))
{
if(keyset==0) display(t0);
if(keyup==0) keyupscan();
if(keydown==0) keydownscan();
keyscan();
}
}
//if(time_c1==2400)
// {time_c=0;
// q=1;}
/* if(keyset==0)
{
delay(20);
if(keyset==0)
{
keyscan();
}
} */
}
// if((time_c==0) &&(time_c1>2400))
if(time_c1>=2400)
{ysj=1;
q=1;
TR1=0;
/* if(TR1!=1)
{
time_c1=0;
}**/
}
}
}
void main()
{
initial();
TMOD=0X11;
TH0=(65536-50000)/256; //50ms延时
TL0=(65536-50000)%256;
TH1=(65536-50000)/256; //50ms延时
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
while(1)
{
t1=zh();
fd();
display(t1);
if((keyup==0)||(keydown==0)||(keyset==0))
{
delay(20);
if((keyup==0)||(keydown==0)||(keyset==0))
{
if(keyset==0) display(t0);
if(keyup==0) keyupscan();
if(keydown==0) keydownscan();
keyscan();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -