附录
{
s_dengji ++ ; //烟物报警值加1 if(s_dengji >= 9) s_dengji = 9; }
if(key_can == 3) { s_dengji --; //烟物报警值减1 if(s_dengji <= 1) s_dengji = 1; }
dis_smg[0] = smg_du[s_dengji % 10]; //取个位显示 dis_smg[1] = 0xbf ; dis_smg[2] = 0xbf; dis_smg[3] = smg_du[11]; //显示B write_eeprom(); //保存数据 } }
/*****************************报警函数******************************/ void clock_h_l() { 0))
static uchar value;
if((dengji >= s_dengji) || (temperature >= s_temp) || (shoudong == 1)) //报警 { value ++; if(value >= 2) { value = 10; beep = ~beep; //蜂鸣器报警 } }else { if((dengji < s_dengji) && (temperature < s_temp) && (shoudong == //取消报警 { value = 0; beep = 1; //取消报警
—32—
附录 }
} }
/******************************主函数*******************************/ void main() { beep = 0; //开机蜂鸣器叫一声 delay_1ms(200); P0 = P1 = P2 = P3 = 0xff; //初始化IO口为高电平 temperature = read_temp(); //读取温度值 init_eeprom(); //开始初始化保存的数据
delay_1ms(650); temperature = read_temp(); //读取温度值 time_init(); //初始化定时器 while(1) { key(); //独立按键程序 if(key_can < 10) { key_with(); //按键按下要执行的程序 }
if(flag_300ms == 1) { flag_300ms = 0; clock_h_l(); temperature = read_temp(); //读取温度值 dengji = ad0832read(1,0); dengji = dengji * 10 / 250; if(menu_1 == 0) {
if(temperature >= 99) temperature = 99; dis_smg[3]=smg_du[dengji];//显示烟物报警等级 dis_smg[2]= 0xbf; // - dis_smg[1]=smg_du[temperature/10]; //十位 dis_smg[0]=smg_du[temperature]; //个位
—33—
附录 ADC0832为8位ADC,数值为0~255,我们将其分开放入l_tmpdate数组中显示 } } delay_1ms(1); } }
/**********************定时器0中断服务程序************************/ void time0_int() interrupt 1 { static uchar value; TH0 = 0xf8;
TL0 = 0x30; // 2ms value ++; display(); //数码管显示函数 if(value % 150 == 0) { flag_300ms = 1; //300ms value = 0; }
}
—34—