|
245黑币
代码如下
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*uchar code table[]=
{
0x3F,0x06,0x66,0x4F,
0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x77,0x7C,
0x39,0x5E,0x79,0x71,
0x76,0x38,0x37,0x3E,
0x73,0x5C,0x40,0x00,
};*/
char code table[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,
0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x02};
uchar WE[] = {0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7};
uchar Ly_Dis[4],Time1[3],Time2[3];
uchar dat, temp;
uint scale,num,num1,num2=990,num3;
bit CH,flag;
sbit CLK = P2^5;
sbit DI = P2^4;
sbit DO = P2^6;
sbit CS = P2^7;
sbit RELAY = P3^5;
sbit LED = P3^3;
sbit K1=P2^3;
sbit key2=P2^2;
sbit key3=P2^1;
sbit key4=P2^0;
void DelayMs(uint ms)
{
uint i, j;
for(i = ms; i > 0; i --)
for(j = 110; j > 0; j --);
}
uchar Adc0832(uchar CH)
{
uchar i, test, adval;
adval = 0x00;
test = 0x00;
CLK = 0;
DI = 1;
_nop_();
CS = 0;
_nop_();
CLK = 1;
_nop_();
if(CH == 0)
{
CLK = 0;
DI = 1; _nop_();
CLK = 1; _nop_();
CLK = 0;
DI = 0; _nop_();
CLK = 1; _nop_();
}
else
{
CLK = 0;
DI = 1; _nop_();
CLK = 1; _nop_();
CLK = 0;
DI = 1; _nop_();
CLK = 1; _nop_();
}
CLK = 0;
DI = 1;
for(i = 0; i < 8; i ++)
{
_nop_();
adval <<= 1;
CLK = 1; _nop_();
CLK = 0;
if(DO)
adval |= 0x01;
else
adval |= 0x00;
}
for(i = 0; i < 8; i ++)
{
test >>= 1;
if(DO)
test |= 0x80;
else
test |= 0x00;
_nop_();
CLK = 1; _nop_();
CLK = 0;
}
if(test == adval)
dat = test;
_nop_();
CS = 1;
DO= 1;
CLK = 1;
return dat;
}
void Display(uchar num)
{
uint i;
for(i = 0; i < 3; i ++)
{
Ly_Dis[2 - i] = num % 10;
num = num / 10;
}
Ly_Dis[3] = 0;
P0 = WE[0];
P1 = table[Ly_Dis[0]];
DelayMs(4);
P0 = WE[1];
P1 = table[Ly_Dis[1]];
DelayMs(4);
P0 = WE[2];
P1 = table[Ly_Dis[2]];
DelayMs(4);
P0 = WE[3];
P1 = table[Ly_Dis[3]];
DelayMs(4);
}
void Display1()
{
Time1[0]=num1/100;
Time1[1]=num1%100/10;
Time1[2]=num1%10;
P0 = WE[5];
P1 = table[Time1[0]];
DelayMs(4);
P0 = WE[6];
P1 = table[Time1[1]];
DelayMs(4);
P0 = WE[7];
P1 = table[Time1[2]];
DelayMs(4);
}
Display2()
{
Time2[0]=num2/100;
Time2[1]=num2%100/10;
Time2[2]=num2%10;
P0 = WE[5];
P1 = table[Time2[0]];
DelayMs(4);
P0 = WE[6];
P1 = table[Time2[1]];
DelayMs(4);
P0 = WE[7];
P1 = table[Time2[2]];
DelayMs(4);
}
void Relay()
{
if(temp >= 125&&temp!=0)
{
RELAY = 0;
}
else
{
if(temp!=0)
RELAY = 1;
}
}
void Init()
{
RELAY = 1;
LED = 0;
TMOD=0x12;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET1=1;
TR1=1;
}
void KeyScan()
{
if(K1 == 0)
{
DelayMs(10);
if(K1 == 0)
{
scale++;
if(scale==10)
scale=0;
}
while(!K1);
}
if(key2==0)
{
DelayMs(10);
if(key2==0)
{
flag=~flag;
}
while(!key2);
}
if(key3==0)
{
DelayMs(10);
if(key3==0)
{
num2+=10;
if(num2==990)
num2=0;
}
while(!key3);
}
if(key4==0)
{
DelayMs(10);
if(key4==0)
{
num2-=10;
if(num2==0)
num2=990;
}
while(!key4);
}
}
void main()
{
uint i;
Init();
while(1)
{
temp = Adc0832(1);
i ++;
if(i == 50)
{
if(temp != 0)
//Display(temp);
//DelayMs(100);
i = 0;
}
Relay();
KeyScan();
if(flag==0)
Display1();
else
Display2();
if(num1==num2)
{
LED=1;
while(!key2);
}
}
}
void timer0() interrupt 1
{
static uint tt;
tt++;
if(tt==10)
{
tt=0;
LED=0;
}
if(scale==tt)
LED=1;
}
void Timer1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num++;
if(num==20)
{
num=0;
num3++;
if(num3==60)
{
num3=0;
num1++;
if(num1==990)
num1=0;
}
}
}
|
|