📄 main.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 + -