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

📄 led-test.c

📁 dsp2812接max7219led显示驱动 4位led显示 模拟max7219的时钟片选信号
💻 C
字号:

// File name:can-test.c

#include "DSP281x_Device.h"

#define CLK  GpioMuxRegs.GPBMUX.bit.TDIRB_GPIOB11
#define DIN  GpioMuxRegs.GPBMUX.bit.TCLKINB_GPIOB12
#define LOAD  GpioMuxRegs.GPBMUX.bit.C4TRIP_GPIOB13
#define DELAYUS delay_us(20)
#define DELAYMS delay_ms(10)
#define DELAYS  delay_ms(1000) 

//寄存器宏定义
#define DEC0DE_MODE 0x09  //译码控制寄存器
#define lNTENSITY 0x0A  //亮度控制寄存器
#define SCAN_LIMIT 0x0B //扫描界限寄存器
#define SHUT_D0WN 0x0C  //关断模式寄存器
#define DISPLAY_TEST 0x0F //测试控制寄存器
#define DOT 0x80
#define Digit0 0x01         /*数码管1*/
#define Digit1 0x02         /*数码管2*/
#define Digit2 0x03         /*数码管3*/
#define Digit3 0x04         /*数码管4*/
//#define Digit4 0x05         /*数码管5*/
//#define Digit5 0x06         /*数码管6*/
//#define Digit6 0x07         /*数码管7*/
//#define Digit7 0x08         /*数码管8*/

#define ShutdownMode 0x00      /*掉电方式工作*/
#define NormalOperation 0x01   /*正常操作方式*/
#define DecodeDigit 0x0F       /*译码位数设置*/
#define IntensityGrade 0x0A    /*显示亮度级别设置*/
#define ScanDigit 0x03         /*扫描位数设置*/
#define TestMode 0x01          /*显示测试方式*/
#define TextEnd 0x00           /*显示测试结束,正常工作*/


void Gpio_select(void);
void Init_7219(void);
void Write_8bit(Uchar data); ////写8位数据子程序
void Write_7219(Uchar addr,Uchar data);//地址数据发送子程序
void delay_us(int us);
void delay_ms(int ms);

void main()
{
  InitSysCtrl();
  Gpio_select();
  Init_7219();
  Write_7219(DISPLAY_TEST,TestMode);//选择工作模式(0xX0)
  DELAYS;
  Write_7219(DISPLAY_TEST,TextEnd);
  while(1)
  {
     DELAYS;
     DELAYS;
     Init_7219();
     Write_7219(Digit0,0x01|DOT);
     Write_7219(Digit1,0x02&~DOT);
     Write_7219(Digit2,0x03&~DOT);
     Write_7219(Digit3,0x04&~DOT);
  }
}

void Gpio_select(void)
{
	EALLOW;
    GpioMuxRegs.GPBMUX.all = 0x0;   													
    GpioMuxRegs.GPBDIR.all = 0xFF;  // output
    GpioMuxRegs.GPBQUAL.all = 0x0;
    EDIS;
}   

void Init_7219(void)
{
    Write_7219(SHUT_D0WN,NormalOperation);//开启正常工作模式0x01
    Write_7219 (DEC0DE_MODE,DecodeDigit);//选用全译码模式
    Write_7219(SCAN_LIMIT,ScanDigit);//4只LED
    Write_7219(lNTENSITY,IntensityGrade);//设置初始亮度    
}

void Write_7219(Uchar addr,Uchar data) //地址数据发送子程序
{
   LOAD=0; ///拉低片选线.选中器件
   DELAYUS;
   Write_8bit(addr); //发送地址
   Write_8bit(data); //发送数据
   LOAD=1; //发送结束。上升沿锁存数据
   DELAYUS;
}

void Write_8bit(Uchar data)//写8位数据子程序
{
  int i;
  for(i=0;i<8;i++)
  {
   if((data&0x80)==1)DIN=1;
   else DIN=0;
   data=data<<1;
   CLK=0;
   DELAYUS;
   CLK=1;
   DELAYUS;
  }
}  

void delay_us(int us)
{
  int i;
  while(us--)
  {   i=150;
    while(i--)
     { asm("NOP");}
  }
}  

void delay_ms(int ms)
{
  while(ms--)
   {delay_us(1000);}
}

/*****************************************************************
                        No more
*****************************************************************/

⌨️ 快捷键说明

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