找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2069|回复: 5
打印 上一主题 下一主题
收起左侧

error C202: 'beer': undefined identifier

[复制链接]
跳转到指定楼层
楼主
ID:944702 发表于 2021-6-25 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
运行出现问题:
Build target 'Target 1'
compiling zy.c...
zy.c(13): warning C318: can't open file 'ds18b20.h'
zy.c(14): warning C318: can't open file 'keyscan.h'
zy.c(15): warning C318: can't open file 'display.h'
ZY.C(22): error C202: 'beer': undefined identifier
ZY.C(23): error C202: 'led': undefined identifier
Target not created
代码:#include<reg52.h>                                
#include<intrins.h>                                   //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)
#define uint unsigned int               
#define uchar unsigned char        
        

uchar max=0x00,min=0x00;                   //max是上限报警温度,min是下限报警温度

bit   s=0;                                                                                //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右
bit   s1=0;                                                                                //s1标志位用于上下限查看时的显示
void display1(uint z);                           //声明display1()函数(display.h头文件中的函数,ds18b20.h要用应先声明)
#include"ds18b20.h"                                       
#include"keyscan.h"                                       
#include"display.h"                                       

/******************************************************/
/*                        主函数                                                                        /
/*****************************************************/
void main()
{
         beer=1;                                           //关闭蜂鸣器
         led=1;                                                   //关闭LED灯
         timer1_init(0);                           //初始化定时器1(未启动定时器1)
        get_temperature(1);                  //首次启动DS18B20获取温度(DS18B20上电后自动将EEPROM中的上下限温度复制到TH和TL寄存器)
        while(1)                                                
         {        
                keyscan();                                
                get_temperature(0);        
                display(temp,temp_d*0.625);
                alarm();                                       
         }
                }







/**********************************************************************
* 程序名;   ds18b20keyscan函数
* 功能:通过键盘设定设定上下限报警温度
**********************************************************************/
#ifndef __keyscan_H__                                //定义头文件
#define __keyscan_H__
               
sbit key1=P2^2;                                       
sbit key2=P2^1;                                                
sbit key3=P2^0;                                                
sbit key4=P3^3;                                                

uchari=0;                                                        //定义全局变量i用于不同功能模式的选择,‘0’正常模式,‘1’上限调节模式,‘2’下限调节模式
uchar a=0;                                                    //定义全局变量a用于不同模式下数码管显示的选择
bit          k4=0;                                                        //K4按键双功能选择位,k4=0时K4按键选择消按键音的功能,k4=1时K4按键选择正负温度设定功能
bit   v=0;                                                        //K2、K3按键双功能选择位,v=0时选择上下限查看功能,v=1时选择上下限温度加减功能
bit   v1=0;                                                        //v1=1时定时1250ms时间到自动关闭报警上下限查看功能
bit   v2=0;                                        //消按键音功能调整位,为‘0’时开按键音,为‘1’时关按键音

/******************************************************/
/*                                                                                读键盘延时子函数                                                                /
/*****************************************************/
void keyscan_delay(uint z)                        //延时1ms左右
{
uinti,j;
for(i=z;i>0;i--)
        for(j=120;j>0;j--);
}

/******************************************************/
/*                                                                                温度调节函数                                                                        /
/*****************************************************/
inttemp_change(intcount,bit f)        //上下限温度调整
{
    if(key2==0)                                                //判断K2是否按下
        {                                                               
            if(v2==0)beer=0;                        //v2=0开按键音,否则消按键音
                keyscan_delay(10);                        //延时10ms
                if(key2==0)                                        //再次判断K2是否按下(实现按按键时消抖)
                {               
                   beer=1;                                        //K2按下关按键音
                   if(f==0)                                        //若温度为正
                   {  
                      count++;                                //每按一下K2温度上调1
                      if(a==1){if(count>125) count=125;}//当温度值大于125时不上调
                        if(a==2){if(count>125) count=125;}
                   }
                if(f!=0)                                        //若温度为负
                   {               
                          count++;                                //每按一下K2温度下调1
                          if(a==1){if(count>55) count=55;}//当温度值小于-55时不再下调
                        if(a==2){if(count>55) count=55;}
                   }
                }
                while(key2==0);                                //K2松开按键时消抖
                keyscan_delay(10);
        
        }
        if(key3==0)
        {
        if(v2==0)beer=0;
                keyscan_delay(10);
                if(key3==0)                                    //K3按按键时消抖
                {
                beer=1;
                        count--;                                //每按一下K3温度为正时下调1,为负时上调1
                        if(a==1){if(count<0) count=0;}//当温度值达到0时不再调
                        if(a==2){if(count<0) count=0;}        
                }
                while(key3==0);
                keyscan_delay(10);                        //K3松开按键时消抖
        
        }
        return count;
}

/******************************************************/
/*                                                                                读键盘函数                                                                        /
/*****************************************************/
voidkeyscan()
{
        
        if(key1==0)
        {
        if(v2==0)beer=0;
                keyscan_delay(10);
                if(key1==0)                                        //K1按按键时消抖
                {
                beer=1;
                   TR1=1;                                        //开定时器1,通过s标志位的变化,实现在上下限温度调整时温度显示时闪烁的功能               
                   k4=1;                                        //在上下温度调节功能模式下选择K4的调整上下限温度正负的功能
                   v=1;                                                //在上下温度调节功能模式下选择K2、K3的温度加减功能
                i++;                                                //K1按一下i加1,i=‘0’进入正常模式,i=‘1’进入调上限模式,i=‘2’进入调下限模式
                   if(i>2)                                        //K1按下三次后退出调节模式
                   {
                i=0;                                        //进入正常模式
                           TR1=0;                                //关定时器1
                           k4=0;                                //在正常模式下选择K4的消按键音功能
                           v=0;                                        //在正常模式下选择K2、K3的查看上下限报警温度功能
                        store_t();                        //存储调整后的上下限报警温度
                   }               
                   switch(i)                                //显示选择
                   {
                       case 0:a=0;break;        //a=0选择显示测得的温度
                           case 1:a=1;break;    //a=1选择显示上限温度
                           case 2:a=2;break;    //a=2选择显示下限温度
                        
                        default:break;
                   }
                        
                }
                while(key1==0);                                //K1松按键时消抖
                keyscan_delay(10);
               
        }
        if(a==1&&v==1)                                        //a=1选择显示上限温度且v=1时选择上下限温度加功能
        {led=0;max=temp_change(max,f_max);}//显示上限温度
        else if(a==2&&v==1)                                //a=2选择显示下限温度且v=1时选择上下限温度减功能
        {led=1;min=temp_change(min,f_min);}
        else;
        if(k4==1)                                                //k4=1时K4按键选择正负温度设定功能
        {
                if(key4==0)
                {
                if(v2==0)beer=0;
                        keyscan_delay(5);
                        if(key4==0)
                        {
                        beer=1;
                        if(a==1)
                           {if(max>55) f_max=0;else f_max=~f_max;}//当温度大于55度时,只能设定为正温度
                        if(a==2)
                           {if(min>55) f_max=0;else f_min=~f_min;}//当温度大于55度时,只能设定为正温度                                
                        }
                        while(key4==0);
                        keyscan_delay(10);
                }
        }
        
        if(v==0)                                                 //v=0时选择上下限查看功能
        {
                if(key2==0)
                {
                if(v2==0)beer=0;
                        keyscan_delay(10);
                        if(key2==0)
                        {
                        beer=1;
                           a=1;                                        //选择上限显示
                           TR1=1;                                //开定时器1开始定时一分钟左右
                           s1=1;                                //上限显示不闪烁,显示一分钟左右自动退出
                        }
                        while(key2==0);
                        keyscan_delay(10);
                        
                }
                if(key3==0)
                {
                if(v2==0)beer=0;
                        keyscan_delay(10);
                        if(key3==0)
                        {
                        beer=1;
                           a=2;                                        //选择下限显示
                           TR1=1;                                //开定时器1开始定时1s
                           s1=1;                                //下限显示不闪烁,显示1s自动退出                        
                        }
                        while(key3==0);
                        keyscan_delay(10);
                        
                }
                if(v1==1)                                   //v1=1时定时1s时间到自动关闭报警上下限查看功能
                {a=0;v1=0;TR1=0;}                   //a=0显示实测温度,v1清零,关定时器1
                if(k4==0)                                   //k4=0时K4按键选择消按键音的功能
                {                                                
                        if(key4==0)
                        {
                                if(v2==0)beer=0;
                                keyscan_delay(10);
                                if(key4==0)
                                {
                                beer=1;
                                   v2=~v2;                        //为‘0’时开按键音,为‘1’时关按键音                                
                                }
                                while(key4==0);
                                keyscan_delay(10);
                    }               
                }
        }        
}

#endif









/********************************************************************
* 程序名;  DS18B20头文件
* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),
temp_d(测得的温度小数部分),标志位f(测量温度的标志位‘0’表
                示“正温度”‘1’表示“负温度”),标志位f_max(上限温度的标志位
                ‘0’表示“正温度”、‘1’表示“负温度”),标志位f_min(下限温度的
                标志位‘0’表示“正温度”、‘1’表示“负温度”),标志位w(报警标志位
                ‘1’启动报警‘0’关闭报警)。               
*********************************************************************/
#ifndef __ds18b20_h__                                  //定义头文件
#define __ds18b20_h__

#define uint unsigned int                        
#define uchar unsigned char                        

sbit    DQ= P2^3;                                          //DS18B20接口
sbit    beer=P1^0;                                          //用beer表示P1.0
sbit    led=P1^1;                                          //用led表示P1.1
uchar   temp=0;                                   //测量温度的整数部分
uchartemp_d=0;                               //测量温度的小数部分
bit     f=0;                                                  //测量温度的标志位‘0’表示“正温度”‘1’表示“负温度”)
bit     f_max=0;                                          //上限温度的标志位‘0’表示“正温度”‘1’表示“负温度”)
bit     f_min=0;                                          //下限温度的标志位‘0’表示“正温度”‘1’表示“负温度”)
bit     w=0;                                                  //报警标志位‘1’启动报警,‘0’关闭报警;

/******************************************************/
/*                                                                        延时子函数                                                                                                /
/*****************************************************/
void ds18b20_delayus(uint t)          //延时几μs
{
while(t--);
}

void ds18b20_delayms(uint t)                  //延时1ms左右
{
        uinti,j;
        for(i=t;i>0;i--)
        for(j=120;j>0;j--);
}


/******************************************************/
/*                                                                        DS18B20初始化函数                                                                        /
/*****************************************************/

void ds18b20_init()                                       
{
        uchar c=0;  
        DQ=1;
        DQ=0;                                                    //控制器向DS18B20发低电平脉冲
        ds18b20_delayus(80);                    //延时15-80μs
        DQ=1;                                                        //控制器拉高总线,
        while(DQ);                                                //等待DS18B20拉低总线,在60-240μs之间
        ds18b20_delayus(150);                        //延时,等待上拉电阻拉高总线
        DQ=1;                                                        //拉高数据线,准备数据传输;
}


/******************************************************/
/*                                                                        DS18B20字节读函数                                                                /
/*****************************************************/

uchar ds18b20_read()                                
{
        uchari;
        uchar d=0;
        DQ = 1;                                                        //准备读;
        for(i=8;i>0;i--)
        {        
            d >>= 1;                           //低位先发;
                DQ = 0;                                                                        
                _nop_();
                _nop_();                                
                DQ = 1;                                                //必须写1,否则读出来的将是不预期的数据;
                if(DQ)                                                //在12us处读取数据;
                        d |= 0x80;
                ds18b20_delayus(10);               
                }
        return d;                                                 //返回读取的值
}


/******************************************************/
/*                                                                        DS18B20字节写函数                                                        /
/*****************************************************/
void ds18b20_write(uchar d)                        
{
uchari;
for(i=8;i>0;i--)
     {        
                  DQ=0;
                  DQ=d&0x01;
                  ds18b20_delayus(5);
                  DQ=1;        
                  d >>= 1;         
     }
}


/******************************************************/
/*                                                                        获取温度函数                                                                            /
/*****************************************************/
voidget_temperature(bit flag)               
{
        uchar a=0,b=0,c=0,d=0;
uinti;        
        ds18b20_init();                                
        ds18b20_write(0xcc);                        //向DS18B20发跳过读ROM命令
        ds18b20_write(0x44);                        //写启动DS18B20进行温度转换命令,转换结果存入内部RAM
        if(flag==1)
        {                                                                                                //首次启动DS18B20进行温度转换需要500ms,若转换时间不够就出错,读出的是85度的错误值。
          display1(1);                                        //用开机动画耗时
        }
        else
        ds18b20_delayms(1);                                
        ds18b20_init();                        
        ds18b20_write(0xcc);                                 
        ds18b20_write(0xbe);                                
        a=ds18b20_read();                                        //读内部RAM (LSB)
        b=ds18b20_read();                                        //读内部RAM (MSB)
        if(flag==1)                                                                //局部位变量f=1时读上下线报警温度
        {
            max=ds18b20_read();                    //读内部RAM (TH)
            min=ds18b20_read();                    //读内部RAM (Tl)
               
        }
        if((max&0x80)==0x80)                    //若读取的上限温度的最高位(符号位)为‘1’表明是负温度
        {f_max=1;max=(max-0x80);}       //将上限温度符号标志位置‘1’表示负温度,将上限温度装换成无符号数。
         if((min&0x80)==0x80)                        //若读取的下限温度的最高位(符号位)为‘1’表明是负温度
        {f_min=1;min=(min-0x80);}       //将下限温度符号标志位置‘1’表示负温度,将下限温度装换成无符号数。
               
        i=b;
        i>>=4;
        if (i==0)
                {
        f=0;                                            //i为0,正温度,设立正温度标记
        temp=((a>>4)|(b<<4));                //整数部分
        a=(a&0x0f);
        temp_d=a;                                        //小数部分
                }
        else
                {
        f=1;                                            //i为1,负温度,设立负温度标记
        a=~a+1;
        b=~b;
        temp=((a>>4)|(b<<4));                                        //整数部分
        a=(a&0x0f);                                        //小数部分
        temp_d=a;
        }
}

/******************************************************/
/*                                                                        存储极限温度函数                                                                /
/*****************************************************/
voidstore_t()
{
        if(f_max==1)                                         //若上限温度为负,将上限温度转换成有符号数(最高位为1是负,为0是正)
        max=max+0x80;
        if(f_min==1)                                         //若下限温度为负,将上限温度转换成有符号数
        min=min+0x80;

        ds18b20_init();                        
        ds18b20_write(0xcc);                        
        ds18b20_write(0x4e);                         //向DS18B20发写字节至暂存器2和3(TH和TL)命令
        ds18b20_write(max);                             //向暂存器TH(上限温度暂存器)写温度
        ds18b20_write(min);                             //向暂存器TL(下限温度暂存器)写温度
        ds18b20_write(0xff);                         //向配置寄存器写命令,进行温度值分辨率设置
        ds18b20_init();                        
        ds18b20_write(0xcc);                        
        ds18b20_write(0x48);                         //向DS18B20发将RAM中2、3字节的内容写入EEPROM
}                                                                                                                //DS18B20上电后会自动将EEPROM中的上下限温度拷贝到TH、TL暂存器


/******************************************************/
/*                                                                        温度超限报警函数                                                        /
/*****************************************************/
void alarm()
{                                                                         //若上限值是正值
        if(f_max==0)
          {
             if(f_min==0)                                 //若下限值是正值
                 {
                         if(f==0)                                 //若测量值是正值
                         {
                                if(temp<=min||temp>=max)
                                 {w=1;TR1=1;}                 //当测量值小于最小值或大于最大值时报警
                                if((temp<max)&&(temp>min))
                                 {w=0;}                                 //当测量值大于最小值且小于最大值时不报警
                         }
                         if(f==1){w=1;TR1=1;}         //若测量值是负值时报警
                 }
             if(f_min==1)                                 //若下限值是负值
                 {
                         if(f==0)                                 //若测量值是正值
                         {
                                 if(temp>=max)//当测量值大于最大值时报警
                                 {w=1;TR1=1;}
                                 if(temp<max )//当测量值小于最大值时不报警
                                 {w=0;}
                         }
                         if(f==1)                                 //若测量值是负值
                         {
                                 if(temp>=min)//当测量值大于最小值时报警
                                 {w=1;TR1=1;}
                                 if(temp<min)//当测量值小于最小值时不报警
                                 {w=0;}
                         }
                 }
          }

          if(f_max==1)                                         //若下限值是负值
          {
             if(f_min==1)                                 //若下限值是负值
                 {
                         if(f==1)                                 //若测量值是负值
                         {
                                if((temp<=max)||(temp>=min))
                                 {w=1;TR1=1;}                 //当测量值小于最大值或大于最小值时报警
                                if((temp<min)&&(temp>max))
                                 {w=0;}                                 //当测量值小于最小值且大于最大值时不报警
                         }
                         if(f==0){w=1;TR1=1;}         //若测量值是正值时报警
                 }

          }        
}

#endif
















/**********************************************************************
* 程序名;   ds18b20数码管动态显示头文件
* 功能:通过定时器0延时使数码管动态显示
**********************************************************************/
#ifndef __ds18b20_display_H__               
#define __ds18b20_display_H__

#define uint unsigned int                         //变量类型宏定义,用uint表示无符号整形(16位)
#define uchar unsigned char                         //变量类型宏定义,用uchar表示无符号字符型(8位)

sbit wei1=P2^4;                                                 //可位寻址变量定义,用wei1表示P2.4口
sbit wei2=P2^5;                                                 //用wei2表示P2.5口
sbit wei3=P2^6;                                                 //用wei3表示P2.6口
sbit wei4=P2^7;                                                 //用wei4表示P2.7口

ucharnum=0;                                                 //定义num为全局无符号字符型变量,赋初值为‘0’
uchar code temperature1[]={ 0xc0,0xf9,0xa4,0xb0,0x99,
                           0x92,0x82,0xf8,0x80,0x90};        //定义显示码表0~9
uchar code temperature2[]={ 0x40,0x79,0x24,0x30,0x19,
                           0x12,0x02,0x78,0x00,0x10};        //带小数点的0~9.
uchar code temperature3[]={ 0xff,0x7f,0xbf,0x89,0xc7};        //依次是‘不显示’‘.’‘-’‘H’‘L’


/******************************************************/
/*                                                                                延时子函数                                                                                        /
/*****************************************************/

void display_delay(uint t)                     //延时1ms左右
{
        uinti,j;
        for(i=t;i>0;i--)
        for(j=120;j>0;j--);
}


/******************************************************/
/*                                                                                定时器1初始化函数                                                                /
/*****************************************************/

void timer1_init(bit t)
{
    TMOD=0x10;                                                
    TH0=0x3c;                                                
    TL0=0xb0;                                                
    EA=1;                                                        
    ET1=1;                                                        
    TR1=t;                                                        // 局部变量t为1启动定时器1,为0关闭定时器1
}


/******************************************************/
/*                                                                                定时器1中断函数                                                                        /
/*****************************************************/

void timer1() interrupt 3
{
    TH0=0x3c;                                                //重新赋初值,定时50ms
    TL0=0xb0;
        num++;                                                        //每进入一次定时器中断num加1(每50ms加1一次)
if(num<5)
        {s=1;if(w==1){beer=1;led=1;}else{beer=1;led=1;}}                                                               
        else                                                      //进入4次中断,定时200ms时若报警标志位w为‘1’则启动报警,不为‘1’不启动
                                                                        //实现间歇性报警功能
        {s=0;if(w==1){beer=0;led=0;}else{beer=1;led=1;}}
        if(num>20)                                                //进入20次中断,定时1s
    {
        num=0;                                                //num归0,重新定开始定时1s
           s1=0;                                                //定时1s时间到时自动关闭报警上下限显示功能
           v1=1;                                                //定时1s时间到时自动关闭报警上下限查看功能
    }
        
}
/******************************************************/
/*                                                                                调整报警上下限选择函数                                        /
/*****************************************************/

void  selsct_1(ucharf,uchar k)            //消除百位的0显示,及正负温度的显示选择
{
      if(f==0)                                                                                //若为正温度,百位为0则不显示百位,不为0则显示
          {
                if(k/100==0)  P0=temperature3[0];
                else          P0=temperature1[k/100];
          }
          if(f==1)                                                                                        //若为负温度,若十位为0,百位不显示,否则百位显示‘-’
          {
        if(k%100/10==0)   P0=temperature3[0];        
                else              P0=temperature3[2];
          }
}

void  selsct_2(bit f,uchar k)                        //消除十位的0显示,及正负温度的显示选择
{
      if(f==0)                                                        //若为正温度,百位十位均为0则不显示十位,否则显示十位
          {
                if((k/100==0)&&(k%100/10==0))  
                      P0=temperature3[0];
                else          P0=temperature1[k%100/10];
          }
          if(f==1)                                                                                        //若为负温度,若十位为0,十位不显示,否则十位显示‘-’
          {
        if(k%100/10==0)   P0=temperature3[2];
                else               P0=temperature1[k%100/10];
          }               
}



/******************************************************/
/*                                                                                主函数显示                                                                                        /
/*****************************************************/

void display(uchart,uchart_d)           //用于实测温度、上限温度的显示
{
uchari;
   for(i=0;i<4;i++)                            //依次从左至右选通数码管显示,实现动态显示
   {               
switch(i)
           {
              case 0:                                   //选通第一个数码管
                  wei2=0;                                   //关第二个数码管
                  wei3=0;                                   //关第三个数码管
                  wei4=0;                                   //关第四个数码管
              wei1=1;                                   //开第一个数码管               
                  if(a==0){selsct_1(f,t);} //若a=0则在第一个数码管上显示测量温度的百位或‘-’
                if(a==1)
                  {                  
                      P0=temperature3[3];  //若a=1则在第一个数码管上显示‘H’               
                  }
                if(a==2)
                  {                  
                      P0=temperature3[4];  //若a=2则在第一个数码管上显示‘L’
                  }                                       
                break;
              case 1:                                                        //选通第二个数码管
                  wei1=0;               
                  wei3=0;
                  wei4=0;               
              wei2=1;               
                  if(a==0){selsct_2(f,t);} //若a=0则在第二个数码管上显示测量温度的十位或‘-’
                  if(a==1)                                                        //若a=1则在第二个数码管上显示上限报警温度的百位或‘-’
                  {  
                     if(s==0) selsct_1(f_max,max);//若s=0则显示第二个数码管,否则不显示
                     else P0=temperature3[0];                  //通过s标志位的变化实现调节上下限报警温度时数码管的闪烁
                     if(s1==1) selsct_1(f_max,max);//若s1=1则显示第二个数码管(s1标志位用于上下限查看时的显示)
                  }
                  if(a==2)                                                                        //若a=2则在第二个数码管上显示下限报警温度的百位或‘-’
                  {  
                if(s==0) selsct_1(f_min,min);
                else P0=temperature3[0];
                if(s1==1) selsct_1(f_min,min);
                  }                                                                        
                break;
              case 2:                                                                        //选通第三个数码管
                  wei1=0;
                  wei2=0;               
                  wei4=0;               
              wei3=1;               
                  if(a==0){P0=temperature2[t%10];}//若a=0则在第三个数码管上显示测量温度的个位
                  if(a==1)                                                                                        //若a=1则在第三个数码管上显示上限报警温度的十位或‘-’
                  {
                      if(s==0) selsct_2(f_max,max);//若s=0则显示第三个数码管,否则不显示
                        else P0=temperature3[0];
                          if(s1==1) selsct_2(f_max,max);//若s1=1则显示第三个数码管
                  }
                  if(a==2)                                                                                        //若a=2则在第三个数码管上显示下限报警温度的十位或‘-’
                  {
                if(s==0) selsct_2(f_min,min);
                        else P0=temperature3[0];
                        if(s1==1) selsct_2(f_min,min);
                  }                                                                                
                break;
              case 3:                                  //选通第四个数码管
                  wei1=0;               
                  wei2=0;               
                  wei3=0;
                  wei4=1;               
                  if(a==0){P0=temperature1[t_d];}//若a=0则在第四个数码管上显示测量温度的小数位
                  if(a==1)                                                                                        //若a=1则在第四个数码管上显示上限报警温度的个位
                  {
                     if(s==0) P0=temperature1[max%10];//若s=0则显示第四个数码管,否则不显示
                        else P0=temperature3[0];
                         if(s1==1) P0=temperature1[max%10];//若s1=1则显示第四个数码管
                  }
                  if(a==2)                                                                                                //若a=2则在第四个数码管上显示下限报警温度的个位
                  {
                if(s==0) P0=temperature1[min%10];
                        else P0=temperature3[0];
                        if(s1==1) P0=temperature1[min%10];
                  }                                                                                                        
                break;               
           }
        display_delay(10);                          //每个数码管显示3ms左右
        }
        
}
/******************************************************/
/*                                                                                开机显示函数                                                                                /
/*****************************************************/
void display1(uint z)                          //用于开机动画的显示
{
uchari,j;
bit f=0;
   for(i=0;i<z;i++)                                  //‘z’是显示遍数的设定
   {        
                for(j=0;j<4;j++)                  //依次从左至右显示‘-’
           {
        switch(j)
                   {
                        case 0:
                                  wei2=0;
                                  wei3=0;
                                  wei4=0;               
                              wei1=1;  break;
                                          P0=temperature3[2];//第一个数码管显示
                        case 1:
                                  wei1=0;               
                                  wei3=0;
                                  wei4=0;               
                              wei2=1;break;
                                          P0=temperature3[2];//第二个数码管显示

                        case 2:
                                  wei1=0;
                                  wei2=0;               
                                  wei4=0;               
                              wei3=1;break;
                                          P0=temperature3[2];//第三个数码管显示
                        case 3:
                                  wei1=0;               
                                  wei2=0;               
                                  wei3=0;
                                  wei4=1;break;
                                          P0=temperature3[2];//第四个数码管显示
                   }
                display_delay(400);           //每个数码管显示200ms左右
           }
               
        }
}


#endif        

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:739545 发表于 2021-6-25 16:26 | 只看该作者
无法调用头文件,给个建议,一般情况下头文件不建议放函数,放外部函数调用extern void xxx();
回复

使用道具 举报

板凳
ID:94031 发表于 2021-6-25 16:45 | 只看该作者
没有找到ds18b20.h,keyscan.h,display.h这几个头文件,你应当找到后把路径告诉工程。
回复

使用道具 举报

地板
ID:944702 发表于 2021-6-25 17:46 | 只看该作者
xuyaqi 发表于 2021-6-25 16:45
没有找到ds18b20.h,keyscan.h,display.h这几个头文件,你应当找到后把路径告诉工程。

怎样设置我不会呀
回复

使用道具 举报

5#
ID:328014 发表于 2021-6-25 20:08 | 只看该作者
如果你没有2楼说的那几个文件,就可以放弃了,因为缺文件,是无法编译的,连怎么设置都不会的话,就更不要说亲自编写这个几个文件了,我觉得要加强基础部分的学习才行,而不是来这里提问
回复

使用道具 举报

6#
ID:944909 发表于 2021-6-25 22:51 | 只看该作者
1940230 发表于 2021-6-25 17:46
怎样设置我不会呀

右键工程-->options-->在里面找到Include Paths然后点开再点new添加这些文件的目录就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表