没有写DAC 的输出(因为还不是很会
#include<stc15f2k60s2.h>
#include"onewire.h"
unsigned char wei[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char duan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf,0xff,0xc6,0x8c,0x88,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //12"c"13"p"14"a"15开始是有点数
unsigned char tab[8]={0};
unsigned char key_mode=0;
unsigned char key_add=0;
unsigned char key_jian=0;
unsigned char canshu_temp=25;
//unsigned char led=0xfe;
unsigned int shuchu=0;
bit mode_DAC=0;
bit flag=0;
float temp=0;
void delayms(unsigned int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=0;j<845;j++);
}
void HC_138(unsigned char m)
{
switch(m)
{
case(4):P2|=0X80;P2&=0X9F;break;
case(5):P2|=0XA0;P2&=0XBF;break;
case(6):P2|=0XC0;P2&=0XDF;break;
case(7):P2|=0XE0;P2&=0XFF;break;
}
}
void allinit()
{
HC_138(4);P0=0XFF;
HC_138(5);P0=0X00;
HC_138(6);P0=0X00;
HC_138(7);P0=0XFF;
}
void timer0init()
{
TMOD=0X01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
static char i=0,m=0;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
HC_138(6);
P0=wei[i];
HC_138(7);
P0=duan[tab[i]];
i++;
if(i==8)
i=0;
m++;
if(m==10)
{
flag=~flag;
m=0;
}
}
void keyscan()
{
P44=0;P42=1;P35=1;P34=1;P33=1;P32=1;P31=1;P30=1;
if(P33==0)
{
delayms(10);
if(P33==0)
{
key_mode++;
if(key_mode==3)
key_mode=0;
}
while(!P33);
}
if(P32==0)
{
delayms(10);
if(P32==0)
{
mode_DAC=~mode_DAC;
}
while(!P32);
}
P44=1;P42=0;P35=1;P34=1;P33=1;P32=1;P31=1;P30=1;
if(P33==0)
{
delayms(10);
if(P33==0)
{
if(key_mode==1)
key_jian++;
}
while(!P33);
}
if(P32==0)
{
delayms(10);
if(P32==0)
{
if(key_mode==1)
key_add++;
}
while(!P32);
}
}
void keyshow()
{
if(key_mode==0)
{
if(flag==1)
{
if(mode_DAC==0)
{
HC_138(4);
P0=0xfc;
}
else
{
HC_138(4);
P0=~0x02;
}
}
tab[0]=12;
tab[1]=11;
tab[2]=11;
tab[3]=11;
tab[4]=tempget()/1000;
tab[5]=tempget()%1000/100+15;
tab[6]=tempget()%100/10;
tab[7]=tempget()%10;
temp=tempget()/100;
}
if(key_mode==1)
{
canshu_temp=25+key_add-key_jian;
if((canshu_temp<0)|(canshu_temp>99))
{
canshu_temp=25;
key_add=0;
key_jian=0;
}
tab[0]=13;
tab[1]=11;
tab[2]=11;
tab[3]=11;
tab[4]=11;
tab[5]=11;
tab[6]=canshu_temp/10;
tab[7]=canshu_temp%10;
if(flag==1)
{
if(mode_DAC==0)
{
HC_138(4);
P0=0xfa;
}
else
{
HC_138(4);
P0=~0x04;
}
}
}
if(key_mode==2)
{
if(flag==1)
{
if(mode_DAC==0)
{
HC_138(4);
P0=0xf6;
}
else
{
HC_138(4);
P0=~0x08;
}
}
if(mode_DAC==0) //模式1
{
// led=0xfe;
if(temp<=canshu_temp)
shuchu=0;
else
shuchu=500;
}
else if(mode_DAC==1)//模式二
{
// led=0xff;
if(temp<=20)
shuchu=100;
else if(temp>=40)
shuchu=400;
else if((temp>20)&(temp<40))
shuchu=((tempget()-2000)*15+10000)/100;
}
tab[0]=14;
tab[1]=11;
tab[2]=11;
tab[3]=11;
tab[4]=11;
tab[5]=shuchu/100+15;
tab[6]=shuchu%100/10;
tab[7]=shuchu%10;
}
}
void main()
{
allinit();
timer0init();
while(1)
{
keyscan();
keyshow();
}
}