基于51单片机的酒精报警器设计

//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++; //设置的变量加1 flag=0; //绿灯闪 TR0=0; //关定时器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; //定时器0开 } if(Key2==0&&set!=0) //在设置的状态下按下加 { while(Key2==0); //等待按键释放 FENG=0; //蜂鸣器响 WARNING++; //报警值加1 if(WARNING>=255) //如果报警值大于等于255 WARNING=0; //报警值归零 write_com(0x80+0x40+11); write_data('0'+WARNING/100); write_data('0'+WARNING/10); write_data('0'+WARNING); //显示报警值 write_com(0x80+0x40+13);//调整位置 FENG=1; //蜂鸣器关 } if(Key3==0&&set!=0) //在设置的状态下按下减 { while(Key3==0); //等待按键释放 FENG=0; //蜂鸣器响 WARNING--; //报警值减1 if(WARNING<=0) //如果报警值小于等于0 WARNING=255; //那么报警值为255 write_com(0x80+0x40+11); write_data('0'+WARNING/100); write_data('0'+WARNING/10); write_data('0'+WARNING); write_com(0x80+0x40+13);//调整位置 FENG=1; //蜂鸣器关 } } void time1_int(void) interrupt 1 //定时器中断0 { uchar count; TL0=0xb0; TH0=0x3c; //重赋初值50ms count++; ///溢出值加1 if(count==10) //如果时间到半秒 { if(flag==0) //如果flag为0 { LED_G=0; //绿灯亮 LED_R=1; //红灯灭 FENG=1; //蜂鸣器关 } if(flag==1) //如果flag为1 { LED_G=1; //绿灯关 LED_R=0; //红灯亮 FENG=0; //蜂鸣器开 } } if(count==20) //如果时间到1秒 { count=0; //溢出值清零

>>闁诲繒鍋炲ú鏍閹达箑绀傞柕濠忛檮閻庯拷<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4