include<reg52.h>#include<intrins.h> //調用_nop_();延時函數用
#define uchar unsigned char#define uint unsigned int
uchar code table[]="0123456789.";//定義顯示的數組
sbit lcden=P3^5;//定義管腳
sbit lcdrs=P3^3;
sbit lcdrw=P3^4;
sbit a=P2^1;
sbit b=P2^2;
sbit c=P2^3;
sbit st=P2^4;
sbit eoc=P2^5;
sbit oe=P2^6;
uchar num,flag;
void delay(uint z)//延時函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)//1602讀指令
{ lcdrw=0;
lcdrs=0;
P1=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)//1602讀數據
{ lcdrw=0;
lcdrs=1;
P1=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcd_init()//1602初始化函數
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()
{
uchar date=0;
float temp=0.0;
uchar q,b,s,g;
a=1;//選著ADC0809的第7通道
b=1;
c=1;
lcd_init();
oe=0;
while(1)
{
st=0;
st=1;
st=0;
delay(5);
while(!eoc)
{
oe=1;
date=P0;
oe=0;
temp= (float) date*5.0/256;//數據處理
temp=temp/100.0;
temp=temp*100000.0;
q=(int)temp/1000;
b=(int)temp%1000/100;
s=(int)temp%1000%100/10;
g=(int)temp%10;
write_com(0x80);//1602顯示處理好的數據
write_data(table[q]);
delay(20);
write_data(table[11]);
delay(20);
write_data(table[b]);
delay(20);
write_data(table[s]);
delay(20);
write_data(table[g]);
delay(20);
}
}
}