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

📄 lcddisp_drv.h

📁 在ARM7和UC/OSII的平台上实现了GPS自动报站的功能,涉及GPS模块LEA_4S的驱动,位置速寻算法,语音芯片ISD4004的录放音驱动,LED页面管理等等.从启动代码到操作系统的移植以及到业
💻 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 + -