找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個單片機幻彩LED驅(qū)動程序怎么修改才能行運?

[復(fù)制鏈接]
ID:620326 發(fā)表于 2020-5-14 09:36 | 顯示全部樓層 |閱讀模式
以一下一個網(wǎng)上看到的幻彩LED驅(qū)動程序,我在51開發(fā)板上編譯通過了,可是
燈圈一直亮,按K1,K2都沒反應(yīng),求幫助!

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>             //寫入頭文件
  3. #define uchar unsigned char
  4. sbit Send_Dat=P3^7;               //數(shù)據(jù)輸出,接IN腳
  5. sbit key3=P2^1;
  6. sbit key2=P2^4;
  7. sbit key1=P2^7;
  8. uchar show[720]; // 8*3*10
  9. uchar xdata color[10][3]={
  10.         0xff,0x01,0x00,    //0
  11.         0xff,0x01,0x00,
  12.         0xff,0x01,0x00,
  13.         0xff,0x01,0x00,
  14.         0xff,0x01,0x00,
  15.         0xff,0x01,0x00,
  16.         0xff,0x01,0x00,
  17.         0xff,0x01,0x00,
  18.         0xff,0x01,0x00,
  19.         0xff,0x01,0x00,
  20.         0xff,0x01,0x00,   //10
  21.         0xff,0x01,0x00,
  22.         0xff,0x01,0x00,
  23.         0xff,0x01,0x00,
  24.         0xff,0x01,0x00,
  25.         0xff,0x01,0x00,
  26.         0xff,0x01,0x00,
  27.         0xff,0x01,0x00,
  28.         0xff,0x01,0x00,
  29.         0xff,0x01,0x00,
  30.         0xff,0x01,0x00,  //20
  31.         0xff,0x01,0x00,
  32.         0xff,0x01,0x00,
  33.         0xff,0x01,0x00,
  34.         0xff,0x01,0x00,
  35.         0xff,0x01,0x00,
  36.         0xff,0x01,0x00,
  37.         0xff,0x01,0x00,
  38.         0xff,0x01,0x00,
  39.         0xff,0x01,0x00,  //29

  40. };  //G   R   B
  41. uchar code GRB[7][3]={
  42.         0XFF,0X00,0X00,//綠
  43.         0XFF,0XFF,0X00,//黃
  44.         0X00,0XFF,0X00,//紅
  45.         0X00,0XFF,0XFF,//品紅
  46.         0X00,0X00,0XFF,//藍
  47.         0XFF,0X00,0XFF,//青  
  48.         0XFF,0XFF,0XFF,//白
  49. };
  50. void delay();
  51. void delays();      

  52. /*寫入數(shù)據(jù)時序*/
  53. void Send_A_bit(uchar VAL)
  54. {
  55.        if (VAL==1)
  56.        {

  57.               Send_Dat=1;
  58.               _nop_();_nop_();_nop_();_nop_();_nop_();
  59.                                                         _nop_();_nop_();_nop_();_nop_();_nop_();
  60.                                                         _nop_();_nop_();_nop_();_nop_();_nop_();
  61.                                                         _nop_();_nop_();

  62.               Send_Dat=0;         
  63.                                                         _nop_();_nop_();
  64.        }
  65.        else
  66.        {  
  67.               Send_Dat=1;
  68.                                                         _nop_();_nop_();_nop_();_nop_();

  69.               Send_Dat=0;           
  70.               _nop_();_nop_();_nop_();_nop_();_nop_();
  71.                                                         _nop_();_nop_();_nop_();_nop_();
  72.        }           

  73. }
  74. void SendAllData()
  75. {
  76.         unsigned int i;
  77.         for(i=0;i<720;i++)
  78.                 Send_A_bit(show[i]);

  79. }
  80. void WriteData()
  81. {
  82.         unsigned char i,j;
  83.         for(i=0;i<10;i++)
  84.         {
  85.                 for(j=0;j<3;j++)
  86.                 {
  87.                 show[24*i+8*j+0]=color[i][j]/128%2;
  88.                 show[24*i+8*j+1]=color[i][j]/64%2;
  89.                 show[24*i+8*j+2]=color[i][j]/32%2;
  90.                 show[24*i+8*j+3]=color[i][j]/16%2;
  91.                 show[24*i+8*j+4]=color[i][j]/8%2;
  92.                 show[24*i+8*j+5]=color[i][j]/4%2;
  93.                 show[24*i+8*j+6]=color[i][j]/2%2;
  94.                 show[24*i+8*j+7]=color[i][j]%2;
  95.                 }      
  96.         }
  97. }

  98. void change1(unsigned char k)
  99. {
  100.                 unsigned char i,j;
  101.                 for(i=0;i<10;i++)
  102.         {
  103.                 for(j=0;j<3;j++)
  104.                 color[i][j]=GRB[k][j];

  105.         }

  106. }

  107. void change2()
  108. {
  109.         unsigned char i;
  110.                 for(i=0;i<10;i++)
  111.         {
  112.                 if(color[i][0]>0&&color[i][2]==0)
  113.                 {
  114.                                 color[i][0]--;color[i][1]++;
  115.                 }
  116.                 if(color[i][1]>0&&color[i][0]==0)
  117.                 {
  118.                                 color[i][1]--;color[i][2]++;
  119.                 }
  120.                 if(color[i][2]>0&&color[i][1]==0)
  121.                 {
  122.                                 color[i][2]--;color[i][0]++;
  123.                 }
  124.         }
  125. }

  126. /*主函數(shù)*/
  127. unsigned char main()
  128. {

  129.        uchar k=0;
  130.              P2=0XFF;
  131.                          change1(0);
  132.        while(1)
  133.        {
  134.                                         change1(k);
  135.                                         Send_Dat=0;
  136.                                         WriteData();SendAllData();
  137.                                         Send_Dat=0;   
  138.                                         delays();
  139.                                         k++;if(k>=7)k=0;
  140.                                         if(key1==0) return 0;
  141.                                         if(key2==0)
  142.                                         {
  143.                                                 change1(0);
  144.                                                 while(key3==1)
  145.                                                 {
  146.                                                         change2();


  147.                                                         Send_Dat=0;
  148.                                                         WriteData();SendAllData();
  149.                                                         Send_Dat=0; //發(fā)送數(shù)據(jù)



  150.                                                 }
  151.                                         }
  152.        }
  153. }






  154. /*小延時函數(shù)*/
  155. /*大概1S吧,隨便寫的*/
  156. void delay()  //100ms
  157. {


  158.         unsigned char i, j, k;

  159.         i = 5;
  160.         j = 10;
  161. //        k = 147;
  162.         k=14;
  163.         do
  164.         {
  165.                 do
  166.                 {
  167.                         while (--k);
  168.                 } while (--j);
  169.         } while (--i);
  170. }


  171. /*大延時函數(shù)*/
  172. /*十幾秒*/
  173. void delays()
  174. {
  175.   delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay();
  176.         delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay();

  177. }
復(fù)制代碼


燈圈是24顆幻彩LED燈珠

燈圈是24顆幻彩LED燈珠
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2020-5-14 10:28 | 顯示全部樓層
這個是開發(fā)板芯片  晶振用24MHZ

這個是開發(fā)板芯片

這個是開發(fā)板芯片
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2020-5-14 10:45 | 顯示全部樓層
編譯后  
110.png
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2020-5-14 10:46 | 顯示全部樓層
編譯后
110.png
回復(fù)

使用道具 舉報

ID:153181 發(fā)表于 2020-5-14 12:31 | 顯示全部樓層
你的這個需要確認的電路連接是否有問題,你的原理圖沒有畫出來,沒辦法判斷是哪兒有問題;燈板接到主板的三個腳是否與程序?qū)?yīng)? 單片機下載是否成功等等都需要確認好?目前單片機的端口是否有輸出?你的燈板驅(qū)動電壓是否夠?這些都需要您自己確認好,否則別人只有無法判斷你的問題!
回復(fù)

使用道具 舉報

ID:195446 發(fā)表于 2020-5-14 12:41 | 顯示全部樓層
把 xdata改成 pdata就可以了,數(shù)據(jù)是放在516內(nèi)的。
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2020-5-14 13:55 | 顯示全部樓層
mffhxa 發(fā)表于 2020-5-14 12:41
把 xdata改成 pdata就可以了,數(shù)據(jù)是放在516內(nèi)的。

謝謝大師!
我試過的。有人建議過讓我修改這個語句改成pdata  還說我RAM不夠
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2020-5-14 14:37 | 顯示全部樓層
luo12dan66 發(fā)表于 2020-5-14 12:31
你的這個需要確認的電路連接是否有問題,你的原理圖沒有畫出來,沒辦法判斷是哪兒有問題;燈板接到主板的三 ...

先謝謝熱心的大師!
接線沒錯的,我按照你的恩路用視波器測了P0口3腳,沒有信號輸出
130.jpg
120.png
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2020-5-14 14:39 | 顯示全部樓層
luo12dan66 發(fā)表于 2020-5-14 12:31
你的這個需要確認的電路連接是否有問題,你的原理圖沒有畫出來,沒辦法判斷是哪兒有問題;燈板接到主板的三 ...

硬件沒有錯的
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2021-5-12 09:16 | 顯示全部樓層
還沒有搞好~!誰來幫助看看哪里的問題
回復(fù)

使用道具 舉報

ID:139866 發(fā)表于 2021-5-12 09:42 | 顯示全部樓層
直接買核心板,想學(xué)什么外設(shè)就買什么,講真開發(fā)板一點用都沒有
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2021-5-12 10:44 | 顯示全部樓層
天ノ憶 發(fā)表于 2021-5-12 09:42
直接買核心板,想學(xué)什么外設(shè)就買什么,講真開發(fā)板一點用都沒有

大師
你推薦一下,什么核心板
回復(fù)

使用道具 舉報

ID:844772 發(fā)表于 2021-5-12 14:08 | 顯示全部樓層
我覺得你這個板子不行啊,WS2812B通信協(xié)議要求的高低電平持續(xù)低于1us,要有(0.4|0.85)微秒,要用15W系列的1T單片機才行,你的板子充其量達到0.5微秒。想要再試試,就改void Send_A_bit(uchar VAL)函數(shù):VAL==1時 ,{Send_Dat=1;   _nop_();_nop_(); Send_Dat=0;_nop_();} VAL==0時{Send_Dat=1;   _nop_(); Send_Dat=0;_nop_();_nop_();} ,不過誤差太大了,我沒試過,覺得夠嗆。
回復(fù)

使用道具 舉報

ID:139866 發(fā)表于 2021-5-12 14:59 | 顯示全部樓層
POWER-LED 發(fā)表于 2021-5-12 10:44
大師
你推薦一下,什么核心板

你用什么芯片就去買什么芯片的核心板
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2021-5-13 12:17 | 顯示全部樓層
天ノ憶 發(fā)表于 2021-5-12 14:59
你用什么芯片就去買什么芯片的核心板

哦~看樣子要換芯片了
回復(fù)

使用道具 舉報

ID:620326 發(fā)表于 2021-5-13 12:21 | 顯示全部樓層
glinfei 發(fā)表于 2021-5-12 14:08
我覺得你這個板子不行啊,WS2812B通信協(xié)議要求的高低電平持續(xù)低于1us,要有(0.4|0.85)微秒,要用15W系列的 ...

謝謝,指導(dǎo),得換芯片了,這個開發(fā)板玩不起來
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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