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

標(biāo)題: 請(qǐng)教一下單片機(jī)大神,關(guān)于溫度邏輯判斷怎么溫度防抖,還有定時(shí)器做延遲問題? [打印本頁]

作者: shijie240    時(shí)間: 2020-6-30 16:40
標(biāo)題: 請(qǐng)教一下單片機(jī)大神,關(guān)于溫度邏輯判斷怎么溫度防抖,還有定時(shí)器做延遲問題?
請(qǐng)教一下大神,關(guān)于溫度邏輯判斷怎么溫度防抖,還有定時(shí)器做延遲問題 ,用定時(shí)器可以做類似下面程序功能嗎?
檢測(cè)到溫度界限 拉低io口持續(xù)一段時(shí)間 用定時(shí)器方法不影響主程序運(yùn)作

單片機(jī)源程序如下:
if(A>=31)//溫度大于31度
                 {
                  LED1=1;
                  LED2=1;
                  AR1=0;//拉低下面io口持續(xù)2s
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                  Delay2000ms();
                    }
          else if(A<31)
                 {
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                  LED1=~LED1;
                  LED2=~LED2;
            }


作者: 黃youhui    時(shí)間: 2020-7-1 10:33
基本上都市ADC采集然后ADC濾波,求得答案,
以前做adc從51下載的資料,忘了那個(gè)大佬的分享的了,希望能幫到你

十大濾波.rar

313.45 KB, 下載次數(shù): 10


作者: shijie240    時(shí)間: 2020-7-1 10:33
會(huì)了,摸索出來了
作者: xxpp2011    時(shí)間: 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A>=31)//溫度大于31度
                  {
                  LED1=1;
                  LED2=1;
                  AR1=0;//拉低下面io口持續(xù)2s
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                    }
                if(A<31)//溫度小于31度
                delay(50);
                 }
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                  LED1=~LED1;
                  LED2=~LED2;



作者: xujiabin    時(shí)間: 2020-7-1 11:23
xxpp2011 發(fā)表于 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A ...

你這程序?qū)懙南旅鎽?yīng)該進(jìn)不去吧,編譯器沒報(bào)警
作者: xujiabin    時(shí)間: 2020-7-1 11:24
xxpp2011 發(fā)表于 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A ...

就是if(A<31)根本進(jìn)不去
作者: shijie240    時(shí)間: 2020-7-1 11:24
xxpp2011 發(fā)表于 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A ...

不要延遲函數(shù),會(huì)拉低單片機(jī)處理速度
作者: xujiabin    時(shí)間: 2020-7-1 11:27
定時(shí)器里面加一個(gè)計(jì)數(shù)標(biāo)志,等到計(jì)數(shù)到2秒給主循環(huán)一個(gè)標(biāo)志位,再拉低或者拉高引腳,就可以了。溫度防抖是不是采樣會(huì)有誤差,可以加個(gè)電容濾波,然后定時(shí)器延時(shí)采樣一下,不建議在主函數(shù)里面加延時(shí)。
作者: xxpp2011    時(shí)間: 2020-7-1 11:41
xujiabin 發(fā)表于 2020-7-1 11:24
就是if(A

if只是防抖,如果50ms后仍然低于31度就會(huì)跳出上面的while語句,執(zhí)行下面的LED狀態(tài)還原
作者: shijie240    時(shí)間: 2020-7-1 11:50
自己想了一下搞定了
if((((AB[M]-N)>TM[4])&&((AB[M+1]-N)>TM[4]))||(((AB[M]-N)>TM[4])&&((AB[M-1]-N)>TM[4]))||(((AB[M]-N)>TM[4])&&((AB[M+2]-N)>TM[4]))||(((AB[M]-N)>TM[4])&&((AB[M-2]-N)>TM[4])))        //判斷檢測(cè)數(shù)據(jù)
          {
           HAD=1;
           WM=1;
           GM=1;
          }
        else                   //延遲切換時(shí)間
        {
          if(GM==0)
                   {
                  HAD=0;
                }
         }
}
void IO_handle()   //LED IO口處理
{
                if(HAD==1)
                {
                  LED1=1;
                  LED2=1;
                  AR1=0;
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                    }
          else if(HAD==0)
                 {
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                 if(HAV==1)
                   {
                         HAV=0;
                        LED1=~LED1;
                    LED2=~LED2;
               }
            }
}

void Timer0Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0x00;                //設(shè)置定時(shí)初值
        TH0 = 0x4C;                //設(shè)置定時(shí)初值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
        EA = 1;                        //開總中斷
        ET0 = 1;           //開定時(shí)器T0中斷
}

void Timer0(void) interrupt 1
  {
    TL0 = 0x00;                //設(shè)置定時(shí)初值
        TH0 = 0x4C;                //設(shè)置定時(shí)初值
        tewp++;
   if(tewp>=20)                 //LED燈閃時(shí)間處理
         {
          tewp=0;
          HAV=1;
         }
        if(WM==1)                        //開關(guān)延遲10s
          {
           temp++;
           if(temp>=20)
                  {
                  temp=0;
                  time++;
                  if(time>=10)
                         {
                          time=0;
                           WM=0;
                       GM=0;
                         }
                   }
           }

}

作者: naqishuben    時(shí)間: 2020-7-1 12:10
延時(shí)判斷,這是比較簡單的辦法
作者: 隨風(fēng)飄遠(yuǎn)    時(shí)間: 2020-7-1 12:20
溫度  應(yīng)該要設(shè)置一個(gè)窗口值,升溫后報(bào)警  降到一定溫度值后再解除報(bào)警  就是有一個(gè)溫度范圍。 定時(shí)也要的,定義一個(gè)時(shí)間相關(guān)的變量, 降溫后 需要定時(shí)時(shí)間到了才解除報(bào)警
作者: shijie240    時(shí)間: 2020-7-1 12:30
xujiabin 發(fā)表于 2020-7-1 11:27
定時(shí)器里面加一個(gè)計(jì)數(shù)標(biāo)志,等到計(jì)數(shù)到2秒給主循環(huán)一個(gè)標(biāo)志位,再拉低或者拉高引腳,就可以了。溫度防抖是 ...

你這個(gè)是定時(shí)去處理 我想要的是定時(shí)器直接做延遲
作者: SKYLAR123    時(shí)間: 2020-7-1 13:34
shijie240 發(fā)表于 2020-7-1 12:30
你這個(gè)是定時(shí)去處理 我想要的是定時(shí)器直接做延遲

那你就在想要延時(shí)的下面做個(gè)標(biāo)志位,標(biāo)志位為1,定時(shí)器給標(biāo)志位里面的變量累計(jì)加一,到了你想要延時(shí)的時(shí)間在做一個(gè)標(biāo)志位這個(gè)標(biāo)志位為1,說明,延時(shí)時(shí)間到了
作者: qyqx01    時(shí)間: 2020-7-1 18:07
不能在AD轉(zhuǎn)溫度時(shí)候作么,比如AD轉(zhuǎn)換后取平均值,然后作個(gè)定時(shí)標(biāo)記,多少時(shí)間內(nèi)刷新一次溫度值.剩下的溫度控制程序就完全可以直接一次性判斷了
if(ADCokF&&Flag2s)
{
    ADCokF=0;
   Flag2s=0;
    //溫度轉(zhuǎn)換;
   A=溫度;
}

控制程序直接去掉延時(shí)等待
if(A>=31)//溫度大于31度
                 {
                  LED1=1;
                  LED2=1;
                  AR1=0;//拉低下面io口持續(xù)2s
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                    }
          else if(A<31)
                 {
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                  LED1=~LED1;
                  LED2=~LED2;
            }


作者: wxs732    時(shí)間: 2020-7-1 19:06
你應(yīng)該想實(shí)現(xiàn)的是,溫度自動(dòng)控制 !
    最長見的就是  “恒溫電烙鐵”  
這個(gè)需要PID 來實(shí)現(xiàn)。
    如果用繼電器 是不行的,因?yàn)樵诮咏鼫囟戎档脮r(shí)候開關(guān)頻繁。
    如果加熱水的話,還需要考慮水量減少時(shí),這個(gè)開時(shí)間加熱的判斷。
    希望能幫到
   




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1