找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機控制LED點陣顯示囧

[復(fù)制鏈接]
ID:72519 發(fā)表于 2015-1-22 01:55 | 顯示全部樓層 |閱讀模式
  1. #include <REG51.H>
  2. #include <intrins.h>
  3. #define  NOP() _nop_()  // 定義空指令 ,這個函數(shù)在庫 <intrins.h> 中

  4. //SPI IO
  5. sbit MOSIO = P3^4;
  6. sbit R_CLK = P3^5;
  7. sbit S_CLK = P3^6;


  8. //點陣顯示數(shù)組
  9. unsigned char code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
  10.                              0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};

  11. unsigned char code tab1[] ={0,0,254,127,2,64,66,66,34,68,18,72,2,64,2,64,242,79,18,72,18,72,18,72,242,79,2,64,254,127,0,0};



  12. //函數(shù)聲明
  13. void HC595SendData(  unsigned char BT3, unsigned char BT2,unsigned char BT1,unsigned char BT0);
  14.                                                                                                                                                                                        
  15. /*************主函數(shù)*****************************/        
  16. void main(void)
  17. {
  18.    int k,i,ms;
  19.    i = 16;                                                                                                                                  //顯示時間
  20.    while(1)
  21.    {
  22.      for(ms = i; ms > 0; ms--)
  23.         {
  24.        for(k = 0; k < 16; k++)                                                                                                //顯示囧
  25.            {        
  26.          HC595SendData(~tab1[2*k +1],~tab1[2*k],tab0[2*k],tab0[2*k + 1]);                 
  27.            }
  28.         }                                                            

  29.         
  30.    }
  31. }

  32. /*********************************************************************************************************
  33. ** 函數(shù)名稱: HC595SendData
  34. ** 功能描述: 向SPI總線發(fā)送數(shù)據(jù)
  35. *********************************************************************************************************/
  36. void HC595SendData(  unsigned char BT3, unsigned char BT2,unsigned char BT1,unsigned char BT0)
  37. {  
  38.   unsigned char i;
  39.   for(i = 0; i < 32; i++)
  40.    {
  41.    if(i > 23 )
  42.    {
  43.       if((BT0 << (i - 24)) & 0x80)
  44.       {
  45.             MOSIO = 1;
  46.           }
  47.           else
  48.           {
  49.             MOSIO = 0;
  50.           }
  51.    }
  52.    
  53.    else if(i > 15 & i < 24 )
  54.    {
  55.         if((BT1 << (i - 16)) & 0x80)  //set dataline high  0X80000000  最高位與SendVal左移的最高位 進(jìn)行邏輯運算
  56.       {
  57.             MOSIO = 1;                                        // 如果為真 MOSIO = 1
  58.           }
  59.         else
  60.           {
  61.             MOSIO = 0;                                    
  62.           }        
  63.    }


  64.     else if(i < 16 & i > 7 )
  65.    {
  66.       if((BT2 << (i - 8)) & 0x80)
  67.       {
  68.             MOSIO = 1;
  69.           }
  70.           else
  71.           {
  72.             MOSIO = 0;
  73.           }
  74.    }
  75.    

  76.         else
  77.         {
  78.                   if((BT3 << i) & 0x80)  //set dataline high  0X80000000  最高位 進(jìn)行邏輯運算
  79.       {
  80.             MOSIO = 1;                                        // 如果為真 MOSIO = 1
  81.           }
  82.         else
  83.           {
  84.             MOSIO = 0;                                    
  85.           }        
  86.         }
  87.         S_CLK = 0;
  88.         NOP();        //產(chǎn)生方形波
  89.         S_CLK = 1;        
  90.    }
  91.    
  92.   R_CLK = 0; //set dataline low
  93. NOP();   //產(chǎn)生方形波
  94.   R_CLK = 1;
  95. }
復(fù)制代碼


相關(guān)帖子

回復(fù)

使用道具 舉報

ID:155598 發(fā)表于 2017-3-30 15:57 | 顯示全部樓層
HC595SendData(~tab6[2*k +1],~tab6[2*k],tab0[2*k],tab0[2*k + 1]);這一步能解釋下嗎?
還有點陣顯示數(shù)組怎么來的
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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