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

📄 icetek-vc5502-edu.h

📁 C5502的一个MCBSP的配置操作简单执行文件
💻 H
字号:
#include "scancode.h"

#define PI 3.1415926
#define PI2 6.2831852
// emif  --------------------------------------------------------
/*
#define EMIF_GCTL       0x01800000
#define EMIF_CE1        0x01800004
#define EMIF_CE0        0x01800008
#define EMIF_CE2        0x01800010
#define EMIF_CE3        0x01800014
#define EMIF_SDRAMCTL   0x01800018
#define EMIF_SDRAMTIM   0x0180001C
#define EMIF_SDRAMEXT   0x01800020
#define EMIF_CCFG       0x01840000;
*/
// interrupt  --------------------------------------------------
/*
#define IMH (*(unsigned int *)0x19c0000)
#define IML (*(unsigned int *)0x19c0004)
*/
// timer  -------------------------------------------------------
/*
#define TIMER1CTL (*(unsigned int *)0x01980000)
#define TIMER1PRD (*(unsigned int *)0x01980004)
*/
// AD  ----------------------------------------------------------
ioport unsigned int *ADCCTL1=(unsigned int *)0x6800;
ioport unsigned int *ADCDATA1=(unsigned int *)0x6801;
ioport unsigned int *ADCCLKDIV1=(unsigned int *)0x6802;
ioport unsigned int *ADCCLKCTL1=(unsigned int *)0x6803;
#define ADCCTL (*ADCCTL1)
#define ADCDATA (*ADCDATA1)
#define ADCCLKDIV (*ADCCLKDIV1)
#define ADCCLKCTL (*ADCCLKCTL1)

// DA  ----------------------------------------------------------
#define DA_DATA_L   (*((unsigned int *)0x400800))
#define DA_DATA_H   (*((unsigned int *)0x400801))
#define DA_CTL      (*((unsigned int *)0x400802))
#define DA_CHN1      0x0
#define DA_CHN2      0x40 
#define DA_CHN3      0x80
#define DA_CHN4      0xc0
// McBSP0  ------------------------------------------------------
ioport unsigned int *SPCR20=(unsigned int *)0x2805;
ioport unsigned int *SPCR10=(unsigned int *)0x2804;
ioport unsigned int *PCR_0=(unsigned int *)0x2812;
#define SPCR1_0 (*SPCR10)
#define SPCR2_0 (*SPCR20)
#define PCR0 (*PCR_0)
// McBSP1  ------------------------------------------------------
ioport unsigned int *SPCR11=(unsigned int *)0x2c04;
ioport unsigned int *SPCR21=(unsigned int *)0x2c05;
ioport unsigned int *PCR_1=(unsigned int *)0x2c12;
#define SPCR1_1 (*SPCR11)
#define SPCR2_1 (*SPCR21)
#define PCR1 (*PCR_1)
// McBSP2  ------------------------------------------------------
ioport unsigned int *SPCR12=(unsigned int *)0x3004;
ioport unsigned int *SPCR22=(unsigned int *)0x3005;
ioport unsigned int *PCR_2=(unsigned int *)0x3012;
#define SPCR1_2 (*SPCR12)
#define SPCR2_2 (*SPCR22)
#define PCR2 (*PCR_2)

// ICETEK-VC5509-A -----------------------------------------------
#define SPEED144MHz 0x2613
#define LBDS (*((unsigned int *)0x400005))
#define DIPS (*(unsigned int *)0x400007)
#define CREG (*(unsigned short int *)0x400004)
// ICETEK-CTR  --------------------------------------------------
#define CTRGR (*(unsigned int *)0x608000)
#define CTRKEY (*(unsigned int *)0x608001)
#define CTRCLKEY (*(unsigned int *)0x608002)
#define CTRLA (*(unsigned int *)0x608005)
#define CTRLR (*(unsigned int *)0x608007)
#define CTRLCDCMDR (*(unsigned int *)0x608001)
#define CTRLCDCR (*(unsigned int *)0x608002)
#define CTRLCDLCR (*(unsigned int *)0x608003)
#define CTRLCDRCR (*(unsigned int *)0x608004)
#define CTRMOTORBSPEED (*(unsigned int *)0x608003)
// Special values -----------------------------------------------
#define LCDCMDTURNON 0x3f
#define LCDCMDTURNOFF 0x3e
#define LCDCMDSTARTLINE 0xc0
#define LCDCMDPAGE 0xb8
#define LCDCMDVERADDRESS 0x40

//Strings
unsigned int numbers[112]=
{
//--  0123456789  --  **  宋体, 12  **
// 当前所选字体下一个汉字对应的点阵为:  宽度x高度=80x16,  调整后为: 80x16
0x0000,0x0FE0,0x1010,0x2008,0x2008,0x1010,0x0FE0,0x0000,
0x0000,0x2010,0x2010,0x3FF8,0x2000,0x2000,0x0000,0x0000,
0x0000,0x3070,0x2808,0x2408,0x2208,0x2188,0x3070,0x0000,
0x0000,0x1830,0x2008,0x2088,0x2088,0x1148,0x0E30,0x0000,
0x0000,0x0700,0x04C0,0x2420,0x2410,0x3FF8,0x2400,0x0000,
0x0000,0x19F8,0x2108,0x2088,0x2088,0x1108,0x0E08,0x0000,
0x0000,0x0FE0,0x1110,0x2088,0x2088,0x1118,0x0E00,0x0000,
0x0000,0x0038,0x0008,0x3F08,0x00C8,0x0038,0x0008,0x0000,
0x0000,0x1C70,0x2288,0x2108,0x2108,0x2288,0x1C70,0x0000,
0x0000,0x00E0,0x3110,0x2208,0x2208,0x1110,0x0FE0,0x0000,
0x00F0,0x2108,0x1CF0,0x0300,0x1EE0,0x2118,0x1E00,0x0000,	// %
0x0100,0x0100,0x0100,0x1FF0,0x0100,0x0100,0x0100,0x0000,	// +
0x0000,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,0x0100,	// -
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,	// _
};
unsigned int str1[128]=
{
//--  PID算法控制实验   --  **  宋体, 12  **
// 当前所选字体下一个汉字对应的点阵为:  宽度x高度=128x16,  调整后为: 128x16
0x2008,0x3FF8,0x2108,0x0108,0x0108,0x0108,0x00F0,0x0000,
0x0000,0x2008,0x2008,0x3FF8,0x2008,0x2008,0x0000,0x0000,
0x2008,0x3FF8,0x2008,0x2008,0x2008,0x1010,0x0FE0,0x0000,
0x0808,0x0807,0x8BFA,0x6AAA,0x1EAE,0x0AAA,0x0AAA,0x0AA8,
0x0AAC,0xFEAB,0x0AAA,0x0BFE,0x080A,0x0802,0x0802,0x0000,
0x0410,0x0460,0xFE01,0x01C6,0x0030,0x4100,0x6110,0x5110,
0x4D10,0x43FF,0x4110,0x4110,0x5110,0xE110,0x0100,0x0000,
0x0208,0x4208,0x8108,0x7FFF,0x0088,0x0048,0x4000,0x4298,
0x4248,0x4228,0x7E0A,0x422C,0x4248,0x42D8,0x4008,0x0000,
0x0000,0x0050,0x3F4F,0x014A,0x0148,0xFFFF,0x2148,0x6148,
0x3F48,0x0000,0x0FFC,0x4000,0x8000,0x7FFF,0x0000,0x0000,
0x0000,0x8210,0x820C,0x4204,0x424C,0x23B4,0x1294,0x0A05,
0x07F6,0x0A04,0x1204,0xE204,0x4214,0x020C,0x0204,0x0000,
0x0802,0x08FA,0x0482,0x2482,0x40FE,0x3F80,0x2240,0x2C60,
0x2158,0x2E46,0x2048,0x3050,0x2C20,0x2320,0x2020,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
};

unsigned int str2[32]=
{
//--  设定  --  **  宋体, 12  **
// 当前所选字体下一个汉字对应的点阵为:  宽度x高度=32x16,  调整后为: 32x16
0x0040,0x0041,0x7FCE,0x2004,0x9000,0x8080,0x4040,0x43BE,
0x2C82,0x1082,0x1082,0x2CBE,0x43C0,0xC040,0x4040,0x0000,
0x4000,0x2010,0x180C,0x07A4,0x0824,0x1024,0x2025,0x7FE6,
0x4224,0x4224,0x4224,0x4224,0x4014,0x400C,0x0004,0x0000
};

unsigned int str3[32]=
{
//--  测速  --  **  宋体, 12  **
// 当前所选字体下一个汉字对应的点阵为:  宽度x高度=32x16,  调整后为: 32x16
0x0408,0xFC31,0x0386,0x0060,0x8000,0x47FE,0x3002,0x0FF2,
0x1002,0x67FE,0x0000,0x07F8,0x4000,0x8000,0x7FFF,0x0000,
0x4040,0x2042,0x1FCC,0x2000,0x4804,0x49E4,0x4524,0x4324,
0x7FFF,0x4124,0x4324,0x4524,0x4DE4,0x4004,0x4000,0x0000
};

unsigned int str4[32]=
{
//--  输入  --  **  宋体, 12  **
//当前所选字体下一个汉字对应的点阵为:  宽度x高度=32x16,  调整后为: 32x16
0x0444,0x04F4,0x044F,0xFFE4,0x0244,0x0264,0xFF90,0x4A98,
0x8A94,0x7F93,0x0014,0x3F98,0x8008,0xFFD0,0x0010,0x0000,
0x4000,0x2000,0x1000,0x0800,0x0601,0x0183,0x0076,0x0018,
0x0060,0x0080,0x0300,0x0400,0x1800,0x3000,0x1000,0x0000
};

unsigned int str5[32]=
{
//--  调整  --  **  宋体, 12  **
//当前所选字体下一个汉字对应的点阵为:  宽度x高度=32x16,  调整后为: 32x16
0x0020,0x0021,0x1FEE,0x8804,0x4400,0x3000,0x0FFF,0x0029,
0x0FA9,0x04BF,0x04A9,0x4FA9,0x8001,0x7FFF,0x0000,0x0000,
0x0000,0x4204,0x4374,0x7AD4,0x43FF,0x42D4,0x4374,0x7E04,
0x4B10,0x4B0C,0x4AB7,0x4A44,0x42B4,0x430C,0x0104,0x0000
};

unsigned int str6[32]=
{
//--  误差  --  **  宋体, 12  **
// 当前所选字体下一个汉字对应的点阵为:  宽度x高度=32x16,  调整后为: 32x16
0x0040,0x0041,0x3FCE,0x1004,0x8800,0x4240,0x225F,0x1251,
0x0A51,0x07D1,0x0A51,0x1251,0x225F,0xE240,0x4200,0x0000,
0x4080,0x2088,0x10A8,0x48A8,0x46A9,0x45AE,0x44EA,0x44B8,
0x7CA8,0x44AC,0x44AB,0x44AA,0x44A8,0x4088,0x4080,0x0000
};

unsigned int str7[48]=
{
//--  占空比  --  **  宋体, 12  **
// 当前所选字体下一个汉字对应的点阵为:  宽度x高度=48x16,  调整后为: 48x16
0x0000,0x0000,0x7F80,0x2080,0x2080,0x2080,0x20FF,0x2088,
0x2088,0x2088,0x2088,0x7F88,0x0008,0x0008,0x0000,0x0000,
0x0010,0x400C,0x4084,0x4144,0x4124,0x4114,0x4105,0x7F06,
0x4104,0x4114,0x4124,0x4144,0x4084,0x4014,0x000C,0x0000,
0x0000,0x0000,0x7FFF,0x2020,0x1020,0x0820,0x0020,0x0000,
0x3FFF,0x4040,0x4040,0x4040,0x4020,0x4020,0x7820,0x0000
};

// Variables
unsigned char ledbuf[8],ledx[8];
unsigned char ledkey[10][8]=
{
	{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00},	//0
	{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},	//1
	{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00},	//2
	{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},
	{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},
	{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},
	{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},
	{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}
};
#define nMusicNumber 52
unsigned int music[nMusicNumber][2]=
{
	{101,1920},{121,1440},{114,480},{101,1920},{151,1920},
	{151,480},{135,480},{121,480},{101,480},{114,960},{121,960},{135,3840},
	{121,480},{114,480},{101,480},{91,480},{101,960},{101,960},
	{76,1920},{101,1920},{114,960},{121,960},{135,1440},{151,480},{151,1920},{0,1920},
	{101,1920},{121,1440},{114,480},{101,1920},{151,1920},
	{151,480},{135,480},{121,480},{101,480},{114,960},{121,960},{135,3840},
	{121,480},{114,480},{101,480},{91,480},{101,960},{101,960},
	{76,1920},{101,1920},{114,960},{121,960},{135,1440},{151,480},{151,1920},{0,1920}
};
unsigned int pwm[8]={ 0x86,0x87,0x83,0x8b,0x89,0x8d,0x8c,0x8e };
unsigned char dbClearKey;

// For ctr.lib
unsigned int nScreenBuffer[1024];

// Functions
void InitInterrupt(void);			// 初始化中断
void InitCTR();						// 初始化ICETEK-CTR
void CloseCTR();					// 关闭ICETEK-CTR上各设备
void Delay(unsigned int nTime);		// 延时子程序
void Delay1(unsigned int nTime);	// 延时子程序(带LED显示刷新)
unsigned char GetKey();				// 读取键盘输入
void RefreshLEDArray();				// 刷新发光二极管阵列显示
void SetLEDArray(int nNumber);		// 修改发光二极管阵列显示内容
char ConvertScanToChar(unsigned char cScanCode);	// 将键盘扫描码转换成字符
void LCDCMD(unsigned char dbCommand);	// 向液晶显示器发送命令
void LCDWriteLeft(unsigned char dbData);	// 写液晶显示器左半屏
void LCDCLS1();							// 清除液晶显示器显示
void TurnOnLCD();						// 打开液晶显示器

void CloseCTR()
{
    CTRGR=0; 				 
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	LBDS=0;
}

void LCDCMD(unsigned char dbCommand)
{
	CTRLCDCMDR=dbCommand;		
	CTRLCDCR=0;
}

unsigned char GetKey()
{
	unsigned int dbReturn;
	
	dbReturn=  CTRKEY;
	dbClearKey=CTRCLKEY;
	Delay(16);
	dbClearKey=CTRCLKEY;
	Delay(16);
	dbClearKey=CTRCLKEY;
	Delay(16);
	dbClearKey=CTRCLKEY;
	Delay(16);
	return dbReturn;
}

char ConvertScanToChar(unsigned char cScanCode)
{
	char cReturn;
	
	cReturn=0;
	switch ( cScanCode )
	{
		case SCANCODE_0: cReturn='0'; break;
		case SCANCODE_1: cReturn='1'; break;
		case SCANCODE_2: cReturn='2'; break;
		case SCANCODE_3: cReturn='3'; break;
		case SCANCODE_4: cReturn='4'; break;
		case SCANCODE_5: cReturn='5'; break;
		case SCANCODE_6: cReturn='6'; break;
		case SCANCODE_7: cReturn='7'; break;
		case SCANCODE_8: cReturn='8'; break;
		case SCANCODE_9: cReturn='9'; break;
		case SCANCODE_Plus: cReturn='+'; break;
		case SCANCODE_Minus: cReturn='-'; break;
	}
	return cReturn;
}

void InitCTR()
{
    CTRGR=0; CTRGR=0x80; CTRGR=0;
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	//LBDS=0;
}

void Delay(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<256;jj++ )
		{
			kk++;
		}
	}
}

void Delay1(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<64;jj++ )
		{
			RefreshLEDArray();
			kk++;
		}
	}
}

void RefreshLEDArray()
{
	int i;
	for ( i=0;i<8;i++ )
	{
		CTRGR=ledx[i];
		CTRLA=ledbuf[i];
	}
}

void SetLEDArray(int nNumber)
{
	int i;
	for ( i=0;i<8;i++ )
		ledbuf[i]=~ledkey[nNumber][7-i];
}

void LCDWriteLeft(unsigned char dbData)
{
	CTRLCDLCR=dbData;
	CTRLCDCR=0;
}

void LCDWriteRight(unsigned char dbData)
{
	CTRLCDRCR=dbData;
	CTRLCDCR=0;
}

void TurnOnLCD()
{
	LCDCMD(LCDCMDTURNON);
}

void LCDCLS1()
{
	int i,j;
	LCDCMD(LCDCMDSTARTLINE);
	for ( i=0;i<8;i++ )
	{
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteLeft(0);
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteRight(0);
	}
}




⌨️ 快捷键说明

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