打印

数码管动态扫描同时点亮LED灯(已解决)【程序希望大家指导下

[复制链接]
6249|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kufan|  楼主 | 2013-1-11 13:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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灯指示不了

相关帖子

沙发
kufan|  楼主 | 2013-1-11 19:17 | 只看该作者
看来是我问题问的不清楚麽

使用特权

评论回复
板凳
NE5532| | 2013-1-11 19:20 | 只看该作者
是呀,你什么单片机都不说,而且你说LED不亮,到底是LED灯还是LED数码管,硬件图也没有,你说大家咋帮你呢?

使用特权

评论回复
地板
wangyy608| | 2013-1-11 19:25 | 只看该作者
C语言的运算规则是有要求的,不是想当然得

使用特权

评论回复
5
kufan|  楼主 | 2013-1-11 19:28 | 只看该作者
NE5532 发表于 2013-1-11 19:20
是呀,你什么单片机都不说,而且你说LED不亮,到底是LED灯还是LED数码管,硬件图也没有,你说大家咋帮你呢 ...

AT89S52,LED灯不亮,LED数码管正常。
想过可能是程序连续扫描,不停判断闪烁太快看不到
但是现在加上状态值保存了,flag_key 状态没变,LED灯还是置0,即亮。
单独测试过两个灯都可以亮的

使用特权

评论回复
6
kufan|  楼主 | 2013-1-11 19:36 | 只看该作者
wangyy608 发表于 2013-1-11 19:25
C语言的运算规则是有要求的,不是想当然得

虽然我学过C。。。现在其他功能都实现了,读取温度,显示温度,温度报警,上下限设置
就是用LED灯模拟风机运行的个数  这里LED灯就是不亮。
哎,我该把一整个都发上来还是怎样。就怕大家没耐性看,帮不了。

很困扰

使用特权

评论回复
7
wangyy608| | 2013-1-11 19:41 | 只看该作者
if(display[4]>max_temp-1)          //三台     1、2、3
if(max_temp>display[4]>mid_temp-1)      //两台  2、3
if(mid_temp>display[4]>min_temp-1)       //一台  1
这几个判断应该有问题

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
kufan + 1 很给力!
8
NE5532| | 2013-1-11 19:41 | 只看该作者
你就发这么点我们才很困扰呢,最少吧电路图和相关程序发出来嘛。

使用特权

评论回复
9
kufan|  楼主 | 2013-1-11 20:06 | 只看该作者
wangyy608 发表于 2013-1-11 19:41
if(display[4]>max_temp-1)          //三台     1、2、3
if(max_temp>display[4]>mid_temp-1)      //两台 ...

发了原理图还有程序了,希望帮忙看看。谢谢

使用特权

评论回复
10
kufan|  楼主 | 2013-1-11 20:07 | 只看该作者
NE5532 发表于 2013-1-11 19:41
你就发这么点我们才很困扰呢,最少吧电路图和相关程序发出来嘛。

老大我错了,已更正

使用特权

评论回复
11
kufan|  楼主 | 2013-1-11 20:38 | 只看该作者
wangyy608 发表于 2013-1-11 19:41
if(display[4]>max_temp-1)          //三台     1、2、3
if(max_temp>display[4]>mid_temp-1)      //两台 ...

谢谢,已解决

使用特权

评论回复
12
lzqxs89| | 2013-1-13 23:55 | 只看该作者
kufan 发表于 2013-1-11 20:38
谢谢,已解决

把为什么出现了这样的问题,以及怎么解决的跟大家分享下哎。。

使用特权

评论回复
13
kufan|  楼主 | 2013-1-14 09:03 | 只看该作者
lzqxs89 发表于 2013-1-13 23:55
把为什么出现了这样的问题,以及怎么解决的跟大家分享下哎。。

把数学思维直接放在C中,&&表示且,改了就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

粉丝