- 积分
- 3553
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2014-11-13
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
1,优化后的程序:
#include"reg51.h"
#define U16 unsigned int
#define U8 unsigned char
U16 temp=550,temp1;
U8 nn;
bit flag;
unsigned char dd0[]=" machine ON";
unsigned char dd1[]="machine OFF";
sbit rs=P1^1;
sbit en=P1^0; //Use really P5.4,test P2.4
sbit D0=ACC^0;
sbit D1=ACC^1;
sbit D2=ACC^2;
sbit D3=ACC^3;
sbit D4=ACC^4;
sbit D5=ACC^5;
sbit D6=ACC^6;
sbit D7=ACC^7;
void delay(U16 us)
{
U8 m;
while(us--)
for(m=0;m<30;m++);
}
void w1602c(U8 dat)
{
rs=0;
en=0;
ACC=dat;
P30=D0;
P31=D1;
P32=D2;
P33=D3;
P14=D4;
P15=D5;
P36=D6;
P37=D7;
delay(3);
en=1;
delay(3);
en=0;
}
void w1602d(U8 dat)
{
ACC=dat;
P30=D0;
P31=D1;
P32=D2;
P33=D3;
P14=D4;
P15=D5;
P36=D6;
P37=D7;
rs=1;
en=0;
delay(3);
en=1;
delay(3);
en=0;
}
void init1602()
{
w1602c(0x38);
w1602c(0x06);
w1602c(0x0c);
w1602c(0x01);
}
void InitADC()
{
P1ASF =0x04; //P1.2 ADC_IN - +
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR =0xe2;//ON_POWER
delay(2);
}
void disp(U16 dd)
{
w1602d(dd/1000+0x30);
w1602d((dd%1000)/100+0x30);
w1602d(((dd%1000)%100)/10+0x30);
w1602d(dd%10+0x30);
}
U16 ADC10()
{
// bit r; //test use
InitADC();
ADC_CONTR |=0x0a;
delay(2);
////*******Use really************//
while(!(ADC_CONTR & 0x10)); //
ADC_CONTR &=~0x10; //
temp=ADC_RES; //
temp=temp<<2; //
temp |=ADC_RESL; //
////*********end Use really******//
////////**test**************//
// if(r==0) //
// { //
// temp++; //
// if(temp>620)r=1; //
// } //
// if(r==1) //
// { //
// temp--; //
// if(temp<490)r=0; //
// } //
//////*****test end ******//
return temp;
}
void main()
{
U8 k;
init1602();
P1M1=0x40; //P1.2 DAC_in
P1M0=0x00;
CLK_DIV &=~0x20;
while(1)
{
temp1=ADC10();
if(temp<500)flag=1;
while(flag)
{
temp1=ADC10();
if(temp1>602)flag=0;
P13=1;
w1602c(0x80);
for(k=0;k<11;k++)
w1602d(dd0[k]);
w1602c(0xc0);
disp(temp1);
delay(2000);
}
//////////////////
while(!flag)
{
temp1=ADC10();
if(temp1<500)flag=1;
P13=0;
w1602c(0x80);
for(k=0;k<11;k++)
w1602d(dd1[k]);
w1602c(0xc0);
disp(temp1);
delay(2000);
}
}
}
#include"reg51.h"
#define U16 unsigned int
#define U8 unsigned char
U16 temp=600,temp1;
U8 nn;
bit flag;
unsigned char dd0[]=" SHANXI Dianzi";
unsigned char dd1[]=" VOIT_H:";
sbit rs=P3^7;
sbit en=P5^4;
sbit D0=ACC^0;
sbit D1=ACC^1;
sbit D2=ACC^2;
sbit D3=ACC^3;
sbit D4=ACC^4;
sbit D5=ACC^5;
sbit D6=ACC^6;
sbit D7=ACC^7;
void delay(U16 ms)
{
U8 m;
while(ms--)
for(m=0;m<30;m++);
}
void w1602c(unsigned char dat)
{
ACC=dat;
P11=D0;
P12=D1;
P13=D2;
P14=D3;
P15=D4;
P32=D5;
P33=D6;
P36=D7;
rs=0;
en=0;
delay(2);
en=1;
delay(2);
en=0;
}
void w1602d(unsigned char dat)
{
ACC=dat;
P11=D0;
P12=D1;
P13=D2;
P14=D3;
P15=D4;
P32=D5;
P33=D6;
P36=D7;
rs=1;
en=0;
delay(2);
en=1;
delay(2);
en=0;
}
void init1602()
{
w1602c(0x38);
w1602c(0x06);
w1602c(0x0c);
w1602c(0x01);
}
void InitADC()
{
P1ASF =0x01; //P1.2 ADC_IN
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR =0xE2;//ON_POWER
delay(2);
}
void disp(unsigned int dd)
{
char i;
for(i=0;i<8;i++)
w1602d(dd1);
w1602d(dd/1000+0x30);
w1602d((dd%1000)/100+0x30);
w1602d(((dd%1000)%100)/10+0x30);
w1602d(dd%10+0x30);
}
unsigned int ADC10()
{
char nn;
InitADC();
ADC_CONTR=0xea;
nn=10;
while(nn--);
while(!(ADC_CONTR & 0x10));
ADC_CONTR &=~0x10;
temp=ADC_RES;
temp=temp<<2;
temp |=ADC_RESL;
return temp;
}
void main()
{
unsigned char k;
init1602();
P1M1=0x01;
P1M0=0x00;
CLK_DIV &=~0x20;
while(1)
{
temp1=ADC10();
if(temp1<503) //for water
{
delay(30);
temp1=ADC10();
if(temp1<503) //yes or no
flag=1; // yes! start up water
else // no!
{
flag=0;
P30=0; //close water
}
}
else //no water
{
flag=0;
P30=0; //close water
}
while(flag) //up water
{
P30=1; //start machine
delay(30);
temp1=ADC10();
w1602c(0x80);
for(nn=0;nn<14;nn++)
w1602d(dd0[nn]);
delay(100);
w1602c(0xc0);
disp(temp1);
if(temp1>550) //full? No go on!
{
P30=0; //Yes close machine
flag=0; //end
}
delay(10);
}
w1602c(0x80);
for(k=0;k<14;k++)
w1602d(dd0[k]);
delay(20);
w1602c(0xc0);
disp(temp1);
delay(10);
}
}
//////====================================
#include"reg51.h"
#define U16 unsigned int
#define U8 unsigned char
U16 temp=450,temp1,temp2;
U8 nn;
bit flag;
unsigned char dd0[]=" SHANXI Dianzi";
unsigned char dd1[]=" VOIT_H:";
sbit rs=P3^7;
sbit en=P5^4; //Use really P5.4,test P2.4
sbit D0=ACC^0;
sbit D1=ACC^1;
sbit D2=ACC^2;
sbit D3=ACC^3;
sbit D4=ACC^4;
sbit D5=ACC^5;
sbit D6=ACC^6;
sbit D7=ACC^7;
void delay(U16 ms)
{
U8 m;
while(ms--)
for(m=0;m<20;m++);
}
void w1602c(U8 dat)
{
ACC=dat;
P11=D0;
P12=D1;
P13=D2;
P14=D3;
P15=D4;
P32=D5;
P33=D6;
P36=D7;
rs=0;
en=0;
delay(2);
en=1;
delay(2);
en=0;
}
void w1602d(U8 dat)
{
ACC=dat;
P11=D0;
P12=D1;
P13=D2;
P14=D3;
P15=D4;
P32=D5;
P33=D6;
P36=D7;
rs=1;
en=0;
delay(2);
en=1;
delay(2);
en=0;
}
void init1602()
{
w1602c(0x38);
w1602c(0x06);
w1602c(0x0c);
w1602c(0x01);
}
void InitADC()
{
P1ASF =0x01; //P1.0 ADC_IN - +
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR =0xe0;//ON_POWER
delay(2);
}
void disp(U16 dd)
{
char i;
for(i=0;i<8;i++)
w1602d(dd1);
w1602d(dd/1000+0x30);
w1602d((dd%1000)/100+0x30);
w1602d(((dd%1000)%100)/10+0x30);
w1602d(dd%10+0x30);
}
unsigned int ADC10()
{
//bit r; //test use
InitADC();
ADC_CONTR |=0x08;
delay(2);
////*******Use really************//
while(!(ADC_CONTR & 0x10));
ADC_CONTR &=~0x10;
temp=ADC_RES;
temp=temp<<2;
temp |=ADC_RESL;
////*********end Use really********//
////////**test**************//
//if(r==0) //
//{ //
//temp++; //
//if(temp>551)r=1; //
//} //
//if(r==1) //
//{ //
//temp--; //
//if(temp<500)r=0; //
//} //
////////*****test end ******//
return temp;
}
void main()
{
unsigned char k;
init1602();
P1M1=0x01;
P1M0=0x00;
CLK_DIV &=~0x20;
while(1)
{
temp1=ADC10();
if(temp1<503) //for water
{
delay(30);
temp1=ADC10();
if(temp1<503) //yes or no
flag=1; // yes! start up water
else // no!
{
flag=0;
P30=0; //close water
}
}
else //no water
{
flag=0;
P30=0; //close water
}
while(flag) //up water
{
P30=1; //start machine
delay(30);
temp2=ADC10();
temp1=temp2;
w1602c(0x80);
for(nn=0;nn<14;nn++)
w1602d(dd0[nn]);
delay(100);
w1602c(0xc0);
disp(temp1);
delay(1000);
if(temp1>550) //full? No go on!
{
P30=0; //Yes close machine
flag=0; //end
}
delay(10);
}
w1602c(0x80);
for(k=0;k<14;k++)
w1602d(dd0[k]);
delay(20);
w1602c(0xc0);
disp(temp1);
delay(1000);
}
} |
|
|