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

📄 lcd.c

📁 ICETEK-VC5416-EDULab瑞泰创新科技5416开发板的实验源程序
💻 C
字号:
/////////////////////////////////////////////////
//  Example For ICETEK-VC5416-EDU              //
//          CTR Version : V4                   //
//  Filename: Lcd.c                            //
//  Project : Lcd.pjt                          //
//  Version : 2.00                             //
//  Write by: Daniel Hawk                      //
//  Company : Realtimedsp Co.Ltd.              //
//                                             //
//  All Rights opened & no Onus  2005.06       //
/////////////////////////////////////////////////

//  常量定义
#define LCDDELAY 1
#define LCDCMDTURNON 0x3f
#define LCDCMDTURNOFF 0x3e
#define LCDCMDSTARTLINE 0xc0
#define LCDCMDPAGE 0xb8
#define LCDCMDVERADDRESS 0x40

#define WAITSTATUS (*(unsigned int *)0x28)

//  CTR扩展寄存器定义
ioport unsigned int port8000;
ioport unsigned int port8001;
ioport unsigned int port8002;
ioport unsigned int port8003;
ioport unsigned int port8004;
ioport unsigned int port8005;
ioport unsigned int port8007;
#define CTRGR       port8000
#define CTRLCDCMDR  port8001
#define CTRKEY      port8001
#define CTRCLKEY    port8002
#define CTRLCDCR    port8002
#define CTRLCDLCR   port8003
#define CTRLCDRCR   port8004
#define CTRLA       port8005
#define CTRLR       port8007

void Delay(unsigned int nTime);		// 延时函数
void TurnOnLCD();			        // 打开显示
void LCDCLS();				        // 清除屏幕显示内容

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}
};

main()
{
	int i,nCount=0,nBW=0;

	CTRGR=0;		// 初始化ICETEK-CTR
	CTRGR=0x80;
	CTRGR=0;
	CTRLR=0;			// 关闭东西方向的交通灯
	CTRLR=0x40;	// 关闭南北方向的交通灯
	TurnOnLCD();				// 打开显示
	LCDCLS();				// 清除显示内存
	CTRLCDCMDR=LCDCMDSTARTLINE;		// 设置显示起始行
	CTRLCDCR=0;
	for (;;)
	{
		CTRLCDCMDR=LCDCMDPAGE;		// 设置操作页=0
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
		CTRLCDCMDR=LCDCMDVERADDRESS;	// 起始列=0
		Delay(LCDDELAY);
		CTRLCDCR=0;
		Delay(LCDDELAY);
		for ( i=0;i<8;i++ )
		{
			CTRLCDLCR=( nBW==0 )?(ledkey[nCount][i]):(~ledkey[nCount][i]);	// 屏幕左侧第1至8行第i列赋值							port8002=0;			// (赋值后当前操作列自动加1,所以不需设置)
			Delay(LCDDELAY);
			CTRLCDCR=0;
			Delay(LCDDELAY);
		}
		Delay(512);
		nCount++;
		if ( nCount==10 )
		{
			nCount=0;
			nBW=1-nBW;
		}
	}
}               

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

void TurnOnLCD()
{
	CTRLCDCMDR=LCDCMDTURNON;
	Delay(LCDDELAY);
	CTRLCDCR=0;
	Delay(LCDDELAY);  
	CTRLCDCMDR=LCDCMDSTARTLINE;
	Delay(LCDDELAY);
	CTRLCDCR=0;
	Delay(LCDDELAY);
}

void LCDCLS()
{
	int i,j;
	CTRLCDCMDR=LCDCMDSTARTLINE;
	CTRLCDCR=0;
	for ( i=0;i<8;i++ )
	{
		CTRLCDCMDR=LCDCMDPAGE+i;
		CTRLCDCR=0;
		CTRLCDCMDR=LCDCMDVERADDRESS;
		CTRLCDCR=0;
		for ( j=0;j<64;j++ )
		{
			CTRLCDLCR=0;
			CTRLCDCR=0;
		}
		CTRLCDCMDR=LCDCMDPAGE+i;
		CTRLCDCR=0;
		CTRLCDCMDR=LCDCMDVERADDRESS;
		CTRLCDCR=0;
		for ( j=0;j<64;j++ )
		{
			CTRLCDRCR=0;
			CTRLCDCR=0;
		}
	}
}

⌨️ 快捷键说明

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