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

📄 ca320240_boot.c.bak

📁 移植好的Ibm405ep bsp板极支持包
💻 BAK
字号:
/*
 * $Id: ca320240.c,v 1.111.2.6.4.1 2004/02/06 08:58:59 hzk Exp $
 * $Copyright: (c) 2004-2005,Vcom Corp.
 * All Rights Reserved.$
 *
 * ca320240
 */
#include <vxworks.h>
#include <math.h>
#include <stdio.h>
#include "ca320240.h"
/*#include "start_bmp.c"*/

#define LCM_READ_TEST
#define LCM_ENABLE_WAIT
#define LCM_TIME_DELAY /*delay(50);*/
#define LCM_INIT_WAIT delay(500000);
#define LCM_TIMEOUT 0x77ffffff
void delay(unsigned int time)
{
	while(time--){};
	return;	
}

/***********************************************************
				写指令代码
				cw---要写的指令代码
				always return 0;
************************************************************/
int ca320240_pr1(unsigned char cw)
{
	#ifdef LCM_ENABLE_WAIT
	unsigned char ch;
	unsigned int count=0;
	unsigned char *ptr=(unsigned char *)CA0320240_CRADDR;
	ch=*ptr;
	while(ch & 0x40){
		ch=*ptr;	
		count++;
		if(count>LCM_TIMEOUT)break;/*reboot(0);*/
	}
	#else
	unsigned char *ptr;
	#endif
	ptr=(unsigned char *)CA0320240_CWADDR;
	*ptr=cw;
	LCM_TIME_DELAY
	return 0;
}
/***********************************************************
				写参数及显示数据
				cw---要写的指令代码
				always return 0;
************************************************************/
int ca320240_pr2(unsigned char cw)
{
	#ifdef LCM_ENABLE_WAIT
	unsigned int count=0;
	unsigned char ch;
	unsigned char *ptr=(unsigned char *)CA0320240_CRADDR;
	ch=*ptr;
	while(ch & 0x40){
		ch=*ptr;
		count++;
		if(count>LCM_TIMEOUT)break;/*reboot(0);	*/
	}
	#else
	unsigned char *ptr;	
	#endif
	ptr=(unsigned char *)CA0320240_DWADDR;
	*ptr=cw;
	LCM_TIME_DELAY
	return 0;
}
/***********************************************************
				读参数及显示数据
				cw---要写的指令代码
				return read data;
************************************************************/
unsigned char ca320240_pr3()
{
	#ifdef LCM_ENABLE_WAIT
	unsigned int count=0;
	unsigned char ch;
	unsigned char *ptr=(unsigned char *)CA0320240_CRADDR;
	ch=*ptr;
	while(ch & 0x40){
		ch=*ptr;
		count++;
		if(count>LCM_TIMEOUT)break;/*reboot(0);	*/
	}
	#else
	unsigned char ch;
	unsigned char *ptr;
	#endif
	ptr=(unsigned char *)CA0320240_DRADDR;
	ch=*ptr;
	LCM_TIME_DELAY
	return ch;
}

#ifdef LCM_READ_TEST
#if defined(PRJ_BUILD)
void lcd_write_test()
{
	unsigned char *ptr;
	ca320240_pr1(CA320240_CSRW);
	ca320240_pr2(SAD2L);/*设置指针寄存器低8位*/
	ca320240_pr2(SAD2H);/*设置指针寄存器高8位*/
	while(1){
		ptr=(unsigned char *)CA0320240_CWADDR;
		*ptr=CA320240_CSRW;
		LCM_TIME_DELAY
		ptr=(unsigned char *)CA0320240_DWADDR;
		*ptr=SAD2L;	
		LCM_TIME_DELAY
		ptr=(unsigned char *)CA0320240_DWADDR;
		*ptr=SAD2H;
		LCM_TIME_DELAY
	}
}
void lcd_read_test()
{
	unsigned char ch;
	unsigned int count=0;
	unsigned char *ptr=(unsigned char *)CA0320240_CRADDR;
	ch=*ptr;
	while(1){
		/*printf("%x\n",ch);*/
		LCM_TIME_DELAY
		ch=*ptr;	
		count++;
	}
}
#define LCD_RW_TEST
void lcd_rw_test()
{
	int i;
	unsigned char ch;
	#ifdef LCD_RW_TEST
	while(1){
	#endif
	/*CSRW*/
	ca320240_pr1(CA320240_CSRW);
	ca320240_pr2(SAD2L);/*设置指针寄存器低8位*/
	ca320240_pr2(SAD2H);/*设置指针寄存器高8位*/	
	
	/*MWRITE*/
	ca320240_pr1(CA320240_MWRITE);
	#ifndef LCD_RW_TEST
	printf("\n");
	#endif
	for(i=0;i<256;i++){
		ch=i;
		ca320240_pr2(ch);		
		#ifndef LCD_RW_TEST
		printf("%x ",ch);
		#endif
	}
	/*CSRW*/
	ca320240_pr1(CA320240_CSRW);
	ca320240_pr2(SAD2L);/*设置指针寄存器低8位*/
	ca320240_pr2(SAD2H);/*设置指针寄存器高8位*/
	/*MREAD*/
	ca320240_pr1(CA320240_MREAD);
	#ifndef LCD_RW_TEST
	printf("\n");
	#endif
	for(i=0;i<256;i++){
		ch=ca320240_pr3(ch);
		#ifndef LCD_RW_TEST
		printf("%x ",ch);
		#endif
	}
	#ifndef LCD_RW_TEST
	printf("\n");	
	#endif
	#ifdef LCD_RW_TEST
	}	
	#endif
}
#endif
#endif
/***********************************************************
				ca320240清屏
************************************************************/
int ca320240_clear()
{
	unsigned int i=32768;
	/*CSRDIR 右移*/
	ca320240_pr1(CA320240_CSDIR_RIGHT);
	
	/*CSRW*/
	ca320240_pr1(CA320240_CSRW);
	ca320240_pr2(0x00);/*设置指针寄存器低8位*/
	ca320240_pr2(0x00);/*设置指针寄存器高8位*/
	
	/*MWRITE*/
	ca320240_pr1(CA320240_MWRITE);
	while(i--){
		ca320240_pr2(0x00);	
	}
	return 0;
}
/***********************************************************
				ca320240初始化
************************************************************/
int ca320240_init()
{	
	LCM_INIT_WAIT
	/*复位液晶屏*/
	#if CPU==PPC405
    	*(int *)GPIO0_OR&=0xffffffef;/*reset=0*/
    	LCM_INIT_WAIT
    	*(int *)GPIO0_OR|=0x00000010;/*reset=1*/
    	LCM_INIT_WAIT
    	#endif
	/*SYSTEM SET*/
	ca320240_pr1(CA320240_SYSTEM_SET);/*SYSTEM SET指令代码*/
	ca320240_pr2(0x30);
	ca320240_pr2(0x87);
	ca320240_pr2(0x07);
	ca320240_pr2(CR);
	ca320240_pr2(LCD_TCR);
	ca320240_pr2(LF);
	ca320240_pr2(APL);
	ca320240_pr2(APH);
	LCM_INIT_WAIT
	/*SCROLL*/
	ca320240_pr1(CA320240_SCROLL);/*SCROLL指令代码*/
	ca320240_pr2(SAD1L);
	ca320240_pr2(SAD1H);
	ca320240_pr2(SL1);
	ca320240_pr2(SAD2L);
	ca320240_pr2(SAD2H);
	ca320240_pr2(SL2);
	ca320240_pr2(SAD3L);
	ca320240_pr2(SAD3H);
	ca320240_pr2(SAD4L);
	ca320240_pr2(SAD4H);
	LCM_INIT_WAIT
	/*HDOT SCR*/
	ca320240_pr1(CA320240_HDOT_SCR);/*HDOT SCR*/
	ca320240_pr2(0x00);/*写入参数*/
	LCM_INIT_WAIT
	/*OVLAY*/
	ca320240_pr1(CA320240_OVLAY);/*OVLAY*/
	ca320240_pr2(0x00);/*一,三区为文本属性,二重“或"合成*/
	LCM_INIT_WAIT
	/*DISP ON开显示*/
	ca320240_pr1(CA320240_DISP_ON);/*DISP ON*/
	ca320240_pr2(0x10);/*二开显示,0101 0100,光标关显示*/
	LCM_INIT_WAIT
	return 0;
}
void put_bmp()
{
	unsigned int i,j;
	int pos=0;
	unsigned char *ptr=(unsigned char *)(0xfff80000+0x7d000);
	/*CSRDIR 右移*/
	ca320240_pr1(CA320240_CSDIR_RIGHT);
	
	/*清除绘画屏*/
	/*CSRW*/
	ca320240_pr1(CA320240_CSRW);
	ca320240_pr2(SAD2L);/*设置指针寄存器低8位*/
	ca320240_pr2(SAD2H);/*设置指针寄存器高8位*/	
	
	/*MWRITE*/
	ca320240_pr1(CA320240_MWRITE);
	for(i=0;i<LF;i++){
		ca320240_pr1(CA320240_CSRW);
		pos=SAD2+i*AP;
		ca320240_pr2((pos & 0xff));/*设置指针寄存器低8位*/
		ca320240_pr2(((pos>>8) & 0xff));/*设置指针寄存器高8位*/
		/*MWRITE*/
		ca320240_pr1(CA320240_MWRITE);
		for(j=0;j<AP;j++){
			ca320240_pr2(*ptr++);
		}
	}
	#if 0
	while(1){
		ca320240_pr2(0x55);
		ca320240_pr2(0xaa);	
	}	
	#endif
	return ; 	
}
/***********************************************************
		输出开机界面
************************************************************/
void graphics_version()
{
	put_bmp();	
}

⌨️ 快捷键说明

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