📄 bbstn.h
字号:
//--------------------------------------------------------------
//蓝宇科技,版权所有
//作者:赵崇伟
//V1.0~V2.2:
// 用于PCM3486
//V3.0: 2006-4-1,赵崇伟
// 用于PCM3486E
// 新增函数:LcdSetMode(color,size,clk)//设置显示方式
// 色彩数据类型由8位char型改为16位int型
//--------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __BBSTN_H
#define __BBSTN_H
//选择坐标转换算法
#define ADDRESS_TABLE //有定义=查表算法,无定义=乘法算法
extern unsigned int XMS_WIN; //存储器起始窗口号,缺省值为256。
//#define XMS_WIN 256 //存储器起始窗口号,缺省为4MB以后
#define LCD_LINE //使用优化画线函数
#define LCD_BMP //使用优化位图函数
//liutigang06-10-26 22:22一定要改
//#define LCD_BURST //使用硬件加速填充
//liutigang
#define LCD_FILL //使用优化填充函数
#define LCD_BPP 8 //最小像素8位
extern int far lcd_width; //屏幕宽度
extern int far lcd_high; //屏幕高度
#define ACT_PAGE_REG 0x5f00 //设定活动显示页寄存器
#define WORK_PAGE_LREG 0x5f02 //设置当前操作窗口寄存器,低字节
#define WORK_PAGE_HREG 0x5f04 //设置当前操作窗口寄存器,高字节
#define XMS_PAGE_LREG 0x5f0a //设置当前xms内存操作窗口寄存器,低字节
#define XMS_PAGE_HREG 0x5f0c //设置当前xms内存操作窗口寄存器,高字节
#define WORK_PAL_LREG 0x5f02 //设置调色板索引地址寄存器,低字节,注与WORK_PAGE_LREG复用
#define WORK_PAL_HREG 0x5f04 //设置调色板索引地址寄存器,高字节,注与WORK_PAGE_HREG复用
#define WORK_PAL_DATA 0x5f16 //设置调色板数据寄存器
#define COMMAND_REG 0x5f0e //命令寄存器,D7=1/0=ON/OFF,D0=1/0=突发8~16字节/1字节
#define COLOR_REG 0X5F10 //色彩模式寄存器
//D7~D5=0-0000-R0-0000-G0-0000-B0=前景优先方式下,透明色彩设置
//D3~D0=色彩选择
#define COLOR_DATA_MASK 0x08//0B00001000 //D3=8/16位数据模式
#define COLOR_2_8BIT_MASK 0x0c//0B00001100 //D3D2=11=双屏叠加模式
#define COLOR_AV 0x10//0B00010000 //模拟屏专用
#define COLOR_8BIT 0x00//0B00000000 //256色
#define COLOR_32_4BIT 0x01//0B00000001 //32bit---->4bit单色
#define COLOR_8BIT_INDEX_256_COLOR 0x02 //0b00000010 //256色 硬件调色板
#define COLOR_LCDV_8BIT 0x04//0b00000100 //256色模拟屏
#define COLOR_16BIT 0x08//0b00001000 //16bit真彩色
#define COLOR_2_8BIT_FOR 0x0c//0B00001100 //双屏叠加,前景优先
#define COLOR_2_8BIT_AND 0x0d//0B00001101 //双屏叠加,and
#define COLOR_2_8BIT_OR 0x0e//0B00001110 //双屏叠加,or
#define COLOR_2_8BIT_XOR 0x0f//0B00001111 //双屏叠加,xor
#define SIZE_REG 0X5F12 //D2~D0=分辨率模式寄存器
#define SIZE_MASK 0x07//0B00000111 //有效位屏蔽掩码
#define SIZE_640480 0x01//0B00000001 //640*480
#define SIZE_800600 0x02//0B00000010 //800*600
#define SIZE_1024768 0x03//0B00000011 //1024*768
#define SIZE_320240BW 0x04//0B00000100 //320*240bw
#define SIZE_V480234 0X05//0B00000101 //模拟屏480234
#define SIZE_V320234 0x06//0B00000110 //模拟屏320234
#define SIZE_V800480 0x07//0B00000111 //模拟屏800480
#define SIZE_V800600 0x04//0B00001000 //模拟屏800600
#define CLK_REG 0X5F14 //时钟频率模式寄存器
//D2=PLL(1),CLK50M(0),时钟分频器输入频率选择
#define PLL_CLK_2 0x04//0B00000100 //pll/2=40/65M
#define SYS_CLK_50M 0x00//0B00000000 //50M
//D1~D0=1/2/4分频数选择
#define LCD_CLK_1 0x00//0B00000000 //lcdclk/1=不分频
#define LCD_CLK_2 0x01//0B00000001 //lcdclk/2=2分频
#define LCD_CLK_4 0x02//0B00000010 //lcdclk/4=4分频
#define LCD_CLK_8 0x03//0B00000011 //lcdc1k/8=8分频
//地址指针计算宏定义
#define LCD_MEM_SEG 0xf000 //显存窗口段地址
#define LCD_MEM_SIZE 0x4000 //显存窗口尺寸
#define XMS_MEM_SEG 0xf400 //显存xms窗口段地址
#define XMS_MEM_SIZE 0x4000 //xms窗口尺寸
#define LCD_REG_WIN 0x8000 //显存窗口寄存器偏移地址
#define LCD_REG_PAGE 0x8001 //显存活动页寄存器偏移地址,读=等待场扫描结束翻转信号
typedef struct {
int x0; //起始横坐标
int deltax; //2点间距
int num; //显示总点数
int start; //首指针
int end; //尾指针
char color; //前景色
char bkcolor; //背景色
int data[1]; //循环队列
} TrendBuf; //趋势图结构定义
typedef struct lcd_rgb{
unsigned char R;
unsigned char G;
unsigned char B;
}LCD_RGB;
extern int far lcdAlpha[256]; //透明度换算表
extern char far LcdRegWin; //当前操作页窗口寄存器值
extern unsigned char far LcdRegPage; //当前操作页面寄存器值
extern char far LcdRegActivePage; //当前活动页面寄存器值
extern int far LcdIndex[256]; //软件调色板索引表,
extern int far LcdPalette[256]; //软件调色板256色彩表
extern LCD_RGB far LcdPaleTab[256];//标准调色板初始设置
void LcdSetMode(char color,char size,char clk);//设置显示方式
void LcdWaitFrame(void); //等待当前桢扫描结束
void LcdSetPage(char page); //设置当前操作页
void LcdSetActive(char page); //设置当前活动页
void LcdSetWin(char win); //设置当前窗口号
void XmsSetWin(unsigned int win); //设置当前xms窗口号
void XmsWrite(unsigned long int address,char data); //写1字节
char XmsRead(unsigned long int address); //读1字节
void XmsWriteString(unsigned long int address,unsigned int len,unsigned char *str);
void XmsReadString(unsigned long int address,unsigned int len,unsigned char *str);
void LcdPalSet(unsigned char index,unsigned int colorR5G5B5);//设置硬件调色板
void LcdOn(void); //允许液晶显示
void LcdOff(void); //关闭液晶显示
void LcdPixel(int x,int y,int color); //画像素
void LcdPixelXor(int x,int y,int color); //xor画像素
void LcdPixelOr(int x,int y,int color); //or画像素
void LcdPixelAnd(int x,int y,int color); //and画像素
void LcdPixelNot(int x,int y); //not画像素
void LcdPixelAlpha(int x,int y,int color,int alpha); //透明画像素
int LcdPixelRead(int x,int y); //读像素
void LcdLine(int x0, int y0, int x1,int y1,int color); //画直线
void LcdLineXor(int x0,int y0,int x1,int y1,int color); //xor画直线
void LcdLineOr(int x0,int y0,int x1,int y1,int color); //or画直线
void LcdLineAnd(int x0,int y0,int x1,int y1,int color); //and画直线
void LcdLineNot(int x0,int y0,int x1,int y1); //not画直线
void LcdLineAlpha(int x0,int y0,int x1,int y1,int color,int alpha); //透明画直线
void LcdLineDot(int x0, int y0, int x1,int y1,int color); //画虚直线
void LcdLineXorDot(int x0,int y0,int x1,int y1,int color); //xor画虚直线
void LcdLineOrDot(int x0,int y0,int x1,int y1,int color); //or画虚直线
void LcdLineAndDot(int x0,int y0,int x1,int y1,int color); //and画虚直线
void LcdLineNotDot(int x0,int y0,int x1,int y1); //not画虚直线
void LcdLineAlphaDot(int x0,int y0,int x1,int y1,int color,int alpha); //透明画虚直线
void LcdBoxFillBurst(int left,int top,int right,int bottom,int color); //8~16倍速画填充矩形
void LcdBoxFill(int left, int top, int right,int bottom,int color); //画填充矩形
void LcdBoxFillXor(int left, int top, int right,int bottom,int color); //xor画填充矩形
void LcdBoxFillOr(int left, int top, int right,int bottom,int color); //or画填充矩形
void LcdBoxFillAnd(int left, int top, int right,int bottom,int color); //and画填充矩形
void LcdBoxFillNot(int left, int top, int right,int bottom); //not画填充矩形
void LcdBoxFillAlpha(int left, int top, int right,int bottom,int color,int alpha);//透明画填充矩形
void LcdBmp(int left, int top, int right,int bottom,int far *bmp); //画位图
void LcdBmpXor(int left, int top, int right,int bottom,int far *bmp); //xor画位图
void LcdBmpOr(int left, int top, int right,int bottom,int far *bmp); //or画位图
void LcdBmpAnd(int left, int top, int right,int bottom,int far *bmp); //and画位图
void LcdBmpNot(int left, int top, int right,int bottom); //not画位图
void LcdBmpAlpha(int left, int top, int right,int bottom,int far *bmp,int alpha); //透明画位图
void LcdBmpRead(int left, int top, int right,int bottom,int far *bmp); //读位图
void LcdBmpFloat(int left, int top, int right,int bottom,int far *bmp,int bkcolor); //画浮动位图
void LcdBmpFloatAnd(int left, int top, int right,int bottom,int far *bmp,int bkcolor); //and浮动画位图
void LcdBmpFloatXor(int left, int top, int right,int bottom,int far *bmp,int bkcolor); //xor浮动画位图
void LcdBmpFloatOr(int left, int top, int right,int bottom,int far *bmp,int bkcolor); //or浮动画位图
void LcdBmpFloatNot(int left, int top, int right,int bottom,int far *bmp,int bkcolor); //not浮动画位图
void LcdBmpFloatAlpha(int left, int top, int right,int bottom,int far *bmp,int bkcolor,int alpha); //浮动透明画位图
void LcdBmpScale(int width0, int height0, int width1,int height1,int far *bmp0,int far *bmp1);//位图缩放
void LcdDots(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color,int colorBk); //画字模点阵
void LcdDotsXor(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color,int colorBk); //xor画字模点阵
void LcdDotsOr(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color,int colorBk); //or画字模点阵
void LcdDotsAnd(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color,int colorBk); //and画字模点阵
void LcdDotsNot(int x,int y,int Width,int High,unsigned char far *pDotsBuf); //not画字模点阵
void LcdDotsAlpha(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color,int colorBk,int alpha); //透明画字模点阵
void LcdDotsFloat(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color); //浮动画字模点阵
void LcdDotsFloatAnd(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color); //and浮动画字模点阵
void LcdDotsFloatOr(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color); //or浮动画字模点阵
void LcdDotsFloatXor(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color); //xor浮动画字模点阵
void LcdDotsFloatNot(int x,int y,int Width,int High,unsigned char far *pDotsBuf); //not浮动画字模点阵
void LcdDotsFloatAlpha(int x,int y,int Width,int High,unsigned char far *pDotsBuf,int color,int alpha); //浮动透明画字模点阵
void LcdAreaFill(int xseed,int yseed,int bordercolr, int fillcolr ); //填充指定色彩边框区域
void LcdFillColor(int xseed,int yseed,int oldcolr, int newcolr ); //填充指定色彩区域
char LcdColor(LCD_RGB rgb); //真彩色转换到256色
LCD_RGB LcdRGB(int color); //256色转换到真彩色
void LcdSetPaltte(int index,LCD_RGB rgb); //设置软件调色板项
void LcdInitPaltte(void); //初始化软件调色板
void LcdTrend(int y,TrendBuf far * loopbuf); //显示趋势图
#endif /* __BBSTN_H */
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -