欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機火災報警器程序與電路
[打印本頁]
作者:
1239988
時間:
2023-1-3 21:34
標題:
單片機火災報警器程序與電路
煙霧傳感器仿真中沒有,其實就是傳感器檢測時相應的電阻值會變化,用滑動電位器代替
~P{QXPOMGT0TD@{I{XV9ZKL.png
(53.06 KB, 下載次數: 49)
下載附件
2023-1-3 21:33 上傳
單片機源程序如下:
//程序頭函數
#include <reg52.h>
//顯示函數
#include <display.h> //顯示函數display.h在工程里 也可鼠標選中左邊右鍵open document <display.h>
//宏定義
#define uint unsigned int
#define uchar unsigned char
#define Data_ADC0809 P1 //定義P1口為Data_ADC0809 (之后的程序里Data_ADC0809即代表P1口)
//管腳聲明
sbit LED_yanwu= P2^1; //煙霧報警燈
sbit baojing= P2^5; //蜂鳴器接口
//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; //減按鍵
//酒精含量變量
uchar temp; //用于讀取ADC數據
uchar yushe_yanwu=45; //煙霧預設值
//按鈕模式|
uchar Mode=0; //=1是設置溫度閥值 =2是設置煙霧閥值
//函數聲明
extern uchar ADC0809();
extern void 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);
if(Mode>=2) Mode=0;
else
{
// write_com(0x38);//屏幕初始化
write_com(0x0f);//打開顯示 無光標 光標閃爍
// write_com(0x06);//當讀或寫一個字符是指針后一一位
Mode++; //模式加一
switch(Mode) //判斷模式的值
{
case 1:
{
write_com(0x80+7);//為1時 溫度閥值的位置閃爍
break; //執行后跳出switch
}
case 2: //當模式加到3時
{
// write_com(0x38);//屏幕初始化
write_com(0x0c);//打開顯示 無光標 無光標閃爍
Mode=0; //模式清零
break;
}
}
}
}
if(Key2==0&&Mode!=0) //加按鍵只有在模式不等于0時有效
{
while(Key2==0);
yushe_yanwu++; //同溫度閥值設置
if(yushe_yanwu>=255)
yushe_yanwu=255;
write_com(0x80+13);
write_data(0x30+yushe_yanwu/100);
write_data(0x30+yushe_yanwu%100/10);
write_data(0x30+yushe_yanwu%10);
write_com(0x80+15);
}
if(Key3==0&&Mode!=0)
{
while(Key3==0);
yushe_yanwu--; //同上
if(yushe_yanwu<=0)
yushe_yanwu=0;
write_com(0x80+13);
write_data(0x30+yushe_yanwu/100);
write_data(0x30+yushe_yanwu%100/10);
write_data(0x30+yushe_yanwu%10);
write_com(0x80+15);
}
}
/*****主函數*****/
void main()
{
Init1602(); //調用初始化顯示函數
while(1) //進入循環
{
temp=ADC0809(); //讀取煙霧值
Key(); //調用按鍵函數 掃描按鍵
if(Mode==0) //只有當模式為0時才會執行以下的閥值判斷部分
{
Display_1602(yushe_yanwu,temp); //顯示預設煙霧,煙霧值
if(temp>=yushe_yanwu) //煙霧值大于等于預設值時
{
LED_yanwu=0; //煙霧指示燈亮
baojing=0; //蜂鳴器報警
}
else //煙霧值小于預設值時
{
LED_yanwu=1; //關掉報警燈
}
if(temp<yushe_yanwu) //當煙霧小于預設值并且溫度也小于預設值時 (&&:邏輯與,左右兩邊的表達式都成立(都為真,也就是1)時,該if語句才成立)
{
baojing=1; //停止報警
}
}
}
}
復制代碼
Keil代碼下載:
Keil代碼.7z
(74.08 KB, 下載次數: 17)
2023-1-4 05:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1