DSP课设项目(ICETEK-VC5509-EDU)

DSP课设项目(ICETEK-VC5509-EDU)

想要更多项目私wo!!!

一、简介

本实验的硬件设施使用的是ICETEK-VC5509-EDU实验箱,应用到的有拨码开关控制模块、LED模块、键盘模块、秒表和定时器。

二、运行效果

首先按下拨盘No开机进入主界面:

在这里插入图片描述
图1.1 拨盘开关
在这里插入图片描述
图1.2 主界面

作品实现的功能有以下几个:
一、万年历;
第一页显示年-月-日、时:分;

二、动画播放;
按到动画图标,点击Enter,进入动画播放; 按Num返回。
在这里插入图片描述
图 1.3 动画播放

三、计算器;
按到计算图标,点击Enter,进入计算器。
进入计算器界面后就可以实现两位数的加、减。
按 * 代表清零,按Enter代表等于, 按Num返回。 在这里插入图片描述
图 1.4 计算器

四、信息介绍;
按到我的图标,点击Enter,进入我的信息; 按Num返回。
在这里插入图片描述
五、退出
按到退出按键就关机。

三、部分代码

#define LCDDELAY 1

#include "myapp.h"
#include "scancode.h"

/*想要更多项目私wo!!!*/
#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  ------------------------------------------------------
#define SPCR0 (*(unsigned int *)0x018c0008)
#define PCR0 (*(unsigned int *)0x018c0024)
#define SPCR01 (*(unsigned int *)0x01900008)
#define SPCR02 (*(unsigned int *)0x0)
// McBSP1  ------------------------------------------------------
ioport unsigned int *SPCR21=(unsigned int *)0x2c04;
ioport unsigned int *PCR_1=(unsigned int *)0x2c12;
#define SPCR2_1 (*SPCR21)
#define PCR1 (*PCR_1)
// McBSP2  ------------------------------------------------------
ioport unsigned int *SPCR12=(unsigned int *)0x3005;
ioport unsigned int *PCR_2=(unsigned int *)0x3012;
#define SPCR1_2 (*SPCR12)
#define PCR2 (*PCR_2)

// ICETEK-VC5509-A -----------------------------------------------
#define SPEED144MHz 0x2613
#define LBDS (*((unsigned int *)0x400001))
#define DIPS (*(unsigned int *)0x400002)
#define CREG (*(unsigned short int *)0x400004)
// ICETEK-CTR  --------------------------------------------------
#define CTRGR (*(unsigned int *)0x600800)
#define CTRKEY (*(unsigned int *)0x602800)
#define CTRCLKEY (*(unsigned int *)0x600801)
#define CTRMOTORBSPEED (*(unsigned int *)0x602801)
#define CTRLA (*(unsigned int *)0x602802)
#define CTRLR (*(unsigned int *)0x602803)
#define CTRLCDCMDR (*(unsigned int *)0x602800)
#define CTRLCDCR (*(unsigned int *)0x600801)
#define CTRLCDLCR (*(unsigned int *)0x602801)
#define CTRLCDRCR (*(unsigned int *)0x600802)
// Special values -----------------------------------------------
#define LCDCMDTURNON 0x3f
#define LCDCMDTURNOFF 0x3e
#define LCDCMDSTARTLINE 0xc0
#define LCDCMDPAGE 0xb8
#define LCDCMDVERADDRESS 0x40

/*想要更多项目私wo!!!*/
unsigned int nCount,nCursorCount,cKey;
unsigned int year=2017,month=12,day=1,n;
unsigned char hour=15,minute=25,second=25,a,b,dis[16];
unsigned int fanwei1=0,fanwei2=0,huifu=0;
unsigned int dbScanCode,t=0;
unsigned int shu_1[2]={0,0};
unsigned int shu_2[2]={0,0};
// Variables
unsigned char ledbuf[8],ledx[8];
unsigned char ledkey[16][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},  //3
	{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},  //4
	{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},  //5
	{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},  //6
	{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},  //7
	{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},  //8
	{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00},  //9
	{0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x00},  //-
	{0x00,0x00,0x00,0x66,0x66,0x00,0x00,0x00},  //:
	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},  //空白
	{0x00,0x08,0x08,0x08,0x7F,0x08,0x08,0x08},  //+
	{0x00,0x24,0x24,0x24,0x24,0x24,0x24,0x00},	//=
	{0x00,0x2A,0x14,0x7E,0x14,0x2A,0x00,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;

// 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 LCDCLS();							// 清除液晶显示器显示
void TurnOnLCD();						// 打开液晶显示器


void startset();
void start();

void TIMER_init();

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(130);
	dbClearKey=CTRCLKEY;
	Delay(130);
	dbClearKey=CTRCLKEY;
	Delay(130);
	dbClearKey=CTRCLKEY;
	Delay(130);
	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;
		case SCANCODE_Enter: cReturn=10; 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);
	}
}

 



/
”欢迎使用“开机动画///
unsigned char huanying[32][16]=
{
	
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xE0,0x40,0x00,0x00},
{0x00,0xC0,0xFC,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x04,0x18,0x30,0x60,0xC0,0x00,0xE0,0x7C,0x1F,0x01,0x00,0x80,0x60},
{0x1C,0x07,0x03,0x02,0xF2,0xF2,0x12,0x02,0x02,0x22,0x1A,0x0E,0x07,0x06,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0xC0,0x70,0x1D,0x0F,0x0F,0x3C,0xF8,0xE0,0x80,0x00,0x00},
{0x00,0x80,0xE0,0x3E,0x0F,0x01,0x1E,0xF0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x40,0x40,0x20,0x23,0x11,0x08,0x0C},
{0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0E,0x1C,0x38,0x30,0x10,0x00,0x00},/*"欢",0*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7C,0x18,0x08,0x80,0x80,0x80,0x80},
{0x80,0x80,0x80,0x80,0xFC,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,0x00},
{0x00,0x00,0x00,0x80,0x40,0x30,0x1C,0xFF,0xF9,0x08,0x00,0x00,0x00,0xFC,0xF8,0x08},
{0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00},
{0x00,0x00,0x02,0x01,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0F,0x07,0x22},
{0xC2,0x02,0x02,0xFE,0x7F,0x02,0x02,0x02,0x02,0x02,0x07,0x07,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3F,0x00,0x80,0x40,0x40,0x20,0x20,0x10},
{0x18,0x0F,0x07,0x0F,0x0C,0x18,0x10,0x30,0x30,0x60,0x60,0x60,0x60,0x20,0x20,0x00},/*"使",2*/

{0x00,0x00,0x00,0x00,0x04,0x18,0x78,0xF0,0x60,0x00,0x00,0x00,0xC0,0xC0,0x40,0x20},
{0x30,0x10,0x18,0x18,0xD0,0xC0,0x80,0x80,0x80,0x80,0x40,0xE0,0xC0,0x00,0x00,0x00},
{0x00,0x10,0x10,0x10,0x10,0x10,0xF0,0xF8,0x10,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00},
{0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x10,0x3F,0x3F,0x18,0x08},
{0x0C,0x04,0x04,0x00,0xFF,0xFF,0x00,0x10,0x20,0x20,0x70,0x3F,0x00,0x00,0x00,0x00},
{0x00,0x04,0x0E,0x06,0x03,0x01,0x01,0x01,0x03,0x06,0x04,0x0C,0x08,0x18,0x18,0x18},
{0x10,0x10,0x10,0x10,0x33,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x18,0x08,0x08,0x00},/*"迎",1*/
{0x00,0x00,0x00,0x00,0x00,0x04,0xF8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xF0},
{0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xF8,0xF8,0x10,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xFF},
{0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xFF},
{0xFF,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00},
{0x00,0x40,0x20,0x18,0x0E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F},
{0x3F,0x00,0x00,0x00,0x10,0x10,0x10,0x30,0x70,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00},/*"用",0*/

};
//界面显示/
unsigned char index[16][16]=
{
{0x20,0x24,0x24,0xE4,0x24,0x24,0x24,0x20,0x10,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00},
{0x08,0x1C,0x0B,0x08,0x0C,0x05,0x4E,0x24,0x10,0x0C,0x03,0x20,0x40,0x3F,0x00,0x00},/*"动",0*/

{0x02,0xF2,0x02,0x02,0xFA,0x4A,0x4A,0xFA,0x4A,0x4A,0xFA,0x02,0x02,0xF2,0x02,0x00},
{0x00,0x7F,0x20,0x20,0x2F,0x24,0x24,0x27,0x24,0x24,0x2F,0x20,0x20,0x7F,0x00,0x00},/*"画",1*/


{0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00},
{0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00},/*"计",0*/

{0x08,0x07,0xFA,0xAA,0xAE,0xAA,0xAA,0xA8,0xAC,0xAB,0xAA,0xFE,0x0A,0x02,0x02,0x00},
{0x08,0x08,0x8B,0x6A,0x1E,0x0A,0x0A,0x0A,0x0A,0xFE,0x0A,0x0B,0x08,0x08,0x08,0x00},/*"算",1*/


{0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00},
{0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00},/*"我",0*/

{0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00},
{0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00},/*"的",1*/

{0x40,0x41,0xC6,0x00,0x00,0xFE,0x4A,0x4A,0xCA,0x4A,0x4A,0x7E,0x80,0x00,0x00,0x00},
{0x40,0x20,0x1F,0x20,0x40,0x5F,0x48,0x44,0x40,0x41,0x42,0x4D,0x58,0x40,0x40,0x00},/*"退",0*/

{0x00,0x00,0xFC,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0xFC,0x00,0x00},
{0x00,0x00,0x7E,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x7E,0x00,0x00},/*"出",1*/
};

二维码/
unsigned char xinxi[16][16]=
{
{0x7F,0x41,0x5D,0x5D,0x5D,0x41,0x7F,0x00,0x4C,0x22,0xEC,0x26,0xF8,0xB0,0xF3,0x83},///我的信息
{0xCF,0x8B,0xDA,0x97,0xD1,0x00,0x7F,0x41,0x5D,0x5D,0x5D,0x41,0x7F,0x00,0x00,0x00},
{0x40,0x2A,0x38,0xBB,0x95,0x6C,0x55,0x4D,0xAC,0xF2,0xE8,0x90,0x91,0x66,0x54,0x54},
{0xAC,0xF6,0x8A,0xCD,0xAC,0x5A,0xB4,0x1A,0x2A,0xD3,0xA1,0x92,0x68,0x00,0x00,0x00},
{0xDF,0x5E,0x4B,0x4C,0x5D,0x4F,0xD5,0x0D,0x6C,0xC7,0xFA,0x93,0x5B,0xD6,0x49,0x95},
{0xAD,0xD5,0x96,0xFC,0xF1,0x18,0x5A,0x14,0xFA,0xB3,0x6A,0x09,0x14,0x00,0x00,0x00},
{0x1F,0x10,0x17,0x17,0x17,0x10,0x1F,0x00,0x03,0x1A,0x18,0x12,0x15,0x18,0x04,0x14},
{0x1D,0x1A,0x0E,0x1D,0x1B,0x1B,0x01,0x13,0x1D,0x08,0x08,0x06,0x0C,0x00,0x00,0x00},


{0xC0,0x60,0x30,0x18,0x0C,0x04,0x04,0x04,0x74,0x14,0x14,0x04,0x84,0x84,0x84,0x84},///提示图片
{0x04,0x14,0x14,0x74,0x04,0x04,0x04,0x04,0x04,0x04,0x0C,0x18,0x30,0x60,0xC0,0x00},
{0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x80,0x80,0x00,0x10,0x10,0x10,0x10},
{0x00,0x80,0x80,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00},
{0x00,0x01,0x03,0x86,0x84,0x84,0x04,0x04,0x04,0x04,0x84,0x04,0x04,0x04,0x84,0x84},
{0x84,0x04,0x04,0x04,0x04,0x84,0x04,0x08,0x90,0xA4,0xBC,0x06,0x03,0x01,0x00,0x00},
{0x00,0x00,0x08,0x2A,0x7F,0x0A,0x08,0x00,0x10,0x0A,0x7F,0x0A,0x10,0x40,0x3F,0x00},
{0x3F,0x40,0x60,0x00,0x12,0x7F,0x0A,0x00,0x40,0x44,0x44,0x3F,0x00,0x00,0x00,0x00},
};


//计算器界面//
unsigned char jisuanqi[14][16]=
{
{0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00},
{0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00},/*"计",0*/
{0x08,0x07,0xFA,0xAA,0xAE,0xAA,0xAA,0xA8,0xAC,0xAB,0xAA,0xFE,0x0A,0x02,0x02,0x00},
{0x08,0x08,0x8B,0x6A,0x1E,0x0A,0x0A,0x0A,0x0A,0xFE,0x0A,0x0B,0x08,0x08,0x08,0x00},/*"算",1*/
{0x40,0x40,0x4F,0x49,0x49,0xC9,0xCF,0x70,0xC0,0xCF,0x49,0x59,0x69,0x4F,0x00,0x00},
{0x02,0x02,0x7E,0x45,0x45,0x44,0x7C,0x00,0x7C,0x44,0x45,0x45,0x7E,0x06,0x02,0x00},/*"器",2*/

{0x10,0x61,0x06,0xE0,0x18,0x20,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x2A,0x00,0x00},
{0x04,0x04,0xFF,0x00,0x00,0x00,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00},/*"清",2*/
{0x00,0x0C,0x04,0x55,0x55,0x55,0x85,0x7F,0x85,0x55,0x55,0x55,0x05,0x0C,0x04,0x00},
{0x04,0x04,0x04,0x0A,0x0A,0x09,0x2A,0xCC,0x28,0x19,0x09,0x02,0x06,0x02,0x02,0x00},/*"零",3*/
{0x00,0x84,0xE4,0x5C,0x44,0xC4,0x10,0xF8,0x97,0x92,0xF2,0x9A,0x96,0xF2,0x00,0x00},
{0x01,0x00,0x3F,0x08,0x88,0x4F,0x30,0x0F,0x04,0x04,0x3F,0x44,0x84,0x7F,0x00,0x00},/*"确",0*/
{0x40,0x41,0x42,0xCC,0x04,0x00,0x00,0x00,0x80,0x7F,0x80,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x7F,0x20,0x90,0x60,0x18,0x07,0x00,0x03,0x0C,0x30,0xC0,0x40,0x00},/*"认",1*/

};
//动画片  开始/
unsigned char cartoon_1[8][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0},
{0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x60,0x60,0xA3,0xF7,0xFF},
{0xC7,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0xC0,0xE0,0x7C,0x0F,0x3B,0xF0},
{0xC3,0x03,0x06,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x07,0x04,0x04,0x04,0x04,0x04,0x04},
{0x05,0x07,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},/*"未命名文件",0*/
};

unsigned char cartoon_2[8][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0},
{0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0x20,0xA3,0xF7,0xFF},
{0xC7,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x80,0x78,0x1F,0x3F,0xF0},
{0x03,0x03,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x05,0x04,0x04,0x06,0x07,0x06},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
};

unsigned char cartoon_3[8][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0},
{0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x20,0x93,0xF7,0xFF},
{0x87,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x41,0xFF,0x3F,0x14},
{0x09,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x07,0x06,0x04},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
};

unsigned char cartoon_4[8][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0},
{0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x23,0xE7,0xFF},
{0x87,0x07,0x03,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x3F,0xFF,0x10},
{0x31,0xE3,0x42,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x05,0x04,0x04},
{0x04,0x05,0x05,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
};

unsigned char cartoon_5[8][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0},
{0xE0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x43,0xE7,0xFF},
{0x87,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x83,0xC1,0x60,0x3F,0x1F,0x10},
{0x31,0x63,0xC2,0x01,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x05,0x04,0x04,0x04,0x04,0x04,0x04},
{0x04,0x04,0x05,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
};
//动画片  结束/



///动画、计算器、,我的、退出图标//
unsigned char zon_image[8][16]=
{
{0xF0,0x18,0x0C,0x06,0x02,0xF2,0xF2,0xE2,0xC2,0x82,0x02,0x06,0x0C,0x18,0xF0,0x00},
{0x0F,0x18,0x30,0x60,0x40,0x4F,0x4F,0x47,0x43,0x41,0x40,0x60,0x30,0x18,0x0F,0x00},

{0x00,0x00,0xFF,0x21,0xAD,0xA1,0x2D,0xA1,0xAD,0x21,0xAD,0xA1,0x21,0xFF,0x00,0x00},
{0x00,0x00,0xFF,0x80,0xED,0xED,0x80,0xED,0xED,0x80,0xED,0xED,0x80,0xFF,0x00,0x00},

{0x00,0x00,0x00,0x38,0xA6,0x43,0x9B,0x23,0x0F,0x83,0x4E,0x4A,0x2A,0x12,0x00,0x00},
{0x00,0x00,0x9E,0xD1,0xF6,0xF8,0x3B,0x3A,0x3A,0x38,0xFB,0xF7,0xD1,0x9E,0x00,0x00},

{0x00,0x04,0x0C,0x18,0x30,0x60,0xC0,0x80,0xC0,0x60,0x30,0x18,0x0C,0x04,0x00,0x00},
{0x00,0x20,0x30,0x18,0x0C,0x06,0x03,0x01,0x03,0x06,0x0C,0x18,0x30,0x20,0x00,0x00},
};




void wel_use()
{
	int i,zuo=0,you=16,ye=0,hang=0;

	CTRLCDCMDR=LCDCMDSTARTLINE;		// 设置显示起始行
	Delay(LCDDELAY);
	CTRLCDCR=0;
	Delay(LCDDELAY);
	for (;;)
	{
		CTRLCDCMDR=0xb8+ye;		// 设置操作页=0
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
		CTRLCDCMDR=0x40+16*2+hang*16;	// 起始列=4
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
		for ( i=0;i<16;i++ )
		{
			CTRLCDLCR=huanying[zuo][i];	// 显示 欢   使
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
		CTRLCDCMDR=0xb8+ye;		// 设置操作页=0
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
		CTRLCDCMDR=0x40+hang*16;	// 起始列=0
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
		for ( i=0;i<16;i++ )
		{
			CTRLCDRCR=huanying[you][i];	// 显示  迎  用	
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
		zuo++;you++;
		hang++;
		if(hang==2)    //第一页字符写完,换页,一共8页
		{
			hang=0;
			ye++;
			if(ye==8) 
			{
				ye=0;
				break;
			}
		}
		if(zuo==16) zuo=0;
		if(you==32) you=16;
	}
} 

void set(int i,int j)
{
	CTRLCDCMDR=LCDCMDPAGE+i;		// 设置操作页=i
	Delay(LCDDELAY);
	CTRLCDCR=0;
	Delay(LCDDELAY);
	CTRLCDCMDR=LCDCMDVERADDRESS+j*8;	// 起始列=j*8
	Delay(LCDDELAY);
	CTRLCDCR=0;
	Delay(LCDDELAY);
}

void printL(unsigned char hang,unsigned int q)//时间显示数组
{
   	int i;
   	if(q==0)
   	{
	   	for ( i=0;i<8;i++ ) 
		{
			CTRLCDLCR=ledkey[hang][i];	// 屏幕左侧第1至8行第i列赋值	只用8列						port8002=0;			// (赋值后当前操作列自动加1,Y地址计数器自动加1,所以不需设置)  仅显示左上角的8*8
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
	else
	{
		for ( i=0;i<8;i++ ) 
		{
			CTRLCDLCR=~ledkey[hang][i];	// 屏幕左侧第1至8行第i列赋值	只用8列						port8002=0;			// (赋值后当前操作列自动加1,Y地址计数器自动加1,所以不需设置)  仅显示左上角的8*8
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
}
void printR(unsigned char hang,unsigned int q)//时间显示数组
{
   	int i;
   	if(q==0)
   	{
	   	for ( i=0;i<8;i++ ) 
		{
			CTRLCDRCR=ledkey[hang][i];	// 屏幕左侧第1至8行第i列赋值	只用8列						port8002=0;			// (赋值后当前操作列自动加1,Y地址计数器自动加1,所以不需设置)  仅显示左上角的8*8
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
	else
	{
		for ( i=0;i<8;i++ ) 
		{
			CTRLCDRCR=~ledkey[hang][i];	// 屏幕左侧第1至8行第i列赋值	只用8列						port8002=0;			// (赋值后当前操作列自动加1,Y地址计数器自动加1,所以不需设置)  仅显示左上角的8*8
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
}
void printL1(unsigned char hang,unsigned int q)//显示首页数组
{
    int i;
    if(q==0)
    {
		for ( i=0;i<16;i++ ) 
		{
			CTRLCDLCR=index[hang][i];
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
	else 
	{
		for ( i=0;i<16;i++ ) 
		{
			CTRLCDLCR=~index[hang][i];
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
}
void printR1(unsigned char hang,unsigned int q)//显示首页数组
{
    int i;
	if(q==0)
    {
		for ( i=0;i<16;i++ ) 
		{
			CTRLCDRCR=index[hang][i];
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
	else 
	{
		for ( i=0;i<16;i++ ) 
		{
			CTRLCDRCR=~index[hang][i];
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
	}
}
void printL2(unsigned char hang)	//显示二维码数组
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=xinxi[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}
void printR2(unsigned char hang)//显示二维码数组
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=xinxi[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}


void printL_jsq(unsigned char hang)//显示计算器数组
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=jisuanqi[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_jaq(unsigned char hang)//显示计算器数组
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=jisuanqi[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}


void printL_cartoon1(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=cartoon_1[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_cartoon1(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=cartoon_1[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printL_cartoon2(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=cartoon_2[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_cartoon2(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=cartoon_2[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printL_cartoon3(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=cartoon_3[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_cartoon3(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=cartoon_3[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printL_cartoon4(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=cartoon_4[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_cartoon4(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=cartoon_4[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printL_cartoon5(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=cartoon_5[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_cartoon5(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=cartoon_5[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printL_image(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDLCR=zon_image[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}

void printR_image(unsigned char hang)
{
   int i;
   for ( i=0;i<16;i++ ) 
	{
		CTRLCDRCR=zon_image[hang][i];
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
	}
}


unsigned int leap_year(unsigned int x)
{
	if(x%100==0)
	{
		if(x%400==0)
			return 1;
		else
		  return 0;
	}
	else
	{
		if(x%4==0)
			return 1;
		else
		  return 0;
	}
}
void shijian()
{
	second++;
	if(second==60)
	{
		minute++;
		second=0;
		if(minute==60)
		{
			hour++;
			minute=0;
			if(hour==24)
			{					
				hour=0;
				if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
				{
					if(day<31)
						day++;
					else
					{
						day=1;
						if(month==12)
						{
							year++;
							month=0;
						}
						else
						  month++;
					}
				}
				if(month==4 || month==6 || month==9 || month==11)
				{
					if(day<30)
						day++;
					else
					{
						day=1;
						month++;
					}
				}
				if(month==2)
				{
					n=leap_year(year);
					if(n==1)
					{
						if(day<29)
						{
							day++;
						}
						else
						{
							month++;
							day=1;
						}
					}
					if(n==0)
					{
						if(day<28)
							day++;
						else
						{
							month++;
							day=1;
						}
					}
				}
			}					
		}
	}
}
void dis_time()
{
	dis[0]=year/1000;
	dis[1]=year/100%10;
	dis[2]=year/10%10;                                                 
	dis[3]=year%10;
	dis[4]=10;
	dis[5]=month/10;
	dis[6]=month%10;
	dis[7]=10;
	dis[8]=day/10;
	dis[9]=day%10;
	dis[10]=12;
	dis[11]=hour/10;
	dis[12]=hour%10;
	dis[13]=11;                                                 
	dis[14]=minute/10;
	dis[15]=minute%10;
	set(0,0); printL(dis[0],0);
	set(0,1); printL(dis[1],0);
	set(0,2); printL(dis[2],0);
	set(0,3); printL(dis[3],0);
	set(0,4); printL(dis[4],0);
	set(0,5); printL(dis[5],0);
	set(0,6); printL(dis[6],0);
	set(0,7); printL(dis[7],0);
	set(0,0); printR(dis[8],0);
	set(0,1); printR(dis[9],0);
	set(0,2); printR(dis[10],0);
	set(0,3); printR(dis[11],0);
	set(0,4); printR(dis[12],0);
	set(0,5); printR(dis[13],0);
	set(0,6); printR(dis[14],0);
	set(0,7); printR(dis[15],0);
}
void startstore1(unsigned int i)  
{
	set(2,2);printL1(0,i);
	set(2,4);printL1(2,i);
	set(3,2);printL1(1,i);
	set(3,4);printL1(3,i);  
}

void cartoon_image()
{
	set(2,0);printL_image(0);
	set(3,0);printL_image(1);	
}

void startstore2(unsigned int i) 
{
	set(2,2);printR1(4,i);
	set(2,4);printR1(6,i);
	set(3,2);printR1(5,i);
	set(3,4);printR1(7,i); 
}

void jisuan_image()
{
	set(2,0);printR_image(2);
	set(3,0);printR_image(3);	
}

void startstore3(unsigned int i) 
{
	set(5,2);printL1(8,i);
	set(5,4);printL1(10,i);
	set(6,2);printL1(9,i);
	set(6,4);printL1(11,i);  
}

void my_image()
{
	set(5,0);printL_image(4);
	set(6,0);printL_image(5);	
}

void startstore4(unsigned int i) 
{
	set(5,2);printR1(12,i);
	set(5,4);printR1(14,i);
	set(6,2);printR1(13,i);
	set(6,4);printR1(15,i);
}

void quit_image()
{
	set(5,0);printR_image(6);
	set(6,0);printR_image(7);	
}

void dis_code()
{
	set(1,4);printL2(8);
	set(1,6);printL2(9);
	set(2,4);printL2(10);
	set(2,6);printL2(11);
	set(3,4);printL2(12);
	set(3,6);printL2(13);
	set(4,4);printL2(14);
	set(4,6);printL2(15);
	
	set(3,0);printR2(0);
	set(3,2);printR2(1);
	set(4,0);printR2(2);
	set(4,2);printR2(3);
	set(5,0);printR2(4);
	set(5,2);printR2(5);
	set(6,0);printR2(6);
	set(6,2);printR2(7);
}





int sum_1()
{	
	int ge=0,si=0,sum;
	si=shu_1[0];
	ge=shu_1[1];
	if(ge==0)
	{
		ge=si;
		si=0;
	}
	sum=(si*10+ge);
	return sum;
}

int sum_2()
{	
	int ge=0,si=0,sum;
	si=shu_2[0];
	ge=shu_2[1];
	if(ge==0)
	{
		ge=si;
		si=0;
	}
	sum=(si*10+ge);
	return sum;
}

void sum(int shu)
{
	int ge=0,si=0;
	si=shu/10;
	ge=shu%10;
	set(7,5);printL(14,0);
	set(7,0);printR(si,0);
	set(7,1);printR(ge,0);
}


void dis_jisuanqi()
{
	set(1,0);printL_jsq(0);
	set(1,2);printL_jsq(2);
	set(1,4);printL_jsq(4);
	set(2,0);printL_jsq(1);
	set(2,2);printL_jsq(3);
	set(2,4);printL_jsq(5);
	
	set(1,0);printR_jaq(6);
	set(1,2);printR_jaq(8);
	set(1,4);printR_jaq(10);
	set(1,6);printR_jaq(12);
	set(2,0);printR_jaq(7);
	set(2,2);printR_jaq(9);
	
	set(2,4);printR_jaq(11);
	set(2,6);printR_jaq(13);
	set(0,2);printR(11,0);
	set(0,3);printR(15,0);
	set(0,5);printR(11,0);
	set(0,6);printR(14,0);
}

void jisuan()
{
	int nCount=0,nBW=0,i=0,j=0;
	int dbScanCode,tKey,cKey,nKeyCode;
	int z=0,yi,er,ge,si;
	int jia=0,jian=0,deng;
	PLL_Init(20);
	SDRAM_init();
	InitCTR();
	TurnOnLCD();				// 打开显示
	LCDCLS();				// 清除显示内存
	CTRLCDCMDR=LCDCMDSTARTLINE;		// 设置显示起始行
	Delay(LCDDELAY);
	CTRLCDCR=0;
	Delay(LCDDELAY);
	for (;;)
	{
		dis_jisuanqi();
		Delay(10);
		dbScanCode=GetKey();
		dbScanCode&=0x0ff;
		Delay(100);
		cKey=ConvertScanToChar(dbScanCode);  //将扫描码转换为字符类型
		if (cKey!=0 && cKey>='0' && cKey<='9' )
		{
			if(i<2)
			{
				shu_1[i]=cKey-'0';
				set(3,i);printR(shu_1[i],0);
				i++;
			}
				
			
		}
		if(dbScanCode==0x79)
		{
			set(4,5);printL(13,0);
			jia=1;
			z=1;
		}
		if(dbScanCode==0x7B)
		{
			set(4,5);printL(10,0);
			jian=1;
			z=1;
		}
		Delay(10);
		dbScanCode=GetKey();
		dbScanCode&=0x0ff;
		Delay(100);
		cKey=ConvertScanToChar(dbScanCode); 
		if (z==1 && cKey!=0 && cKey>='0' && cKey<='9' )
		{
			if(j<2)
			{
				shu_2[j]=cKey-'0';
				set(5,j);printR(shu_2[j],0);
				j++;	
			}
		}
		if(dbScanCode==0x5A)
		{
			yi=sum_1();
			er=sum_2();
			if(jia==1)
			{
				deng=yi+er;
				sum(deng);
			}
			if(jian==1)
			{
				deng=yi-er;
				sum(deng);
			}
		}
		if(dbScanCode==0x7C)
		{
			LCDCLS();	
			deng=0;
			yi=0;
			er=0;
			z=0;
			i=0;
			j=0;
		}
		if( dbScanCode==SCANCODE_Num)
		{
			break;
		}
	}		
}

void cartoon_start_1()
{
	set(2,6);printL_cartoon1(0);
	set(2,0);printR_cartoon1(1);
	set(3,6);printL_cartoon1(2);
	set(3,0);printR_cartoon1(3);
	set(4,6);printL_cartoon1(4);
	set(4,0);printR_cartoon1(5);
	set(5,6);printL_cartoon1(6);
	set(5,0);printR_cartoon1(7);
}


void cartoon_start_2()
{	
	set(2,6);printL_cartoon2(0);
	set(2,0);printR_cartoon2(1);
	set(3,6);printL_cartoon2(2);
	set(3,0);printR_cartoon2(3);
	set(4,6);printL_cartoon2(4);
	set(4,0);printR_cartoon2(5);
	set(5,6);printL_cartoon2(6);
	set(5,0);printR_cartoon2(7);
}
void cartoon_start_3()
{
	set(2,6);printL_cartoon3(0);
	set(2,0);printR_cartoon3(1);
	set(3,6);printL_cartoon3(2);
	set(3,0);printR_cartoon3(3);
	set(4,6);printL_cartoon3(4);
	set(4,0);printR_cartoon3(5);
	set(5,6);printL_cartoon3(6);
	set(5,0);printR_cartoon3(7);
}
void cartoon_start_4()
{
	set(2,6);printL_cartoon4(0);
	set(2,0);printR_cartoon4(1);
	set(3,6);printL_cartoon4(2);
	set(3,0);printR_cartoon4(3);
	set(4,6);printL_cartoon4(4);
	set(4,0);printR_cartoon4(5);
	set(5,6);printL_cartoon4(6);
	set(5,0);printR_cartoon4(7);
}
void cartoon_start_5()
{	
	set(2,6);printL_cartoon5(0);
	set(2,0);printR_cartoon5(1);
	set(3,6);printL_cartoon5(2);
	set(3,0);printR_cartoon5(3);
	set(4,6);printL_cartoon5(4);
	set(4,0);printR_cartoon5(5);
	set(5,6);printL_cartoon5(6);
	set(5,0);printR_cartoon5(7);
}

void startset()
{
	dbScanCode=GetKey();
	dbScanCode&=0x0ff;
	if(dbScanCode!=0 && dbScanCode!=0x0ff)
	{
		if(dbScanCode==SCANCODE_8 && huifu==0)			
		{
			fanwei2=0;
		}
		if(dbScanCode==SCANCODE_2 && huifu==0)			
		{
			fanwei2=1;
		}
		if(dbScanCode==SCANCODE_4 && huifu==0)			
		{
			fanwei1=0;
		}
		if(dbScanCode==SCANCODE_6 && huifu==0)			
		{
			fanwei1=1;
		}
		if(dbScanCode==SCANCODE_Num && huifu==1)		
		{
			fanwei1=0;
			fanwei2=0;
			if(t==1)
			{
				t=0;
				LCDCLS();
				dis_time();
			}
			huifu=0;
		}
	}			
}

void start()
{

	ioport unsigned int *tcr0;
	tcr0  =  (unsigned int *)0x1002;
   	startset();
	if(fanwei1==0 && fanwei2==0)			
	{
		cartoon_image();
		startstore1(1);
		jisuan_image();
		startstore2(0);
		my_image();
		startstore3(0);
		quit_image();
		startstore4(0);
		if(dbScanCode==SCANCODE_Enter)		
		{
			LCDCLS(); 
			fanwei1=5;
			fanwei2=5;
			huifu=1;
		}
	}
	if(fanwei1==1 && fanwei2==0)			
	{
		cartoon_image();
		startstore1(0);
		jisuan_image();
		startstore2(1);
		my_image();
		startstore3(0);
		quit_image();
		startstore4(0);
		if(dbScanCode==SCANCODE_Enter)
		{
			LCDCLS(); 
			fanwei1=6;
			fanwei2=6;
			huifu=1;
		}
	}
	if(fanwei1==0 && fanwei2==1)			
	{
		cartoon_image();
		startstore1(0);
		jisuan_image();
		startstore2(0);
		my_image();
		startstore3(1);
		quit_image();
		startstore4(0);
		if(dbScanCode==SCANCODE_Enter)
		{
			LCDCLS(); 
			fanwei1=7;
			fanwei2=7;
			huifu=1;
		}
	}
	if(fanwei1==1 && fanwei2==1)			
	{
		cartoon_image();
		startstore1(0);
		jisuan_image();
		startstore2(0);
		my_image();
		startstore3(0);
		quit_image();
		startstore4(1);
		if(dbScanCode==SCANCODE_Enter)
		{
			*tcr0 = 0x04f0;
			LCDCLS(); 
			huifu=1;
		}
	}
	if(fanwei1==5 && fanwei2==5)			
	{
		if(t==0)
		{
			dis_time();	
		}
		cartoon_start_1();
		Delay(250);
		LCDCLS();
		cartoon_start_2();
		Delay(250);
		LCDCLS();
		cartoon_start_3();
		Delay(250);
		LCDCLS();
		cartoon_start_4();
		Delay(250);
		LCDCLS();
		cartoon_start_5();
		Delay(250);
		LCDCLS();
		t=1;
		
	}
	if(fanwei1==6 && fanwei2==6)
	{
		if(t==0)
		{
			dis_time();
		}
	 	jisuan();
	 	LCDCLS();
		startset();
		dis_time();
		start();
	 	t=1;
	}
	if(fanwei1==7 && fanwei2==7)
	{
		if(t==0)
		{
			dis_time();
		}
	 	dis_code();
	 	t=1;
	}	
}
void interrupt Timer()
{
	b++;
	a%=10;                  //原计划中断0.005一次,a%=200,定时1秒
	if(a==0)                //加入按键后显示时间部分延长
	{                       //经调整改为a%10为正常显示1秒
		shijian();
		dis_time();		
	}
	if(a==5)               //与上面相同问题,a==100改为a==5
	{
		set(0,5); printR(12,0);
	}
	if(b%2==0)
	{
		start();
	}
	a++;
}

void INTR_init()
{
	IVPD=0xd0;
	IVPH=0xd0;
	IER0=0x10;
	DBIER0 =0x10;
	IFR0=0xffff;
	asm(" BCLR INTM");

}

void TIMER_init()
{
    ioport unsigned int *tim0; 
    ioport unsigned int *prd0; 
    ioport unsigned int *tcr0; 
    ioport unsigned int *prsc0;  
	tim0  =  (unsigned int *)0x1000;
	prd0  =  (unsigned int *)0x1001;
	tcr0  =  (unsigned int *)0x1002;
	prsc0 =  (unsigned int *)0x1003;
   *tcr0 = 0x04f0;
   *tim0 = 0;
   *prd0 = 0x0c34f;
   *prsc0 = 2;
   *tcr0 = 0x00e0;
}





  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
6.1.3、退出……………………..……………………………….…5 6.2、编辑…………………………..…………………………………5 6.2.1、灰度………………………..………………….……………5 6.2.2、亮度………………………..………………….……………6 6.2.3、截图…………………………..……………….……………7 6.2.4、缩放…………………………..…………….………………7 6.3、旋转…………………………………..…………………………9 6.3.1、上下翻转…………………….…………….………………9 6.3.2、左右翻转………………….…………….…………………9 6.3.3任意角度翻转…………………………….…………………9 6.4、噪声………………………………..…………..………………10 6.5、滤波……………………………………..………..……………10 6.6、直方图统计……………………………………………………11 6.7、频谱分析………………………………………..…..…………12 6.7.1、频谱图………………………… …… …… ……….……12 6.7.2、通过高通滤波器………………… …… .……………….12 6.7.3、通过低通滤波器……………………………….. ……….13 6.8、灰度图像处理………………………………………… . …….14 6.8.1、二值图像……………………………………………….. .14 6.8.2、创建索引图像……………………………………… .…..14 6.9、颜色模型转换……………………………..… ..……………14 6.10、操作界面设计……………………………………..…………15
以下是基于DSP的秒表代码示例: ```c #include <stdio.h> #include <stdlib.h> #include <c6x.h> #define TIMER_BASE 0x01940000 #define TIMER0_LOAD_COUNT 0x0000FFFF #define TIMER1_LOAD_COUNT 0x7FFFFFFF #pragma DATA_SECTION(timer0_count, ".my_data") volatile unsigned int timer0_count = 0; #pragma DATA_SECTION(timer1_count, ".my_data") volatile unsigned int timer1_count = 0; void timer0_isr(void) { timer0_count++; } void timer1_isr(void) { timer1_count++; } int main(void) { // 初始化定时器模块 CSL_syscfg0Init(); CSL_tmrInit(); // 配置定时器0为周期性中断模式 CSL_TmrObj tmr0_obj; CSL_tmrOpen(&tmr0_obj, 0); CSL_tmrHwControl(&tmr0_obj, CSL_TMR_CMD_RESET, NULL); CSL_tmrHwControl(&tmr0_obj, CSL_TMR_CMD_SETUP, (void*)TIMER0_LOAD_COUNT); CSL_tmrHwControl(&tmr0_obj, CSL_TMR_CMD_START, NULL); CSL_intcEventMap(4, 11); CSL_intcHookIsr(4, 11, timer0_isr); CSL_intcGlobalEnable(); // 配置定时器1为单次中断模式 CSL_TmrObj tmr1_obj; CSL_tmrOpen(&tmr1_obj, 1); CSL_tmrHwControl(&tmr1_obj, CSL_TMR_CMD_RESET, NULL); CSL_tmrHwControl(&tmr1_obj, CSL_TMR_CMD_SETUP, (void*)TIMER1_LOAD_COUNT); CSL_tmrHwControl(&tmr1_obj, CSL_TMR_CMD_START_ONCE, NULL); CSL_intcEventMap(4, 10); CSL_intcHookIsr(4, 10, timer1_isr); CSL_intcGlobalEnable(); // 等待定时器1中断触发 while (timer1_count == 0); // 输出定时器0的计数值 printf("Timer0 count: %u\n", timer0_count); return 0; } ``` 在此示例中,我们使用了两个定时器: - 定时器0:用于计算经过了多长时间,以及实现周期性中断。 - 定时器1:用于触发一次性中断,以便在需要时停止定时器0并计算计数值。 在 `main` 函数中,我们首先初始化了定时器模块,并在定时器0和定时器1上配置了不同的模式。接下来,我们等待定时器1的中断触发,在中断处理函数中累加定时器0的计数值。最后,我们输出定时器0的计数值并退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值