酒精测试仪程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

//显示函数

#include

//宏定义

#define uint unsigned int

#define uchar unsigned char #define Data_ADC0809 P1

//管脚声明

sbit LED_R= P2^2;

sbit LED_G= P2^1;

sbit FENG = P2^5;

sbit san=P3^4;

//ADC0809

sbit ST=P3^3;

sbit EOC=P3^6;

sbit OE=P3^2;

//按键

sbit Key1=P2^6;

sbit Key2=P2^7;

sbit Key3=P3^7;

bit bdata flag;

uchar set;

extern uchar ADC0809(); extern void Key();

/*

void delay(uint z)

{

uint i,j;

for(i=0;i

for(j=0;j<121;j++); }

*/

//酒精含量变量

uchar temp=0;

//指示灯变量

uchar WARNING=25;

void init()

{

TMOD=0x01;

TL0=0xb0;

TH0=0x3c;

EA=1;

ET0=1;

TR0=1;

}

void main()

{

Init1602();

init();

while(1)

{

temp=ADC0809();

if(set==0)

Display_1602(temp,WARNING);

if(temp

{

flag=0;

}

else if(temp>WARNING&&set==0) {

flag=1;

}

Key();

}

}

//ADC0809读取信息

uchar ADC0809()

{

uchar temp_=0x00;

//初始化高阻太

OE=0;

//转化初始化

ST=0;

//开始转换

ST=1;

ST=0;

//外部中断等待AD转换结束

while(EOC==0)

//读取转换的AD值

OE=1;

temp_=Data_ADC0809;

OE=0;

return temp_;

}

void Key()

{

if(Key1==0)

{

while(Key1==0);

FENG=0;

set++;

flag=0;

san=1;

TR0=0;

}

if(set==1)

{

write_com(0x38);//屏幕初始化

write_com(0x80+0x40+13);//位置

write_com(0x0f);//打开显示无光标光标闪烁

write_com(0x06);//当读或写一个字符是指针后一一位 FENG=1;

}

else if(set>=2)

{

set=0;

write_com(0x38);//屏幕初始化

write_com(0x0c);//打开显示无光标无光标闪烁

FENG=1;

flag=1;

TR0=1;

}

if(Key2==0&&set!=0)

{

while(Key2==0);

FENG=0;

WARNING++;

if(WARNING>=255)

WARNING=0;

write_com(0x80+0x40+11);

write_data('0'+WARNING/100);

write_data('0'+WARNING/10%10);

write_data('0'+WARNING%10);

write_com(0x80+0x40+13);//位置

FENG=1;

}

if(Key3==0&&set!=0)

{

while(Key3==0);

FENG=0;

WARNING--;

if(WARNING<=0)

WARNING=255;

write_com(0x80+0x40+11);

write_data('0'+WARNING/100);

write_data('0'+WARNING/10%10); write_data('0'+WARNING%10);

write_com(0x80+0x40+13);//位置 FENG=1;

}

}

void time1_int(void) interrupt 1

{

uchar count;

TL0=0xb0;

TH0=0x3c;

count++;

if(count==10)

{

if(flag==0)

{

LED_G=0;

相关文档
最新文档