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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 9071|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)檢測(cè)交流電掉電程序(數(shù)碼分段開(kāi)關(guān))

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:262 發(fā)表于 2014-2-20 22:02 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
燈飾配件中有一種控制器叫數(shù)碼分段開(kāi)關(guān),基本工作原理是利用墻壁開(kāi)關(guān)通斷電來(lái)實(shí)現(xiàn)對(duì)多種負(fù)載的輪流亮滅,這其中就涉及到單片機(jī)如何檢測(cè)交流電掉電。首先,要把交流電的同步信號(hào)提取出來(lái),形成單片機(jī)能識(shí)別的低壓信號(hào),一般有2中方法,一種是直接利用電阻分壓法,把同步信號(hào)提取(適合非隔離型電路)。另外一種方法是利用光耦提取隔離的交流信號(hào)。2種方法如下所示:


光耦隔離取樣電路


電阻分壓取樣電路

所取得的交流信號(hào)如下圖:


本程序?qū)崿F(xiàn)的功能是,第一次打開(kāi)關(guān),L1亮,L2滅,第二次打開(kāi)關(guān),L1滅,L2亮,第三次打開(kāi)關(guān),L1,L2全亮,第四次打開(kāi)關(guān),L1,L2全滅,如此循環(huán)。那么,單片機(jī)檢測(cè)交流電掉電,每隔一定時(shí)間檢測(cè)一次交流信號(hào)輸入口,如果是低電平,開(kāi)始計(jì)時(shí),如果12MS-15MS之后,還是低電平,說(shuō)明交流電被斷過(guò)一次電,此時(shí)要做出相應(yīng)的控制動(dòng)作。所用單片機(jī)為PIC16F676,RA5上的腳作為交流檢測(cè)腳。RC2,RC3作為負(fù)載輸出控制端。程序如下:

#include<pic.h>
__CONFIG(0X1B4);
#define uchar unsigned char//宏定義,相當(dāng)于uchar=unsigned char
#define uint unsigned int//宏定義,相當(dāng)于uint=unsigned  int




uint key2_time_cnt;//按鍵去抖計(jì)數(shù)器
uchar key2_lock;//按鍵有效標(biāo)志
uchar key2_num_s;//功能散轉(zhuǎn)變量
uchar key2_touch_s_flag;//交流斷電信號(hào)有效標(biāo)志
uint shuzi;//時(shí)標(biāo)計(jì)數(shù)變量
uchar SYS1MS;//時(shí)標(biāo)開(kāi)關(guān)標(biāo)志

void PORT_init()
{
ANSEL=0X00;//普通端口設(shè)置
CMCON=0X07;//比較器關(guān)閉
TRISA=0b00110100;
TRISC=0b00110000;
PORTC=0X00;
PORTA=0X00;
T0CS=0;//定時(shí)器內(nèi)部時(shí)鐘選擇
;
T0IF=0;//定時(shí)器中斷標(biāo)志清零
T0IE=1;//定時(shí)器中斷使能
GIE=1;//全局中斷使能
TMR0=9;//定時(shí)器初值為零
}

void key_scan2()
{
if(RA5==1)//如果RA5上按鍵沒(méi)有按下
{
  key2_lock=0;//2號(hào)鍵標(biāo)志清零
  key2_time_cnt=0;//去抖計(jì)數(shù)器清零
  if(key2_touch_s_flag==1)//如果交流斷電信號(hào)有效
  {
     
      key2_touch_s_flag=0;//清交流信號(hào)標(biāo)志
      key2_num_s++;//功能號(hào)開(kāi)始自加
      if(key2_num_s>3)key2_num_s=0;//一共4種功能
  }

}
else if(key2_lock==0)//如果有鍵第一次按下
{
   key2_time_cnt++;//去抖計(jì)數(shù)器開(kāi)始計(jì)數(shù)
   if(key2_time_cnt>149)//當(dāng)計(jì)數(shù)器值大于149,說(shuō)明低電平持續(xù)的時(shí)間大于10MS,而交流電高低電平的持續(xù)時(shí)間是8——10MS,這就表示交流電被斷電了。
  {
     key2_touch_s_flag=1;//交流斷電有效,標(biāo)志置一。
     key2_time_cnt=0;//清去抖動(dòng)計(jì)數(shù)器
     key2_lock=1;//自鎖標(biāo)志置1,避免一直觸發(fā)
     
  }
}
}

void key_service2()
{

switch(key2_num_s)
{
  case 0:
        RC2=1;
  RC3=0;
  RA0=0;
  RA1=0;
        //key2_num_s=0;
        break;
   case 1:
      RC2=0;
  RC3=1;
  RA0=0;
  RA1=0;
        //key2_num_s=0;
        break;
   case 2:
        RC2=1;
  RC3=1;
  RA0=0;
  RA1=0;
       // key2_num_s=0;
        break;
  case 3:
      RC2=0;
  RC3=0;
  RA0=0;
  RA1=0;
        //key2_num_s=0;
        break;
  }
  
}

void main()
{
PORT_init();
while(1)
{
if(SYS1MS==1)
{
SYS1MS=0;
key_scan2();
}
key_service2();
}
}
void interrupt isr()//定時(shí)器0中斷函數(shù)
{
      if((T0IE&T0IF)==1)//判斷定時(shí)器中斷
  {   
      T0IF=0;//清定時(shí)器中斷標(biāo)志
            T0IE=0;//關(guān)定時(shí)器中斷
            TMR0=9;//從9加到256所用時(shí)間是250US
            shuzi++;
            if(shuzi==4)
            {
               shuzi=0;
               SYS1MS=1;
            }
           
            
            T0IE=1;//開(kāi)定時(shí)器中斷
  }
}



本程序?qū)τ跀嚯姍z測(cè)使用了
if()
{
第一區(qū)
}
else if()
{
第二區(qū)
}

        一開(kāi)始,信號(hào)高電平階段,在第一區(qū),要把各種標(biāo)志清零,同時(shí),要判斷斷電標(biāo)志是否有效,這樣做的目的是為了消除,交流電斷電瞬間單片機(jī)會(huì)出現(xiàn)誤動(dòng)作(閃燈) ,如果作為一般按鍵檢測(cè)的話(huà),這里做判斷,并且做出相應(yīng)的按鍵有效處理,實(shí)際上是,等待按鍵松手后才做有效的處理。當(dāng)有低電平到來(lái)時(shí),實(shí)際上 else if(key2_lock==0)這語(yǔ)句等同于else if((!RA5)&&(!key2_lock)),RA5為低,同時(shí)按鍵標(biāo)志沒(méi)有被置1,確定上面2個(gè)條件同時(shí)成立,說(shuō)明RA5端口起碼是低電平了,但不一定是斷電了。在第二區(qū),然后讓去抖動(dòng)計(jì)數(shù)器key2_time_cnt自加,當(dāng)計(jì)數(shù)器大于149時(shí)候,認(rèn)為斷電了(因?yàn)樵谝粋(gè)周期內(nèi)交流電低電平持續(xù)時(shí)間大概是100,所以要適當(dāng)加寬低電平判斷范圍,)此時(shí)要馬上把斷電有效標(biāo)志key2_touch_s_flag置1。
      對(duì)于交流電斷電檢測(cè)功能函數(shù)key2_scan()在整個(gè)程序的位置,第一,可以直接放到定時(shí)器中斷里面,每250US執(zhí)行一次。第二,可以利用定時(shí)器設(shè)定一個(gè)時(shí)標(biāo)比如1MS的時(shí)標(biāo),主程序中,根據(jù)時(shí)標(biāo)來(lái)執(zhí)行key2_scan()函數(shù)。最好不要直接放在主循環(huán)中,這樣會(huì)漏掉按鍵檢測(cè)的某個(gè)檔位。
        以上就是數(shù)碼分段器的基本控制程序。單片機(jī)交流檢測(cè)是本程序的難點(diǎn)。




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:59566 發(fā)表于 2014-3-10 14:06 | 只看該作者
寫(xiě)得很有水平
回復(fù)

使用道具 舉報(bào)

板凳
ID:61875 發(fā)表于 2014-11-10 16:11 | 只看該作者
謝謝樓主的奉獻(xiàn)學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

地板
ID:77667 發(fā)表于 2015-4-21 22:18 | 只看該作者
如果都是自己做的就很厲害
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区久久久久久久久 | 日韩一区二区在线看 | 欧美一级二级视频 | 国产欧美一区二区久久性色99 | 亚洲成av人影片在线观看 | 国产精品自在线 | 欧美日韩精品久久久免费观看 | 日韩欧美国产一区二区三区 | 99视频免费 | 亚洲欧美日本在线 | 毛片网站在线观看 | 成人免费视频网站在线看 | 天天插天天操 | 91中文字幕在线 | 久久91| 国产成人一区二区三区精 | 337p日本欧洲亚洲大胆 | 男人天堂手机在线视频 | 久草视频网站 | 国产毛片视频 | 欧美日韩国产一区 | 欧美日韩在线免费 | 久久精品久久久 | 自拍视频在线观看 | 一区二区三区中文字幕 | 欧美黄色一级毛片 | 欧美日韩成人在线 | 伊人春色在线 | 亚洲一区二区精品 | 国产精品亚洲一区二区三区在线 | 美女久久久久 | 欧美成视频在线观看 | 精品乱码一区二区 | 丁香五月网久久综合 | 中文区中文字幕免费看 | 免费看的av| 粉嫩av久久一区二区三区 | 国产毛片毛片 | 精品在线一区二区 | 久草资源| 欧美精品一区二区免费视频 |