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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4399|回復: 3
收起左側

單片機長短按鍵來控制燈的亮滅程序問題

[復制鏈接]
ID:383379 發表于 2018-9-11 11:36 | 顯示全部樓層 |閱讀模式
新人求助~目的是制作一個呼吸燈,判斷,1:當燈亮的時候,按下按鍵1s燈滅,當燈滅的時候,按下按鍵1s燈亮。2:通過光敏電阻采樣光照,讓燈自動亮滅,并能通過按鍵加以控制,即當光照暗的時候,按鍵按1s,燈亮;當光照亮的時候,按鍵檢測3秒,燈亮。已經可以實現光敏電阻來控制呼吸燈了,但是不懂得該怎么加入按鍵來加以控制,大家能幫我看看該怎么在程序中加入按鍵的部分嗎?幫忙修改下程序在程序中加入一個長短按鍵來控制燈的亮滅。我試了好久都沒能加入按鍵來控制,請各位大神幫幫忙。謝謝


#include<pic16f1828.h>
#define ADC_NUM 8//轉換次數
#define LED1 LATC5
void LED(unsigned char temp);

void delay1ms(unsigned int x)
{  unsigned int y;
        for(;x>0;x--)
        {
         for(y=0;y<270;y--)
         {;}
        }
}
  void AD_GPIO_init(void)
{
   TRISC=0b00001100;
   ANSELC=0x04;
   PORTC=0x00;
   LATC=0x00;
}
  void init_fosc(void)
{
  OSCCON=0xF0;
}
void init_AD(void)
{
   ADCON1=0X90;//右對齊,8時鐘,參考電源電壓
   ADCON0=0x18;//AN6通道
   ADCON0bits.ADON=1;
}
void PWM_INIT()
  {
          OSCCONbits.IRCF=1110;
      TRISCbits.TRISC5=1;
      PR2=99;
      CCP1CON=0b00001100;
      CCPR1L=0b00110010;
      CCP1CONbits.DC1B=0b00;
      CCPTMRS0=0b11111100;
      PIR1bits.TMR2IF=0;
      T2CONbits.T2CKPS=0b01;
      T2CONbits.TMR2ON=1;
  while(PIR1bits.TMR2IF==0);
      TRISCbits.TRISC5=0;

  }


void LED(unsigned char temp)
        {  unsigned int i;
               
         
            CCPR1L=0;
              if(temp)
         {
             for(i=0;i<100;i++)
            {
              CCPR1L=i;
             delay1ms(60);
             }
           
                 delay1ms(600);
                 delay1ms(600);
                 delay1ms(600);
                  
                  for(i=100;i>0;i--)
               {
                  CCPR1L=i;
                  delay1ms(60);
               }  
                   CCPR1L=0;
                   delay1ms(800);
                   delay1ms(600);
                   delay1ms(600);

        }
        }
  unsigned int ADC_BAT_ONE(void)
{
      unsigned int value;
      value=0;
      ADCON0bits.CHS=6;
      ADCON0bits.ADGO=1;
         while(ADCON0bits.GO==1);
      value=(unsigned int)ADRESH;
      value=value<<8;
      value+=ADRESL;
   return value;
}
  unsigned int ADC_BAT_contiue(void)
{
   unsigned int ADV_MCU[ADC_NUM],ADV_CNT,ADV_ALL;
    ADV_ALL=0;
     for(ADV_CNT=0;ADV_CNT<ADC_NUM;ADV_CNT++)
         {
            ADV_MCU[ADV_CNT]=ADC_BAT_ONE();
         }
           for(ADV_CNT=0;ADV_CNT<ADC_NUM;ADV_CNT++)
               {
                  ADV_ALL+=ADV_MCU[ADV_CNT];
               }
       ADV_ALL=ADV_ALL/ADC_NUM;
  return ADV_ALL;
}



        void main()
        {unsigned char n;
                init_fosc();
           
            init_AD();
            PWM_INIT();
            AD_GPIO_init();

             while(1)
          {
         if(ADC_BAT_contiue()>460)
                     {delay1ms(1000);
                     
                     n=1;
                      }
                  else
                     {
                        delay1ms(1000);
                     delay1ms(1000);
                     delay1ms(1000);
                     n=0;
                 }   
              LED(n);
       }
         }



以上是用光敏電阻實現的呼吸燈部分的程序,想從RC3端口輸入加一個按鍵來控制,試了好久都沒成功,請大家幫幫忙,看下該怎么修改程序在程序中加入長短按鍵來控制。謝謝大家。
回復

使用道具 舉報

ID:396528 發表于 2018-9-11 15:14 | 顯示全部樓層
你可以在按鍵中斷內計數,比如計數到1S,時候再采集光敏電阻的AD值。然后再做判斷。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:383379 發表于 2018-9-11 20:55 | 顯示全部樓層
cqqiuwen 發表于 2018-9-11 15:14
你可以在按鍵中斷內計數,比如計數到1S,時候再采集光敏電阻的AD值。然后再做判斷。

你好,謝謝你的回復。因為是剛接觸,所以很多都不知道。我現在是卡在了兩個地方:1按鍵是那種點觸開關,按下后燈亮了放手后又滅了。不懂該怎么保持按鍵按下的狀態;在網上看說是弄個標志位,但是我試了下好像不行,可能是我程序沒寫對;2不懂該怎么實現按鍵的長短按,并將這個功能掛到程序中去。請問你有類似的例子嗎?可以發給我參考下嗎?謝謝
回復

使用道具 舉報

ID:393354 發表于 2018-9-13 16:27 | 顯示全部樓層
給你一個我自己寫的stm32識別長短按鍵的方法
原理是定時器中斷里計數,然后當按鍵按下時,根據定時器里的計數大小進行長按鍵和短按鍵判斷


長短按鍵判斷圖1

長短按鍵判斷圖1

長短按鍵判斷圖2

長短按鍵判斷圖2
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频www | 午夜日韩精品 | 超碰最新在线 | 亚洲国产欧美91 | 亚洲成人福利 | 久久精品国产99国产 | 国产一区二区三区在线 | 亚洲黄色成人网 | 九色一区 | 拍真实国产伦偷精品 | 日韩三级 | 国偷自产av一区二区三区 | 日本精品视频一区二区三区四区 | 日韩欧美中文字幕在线观看 | 国产美女h视频 | 久久久国产精品一区 | 成人午夜影院 | 国内自拍偷拍一区 | 美女黄色在线观看 | 九色国产| 中文字幕一二三 | 国产精品久久久久久久久 | 国产成人啪免费观看软件 | 亚洲综合区 | 在线观看免费福利 | 国产精品视频500部 a久久 | 欧美亚洲国产一区二区三区 | 欧美国产日韩一区 | 国产色99精品9i | 超碰在线免费公开 | 美女张开腿露出尿口 | 婷婷五月色综合香五月 | 日韩av中文 | 欧美xxxx日本 | 国产综合视频 | 天天操操| 精品久久久久久久久亚洲 | 久久久久久久久久久一区二区 | 综合激情网| 日韩三级视频 | 欧美a级成人淫片免费看 |