📄 lcddisp_drv.h
字号:
/*
******************************************************************
* FileName : Lcddisp_drv.H
* Programmer(s): Cyb
* Description : DRIVE THE LCD CHIP:ST7920
******************************************************************
*/
#ifndef DEF_LCDDRV
#define DEF_LCDDRV
#ifdef LCDDRV_GLOBALS
#define LCDDRV_EXT
#else
#define LCDDRV_EXT extern
#endif
#include "SWconfig.h"
#include "hardware.h"
/* DEFINE FONT SIZE */
#define FONTROW 8
#define FONTCOL 8
/* DEFINE LCD ROW SIZE AND COLUMN SIZE */
#define ROWSIZE 4
#define COLSIZE 16
/* DEFINE DOTSIZE: 122*32 */
#define DOTSIZEX (COLSIZE*FONTCOL-6)
#define DOTSIZEY (ROWSIZE*FONTROW)
/* DEFINE PAGESIZE 4*16*8 = 512 */
#define PAGESIZE (ROWSIZE*COLSIZE*FONTROW)
/*********************************************
DEFINE DISPLAY IMAGE MEMORY
*********************************************
*/
LCDDRV_EXT INT8U DplyImagMem[PAGESIZE];
/*
*********************************************
DEFINE LCD COMAND AND DATA PORT
*********************************************
*/
#define LCDPORT (INT8U *)0x600000
/*
*********************************************
DEFINE SOME LCD COMMAD
*********************************************
*/
/*基本指令*/
#define BASICFUNC 0x30 // 基本功能设定
#define CLEAR 0x01 // 清除显示
#define HOME 0x02 // 地址归零
#define ENTRY_MOD 0x04 // 进入模式,需与具体模式相或
#define DPLYON 0x0C // 开显示
#define DPLYOFF 0x08 // 关显示
#define CUSORSHOW 0x0E // 打开光标显示
#define CUSORCLOSE 0x0C // 关闭光标显示
#define BLINKOPEN 0x0F // 打开光标闪烁
#define BLINKCLOSE 0x0E // 关闭光标闪烁
#define CUSORDISP_MOD 0x10 // 光标显示模式控制,需与具体模式相或
#define DDRAM_ADDR 0x80 // DDRAM 地址设定,需与具体地址相或
#define BUSY_FLAG 0x80 // 忙标志,需与具体读数据相或
/*扩展指令*/
#define EXTFUNC 0x34 // 扩充功能设定
#define GRAPDISP_ON 0x36 // 打开图形显示
#define GRAPDISP_CLOSE 0x34 // 关闭图形显示
#define STANDBY 0x01 // 空闲模式
#define ENSCROLL 0x03 // 使能卷轴
#define ENICON 0x02 // 使能ICON
#define REVERSE_SEL 0x04 // 反显,与具体行数(00、01、10、11)相或
#define SCROLL_ADDR 0x40 // 设定卷轴地址,需要与具体地址相或
#define ICON_ADDR 0x40 // 设定ICON地址,需要与具体地址相或
#define Y_ADDR 0x80 // 设定GDRAM垂直地址,需要与具体地址相或
#define X_ADDR 0x80 // 设定GDRAM水平地址,需要与具体地址相或
/*
__inline void WaitBusy(void)
{
INT8U temp;
Pulldown_L_LADR();
Pullup_L_RW();
Pullup_L_RLE();
Pulldown_L_WLE();
do
{
Pullup_L_LE();
temp = *LCDPORT;
Pulldown_L_LE();
}while(temp & BUSY_FLAG);
}
*/
__inline void DelayS(void)
{
INT8U i;
i = 0x1f;
while(i--);
}
__inline void Send_Command(INT8U cmd)
{
DelayS();
Pulldown_L_LADR();
Pulldown_L_RW();
Pullup_L_WLE();
Pulldown_L_RLE();
*LCDPORT = cmd;
Pullup_L_LE();
__asm
{
NOP
}
Pulldown_L_LE();
}
__inline void Send_Data(INT8U data)
{
DelayS();
Pullup_L_LADR();
Pulldown_L_RW();
Pullup_L_WLE();
Pulldown_L_RLE();
*LCDPORT = data;
Pullup_L_LE();
__asm
{
NOP
}
Pulldown_L_LE();
Pulldown_L_LADR();
}
void InitLcd(void);
void ClearLcd(void);
BOOLEAN CheckPixelValid(INT8U row_dot,INT8U col_dot);
void LcdUpdate_Block(INT8U row_dot,INT8U col_dot,INT8U lenrow_dot,INT8U lencol);
void LcdUpdate_dots(INT8U row1,INT8U col1, INT8U rowlen, INT8U collen);
void LcdUpdate_Full(void);
void DplyOffLCD(void);
void DplyOnLCD(void);
void Print_LCD(INT8U line,INT8U charpos,INT8U *str, INT8U len);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -