📄 display.h
字号:
/* Display.h */
#ifndef _DISPLAY_H
#define _DISPLAY_H
#ifndef _OS_CPU_H
#include "OS_CPU.h"
#endif
#ifndef _MC68376_H
#include "mc68376.h"
#endif
#ifdef OS_GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
// 液晶内部8kRAM的组织和分配;
#define TBASE 0x0000 // 文本区基地址;
#define TCOLUMNS 20 // 液晶显示一行所需的字节数;
#define TROWS 16 // 在文本模式下,液晶所能显示的行数;
#define TSIZE (TCOLUMNS * TROWS) // 在文本模式下,液晶显示所有行数时所需内部RAM空间的字节数;
#define GBASE 0x0200 // 图形区基地址;
#define GCOLUMNS 20 // 液晶显示一行所需的字节数;
#define GROWS 128 // 在图形模式下,液晶所能显示的行数;
#define GSIZE (GCOLS * GROWS) // 在图形模式下,液晶显示所有行数时所需内部RAM空间的字节数;
#define CGBASE 0x1800 // CG RAM区基地址;
#define CGSIZE 0x0800 // CG RAM区所占字节数;
// 显示样式控制宏;
#define DISPNORMAL 0x00 // 用于字符的显示;
#define DISPREVERSE 0x01
// 液晶控制信号;
#define NOP() \
{\
asm(" NOP");\
asm(" NOP");\
}
#define LCD_CHIPSEL_ENABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x0C00) | 0x0800;\
while((*TPU_HSRR0 & 0x0C00) != 0x0000);\
}
#define LCD_CHIPSEL_DISABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x0C00) | 0x0400;\
while((*TPU_HSRR0 & 0x0C00) != 0x0000);\
}
#define LCD_RESET_ENABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x00C0) | 0x0080;\
while((*TPU_HSRR0 & 0x00C0) != 0x0000);\
}
#define LCD_RESET_DISABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x00C0) | 0x0040;\
while((*TPU_HSRR0 & 0x00C0) != 0x0000);\
}
#define LCD_DATA_ENABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0xC000) | 0x8000;\
while((*TPU_HSRR0 & 0xC000) != 0x0000);\
}
#define LCD_DATA_DISABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0xC000) | 0x4000;\
while((*TPU_HSRR0 & 0xC000) != 0x0000);\
}
#define LCD_READ_ENABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x3000) | 0x2000;\
while((*TPU_HSRR0 & 0x3000) != 0x0000);\
}
#define LCD_READ_DISABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x3000) | 0x1000;\
while((*TPU_HSRR0 & 0x3000) != 0x0000);\
}
#define LCD_WRITE_ENABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x0300) | 0x0200;\
while((*TPU_HSRR0 & 0x0300) != 0x0000);\
}
#define LCD_WRITE_DISABLE() \
{\
*TPU_HSRR0 = (*TPU_HSRR0 & ~0x0300) | 0x0100;\
while((*TPU_HSRR0 & 0x0300) != 0x0000);\
}
OS_EXT INT8U DisplayBuffer[128][20]; // added on 2004/4/26;
// 液晶模块的函数原型声明;
void initLCDResource(void); // 系统每次上电复位时需要调用该函数进行液晶模块的初始化;
INT8U readStatusRegister(void); // 液晶驱动的核心函数(begin);
INT8U readData(void);
void writeCommand(INT8U cmd);
void writeData(INT8U data);
void setOffsetRegister(INT8U addr);
void setAddressPointer(INT16U addr);
INT8U getData(INT16U addr);
void displayOff(void);
void displayOn(void); // 液晶驱动的核心函数(end);
INT8U getMaskCode(INT8U start, INT8U end); // 用于函数print;
INT16U getCharIndex(INT16U charcode); // 用于函数printString,得到被显示字符字模的索引;
void drawHorizLine(INT8U x, INT8U y, INT8U width, INT8U data); //画横线函数;
void print(INT8U x, INT8U y, INT8U height, INT8U data); //drawGraph函数和printString函数的核心函数;
void drawGraph(INT8U x, INT8U y, INT8U width, INT8U height, INT8U *pdata);
void printString(INT8U x, INT8U y, INT8U charwidth, INT8U charheight,
INT8U displaymode, INT8U *pstring, BOOLEAN fillbuffer);
void flushBuffer(void); // added on 2004/4/26;
void PRINT(INT8U x, INT8U y, INT8U height, INT8U data); // added on 2004/4/26;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -