欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2439|回復(fù): 5
收起左側(cè)

error C202: 'beer': undefined identifier

[復(fù)制鏈接]
ID:944702 發(fā)表于 2021-6-25 16:00 | 顯示全部樓層 |閱讀模式
運(yùn)行出現(xiàn)問題:
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頭文件包含到主程序(調(diào)用其中的_nop_()空操作函數(shù)延時(shí))
#define uint unsigned int               
#define uchar unsigned char        
        

uchar max=0x00,min=0x00;                   //max是上限報(bào)警溫度,min是下限報(bào)警溫度

bit   s=0;                                                                                //s是調(diào)整上下限溫度時(shí)溫度閃爍的標(biāo)志位,s=0不顯示200ms,s=1顯示1s左右
bit   s1=0;                                                                                //s1標(biāo)志位用于上下限查看時(shí)的顯示
void display1(uint z);                           //聲明display1()函數(shù)(display.h頭文件中的函數(shù),ds18b20.h要用應(yīng)先聲明)
#include"ds18b20.h"                                       
#include"keyscan.h"                                       
#include"display.h"                                       

/******************************************************/
/*                        主函數(shù)                                                                        /
/*****************************************************/
void main()
{
         beer=1;                                           //關(guān)閉蜂鳴器
         led=1;                                                   //關(guān)閉LED燈
         timer1_init(0);                           //初始化定時(shí)器1(未啟動(dòng)定時(shí)器1)
        get_temperature(1);                  //首次啟動(dòng)DS18B20獲取溫度(DS18B20上電后自動(dòng)將EEPROM中的上下限溫度復(fù)制到TH和TL寄存器)
        while(1)                                                
         {        
                keyscan();                                
                get_temperature(0);        
                display(temp,temp_d*0.625);
                alarm();                                       
         }
                }







/**********************************************************************
* 程序名;   ds18b20keyscan函數(shù)
* 功能:通過鍵盤設(shè)定設(shè)定上下限報(bào)警溫度
**********************************************************************/
#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’上限調(diào)節(jié)模式,‘2’下限調(diào)節(jié)模式
uchar a=0;                                                    //定義全局變量a用于不同模式下數(shù)碼管顯示的選擇
bit          k4=0;                                                        //K4按鍵雙功能選擇位,k4=0時(shí)K4按鍵選擇消按鍵音的功能,k4=1時(shí)K4按鍵選擇正負(fù)溫度設(shè)定功能
bit   v=0;                                                        //K2、K3按鍵雙功能選擇位,v=0時(shí)選擇上下限查看功能,v=1時(shí)選擇上下限溫度加減功能
bit   v1=0;                                                        //v1=1時(shí)定時(shí)1250ms時(shí)間到自動(dòng)關(guān)閉報(bào)警上下限查看功能
bit   v2=0;                                        //消按鍵音功能調(diào)整位,為‘0’時(shí)開按鍵音,為‘1’時(shí)關(guān)按鍵音

/******************************************************/
/*                                                                                讀鍵盤延時(shí)子函數(shù)                                                                /
/*****************************************************/
void keyscan_delay(uint z)                        //延時(shí)1ms左右
{
uinti,j;
for(i=z;i>0;i--)
        for(j=120;j>0;j--);
}

/******************************************************/
/*                                                                                溫度調(diào)節(jié)函數(shù)                                                                        /
/*****************************************************/
inttemp_change(intcount,bit f)        //上下限溫度調(diào)整
{
    if(key2==0)                                                //判斷K2是否按下
        {                                                               
            if(v2==0)beer=0;                        //v2=0開按鍵音,否則消按鍵音
                keyscan_delay(10);                        //延時(shí)10ms
                if(key2==0)                                        //再次判斷K2是否按下(實(shí)現(xiàn)按按鍵時(shí)消抖)
                {               
                   beer=1;                                        //K2按下關(guān)按鍵音
                   if(f==0)                                        //若溫度為正
                   {  
                      count++;                                //每按一下K2溫度上調(diào)1
                      if(a==1){if(count>125) count=125;}//當(dāng)溫度值大于125時(shí)不上調(diào)
                        if(a==2){if(count>125) count=125;}
                   }
                if(f!=0)                                        //若溫度為負(fù)
                   {               
                          count++;                                //每按一下K2溫度下調(diào)1
                          if(a==1){if(count>55) count=55;}//當(dāng)溫度值小于-55時(shí)不再下調(diào)
                        if(a==2){if(count>55) count=55;}
                   }
                }
                while(key2==0);                                //K2松開按鍵時(shí)消抖
                keyscan_delay(10);
        
        }
        if(key3==0)
        {
        if(v2==0)beer=0;
                keyscan_delay(10);
                if(key3==0)                                    //K3按按鍵時(shí)消抖
                {
                beer=1;
                        count--;                                //每按一下K3溫度為正時(shí)下調(diào)1,為負(fù)時(shí)上調(diào)1
                        if(a==1){if(count<0) count=0;}//當(dāng)溫度值達(dá)到0時(shí)不再調(diào)
                        if(a==2){if(count<0) count=0;}        
                }
                while(key3==0);
                keyscan_delay(10);                        //K3松開按鍵時(shí)消抖
        
        }
        return count;
}

/******************************************************/
/*                                                                                讀鍵盤函數(shù)                                                                        /
/*****************************************************/
voidkeyscan()
{
        
        if(key1==0)
        {
        if(v2==0)beer=0;
                keyscan_delay(10);
                if(key1==0)                                        //K1按按鍵時(shí)消抖
                {
                beer=1;
                   TR1=1;                                        //開定時(shí)器1,通過s標(biāo)志位的變化,實(shí)現(xiàn)在上下限溫度調(diào)整時(shí)溫度顯示時(shí)閃爍的功能               
                   k4=1;                                        //在上下溫度調(diào)節(jié)功能模式下選擇K4的調(diào)整上下限溫度正負(fù)的功能
                   v=1;                                                //在上下溫度調(diào)節(jié)功能模式下選擇K2、K3的溫度加減功能
                i++;                                                //K1按一下i加1,i=‘0’進(jìn)入正常模式,i=‘1’進(jìn)入調(diào)上限模式,i=‘2’進(jìn)入調(diào)下限模式
                   if(i>2)                                        //K1按下三次后退出調(diào)節(jié)模式
                   {
                i=0;                                        //進(jìn)入正常模式
                           TR1=0;                                //關(guān)定時(shí)器1
                           k4=0;                                //在正常模式下選擇K4的消按鍵音功能
                           v=0;                                        //在正常模式下選擇K2、K3的查看上下限報(bào)警溫度功能
                        store_t();                        //存儲(chǔ)調(diào)整后的上下限報(bào)警溫度
                   }               
                   switch(i)                                //顯示選擇
                   {
                       case 0:a=0;break;        //a=0選擇顯示測(cè)得的溫度
                           case 1:a=1;break;    //a=1選擇顯示上限溫度
                           case 2:a=2;break;    //a=2選擇顯示下限溫度
                        
                        default:break;
                   }
                        
                }
                while(key1==0);                                //K1松按鍵時(shí)消抖
                keyscan_delay(10);
               
        }
        if(a==1&&v==1)                                        //a=1選擇顯示上限溫度且v=1時(shí)選擇上下限溫度加功能
        {led=0;max=temp_change(max,f_max);}//顯示上限溫度
        else if(a==2&&v==1)                                //a=2選擇顯示下限溫度且v=1時(shí)選擇上下限溫度減功能
        {led=1;min=temp_change(min,f_min);}
        else;
        if(k4==1)                                                //k4=1時(shí)K4按鍵選擇正負(fù)溫度設(shè)定功能
        {
                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;}//當(dāng)溫度大于55度時(shí),只能設(shè)定為正溫度
                        if(a==2)
                           {if(min>55) f_max=0;else f_min=~f_min;}//當(dāng)溫度大于55度時(shí),只能設(shè)定為正溫度                                
                        }
                        while(key4==0);
                        keyscan_delay(10);
                }
        }
        
        if(v==0)                                                 //v=0時(shí)選擇上下限查看功能
        {
                if(key2==0)
                {
                if(v2==0)beer=0;
                        keyscan_delay(10);
                        if(key2==0)
                        {
                        beer=1;
                           a=1;                                        //選擇上限顯示
                           TR1=1;                                //開定時(shí)器1開始定時(shí)一分鐘左右
                           s1=1;                                //上限顯示不閃爍,顯示一分鐘左右自動(dòng)退出
                        }
                        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;                                //開定時(shí)器1開始定時(shí)1s
                           s1=1;                                //下限顯示不閃爍,顯示1s自動(dòng)退出                        
                        }
                        while(key3==0);
                        keyscan_delay(10);
                        
                }
                if(v1==1)                                   //v1=1時(shí)定時(shí)1s時(shí)間到自動(dòng)關(guān)閉報(bào)警上下限查看功能
                {a=0;v1=0;TR1=0;}                   //a=0顯示實(shí)測(cè)溫度,v1清零,關(guān)定時(shí)器1
                if(k4==0)                                   //k4=0時(shí)K4按鍵選擇消按鍵音的功能
                {                                                
                        if(key4==0)
                        {
                                if(v2==0)beer=0;
                                keyscan_delay(10);
                                if(key4==0)
                                {
                                beer=1;
                                   v2=~v2;                        //為‘0’時(shí)開按鍵音,為‘1’時(shí)關(guān)按鍵音                                
                                }
                                while(key4==0);
                                keyscan_delay(10);
                    }               
                }
        }        
}

#endif









/********************************************************************
* 程序名;  DS18B20頭文件
* 說(shuō)明:用到的全局變量是:無(wú)符號(hào)字符型變量temp(測(cè)得的溫度整數(shù)部分),
temp_d(測(cè)得的溫度小數(shù)部分),標(biāo)志位f(測(cè)量溫度的標(biāo)志位‘0’表
                示“正溫度”‘1’表示“負(fù)溫度”),標(biāo)志位f_max(上限溫度的標(biāo)志位
                ‘0’表示“正溫度”、‘1’表示“負(fù)溫度”),標(biāo)志位f_min(下限溫度的
                標(biāo)志位‘0’表示“正溫度”、‘1’表示“負(fù)溫度”),標(biāo)志位w(報(bào)警標(biāo)志位
                ‘1’啟動(dòng)報(bào)警‘0’關(guān)閉報(bào)警)。               
*********************************************************************/
#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;                                   //測(cè)量溫度的整數(shù)部分
uchartemp_d=0;                               //測(cè)量溫度的小數(shù)部分
bit     f=0;                                                  //測(cè)量溫度的標(biāo)志位‘0’表示“正溫度”‘1’表示“負(fù)溫度”)
bit     f_max=0;                                          //上限溫度的標(biāo)志位‘0’表示“正溫度”‘1’表示“負(fù)溫度”)
bit     f_min=0;                                          //下限溫度的標(biāo)志位‘0’表示“正溫度”‘1’表示“負(fù)溫度”)
bit     w=0;                                                  //報(bào)警標(biāo)志位‘1’啟動(dòng)報(bào)警,‘0’關(guān)閉報(bào)警;

/******************************************************/
/*                                                                        延時(shí)子函數(shù)                                                                                                /
/*****************************************************/
void ds18b20_delayus(uint t)          //延時(shí)幾μs
{
while(t--);
}

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


/******************************************************/
/*                                                                        DS18B20初始化函數(shù)                                                                        /
/*****************************************************/

void ds18b20_init()                                       
{
        uchar c=0;  
        DQ=1;
        DQ=0;                                                    //控制器向DS18B20發(fā)低電平脈沖
        ds18b20_delayus(80);                    //延時(shí)15-80μs
        DQ=1;                                                        //控制器拉高總線,
        while(DQ);                                                //等待DS18B20拉低總線,在60-240μs之間
        ds18b20_delayus(150);                        //延時(shí),等待上拉電阻拉高總線
        DQ=1;                                                        //拉高數(shù)據(jù)線,準(zhǔn)備數(shù)據(jù)傳輸;
}


/******************************************************/
/*                                                                        DS18B20字節(jié)讀函數(shù)                                                                /
/*****************************************************/

uchar ds18b20_read()                                
{
        uchari;
        uchar d=0;
        DQ = 1;                                                        //準(zhǔn)備讀;
        for(i=8;i>0;i--)
        {        
            d >>= 1;                           //低位先發(fā);
                DQ = 0;                                                                        
                _nop_();
                _nop_();                                
                DQ = 1;                                                //必須寫1,否則讀出來(lái)的將是不預(yù)期的數(shù)據(jù);
                if(DQ)                                                //在12us處讀取數(shù)據(jù);
                        d |= 0x80;
                ds18b20_delayus(10);               
                }
        return d;                                                 //返回讀取的值
}


/******************************************************/
/*                                                                        DS18B20字節(jié)寫函數(shù)                                                        /
/*****************************************************/
void ds18b20_write(uchar d)                        
{
uchari;
for(i=8;i>0;i--)
     {        
                  DQ=0;
                  DQ=d&0x01;
                  ds18b20_delayus(5);
                  DQ=1;        
                  d >>= 1;         
     }
}


/******************************************************/
/*                                                                        獲取溫度函數(shù)                                                                            /
/*****************************************************/
voidget_temperature(bit flag)               
{
        uchar a=0,b=0,c=0,d=0;
uinti;        
        ds18b20_init();                                
        ds18b20_write(0xcc);                        //向DS18B20發(fā)跳過讀ROM命令
        ds18b20_write(0x44);                        //寫啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換命令,轉(zhuǎn)換結(jié)果存入內(nèi)部RAM
        if(flag==1)
        {                                                                                                //首次啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換需要500ms,若轉(zhuǎn)換時(shí)間不夠就出錯(cuò),讀出的是85度的錯(cuò)誤值。
          display1(1);                                        //用開機(jī)動(dòng)畫耗時(shí)
        }
        else
        ds18b20_delayms(1);                                
        ds18b20_init();                        
        ds18b20_write(0xcc);                                 
        ds18b20_write(0xbe);                                
        a=ds18b20_read();                                        //讀內(nèi)部RAM (LSB)
        b=ds18b20_read();                                        //讀內(nèi)部RAM (MSB)
        if(flag==1)                                                                //局部位變量f=1時(shí)讀上下線報(bào)警溫度
        {
            max=ds18b20_read();                    //讀內(nèi)部RAM (TH)
            min=ds18b20_read();                    //讀內(nèi)部RAM (Tl)
               
        }
        if((max&0x80)==0x80)                    //若讀取的上限溫度的最高位(符號(hào)位)為‘1’表明是負(fù)溫度
        {f_max=1;max=(max-0x80);}       //將上限溫度符號(hào)標(biāo)志位置‘1’表示負(fù)溫度,將上限溫度裝換成無(wú)符號(hào)數(shù)。
         if((min&0x80)==0x80)                        //若讀取的下限溫度的最高位(符號(hào)位)為‘1’表明是負(fù)溫度
        {f_min=1;min=(min-0x80);}       //將下限溫度符號(hào)標(biāo)志位置‘1’表示負(fù)溫度,將下限溫度裝換成無(wú)符號(hào)數(shù)。
               
        i=b;
        i>>=4;
        if (i==0)
                {
        f=0;                                            //i為0,正溫度,設(shè)立正溫度標(biāo)記
        temp=((a>>4)|(b<<4));                //整數(shù)部分
        a=(a&0x0f);
        temp_d=a;                                        //小數(shù)部分
                }
        else
                {
        f=1;                                            //i為1,負(fù)溫度,設(shè)立負(fù)溫度標(biāo)記
        a=~a+1;
        b=~b;
        temp=((a>>4)|(b<<4));                                        //整數(shù)部分
        a=(a&0x0f);                                        //小數(shù)部分
        temp_d=a;
        }
}

/******************************************************/
/*                                                                        存儲(chǔ)極限溫度函數(shù)                                                                /
/*****************************************************/
voidstore_t()
{
        if(f_max==1)                                         //若上限溫度為負(fù),將上限溫度轉(zhuǎn)換成有符號(hào)數(shù)(最高位為1是負(fù),為0是正)
        max=max+0x80;
        if(f_min==1)                                         //若下限溫度為負(fù),將上限溫度轉(zhuǎn)換成有符號(hào)數(shù)
        min=min+0x80;

        ds18b20_init();                        
        ds18b20_write(0xcc);                        
        ds18b20_write(0x4e);                         //向DS18B20發(fā)寫字節(jié)至?xí)捍嫫?和3(TH和TL)命令
        ds18b20_write(max);                             //向暫存器TH(上限溫度暫存器)寫溫度
        ds18b20_write(min);                             //向暫存器TL(下限溫度暫存器)寫溫度
        ds18b20_write(0xff);                         //向配置寄存器寫命令,進(jìn)行溫度值分辨率設(shè)置
        ds18b20_init();                        
        ds18b20_write(0xcc);                        
        ds18b20_write(0x48);                         //向DS18B20發(fā)將RAM中2、3字節(jié)的內(nèi)容寫入EEPROM
}                                                                                                                //DS18B20上電后會(huì)自動(dòng)將EEPROM中的上下限溫度拷貝到TH、TL暫存器


/******************************************************/
/*                                                                        溫度超限報(bào)警函數(shù)                                                        /
/*****************************************************/
void alarm()
{                                                                         //若上限值是正值
        if(f_max==0)
          {
             if(f_min==0)                                 //若下限值是正值
                 {
                         if(f==0)                                 //若測(cè)量值是正值
                         {
                                if(temp<=min||temp>=max)
                                 {w=1;TR1=1;}                 //當(dāng)測(cè)量值小于最小值或大于最大值時(shí)報(bào)警
                                if((temp<max)&&(temp>min))
                                 {w=0;}                                 //當(dāng)測(cè)量值大于最小值且小于最大值時(shí)不報(bào)警
                         }
                         if(f==1){w=1;TR1=1;}         //若測(cè)量值是負(fù)值時(shí)報(bào)警
                 }
             if(f_min==1)                                 //若下限值是負(fù)值
                 {
                         if(f==0)                                 //若測(cè)量值是正值
                         {
                                 if(temp>=max)//當(dāng)測(cè)量值大于最大值時(shí)報(bào)警
                                 {w=1;TR1=1;}
                                 if(temp<max )//當(dāng)測(cè)量值小于最大值時(shí)不報(bào)警
                                 {w=0;}
                         }
                         if(f==1)                                 //若測(cè)量值是負(fù)值
                         {
                                 if(temp>=min)//當(dāng)測(cè)量值大于最小值時(shí)報(bào)警
                                 {w=1;TR1=1;}
                                 if(temp<min)//當(dāng)測(cè)量值小于最小值時(shí)不報(bào)警
                                 {w=0;}
                         }
                 }
          }

          if(f_max==1)                                         //若下限值是負(fù)值
          {
             if(f_min==1)                                 //若下限值是負(fù)值
                 {
                         if(f==1)                                 //若測(cè)量值是負(fù)值
                         {
                                if((temp<=max)||(temp>=min))
                                 {w=1;TR1=1;}                 //當(dāng)測(cè)量值小于最大值或大于最小值時(shí)報(bào)警
                                if((temp<min)&&(temp>max))
                                 {w=0;}                                 //當(dāng)測(cè)量值小于最小值且大于最大值時(shí)不報(bào)警
                         }
                         if(f==0){w=1;TR1=1;}         //若測(cè)量值是正值時(shí)報(bào)警
                 }

          }        
}

#endif
















/**********************************************************************
* 程序名;   ds18b20數(shù)碼管動(dòng)態(tài)顯示頭文件
* 功能:通過定時(shí)器0延時(shí)使數(shù)碼管動(dòng)態(tài)顯示
**********************************************************************/
#ifndef __ds18b20_display_H__               
#define __ds18b20_display_H__

#define uint unsigned int                         //變量類型宏定義,用uint表示無(wú)符號(hào)整形(16位)
#define uchar unsigned char                         //變量類型宏定義,用uchar表示無(wú)符號(hào)字符型(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為全局無(wú)符號(hào)字符型變量,賦初值為‘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};        //帶小數(shù)點(diǎn)的0~9.
uchar code temperature3[]={ 0xff,0x7f,0xbf,0x89,0xc7};        //依次是‘不顯示’‘.’‘-’‘H’‘L’


/******************************************************/
/*                                                                                延時(shí)子函數(shù)                                                                                        /
/*****************************************************/

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


/******************************************************/
/*                                                                                定時(shí)器1初始化函數(shù)                                                                /
/*****************************************************/

void timer1_init(bit t)
{
    TMOD=0x10;                                                
    TH0=0x3c;                                                
    TL0=0xb0;                                                
    EA=1;                                                        
    ET1=1;                                                        
    TR1=t;                                                        // 局部變量t為1啟動(dòng)定時(shí)器1,為0關(guān)閉定時(shí)器1
}


/******************************************************/
/*                                                                                定時(shí)器1中斷函數(shù)                                                                        /
/*****************************************************/

void timer1() interrupt 3
{
    TH0=0x3c;                                                //重新賦初值,定時(shí)50ms
    TL0=0xb0;
        num++;                                                        //每進(jìn)入一次定時(shí)器中斷num加1(每50ms加1一次)
if(num<5)
        {s=1;if(w==1){beer=1;led=1;}else{beer=1;led=1;}}                                                               
        else                                                      //進(jìn)入4次中斷,定時(shí)200ms時(shí)若報(bào)警標(biāo)志位w為‘1’則啟動(dòng)報(bào)警,不為‘1’不啟動(dòng)
                                                                        //實(shí)現(xiàn)間歇性報(bào)警功能
        {s=0;if(w==1){beer=0;led=0;}else{beer=1;led=1;}}
        if(num>20)                                                //進(jìn)入20次中斷,定時(shí)1s
    {
        num=0;                                                //num歸0,重新定開始定時(shí)1s
           s1=0;                                                //定時(shí)1s時(shí)間到時(shí)自動(dòng)關(guān)閉報(bào)警上下限顯示功能
           v1=1;                                                //定時(shí)1s時(shí)間到時(shí)自動(dòng)關(guān)閉報(bào)警上下限查看功能
    }
        
}
/******************************************************/
/*                                                                                調(diào)整報(bào)警上下限選擇函數(shù)                                        /
/*****************************************************/

void  selsct_1(ucharf,uchar k)            //消除百位的0顯示,及正負(fù)溫度的顯示選擇
{
      if(f==0)                                                                                //若為正溫度,百位為0則不顯示百位,不為0則顯示
          {
                if(k/100==0)  P0=temperature3[0];
                else          P0=temperature1[k/100];
          }
          if(f==1)                                                                                        //若為負(fù)溫度,若十位為0,百位不顯示,否則百位顯示‘-’
          {
        if(k%100/10==0)   P0=temperature3[0];        
                else              P0=temperature3[2];
          }
}

void  selsct_2(bit f,uchar k)                        //消除十位的0顯示,及正負(fù)溫度的顯示選擇
{
      if(f==0)                                                        //若為正溫度,百位十位均為0則不顯示十位,否則顯示十位
          {
                if((k/100==0)&&(k%100/10==0))  
                      P0=temperature3[0];
                else          P0=temperature1[k%100/10];
          }
          if(f==1)                                                                                        //若為負(fù)溫度,若十位為0,十位不顯示,否則十位顯示‘-’
          {
        if(k%100/10==0)   P0=temperature3[2];
                else               P0=temperature1[k%100/10];
          }               
}



/******************************************************/
/*                                                                                主函數(shù)顯示                                                                                        /
/*****************************************************/

void display(uchart,uchart_d)           //用于實(shí)測(cè)溫度、上限溫度的顯示
{
uchari;
   for(i=0;i<4;i++)                            //依次從左至右選通數(shù)碼管顯示,實(shí)現(xiàn)動(dòng)態(tài)顯示
   {               
switch(i)
           {
              case 0:                                   //選通第一個(gè)數(shù)碼管
                  wei2=0;                                   //關(guān)第二個(gè)數(shù)碼管
                  wei3=0;                                   //關(guān)第三個(gè)數(shù)碼管
                  wei4=0;                                   //關(guān)第四個(gè)數(shù)碼管
              wei1=1;                                   //開第一個(gè)數(shù)碼管               
                  if(a==0){selsct_1(f,t);} //若a=0則在第一個(gè)數(shù)碼管上顯示測(cè)量溫度的百位或‘-’
                if(a==1)
                  {                  
                      P0=temperature3[3];  //若a=1則在第一個(gè)數(shù)碼管上顯示‘H’               
                  }
                if(a==2)
                  {                  
                      P0=temperature3[4];  //若a=2則在第一個(gè)數(shù)碼管上顯示‘L’
                  }                                       
                break;
              case 1:                                                        //選通第二個(gè)數(shù)碼管
                  wei1=0;               
                  wei3=0;
                  wei4=0;               
              wei2=1;               
                  if(a==0){selsct_2(f,t);} //若a=0則在第二個(gè)數(shù)碼管上顯示測(cè)量溫度的十位或‘-’
                  if(a==1)                                                        //若a=1則在第二個(gè)數(shù)碼管上顯示上限報(bào)警溫度的百位或‘-’
                  {  
                     if(s==0) selsct_1(f_max,max);//若s=0則顯示第二個(gè)數(shù)碼管,否則不顯示
                     else P0=temperature3[0];                  //通過s標(biāo)志位的變化實(shí)現(xiàn)調(diào)節(jié)上下限報(bào)警溫度時(shí)數(shù)碼管的閃爍
                     if(s1==1) selsct_1(f_max,max);//若s1=1則顯示第二個(gè)數(shù)碼管(s1標(biāo)志位用于上下限查看時(shí)的顯示)
                  }
                  if(a==2)                                                                        //若a=2則在第二個(gè)數(shù)碼管上顯示下限報(bào)警溫度的百位或‘-’
                  {  
                if(s==0) selsct_1(f_min,min);
                else P0=temperature3[0];
                if(s1==1) selsct_1(f_min,min);
                  }                                                                        
                break;
              case 2:                                                                        //選通第三個(gè)數(shù)碼管
                  wei1=0;
                  wei2=0;               
                  wei4=0;               
              wei3=1;               
                  if(a==0){P0=temperature2[t%10];}//若a=0則在第三個(gè)數(shù)碼管上顯示測(cè)量溫度的個(gè)位
                  if(a==1)                                                                                        //若a=1則在第三個(gè)數(shù)碼管上顯示上限報(bào)警溫度的十位或‘-’
                  {
                      if(s==0) selsct_2(f_max,max);//若s=0則顯示第三個(gè)數(shù)碼管,否則不顯示
                        else P0=temperature3[0];
                          if(s1==1) selsct_2(f_max,max);//若s1=1則顯示第三個(gè)數(shù)碼管
                  }
                  if(a==2)                                                                                        //若a=2則在第三個(gè)數(shù)碼管上顯示下限報(bào)警溫度的十位或‘-’
                  {
                if(s==0) selsct_2(f_min,min);
                        else P0=temperature3[0];
                        if(s1==1) selsct_2(f_min,min);
                  }                                                                                
                break;
              case 3:                                  //選通第四個(gè)數(shù)碼管
                  wei1=0;               
                  wei2=0;               
                  wei3=0;
                  wei4=1;               
                  if(a==0){P0=temperature1[t_d];}//若a=0則在第四個(gè)數(shù)碼管上顯示測(cè)量溫度的小數(shù)位
                  if(a==1)                                                                                        //若a=1則在第四個(gè)數(shù)碼管上顯示上限報(bào)警溫度的個(gè)位
                  {
                     if(s==0) P0=temperature1[max%10];//若s=0則顯示第四個(gè)數(shù)碼管,否則不顯示
                        else P0=temperature3[0];
                         if(s1==1) P0=temperature1[max%10];//若s1=1則顯示第四個(gè)數(shù)碼管
                  }
                  if(a==2)                                                                                                //若a=2則在第四個(gè)數(shù)碼管上顯示下限報(bào)警溫度的個(gè)位
                  {
                if(s==0) P0=temperature1[min%10];
                        else P0=temperature3[0];
                        if(s1==1) P0=temperature1[min%10];
                  }                                                                                                        
                break;               
           }
        display_delay(10);                          //每個(gè)數(shù)碼管顯示3ms左右
        }
        
}
/******************************************************/
/*                                                                                開機(jī)顯示函數(shù)                                                                                /
/*****************************************************/
void display1(uint z)                          //用于開機(jī)動(dòng)畫的顯示
{
uchari,j;
bit f=0;
   for(i=0;i<z;i++)                                  //‘z’是顯示遍數(shù)的設(shè)定
   {        
                for(j=0;j<4;j++)                  //依次從左至右顯示‘-’
           {
        switch(j)
                   {
                        case 0:
                                  wei2=0;
                                  wei3=0;
                                  wei4=0;               
                              wei1=1;  break;
                                          P0=temperature3[2];//第一個(gè)數(shù)碼管顯示
                        case 1:
                                  wei1=0;               
                                  wei3=0;
                                  wei4=0;               
                              wei2=1;break;
                                          P0=temperature3[2];//第二個(gè)數(shù)碼管顯示

                        case 2:
                                  wei1=0;
                                  wei2=0;               
                                  wei4=0;               
                              wei3=1;break;
                                          P0=temperature3[2];//第三個(gè)數(shù)碼管顯示
                        case 3:
                                  wei1=0;               
                                  wei2=0;               
                                  wei3=0;
                                  wei4=1;break;
                                          P0=temperature3[2];//第四個(gè)數(shù)碼管顯示
                   }
                display_delay(400);           //每個(gè)數(shù)碼管顯示200ms左右
           }
               
        }
}


#endif        

回復(fù)

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除
ID:739545 發(fā)表于 2021-6-25 16:26 | 顯示全部樓層
無(wú)法調(diào)用頭文件,給個(gè)建議,一般情況下頭文件不建議放函數(shù),放外部函數(shù)調(diào)用extern void xxx();
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2021-6-25 16:45 | 顯示全部樓層
沒有找到ds18b20.h,keyscan.h,display.h這幾個(gè)頭文件,你應(yīng)當(dāng)找到后把路徑告訴工程。
回復(fù)

使用道具 舉報(bào)

5#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:944702 發(fā)表于 2021-6-25 17:46 | 顯示全部樓層
xuyaqi 發(fā)表于 2021-6-25 16:45
沒有找到ds18b20.h,keyscan.h,display.h這幾個(gè)頭文件,你應(yīng)當(dāng)找到后把路徑告訴工程。

怎樣設(shè)置我不會(huì)呀
回復(fù)

使用道具 舉報(bào)

ID:328014 發(fā)表于 2021-6-25 20:08 | 顯示全部樓層
如果你沒有2樓說(shuō)的那幾個(gè)文件,就可以放棄了,因?yàn)槿蔽募?是無(wú)法編譯的,連怎么設(shè)置都不會(huì)的話,就更不要說(shuō)親自編寫這個(gè)幾個(gè)文件了,我覺得要加強(qiáng)基礎(chǔ)部分的學(xué)習(xí)才行,而不是來(lái)這里提問
回復(fù)

使用道具 舉報(bào)

ID:944909 發(fā)表于 2021-6-25 22:51 | 顯示全部樓層
1940230 發(fā)表于 2021-6-25 17:46
怎樣設(shè)置我不會(huì)呀

右鍵工程-->options-->在里面找到Include Paths然后點(diǎn)開再點(diǎn)new添加這些文件的目錄就行了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表