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

📄 bmp.c

📁 在LCD显示器上显示灰度图象
💻 C
字号:
/*********************************************************************************************
* File:	lcd.c
* Author:	embest	
* Desc:	LCD control and display functions
* History:	
*********************************************************************************************/
#include "bmp.h"
#include "def.h"
#include "lcd.h"

/*------------------------------------------------------------------------------------------*/
/*	 								global variable						 				    */
/*------------------------------------------------------------------------------------------*/
const UINT8T f_ucMouseMap[] = {						/* mouse cursor bitmap */
BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY,
BLACK,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        WHITE,        BLACK,        BLACK,        BLACK,        BLACK,        BLACK,
BLACK,        WHITE,        WHITE,        BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        WHITE,        BLACK,        TRANSPARENCY, BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        BLACK,        TRANSPARENCY, TRANSPARENCY, BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY,
BLACK,        TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY, TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK,        WHITE,        WHITE,        WHITE,        BLACK,        TRANSPARENCY,
TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, TRANSPARENCY, BLACK,        BLACK,        BLACK,        TRANSPARENCY, TRANSPARENCY
};
const UINT8T f_ucMouseMap1[] = {						/* mouse cursor bitmap */
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE, WHITE,
};

UINT16T f_ulMouseX;
UINT16T f_ulMouseY;
UINT8T 	f_ucCursorBackUp[20][12/2];

STRU_BITMAP g_struBitmapMouse = {0x10, 4, 12, 20, TRANSPARENCY, (UINT8T *)f_ucMouseMap};
STRU_BITMAP g_struBitmapMouse1 = {0x10, 4, 12, 20, WHITE, (UINT8T *)f_ucMouseMap1};

/*********************************************************************************************
* name:		bitmap_view()
* func:		display bitmap
* para:		x,y -- pot's X-Y coordinate 
*			Stru_Bitmap -- bitmap struct
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void bitmap_view (UINT16T x, UINT16T y, STRU_BITMAP Stru_Bitmap)
{
	UINT32T i, j;
	UINT8T  ucColor;
	
	for (i =  0; i < Stru_Bitmap.usHeight; i++)
	{
		for (j = 0; j <Stru_Bitmap.usWidth; j++)
		{
			if ((ucColor = *(UINT8T*)(Stru_Bitmap.pucStart + i * Stru_Bitmap.usWidth + j)) != TRANSPARENCY)
			{
				LCD_PUT_PIXEL(x + j, y + i, ucColor); 
			}
		}
	}
}

/*********************************************************************************************
* name:		bitmap_push()
* func:		push bitmap data into LCD active buffer
* para:		x,y -- pot's X-Y coordinate 
*			Stru_Bitmap -- bitmap struct
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void bitmap_push (UINT16T x, UINT16T y, STRU_BITMAP Stru_Bitmap)
{
	UINT32T i, j;

	f_ulMouseX = x; 
	f_ulMouseY = y;
	for (i =  0; i < Stru_Bitmap.usHeight; i++)
	{
		for (j = 0; j < Stru_Bitmap.usWidth; j+=2)
		{
			if ((x + j)%2)
			{
				f_ucCursorBackUp[i][j/2] =
				(((*(UINT8T*)(LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j) / 8 * 4  + 3 - ((x + j)%8) / 2)) << 4) & 0xf0) + 
				(((*(UINT8T*)(LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j+1) / 8 * 4  + 3 - ((x + j+1)%8) / 2)) >> 4) & 0x0f);
			}
			else
			{
				f_ucCursorBackUp[i][j/2] = (*(UINT8T*)(LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j) / 8 * 4  + 3 - ((x + j)%8) / 2));
			}
		}
	}
}

/*********************************************************************************************
* name:		bitmap_pop()
* func:		pop bitmap data into LCD active buffer
* para:		x,y -- pot's X-Y coordinate 
*			Stru_Bitmap -- bitmap struct
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void bitmap_pop(UINT16T x, UINT16T y, STRU_BITMAP Stru_Bitmap)
{
	UINT32T i, j;
	UINT32T ulAddr, ulAddr1;

	for (i =  0; i < Stru_Bitmap.usHeight; i++)
	{
		for (j = 0; j <Stru_Bitmap.usWidth; j+=2)
		{
			ulAddr = LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j) / 8 * 4 + 3 - ((x + j)%8) / 2;
			ulAddr1 =LCD_ACTIVE_BUFFER + (y + i) * SCR_XSIZE / 2 + (x + j + 1) / 8 * 4 + 3 - ((x + j + 1)%8) / 2;
			if ((x + j)%2)
			{
				
				(*(UINT8T*)ulAddr) &= 0xf0;
				(*(UINT8T*)ulAddr) |= ((f_ucCursorBackUp[i][j/2] >> 4) & 0x0f);
				(*(UINT8T*)ulAddr1) &= 0x0f;
				(*(UINT8T*)ulAddr1) |= ((f_ucCursorBackUp[i][j/2] << 4) & 0xf0);
			}
			else
			{
				(*(UINT8T*)ulAddr) = f_ucCursorBackUp[i][j/2];
			}
			
		}
	}
}

/*********************************************************************************************
* name:		cursor_init()
* func:		cursor init
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void cursor_init(void)
{
	f_ulMouseX = 0;
	f_ulMouseY = 0;
	cursor_view(f_ulMouseX, f_ulMouseY);
}

/*********************************************************************************************
* name:		cursor_push()
* func:		cursor push
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void cursor_push(UINT16T x, UINT16T y)
{
	bitmap_push(x, y, g_struBitmapMouse);
}

/*********************************************************************************************
* name:		cursor_pop()
* func:		cursor pop
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void cursor_pop()
{
	bitmap_pop(f_ulMouseX, f_ulMouseY, g_struBitmapMouse);
}

/*********************************************************************************************
* name:		cursor_view()
* func:		cursor display
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void cursor_view(UINT16T x, UINT16T y)
{
	cursor_push(x, y);
	bitmap_view(x, y, g_struBitmapMouse);
}

⌨️ 快捷键说明

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