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

📄 main.c

📁 440s3c44b0
💻 C
字号:
#include <stdlib.h>
#include <string.h>
#include "option.h"
#include "def.h"
#include "44b.h"
#include "44blib.h"
#include "lcd.h"
#include "lcdlib.h"
#include "glib.h"
#include "Bmp_Color256_320_240.h"

volatile char which_int=0;
volatile char p_bmp = 0 ;

extern int Image$$RO$$Limit;
extern int Image$$RW$$Base;
//static int delayLoopCount=400;

void Isr_Init(void);
//***************************************************************************

#define BMP_MAX 5		//此为最大图片数组的个数
void * BMP[] = 
{
	(unsigned char *)acFROG ,
	(unsigned char *)acShrek ,
	(unsigned char *)acUumagic ,
	(unsigned char *)acUuss ,
	(unsigned char *)acUutx ,
};

//***************************************************************************
void Key_Handle( unsigned char m )
{
	m = (~m)&0x0f ;
	switch(m)
	{
		case 1 : Uart_Printf("KEY1 down!\n");
			Lcd_DispON() ;
			break ;
		case 2 : Uart_Printf("KEY2 down!\n");
			Lcd_DispOFF() ;
			break ;
		case 4 : Uart_Printf("KEY3 down!\n");
			if( p_bmp==BMP_MAX )	p_bmp = 0 ;
			LcdColor256_Bmp( BMP[p_bmp] ) ;
			p_bmp++ ;
			break ;
		case 8 : Uart_Printf("KEY4 down!\n");
			if( p_bmp==BMP_MAX )	p_bmp = 0 ;
			LcdColor256_Bmp( BMP[p_bmp] ) ;
			if( p_bmp==0 )	p_bmp = BMP_MAX ;
			p_bmp-- ;
			break ;
		default : break ;
	}			
}




void Disbmp(void *PDC,void *BMPaddr)
{
	U32 i,k;
	U32 *plcdbu = (U32 *)PDC;
    U32 *PBMP = (U32 *)BMPaddr;

	for (i = 0; i < (320 * 240  / 4); i++)
    {
		k=*PBMP++;
		k = (k%256)<<24|((k>>8)%256)<<16|((k>>16)%256)<<8|k>>24;
		*plcdbu++ = k;
	}
}

void LcdColor256Bmp( unsigned char bmp[] )
{
    int i,j,k;

    rPDATE=rPDATE&~(1<<5)|(1<<5);		//GPE5=H	 
    rPCONE=rPCONE&~(3<<10)|(1<<10);		//GPE5=output
    rPCONC=rPCONC&~(0xff<<8)|(0xff<<8);	//GPC[4:7] => VD[7:4]

    Lcd_Init(MODE_COLOR);
    Glib_Init(MODE_COLOR);

	k = 0 ;
    for(i=0;i<240;i++)
    {
    	for(j=0;j<320;j++)
    	{
    	    PutPixel( j, 240-i, High_Low( bmp[k] ) );
    	    k++;
    	}
    }
}

//***************************************************************************
void Main(void)
{	
    rSYSCFG = CACHECFG; //8K字节cache,写缓冲使能,data abort使能
	rNCACHBE0 = ((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);//在上面的数据区域不使用高速缓存
    Port_Init();
	ChangePllValue( 24, 3, 1 );			//晶振10MHz,修改系统主频为3.2倍频(32MHz)
    
    Led_Display(0x00);
    Delay(500);
    Led_Display(0x07);
    Delay(500);
    Led_Display(0x0);
    Uart_Init(0,57600);

    Delay(1000);
    Uart_Select(0); 	//Select UART0
	Uart_Printf("\n\n*************************************************************************");
	Uart_Printf("\n* lcd_demo for FS44B0X ARM DEVELOPER BOARD V1.01");    
	Uart_Printf("\n* Date: 2004-1-14"); 
	Uart_Printf("\n* MCLK=%dMHz",MCLK/1000000);  
	Uart_Printf("\n* COM:115.2kbps,8Bit,NP,UART0");
	Uart_Printf("\n* RO_Limit=0x%8x",Image$$RO$$Limit);
	Uart_Printf("\n* RW_BASE =0x%8x",Image$$RW$$Base);
	Uart_Printf("\n*************************************************************************\n\n");
    Lcd_DispON();		//开启LCD显示
    Lcd_PowerUp();
	//LcdColor256_Bmp(acisvision);	
	LcdColor256Bmp((unsigned char *)0x90430-(320*3));	
	Uart_Printf("*************************************************************************\n");
	Uart_Printf("\tSTN 256 color lcd(320×240)test!!!\n") ;
	Uart_Printf("\t(KEY1)OPEN LCD DISPLAY!\n") ;
	Uart_Printf("\t(KEY2)CLOSE LCD DISPLAY!\n") ;
	Uart_Printf("\t(KEY3)NEXT!\n") ;
	Uart_Printf("\t(KEY4)previous!\n") ;
	Uart_Printf("*************************************************************************\n\n");

	rPCONG = 0x0000;						//PG口作为输入口
	while(1)
	{
		if( (rPDATG&0xf0) != 0xf0 )			//有键按下
		{
			Delay(20) ;						//延时再检测
			if( (rPDATG&0xf0) != 0xf0)		//有键按下
			{
				Uart_Printf( "rPDATG = 0x%x\n", rPDATG );
				Key_Handle( (rPDATG>>4)&0x0f ) ;		//键盘处理
				while( (rPDATG&0xf0) != 0xf0 ) ;		//键一直按下则等待
			}
		}
	}
}

//*****************************************************************************
int pIrqStart = 0;
int pIrqHandler = 0;
int pIrqFinish = 0;

⌨️ 快捷键说明

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