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

📄 led8_8.c

📁 使用芯片为TI公司的DSP2812。该程序为通过DSP的GPIO制8*8LED点阵
💻 C
字号:

#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"


#define DINA    GpioDataRegs.GPFDAT.bit.GPIOF0
#define DINB    GpioDataRegs.GPFDAT.bit.GPIOF1
#define CLK2	GpioDataRegs.GPFDAT.bit.GPIOF2
#define CLEAR2	GpioDataRegs.GPFDAT.bit.GPIOF3

#define DINC    GpioDataRegs.GPBDAT.bit.GPIOB0
#define DIND    GpioDataRegs.GPBDAT.bit.GPIOB1
#define CLK1    GpioDataRegs.GPBDAT.bit.GPIOB2
#define CLEAR1  GpioDataRegs.GPBDAT.bit.GPIOB3
// Prototype statements for functions found within this file.
// interrupt void ISRTimer2(void);
void delay_loop(void);
void Gpio_select(void);
void sendto1(unsigned char dab);
void sendto2(unsigned char dat);
void DELAY(void);

unsigned int var1 = 0;
unsigned int var2 = 0;
unsigned int var3 = 0;
unsigned char  sendBdata[8]={0x0ff,0x0ff,0x0ff,0x0ff,0x0ff,0x0ff,0x0ff,0x0ff};
//unsigned char  dispdata[8]={0x7e,0xBD,0xDB,0xE7,0xE7,0xDB,0xBD,0x7E};
//unsigned char  dispdata[8]={0x7c,0x48,0x48,0xff,0x48,0x48,0x7c,0x00};//中
//unsigned char dispdata[8]={0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81};//乘号
//unsigned char  dispdata[4]={0xff,0xff,0xff,0xff};//stria neon light
//unsigned char  dispdata[7]={0x18,0x24,0x3c,0x42,0x7e,0x81,0xff};//expaned window
unsigned char  dispdata[4]={0x18,0x3c,0x7e,0xff};//candy

//unsigned char  dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xDf,0xBf,0x7f};
//unsigned char  dispbit[4]={0xe7,0xdb,0xbd,0x7e};//staia neon light
//unsigned char  dispbit[7]={0xe7,0xe7,0xdb,0xc3,0xbd,0x81,0x7e};//expanded window
unsigned char  dispbit[4]={0xe7,0xc3,0x81,0x00};//candy

unsigned char kdab;
unsigned char kdat;


void main(void)
{

    unsigned char i;
	InitSysCtrl();

	// Disable and clear all CPU interrupts:
	DINT;
	IER = 0x0000;
	IFR = 0x0000;

	// Initialize Pie Control Registers To Default State:
	InitPieCtrl();

	InitPieVectTable();	
	

// Run GPIO test
	var1= 0x0000;		// sets GPIO Muxs as I/Os
	var2= 0xFFFF;		// sets GPIO DIR as outputs
	var3= 0x0000;		// sets the Input qualifier values
	
	Gpio_select();	
	// Toggle I/Os  using DATA register for ever
	

	for(i=0;i<200;i++);
	CLEAR2=0;
	CLK2=1;
	CLEAR1=0;
	CLK1=1;
	DINA=1;
	DINB=1;
	DINC=1;
	DIND=1;
	CLEAR2=1;
	CLEAR1=1;
	while(1)
	{ 

 sendto1(0x0ff);
 
//static/stria map 
//	   for(i=0;i<8;i++)
//		{
		    // sendto1(sendBdata[i]);
			//GpioDataRegs.GPBDAT.all=0X00FF;
//			sendto2(dispdata[i]);
//			sendto1(dispbit[i]);
			//GpioDataRegs.GPBDAT.all=dispbit[i];
//			DELAY();
//		    DELAY();
//		    DELAY();
//		    DELAY();
//		    DELAY();
//		    DELAY();
//		} 
//static/stria map

//expanded window
        sendto1(dispbit[0]);
		sendto2(dispdata[0]);
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		
		sendto1(dispbit[1]);
	    sendto2(dispdata[1]);
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		
		sendto1(dispbit[2]);
		sendto2(dispdata[2]);
       	DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		
		sendto1(dispbit[3]);
		sendto2(dispdata[3]);
        DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		DELAY();
		
		//expanded window
  	
    }
	
} 	


void Gpio_select(void)
{
	EALLOW;
	 
   GpioMuxRegs.GPBMUX.all=var1;   //0x0000
   
   GpioMuxRegs.GPBDIR.all=var2;   		// 0xFFFF,GPIO DIR select GPIOs as output 
    
   GpioMuxRegs.GPBQUAL.all=var3;   //0x0000
    
   GpioMuxRegs.GPFMUX.all=var1;   
   
   GpioMuxRegs.GPFDIR.all=var2;   		// GPIO DIR select GPIOs as output
    
       
    EDIS;
     
}
void sendto1(unsigned char dab)
{
    unsigned char i;
    CLK1=0;
    kdab=dab;
    for(i=0;i<8;i++)
    {
       if((kdab&0x01) == 0x01)
       {
          DINC=1;
        }else DINC = 0;
       CLK1=1;
       CLK1=0;
       kdab=kdab>>1;
     }     
}

void sendto2(unsigned char dat)
{
    unsigned char i;
	CLK2=0;
	kdat=dat;
	for(i=0;i<8;i++)
	{
	    if((kdat & 0x01) == 0x01)
	    {
		  DINA=1;
		}else DINA = 0;
		CLK2=1;
		CLK2=0;
		kdat=kdat>>1;
	}
}

void DELAY()
{
    unsigned long k,j;
	for(k=0;k<50;k++)
		for(j=0;j<5000;j++);
}
   
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

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