本帖最后由 kufan 于 2013-1-12 11:32 编辑
18b20测温数码管显示实验.zip
(41.54 KB)
大家帮我看看程序哪里写得不好的,或者交流交流也行
单片机做温度报警器,数码管动态扫描显示温度,用LED灯指示,可是LED灯不亮 fan_1 fan_2是LED灯口
分上限,下限,中限
低于下,不亮
下中之间 1亮
中上间 2亮
高于上 3亮
/***********风机比较函数**********/
//
void fan_comp()
{
mid_temp=(max_temp+min_temp)/2;
if(display[4]>max_temp-1) //三台 1、2、3
{
fan_flag=3;
}
if(max_temp>display[4]>mid_temp-1) //两台 2、3
{
fan_flag=2;
}
if(mid_temp>display[4]>min_temp-1) //一台 1
{
fan_flag=1;
}
}
//
/***********风机模拟函数**********/
void fan_mn()
{
fan_key=fan_flag;
fan_comp();
if(fan_key==fan_flag){
;
}
else{
fan_1=fan_2=1;
switch (fan_flag) {
case 1:fan_1=0;break;
case 2:fan_2=0;break;
case 3: break;
}
}
}
下面是数码管扫描的
/***********温度显示扫描函数**********/
scan()
{
char k;
for(k=0;k<4;k++) //四位LED扫描控制
{
Disdata=0xff;
Disdata=dis_7[display[k]];
if(k==1){DIN=0;}
discan=scan_con[k];delay(250);
discan=0xff;
}
}
//
//
按键也是用延时。。。
/***********按键消抖函数**********/
//
void xd(press)
{
if(press==0){
delay1ms(15);
if(press==0){
press_flag=0;
}
delay1ms(250);
//while(!press);//等待按键释放
}
}
其他功能都正常,就是LED灯指示不了
|