標(biāo)題: 請教一個電路、思路或推薦一些芯片 想用按鈕或旋轉(zhuǎn)編碼器控制24個或12個微型繼電器 [打印本頁]

作者: wer1234    時間: 2023-3-17 00:48
標(biāo)題: 請教一個電路、思路或推薦一些芯片 想用按鈕或旋轉(zhuǎn)編碼器控制24個或12個微型繼電器
想控制24個或12個微型繼電器。要求用按鈕或旋轉(zhuǎn)編碼器控制。
按鈕控制: 按下按鈕A,繼電器遞增吸合,復(fù)位原來的。 按下按鈕B,在原來的位置遞減吸合。

旋轉(zhuǎn)編碼器控制: 正旋遞增吸合,復(fù)位原來的。
反旋,遞減吸合,復(fù)位原來的。

哪位大神有好的方法實(shí)現(xiàn)嗎?越簡單越好。
作者: xianfajushi    時間: 2023-3-17 05:29
同流水燈差不多單按鍵控制遞增遞減
作者: gongnn    時間: 2023-3-17 07:56
最簡單的當(dāng)然是單片機(jī)方案,隨便個單片機(jī)+2003芯片+繼電器。
作者: munuc_w    時間: 2023-3-17 08:28
這個用單片機(jī)做較簡單,用單純硬件做也可以,但電路會較繁瑣。
作者: man1234567    時間: 2023-3-17 08:28
3V或5V繼電器單片機(jī)引腳直驅(qū)就可以。
不過這造型是玩呢 ?
作者: 這一生只為你    時間: 2023-3-17 20:50
用個32腳的單片機(jī),灌電流方式,印象中HK4100F-5V繼電器吸合電流20ma左右,可以這么干,要是不放心的話就加個8050。
作者: 君工創(chuàng)    時間: 2023-3-17 21:24
每次一個繼電器吸合,單片機(jī)直接驅(qū)動就可以了。
作者: 新鄉(xiāng)家電維修    時間: 2024-9-5 11:42
CD4017簡單,不用單片機(jī),只能控制10個
作者: 藍(lán)藍(lán)小星星    時間: 2024-9-5 14:27
驅(qū)動2片595實(shí)現(xiàn)即可。
作者: 3wjkdhus    時間: 2024-9-7 22:22
按鍵一個遞增一個減,改天我發(fā)一個595控制的

作者: 3wjkdhus    時間: 2024-9-7 22:23
#include<reg52.h>//頭文件
#define unchar unsigned char  
#define unint unsigned int  

  sbit KEY1=P1^0; // 定義按鍵
  sbit KEY2=P1^1; // 定義按鍵
  sbit OUT1=P0^0; // 輸出1
  sbit OUT2=P0^1; // 輸出2
  sbit led=P0^2;  //led

  bit flag=1;     //定義控制運(yùn)行符
  unchar Mod;     //定義亮燈模式   
  unint tt;       //定義中斷次數(shù)  
  void Init_Mod() //初始化函數(shù)  

  {
   Mod=0;
   OUT1=0;
   OUT2=0;  
   }
         
  void Init_Timer()  
{  
  TMOD=0x01;  
  TR0=1;
  EA=1;
  ET0=0;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
         }
         
  void delay(unint z)  //延時函數(shù),延時z(ms)
{
  unint x,y;
  for(x=z;x>0;x--)  for(y=110;y>0;y--);
  }
                 
  void Input_Mod()  //狀態(tài)模式標(biāo)記函數(shù)
    //////按鍵1程序
  {         
        if(Mod==6)  Mod=0;
        if(KEY1==0)           //按鍵按下
         
        {  delay(5);
           if(KEY1==0) //延時消抖
           Mod++;      //按鍵次數(shù)標(biāo)記
                           }
        while(!KEY1)   //松手檢測
        {; ;}
        
                                    
        if(Mod==6)  Mod=0;
        if(KEY2==0)           //按鍵按下
         
        {  delay(5);
           if(KEY2==0) //延時消抖
           Mod--;      //按鍵次數(shù)標(biāo)記
                           }
        while(!KEY2)   //松手檢測
        {; ;}
         }   
               

        //4種模式下的執(zhí)行
         void run()     
        {  
          switch(Mod)
          {  case 0:{ET0=0;OUT1=0;OUT2=0;}break;// 模式1
             case 1:{ET0=0;OUT1=0;OUT2=1;}break;// 模式2
             case 2:{ET0=0;OUT1=1;OUT2=0;}break;// 模式3
             case 3:{ET0=0;OUT1=1;OUT2=1;}break;// 模式4
                                                 case 4:{ET0=0;led=0;}break;// 模式5
                                                 case 5:{ET0=0;led=1;}break;// 模式6
            }
           }

        void main()
        {  Init_Mod();
           Init_Timer();
           while(1)
         {  Input_Mod();
            if(flag==1) //flag 控制run的運(yùn)行
          {  run();
             if(Mod==1||Mod==3||Mod==5)  flag=0;
           }
             if(Mod==0||Mod==2||Mod==4)  flag=1;  
           }
           }





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