📄 icetek-vc5502-edu.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 + -