⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 max7219.c

📁 DSP2812 通过GPIO来模拟LCD的控制信号
💻 C
字号:
#include "DSP28_Device.h"

/*************************************************/                                              
/* The function sends a 16 bit control word to   */
/* MAX7219 Data Line Input port                  */
/*************************************************/
void W2MAX7219(unsigned int w)
{
 if((Spi_TxReady() == 1))
		{
		 SpiaRegs.SPITXBUF    = w;
		 Delay(30000);
		}   
}
/*************************************************/
/* The function sets the display intensity by    */
/* PWM method                                    */
/*                                               */
/*************************************************/

void Intensity(int brightness)
{
      unsigned int w = 0x0A00;
      brightness &= 0x0F;
      w |= brightness;
      W2MAX7219(w);
}
/*************************************************/
/* The function limits the scan digits from 1 to */
/* 8                                             */                                              
/*************************************************/

void ScanLimit(int digits)
{
     unsigned int w = 0x0B00;
     w |= (--digits)&0x7;
     W2MAX7219(w);
}
/*************************************************/
/* The function makes a display test and flash 5 */
/* times                                         */
/*************************************************/

void DisplayTest(void)
{
    int i;
       W2MAX7219(0x010f);
       W2MAX7219(0x020f);
       W2MAX7219(0x030f);
       W2MAX7219(0x040f);
       W2MAX7219(0x0500);
       W2MAX7219(0x060f);
       for(i=0;i<5;i++)
       {
          W2MAX7219(0xCF01);
          Delay(30000);
          W2MAX7219(0xCF00);
          Delay(30000);
       }
       W2MAX7219(0x010f);
       W2MAX7219(0x020f);
       W2MAX7219(0x030f);
       W2MAX7219(0x040f);
       W2MAX7219(0x0500);
       W2MAX7219(0x060f);
}
/*************************************************/
/* The function shutdowns the display and resume */
/* MAX7219                                       */
/*************************************************/

void ShutDown(int ctrl)
{
    if(ctrl==YES) W2MAX7219(0x0C00);
    if(ctrl==NO)  W2MAX7219(0x0C01);
}
/*************************************************/
/* The function sends a 16 bit display control   */
/* word to MAX7219 to select how many digits     */
/*************************************************/

void  DecodeMode(unsigned int w)   //w=0xFF means all 8 LEDs on
{
   w &= 0xFF;
   w |= 0x0900;
   W2MAX7219(w);
}

/*************************************************/
/* The function changes a binary into a compact  */
/* BCD code                                      */
/*************************************************/

unsigned int BIN2BCD(unsigned int bin)
{
    unsigned int a, v;
    a = bin%10;
    v = a;
    bin /= 10;
    a = bin%10;
    v |= a<<4;
    bin /= 10;
    a = bin%10;
    v |= a<<8;
    bin /= 10;
    a = bin%10;
    v |= a<<12;
    return(v);
}
/*************************************************/
/* The function shows a compact BCD code in 4    */
/* digits                                        */
/*************************************************/

void ShowBCD(unsigned int bcd)
{
    int k, m, f3,f2;
    // show MSD
    f3 = 0; f2 = 0;
    m = (bcd&0xF000)>>12;
    if (m)
    {
        k = m | 0x0400;
        f3 = 1;   // digit 3 on
    } else
    {
        k = 0x0F | 0x0400;
    }
    W2MAX7219(k);
    // show the next digit
    m = (bcd&0xF00)>>8;
    if(f3)
    {
        k = m | 0x0300;
    } else
    {
        if (m)
        {
            k = m | 0x0300;
            f2 = 1;
        } else
            k = 0x0F | 0x0300;
    }
    W2MAX7219(k);
    // show the digit 1
    m = (bcd&0xF0)>>4;
    if(f2|f3)
    {
        k = m | 0x0280;
    } else
    {
        if (m)
        {
            k = m | 0x0280;
        } else
            k = 0x0F | 0x0280;
    }
    W2MAX7219(k);
    // show the last digit
    m = bcd&0xF;
    k = m | 0x0100;
    W2MAX7219(k);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -