久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2171|回復: 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        

回復

使用道具 舉報

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這幾個頭文件,你應當找到后把路徑告訴工程。

怎樣設置我不會呀
回復

使用道具 舉報

ID:328014 發表于 2021-6-25 20:08 | 顯示全部樓層
如果你沒有2樓說的那幾個文件,就可以放棄了,因為缺文件,是無法編譯的,連怎么設置都不會的話,就更不要說親自編寫這個幾個文件了,我覺得要加強基礎部分的學習才行,而不是來這里提問
回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久91 | 久久青草av| 久久成人精品视频 | 久久88| 在线观看黄色电影 | 日韩视频精品在线 | 国产精品一区二区三区在线 | 国产日韩一区二区三区 | 天天躁日日躁狠狠躁2018小说 | 成人在线免费观看视频 | 性精品| 国产98色在线 | 日韩 | 日韩av电影院 | 黄视频在线网站 | 日韩精品极品视频在线观看免费 | 激情欧美日韩一区二区 | 国产色网 | 亚洲福利在线视频 | 国产精品99久久久久久www | 国产成人免费在线 | 一区二区在线观看免费视频 | 亚洲成人在线网 | 久久视频免费看 | 亚洲啊v在线 | 久久久国产一区 | 亚洲国产精品久久 | 蜜桃久久 | 99精品视频在线观看 | 欧洲一区二区三区 | 亚洲成人一区二区三区 | 一级二级三级黄色 | 国产精品一区二区av | 国产精品久久久乱弄 | 国产精品国产a | heyzo在线| 天天成人综合网 | 欧美在线一区二区三区 | 久久伊人一区二区 | 成人深夜小视频 | 久久精品久久综合 | 91久久久久久久久久久 |