#include"reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define delay4us(){_nop_(); _nop_(); _nop_();_nop_();}
sbit cs=P2^0;
sbit clk=P1^4;
sbit dio=P1^5;
sbit rs=P1^7;
sbit rw=P1^6;
sbit e=P2^4;
sbit k=P3^6;
sbit sp=P3^7;
sbit led=P3^5;
int temp=200;
char flag=0;
uchar display_buffer[]="000mg/L";
uchar code ine1[]="Current Value:";
uchar code line2[]="Waiting";
char c[];
void delayms(uint ms)
{
uchar t;
while(ms--)
for(t=0;t<120;t++);
}
bit lcd_busy_check()
{
bit result;
rs=0;
rw=1;
e=1;
delay4ms();
result=(bit)(P0&0x80);
e=0;
return result;
}
void led_write_com(uchar cmd)
{
while(lcd_busy_check());
rs=0;
rw=0;
e=0;
_nop_();_nop_();
P0=cmd;
delay4us();
e=1;
delay4us();
e=0;
}
void set_disp_pos(uchar pos)
{
lcd_write_com(pos|0x80);
}
void lcd_write_data(uchar dat)
{
while(lcd_busy_check());
P0=dat;
delay4us();
e=1;
delay4us();
e=0;
}
void lcd_init()
{
led_write_com(0x38);delayms(1);
led_write_com(0x0c);delayms(1);
led_write_com(0x06);delayms(1);
lcd_write_com(0x01);delayms(1);
}
uchar get_ad_result()
{
uchar i,dat1=0,dat2=0;
cs=0;
clk=0;
dio=1;
for(i=0;i<8;i++)
{
dat2=dat2>>1;
if(dio)dat2=dat2|0x80;
clk=1;_nop();_nop_();
clk=0;
}
cs=1;
return (datl==dat2)?dat1:0;
}
void main()
{
uchar i;
uint d;
lcd_init();
set_disp_pos(0x03);
led=0;
sp=0;
delayms(3000);
led=1;
sp=1;
while(1)
{
if(k==0)
{
flag=~flag;
while(!k);
}
d=get_ad_result()*500.0/255;
if(d>temp)
{
if(flag==0)
{
sp=0;
delayms(100);
sp=1;
delayms(100);
led=0;
}
else
{
led=1;
sp=1;
}
}
else
{
led=1;
sp=1;
}
display_buffer[0]=d/100+’0’;
display_buffer[1]=d/10%10+'0';
display_buffer[2]=d%10+'0';
set_disp_pos(0x01);
i=0;
while(line1[i]!='\0')
lcd_write_data(line1[i++]);
set_disp_pos(0x45);
i=0;
while(display_buffer[i]!='\0')
lcd_write_data(display_buffer[i++];
delayms(500);
}
}老哥们,这个该怎么改啊