找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7232|回復(fù): 17
收起左側(cè)

51單片機(jī)RGB流水燈控制12個(gè)LED燈的程序怎么寫

  [復(fù)制鏈接]
ID:608007 發(fā)表于 2019-12-4 22:02 | 顯示全部樓層 |閱讀模式
剛?cè)雴纹瑱C(jī)的小白,請高手幫忙指點(diǎn)一二,流水燈左半邊P0.0口低位流向高位P0.7口,再從P0.7流向P1.0口再流向P1.3結(jié)束,                                                                             右半邊P2.7口低位流向高位P2.0口,再從P2.0流向P1.7口再流向P1.4結(jié)束,
                                                                  或左右兩邊同時(shí)流向P0.0到P1.3              P2.7到P1.4
51hei圖片20191204215112.jpg
51hei圖片20191204215127.jpg
回復(fù)

使用道具 舉報(bào)

ID:96682 發(fā)表于 2019-12-5 02:31 來自手機(jī) | 顯示全部樓層
心形流水燈程序大把,花樣繁多,修改一下就能實(shí)現(xiàn)樓主想要的效果
回復(fù)

使用道具 舉報(bào)

ID:150776 發(fā)表于 2019-12-5 07:16 來自手機(jī) | 顯示全部樓層
網(wǎng)上搜索一下,很多這樣的例
回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2019-12-5 09:15 | 顯示全部樓層
網(wǎng)上免費(fèi)的程序很多抄一下就可以,如果不想動手可以直接掛價(jià)招標(biāo)。
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2019-12-5 13:14 | 顯示全部樓層
如果剛學(xué)單片機(jī),建議用順序程序去實(shí)現(xiàn)你的每一步,如
P0=0xFE;   第一步
P2=0x7F;
延時(shí);
P0=0xFD;   第二步
P2=0xBF;
延時(shí);
P0=0xFB;   第三步
P2=0xDF;
延時(shí);
P0=0xF7;   第四步
P2=0xEF;
延時(shí);
……
回復(fù)

使用道具 舉報(bào)

ID:608007 發(fā)表于 2019-12-5 16:14 | 顯示全部樓層
csmyldl 發(fā)表于 2019-12-5 13:14
如果剛學(xué)單片機(jī),建議用順序程序去實(shí)現(xiàn)你的每一步,如
P0=0xFE;   第一步
P2=0x7F;

那樣寫太麻煩 ,還是只想P0口8個(gè)LED燈 怎么接P1口的低4位LED燈程序,  還是感謝你
回復(fù)

使用道具 舉報(bào)

ID:608007 發(fā)表于 2019-12-5 16:17 | 顯示全部樓層
man1234567 發(fā)表于 2019-12-5 09:15
網(wǎng)上免費(fèi)的程序很多抄一下就可以,如果不想動手可以直接掛價(jià)招標(biāo)。

用的位選P3口控制RGB三色 P0,P1,P2,段選,程序不好找
回復(fù)

使用道具 舉報(bào)

ID:608007 發(fā)表于 2019-12-5 16:19 | 顯示全部樓層
wc86110 發(fā)表于 2019-12-5 02:31
心形流水燈程序大把,花樣繁多,修改一下就能實(shí)現(xiàn)樓主想要的效果

單色燈程序都好找 ,P0口怎么接P1口的低4位的程序
回復(fù)

使用道具 舉報(bào)

ID:606366 發(fā)表于 2019-12-13 17:09 | 顯示全部樓層
我尋思你這也不是寫RGB燈的思路啊
回復(fù)

使用道具 舉報(bào)

ID:591676 發(fā)表于 2019-12-13 19:33 | 顯示全部樓層
網(wǎng)上有很多這種的,只不過是led燈數(shù)量多少的問題,修改一下就能滿足你的要求
回復(fù)

使用道具 舉報(bào)

ID:608007 發(fā)表于 2019-12-16 15:40 | 顯示全部樓層
張x小呀 發(fā)表于 2019-12-13 19:33
網(wǎng)上有很多這種的,只不過是led燈數(shù)量多少的問題,修改一下就能滿足你的要求

求高手給我一個(gè)程序
回復(fù)

使用道具 舉報(bào)

ID:635583 發(fā)表于 2019-12-16 16:04 | 顯示全部樓層
這個(gè)很簡單,,其那不久才做過。。剛才看了一下,沒有了,刪掉了。。你可以去看看51單片機(jī)論壇,,可以找到,程序和仿真都有
回復(fù)

使用道具 舉報(bào)

ID:608007 發(fā)表于 2019-12-27 17:24 | 顯示全部樓層
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;         //////i=100///////
uchar a;
unsigned char table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff};///高到低位P0,P2口/////
unsigned char table2[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0X00};////高到低位P0,P2口////
unsigned char table3[]={0x80,0xc0,0xe0,0xf0,0x00,0x00,0x00,0x00};/////高4位依次點(diǎn)亮每個(gè)燈P1口//////
unsigned char table4[]={0x01,0x03,0x07,0x0f,0x00,0x00,0x00,0x00};//////低4位依次點(diǎn)亮每個(gè)燈P1口///
unsigned char table5[]={0x81,0xc3,0xe7,0xff};//////高和低位往中間亮P1口/////
unsigned char table6[]={0xfe,0xfc,0xf8,0xf0,0x7ff};
unsigned char table7[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};/////依次高位到低位每個(gè)點(diǎn)燈亮/////
unsigned char table8[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};/////依次低位到高位每個(gè)點(diǎn)燈亮/////

sbit RR=P3^5;
sbit GG=P3^6;/////P0,P1,P2,輸出低電平時(shí)////////
sbit BB=P3^7;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);//////Y=110///////
}

void main()
{

while(1)
{
/////////////////P2,P1,P0,高位往低位逐個(gè)循環(huán)點(diǎn)亮3次////////
        for(a=0;a<=2;a++) ///////循環(huán)次數(shù)(a<=2),3次///////
          {
         RR=0;
                 GG=1;        ///////紅色/////
                 BB=1;
       P2=0x01;
          
        for(i=0;i<8;i++)
          {
            
                P2=_cror_(P2,1);
                P1=0x00;
                P0=0x00;
                delay(100);
          }

                 RR=1;
                 GG=0; //////綠色///////
                 BB=1;
           P1=0x01;
   
        for(i=0;i<8;i++)
          {
                          
                   P2=0x00;
                P1=_cror_(P1,1);
                P0=0x00;
                delay(100);
          }

                    RR=1;
                 GG=1;        /////////藍(lán)色/////
                 BB=0;                 
            P0=0x01;

        for(i=0;i<8;i++)
          {
            
                P2=0x00;
                   P1=0x00;
                P0=_cror_(P0,1);               
                delay(100);
          }
          }
/////////////////P0,P1,P2低位到高位逐個(gè)點(diǎn)亮/////////
         RR=0;
                 GG=1;         //////紅色//////
                 BB=1;
       P0=0x80;
     
        for(i=0;i<8;i++)
          {
            
                P0=_crol_(P0,1);
                P1=0x00;
                P2=0x00;
                delay(100);
          }

                 RR=1;
                 GG=0;        //////綠色///////
                 BB=1;
           P1=0x80;
   
        for(i=0;i<8;i++)
          {
                          
                   P0=0x00;
                P1=_crol_(P1,1);
                P2=0x00;
                delay(100);
          }

                    RR=1;
                 GG=1; //////藍(lán)色//////
                 BB=0;                 
            P2=0x80;

        for(i=0;i<8;i++)
          {
            
                P0=0x00;
                   P1=0x00;
                P2=_crol_(P2,1);               
                delay(100);
          }       
////////////////P2,P1,P0,高位到低位逐個(gè)滅,變顏色///////
         RR=0;
                 GG=0; ////////黃色/////////
                 BB=1;
       P2=0xfe;
     
        for(i=0;i<8;i++)
          {
            
                P2=_cror_(P2,1);
                P1=0xff;
                P0=0xff;
                delay(200);
          }

                 RR=0;
                 GG=1;        ////////紫色/////////
                 BB=0;
           P1=0xfe;
   
        for(i=0;i<8;i++)
          {
                          
                   P2=0xff;
                P1=_cror_(P1,1);
                P0=0xff;
                delay(200);
          }
       
               
                    RR=1;
                 GG=0; /////天藍(lán)色//////
                 BB=0;                 
            P0=0xfe;
        for(i=0;i<8;i++)
          {
            
                P2=0xff;
                   P1=0xff;
                P0=_cror_(P0,1);               
                delay(200);
          }       
/////////P2,P1,P0,高位到低位依次每個(gè)點(diǎn)亮,循環(huán)2次/////////////

   for(a=0;a<=1;a++)//////循環(huán)次數(shù)程序(a<=1)循環(huán)2次//////
          {
             RR=0;
                 GG=1; ////////紫色///////
                 BB=0;
        for(i=0;i<8;i++)
          {
             P2=table7[i];
             P1=0x00;
             P0=0x00;
             delay(50);
          }
          for(i=0;i<8;i++)
          {
            P2=0xff;
            P1=table7[i];
            P0=0x00;
            delay(50);
          }
          for(i=0;i<8;i++)
          {
            P2=0xff;
            P1=0xff;
            P0=table7[i];
            delay(50);
          }
          

/////////P0,P1,P2,低位到高位依次每個(gè)點(diǎn)亮,循環(huán)/////////////

                 RR=0;
                 GG=0;         ////////白色//////////
                 BB=0;
        for(i=0;i<8;i++)
          {
            P0=table8[i];
                P1=0x00;
                P2=0x00;
                delay(50);
          }
          for(i=0;i<8;i++)
          {
            P0=0xff;
                P1=table8[i];
                P2=0x00;
                delay(50);
          }
          for(i=0;i<8;i++)
          {
            P0=0xff;
                P1=0xff;
                P2=table8[i];
                delay(50);
          }
          }

////////////////兩側(cè)往下流,先左后右流//////////

             RR=0;
                 GG=0;  /////白色
                 BB=0;
        for(i=0;i<8;i++)
          {
            P0=table8[i];
                P1=0x00;
                P2=0x00;
                delay(200);
          }
        for(i=0;i<8;i++)
          {
            P0=0xff;
            P1=table4[i];               
                P1=0x0f;
                delay(200);
          }       

         RR=0;
                 GG=1;   //////紫色
                 BB=0;
        for(i=0;i<8;i++)
          {
            P2=table7[i];
                P1=0x00;
                P0=0x00;
                delay(200);
          }
        for(i=0;i<8;i++)
          {
            P2=0xff;
            P1=table3[i];       
                P1=0xf0;
                delay(200);
          }

/////////////////兩側(cè)循環(huán)閃爍4次///////////

   for(a=0;a<=3;a++)/////循環(huán)4次////
         {
             RR=1;
                 GG=0;   //////天藍(lán)色
                 BB=0;
   for(i=0;i<8;i++)
          {
            P2=0xff;
                P1=0xf0;
                P0=0x00;
                delay(100);
          }
                 RR=0;
                 GG=0;   //////黃色
                 BB=1;
   for(i=0;i<8;i++)
          {
            P0=0xff;
                P1=0x0f;
                P2=0x00;
                delay(100);
          }
          }
             RR=0;
                 GG=0;   //////白色
                 BB=0;
        for(i=0;i<8;i++)
          {
            P0=0xff;
                P1=0xff;
                P2=0xff;
                delay(200);
          }  
          
  
}
}
回復(fù)

使用道具 舉報(bào)

ID:410230 發(fā)表于 2020-6-8 22:12 | 顯示全部樓層
樓主,可以讓我看一下你的電路圖嗎,我用的52芯片做的愛心流水燈,但是一直實(shí)現(xiàn)不了流水,一直都是全亮的,還有顏色也不懂怎么控制,可以加個(gè)扣扣交流一下嗎
回復(fù)

使用道具 舉報(bào)

ID:744327 發(fā)表于 2020-6-9 10:54 | 顯示全部樓層
流水燈程序
int8 a;
for(a=0;e<3;a++)//////循環(huán)次數(shù)程序(e<3)循環(huán)3次
          {
             RED=0;
                 GG=1; //紫色
                 BB=0;
        for(i=0;i<8;i++)
          {
               P2=0xFF;
            P1=0xFF;
            P0=Table[i];
            Delay(50);
          }
          for(i=0;i<8;i++)
          {
             P2=0xFF;
            P1=0xFF;
            P0=Table[i];
            Delay(50);
          }
          for(i=0;i<8;i++)
          {
            P2=0xFF;
            P1=0xFF;
            P0=Table[i];
            Delay(50);
          }
回復(fù)

使用道具 舉報(bào)

ID:773367 發(fā)表于 2020-6-9 13:54 | 顯示全部樓層
一般通過延遲程序,0.02-2s都可,可以從網(wǎng)上復(fù)制一些借鑒
回復(fù)

使用道具 舉報(bào)

ID:56002 發(fā)表于 2020-6-10 09:37 | 顯示全部樓層
有幾種算法,需要往里面填函數(shù)
模式1:順序點(diǎn)亮

順序單個(gè)點(diǎn)亮LED  for (i = 0; i < 8; i++)
逆序單個(gè)點(diǎn)亮LED  for (i = 6; i > 0; i--)
/*************************************************************/
模式2:順序單個(gè)間隔點(diǎn)亮

順序間隔點(diǎn)亮LED  for (i = 0; i < 8; i += 2)
逆序間隔點(diǎn)亮LED  for (i = 7; i > 0; i -= 2)
/*************************************************************/
模式3:間隔點(diǎn)亮

間隔順序同時(shí)點(diǎn)亮 for (i = 2; i < 8; i ++ )
間隔逆序同時(shí)點(diǎn)亮 for (i = 6; i > 2; i -- )
/**************************************************************/
模式4:相臨點(diǎn)亮

相臨順序同時(shí)點(diǎn)亮  for (i = 1; i < 8; i++ )
相臨逆序同時(shí)點(diǎn)亮  for (i = 6; i > 1; i-- )
/************************************************************/
模式5:發(fā)散聚集點(diǎn)亮

發(fā)散點(diǎn)亮          for (i = 0; i < 4; i++ )
聚集點(diǎn)亮          for (i = 2; i > 0; i-- )
/************************************************************/
模式6:四四點(diǎn)亮

四四順序點(diǎn)亮      for ( i= 0; i < 4; i++ )
四四逆序點(diǎn)亮      for ( i= 2; i > 0; i-- )
/************************************************************/
模式7:四四點(diǎn)亮

四四順序點(diǎn)亮      for ( i = 0; i < 2; i++ )
/************************************************************/
模式8:全部點(diǎn)亮熄滅

                  for ( j = 0; j < 10; j++)
                   LED_on(); LED_off();
/***********************************************************/
延時(shí)程序計(jì)算方法
計(jì)數(shù)個(gè)數(shù)j = 延時(shí)時(shí)間/6*晶振頻率 - 1
方式一:
void Delay(void)                        
{
    unsigned char a, b, c;
    for (a = 1; a; a++)
        for (b = 1; b; b++)
            for (c = 0; c<10; c++):  //循環(huán)次數(shù)=255*255*10
}
方式二:1ms延時(shí),準(zhǔn)確性較Delay();高
void DelayMs(unsigned int i)               
{
    while(i--)
    {                          
        unsigned int j;               
        for(j=1;j<=613;j++);               
    }                       
}
例:
void LED_04(int i)                 //發(fā)散聚集點(diǎn)亮
    {
        switch(i)
         {
         case 0:P1=0xE7;DelayMs(100);break;    //延時(shí)100ms
         case 1:P1=0xDB;DelayMs(100);break;
         case 2:P1=0xBD;DelayMs(100);break;
         case 3:P1=0x7E;DelayMs(100);break;
         default:break;
         }
        }
for(p=0;p<5;p++) //模式5:發(fā)散聚集點(diǎn)亮
{
for(i=0;i<4;i++)//發(fā)散點(diǎn)亮
LED_04(i);
for(i=2;i>0;i--)//聚集點(diǎn)亮
LED_04(i);       
回復(fù)

使用道具 舉報(bào)

ID:896273 發(fā)表于 2021-3-27 10:00 | 顯示全部樓層
效果來自創(chuàng)意
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表