📄 lcd.h
字号:
/*********************************************************************************************
* File: LCD.H
* Author: embest
* Desc: LCD common macro define and function declare
* History:
*********************************************************************************************/
#ifndef __LCD_H__
#define __LCD_H__
#include "def.h"
/*------------------------------------------------------------------------------------------*/
/* macro define */
/*------------------------------------------------------------------------------------------*/
/* screen size */
#define TLCD_160_240 (0)
#define VLCD_240_160 (1)
#define CLCD_240_320 (2)
#define MLCD_320_240 (3)
#define ELCD_640_480 (4)
#define SLCD_160_160 (5)
#define LCD_TYPE MLCD_320_240
#if(LCD_TYPE==TLCD_160_240)
#define SCR_XSIZE (160)
#define SCR_YSIZE (240)
#define LCD_XSIZE (160)
#define LCD_YSIZE (240)
#elif(LCD_TYPE==VLCD_240_160)
#define SCR_XSIZE (240)
#define SCR_YSIZE (160)
#define LCD_XSIZE (240)
#define LCD_YSIZE (160)
#elif(LCD_TYPE==CLCD_240_320)
#define SCR_XSIZE (240)
#define SCR_YSIZE (320)
#define LCD_XSIZE (240)
#define LCD_YSIZE (320)
#elif(LCD_TYPE==MLCD_320_240)
#define SCR_XSIZE (320)
#define SCR_YSIZE (240)
#define LCD_XSIZE (320)
#define LCD_YSIZE (240)
#elif(LCD_TYPE==ELCD_640_480)
#define SCR_XSIZE (640)
#define SCR_YSIZE (480)
#define LCD_XSIZE (640)
#define LCD_YSIZE (480)
#elif(LCD_TYPE==SLCD_160_160)
#define SCR_XSIZE (160)
#define SCR_YSIZE (160)
#define LCD_XSIZE (160)
#define LCD_YSIZE (160)
#endif
/* screen color */
#define MODE_MONO (1)
#define MODE_GREY4 (4)
#define MODE_GREY16 (16)
#define MODE_COLOR (256)
#define Ascii_W 8
#define XWIDTH 6
#define BLACK 0xf
#define WHITE 0x0
#define LIGHTGRAY 0x5
#define DARKGRAY 0xa
#define TRANSPARENCY 0xff
#define HOZVAL (LCD_XSIZE/4-1)
#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)
#define LINEVAL (LCD_YSIZE -1)
#define MVAL (13)
#define M5D(n) ((n) & 0x1fffff)
#define MVAL_USED 0
/* array size */
#define ARRAY_SIZE_MONO (SCR_XSIZE/8*SCR_YSIZE)
#define ARRAY_SIZE_GREY4 (SCR_XSIZE/4*SCR_YSIZE)
#define ARRAY_SIZE_GREY16 (SCR_XSIZE/2*SCR_YSIZE)
#define ARRAY_SIZE_COLOR (SCR_XSIZE/1*SCR_YSIZE)
/* clkval */
#define CLKVAL_MONO (12)
#define CLKVAL_GREY4 (12)
#define CLKVAL_GREY16 (12)
#define CLKVAL_COLOR (10)
/************************************************
因为是灰色的,只有16色,每两个象素占用一个字节,
所以定义LCD缓冲区的大小为SCR_XSIZE*SCR_YSIZE/2。
************************************************/
#define LCD_BUF_SIZE (SCR_XSIZE*SCR_YSIZE/2)
#define LCD_ACTIVE_BUFFER (0xc300000)
#define LCD_VIRTUAL_BUFFER (0xc300000 + LCD_BUF_SIZE)
#define LCD_PUT_PIXEL(x, y, c) \
(*(UINT32T *)(LCD_VIRTUAL_BUFFER+ (y) * SCR_XSIZE / 2 + ( (x)) / 8 * 4)) = \
(*(UINT32T *)(LCD_VIRTUAL_BUFFER+ (y) * SCR_XSIZE / 2 + ( (x)) / 8 * 4)) & \
(~(0xf0000000 >> ((( (x))%8)*4))) |((c) << (7 - ( (x))%8) * 4)
#define LCD_ACTIVE_PUT_PIXEL(x, y, c) \
(*(UINT32T *)(LCD_ACTIVE_BUFFER + (y) * SCR_XSIZE / 2 + (319 - (x)) / 8 * 4)) = \
(*(UINT32T *)(LCD_ACTIVE_BUFFER + (y) * SCR_XSIZE / 2 + (319 - (x)) / 8 * 4)) & \
(~(0xf0000000 >> (((319 - (x))%8)*4))) |((c) << (7 - (319 - (x))%8) * 4)
#define GUISWAP(a, b){a^=b; b^=a; a^=b;}
/*------------------------------------------------------------------------------------------*/
/* function declare */
/*------------------------------------------------------------------------------------------*/
void lcd_init(void);
void lcd_clr(void);
void lcd_test(void);
void lcd_dma_trans(void);
void lcd_clr_rect(INT16T usLeft, INT16T usTop, INT16T usRight, INT16T usBottom, UINT8T ucColor);
void lcd_draw_box(INT16T usLeft, INT16T usTop, INT16T usRight, INT16T usBottom, UINT8T ucColor);
void lcd_draw_circle(INT16T Ox,INT16T Oy,UINT16T Rx,UINT8T ucColor);
void lcd_draw_line(INT16T usX0, INT16T usY0, INT16T usX1, INT16T usY1, UINT8T ucColor, UINT16T usWidth);
void lcd_draw_hline(INT16T usX0, INT16T usX1, INT16T usY0, UINT8T ucColor, UINT16T usWidth);
void lcd_draw_vline(INT16T usY0, INT16T usY1, INT16T usX0, UINT8T ucColor, UINT16T usWidth);
void lcd_anti_disp(UINT16T usX0, UINT16T usY0, UINT16T usX1, UINT16T usY1);
void lcd_display_char(UINT16T usX0, UINT16T usY0, UINT8T ucChar);
void lcd_display_string(UINT16T usX0, UINT16T usY0, UINT8T *pucStr);
void lcd_display_short(INT16T sX, INT16T sY, UINT16T usInt);
void zdma0_done(void) __attribute__ ((interrupt ("IRQ")));
void lcd_disp_ascii6x8(UINT16T usX0, UINT16T usY0,UINT8T ForeColor, UINT8T* pucChar);
void lcd_disp_ascii8x16(UINT16T x0, UINT16T y0, UINT8T ForeColor, UINT8T* s);
void lcd_dsp_hz16(UINT16T x0, UINT16T y0, UINT8T ForeColor, UINT8T *s);
void reverse_line(UINT32T ulHeight, UINT32T ulY);
UINT8T lcd_getpixel(UINT16T usX, UINT16T usY);
#endif /* __LCD_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -