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

📄 bbstn.h

📁 蓝宇BBPC-SOM2496嵌入式主板 模拟屏实例代码与函数库和对应DOS驱动
💻 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 + -