酒精浓度检测仪设计
delay(5); if(k1==0) flag=0; while(!k1); } if(k2==0) //按键检测 { delay(5); if(k2==0) flag=1; while(!k2); } } }
while(flag==1) //执行检测报警程序 { beep=1; d1=1; tt=0; a=0; b=10; c=0; d=0; write_com(1); d2=0; TH0=(65536-50000)/256; TL0=(65536-50000)%6; TR0=1; while(flag==1) { write_com(0x80+6); write_data(table[a]); write_com(0x80+7); write_data(table[b]); write_com(0x80+8); write_data(table[c]); write_com(0x80+9); write_data(table[d]); if(k1==0) //按键检测 { delay(5); if(k1==0) flag=0; while(!k1);
35
酒精浓度检测仪设计
} if(k2==0) //按键检测 { delay(5); if(k2==0) flag=1; while(!k2); } } } } }
/******************************************/
/********************初始化子函数**********************/ void init() {
lcdrw=0; lcden=0;
write_com(0x38); write_com(0x0c); write_com(0x06); cs=0; flag=1; b=10;
TMOD=0x01; EA=1; ET0=1; }
/******************************************/
/********************延时子函数**********************/ void delay(uint z) {
uint x,y;
for(x=110;x>0;x--) for(y=z;y>0;y--); }
void write_str(uchar *p)
36
酒精浓度检测仪设计
{
while(*p) write_data(*p++); }
/******************************************/
/******************液晶写命令子函数************************/ void write_com(uchar com) {
lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }
/******************************************/
/*******************液晶写数据子函数***********************/ void write_data(uchar da) {
lcdrs=1; P0=da; delay(5); lcden=1; delay(5); lcden=0; }
/******************************************/
/**********************AD转换子函数********************/ void ad() {
wr=0; delay(1); wr=1; delay(5); P3=0xff; delay(1); rd=0; delay(1);
37
酒精浓度检测仪设计
temp=P3; rd=1; }
/******************************************/
/********************酒精浓度显示子函数**********************/ void display() {
uint value; uchar a,b,c;
value=3.92*temp; a=value/100; b=value0/10; c=value;
write_com(0x80+0x40+4); write_data(0x30+a);
write_com(0x80+0x40+5); write_data(0x30+b);
write_com(0x80+0x40+6); write_data(0x30+c); }
/******************************************/
/*****************定时器程序*************************/ void timer0()interrupt 1 {
TH0=(65536-50000)/256; TL0=(65536-50000)%6; tt++; if(tt==20) { tt=0; if(b==10) b=11; else b=10; d++; if(d==10) { d=0; c++; if(c==6)
38
酒精浓度检测仪设计
{ c=0; a++; if(a==10) a=0;
}
}
}
}
39

