📄 display.h
字号:
#ifndef DISPLAY_H
#define DISPLAY_H
//********************** Including Libs **********************
#include <math.h>
#include <string.h>
#include <stdio.h>
#include "comdef.h"
#include "global.h"
#include "cosine_CRT.h"
//**************** Structure & Type Definition ****************
typedef struct strcmapInfo
{
int viewMem; //已经加载在内存的地址
unsigned long haveReadLen; //当前画面已经读出的长度
}strucMapInfo;
typedef struct ITEM_INFO_STRU
{
short dot; //小数点位数
short digital; //显示位数
int min,max; //最小值、最大值
short x,y; //光标显示位置
char cmd[8]; //命令串
} SetDataInfoDef;
//********************** Macro Definition **********************
#define MAXITEMS 100 //每个设置画面最多允许的项数
#define SCREEN_WIDTH 800
#define SCREEN_HEIGHT 600
#define KEYBOARD_WIDTH 360
#define KEYBOARD_HEIGHT 300
#define LineHeight 16
#define cLine 0 // 实线
#define cBroken 1 // 虚线
#define BROKEN_LEN 5 //虚线的实虚间隔
#define PAGES 32 //每块nandflash的页数
#define PAGE_BYTES 512 //NandFlash每页字节数
#define BLOCK_BYTES (PAGE_BYTES*PAGES)//nandflash每块字节数
#define MAX_BMP_NUMS 50 //最大页面数
#define MAX_ITEMS 100 //每页最多元件个数
#define NON_ADDR 0xffffffff
#define NAND_CAPCITY 0x4000000 //NandFlash容量:64M
#define BLOCKS (NAND_CAPCITY/BLOCK_BYTES) //NandFlash块数
#define keyBoardOffX 40
#define keyBoardOffY 20
//----- 颜色定义 -----
#define COLOR_RED RGB565(255,0,0) // 红
#define COLOR_DARK_RED RGB565(128,0,0) // 深红
#define COLOR_PINK RGB565(255,128,255) // 粉红
#define COLOR_GREEN RGB565(0,255,0) // 绿
#define COLOR_LIGHT_GREEN RGB565(204,255,204) // 浅绿
#define COLOR_DARK_GREEN RGB565(0,51,0) // 深绿
#define COLOR_ORANGE RGB565(255,102,0) // 橙
#define COLOR_LIGHT_ORANGE RGB565(255,153,0) // 浅橙
#define COLOR_YELLOW RGB565(255,255,0) // 黄
#define COLOR_GOLD RGB565(255,104,0) // 金
#define COLOR_LIGHT_YELLOW RGB565(255,255,153) // 浅黄
#define COLOR_BLUE RGB565(0,0,255) // 蓝
#define COLOR_LIGHT_BLUE RGB565(0,128,255) // 浅蓝
#define COLOR_DARK_BLUE RGB565(0,0,128) // 深蓝
#define COLOR_BLUE_GREY RGB565(102,102,153) // 蓝灰
#define COLOR_BROWN RGB565(153,51,0) // 褐
#define COLOR_BLACK RGB565(0,0,0) // 黑
#define COLOR_WHITE RGB565(255,255,255) // 白
#define COLOR_GREY RGB565(192,192,192) // 灰
#define NO_BACK_COLOR 0xffffffff // 无背景色
#define COMMANDNUMS 16 //命令串条数
#define ModbusComm 1
#define FreeComm 0
#define PAGE_UP 201 //上一页
#define PAGE_DOWN 202 //下一页
#define RGB565(red,green,blue) (((red>>3)<<11)|((green>>2)<<5)|(blue>>3))
#define GetAddress(x,y) (CONFIG_SM501_MEM_BASE+(y)*SCREEN_WIDTH*2+(x)*2)
#define SCREEN_ADDR 0x20000000 //显存(液晶)基址
#define BMP_TMPRAM_ADDR 0x30400000 //下载画面/字库时存放内存临时地址
#define LZMA_ADDR 0x30500000 //解压数据存放地址
#define TEMP_LZMA_ADDR 0x30600000 //解压过程临时地址
#define SAVE_CURR_SCREEN 0x30800000 //显示键盘前保存当前页面点阵
#define SAVE_MSG_SCREEN 0x30900000 //显示信息前保存当前页面点阵
#define BMP_LOAD_ADDR 0x30A00000 //画面加载到内存起始地址
#define STATUS_MEMORY_ADDR 0x33C00000 //状态列表在内存中地址
#define ERR_MEMORY_ADDR 0x33C40000 //故障列表在内存中地址
#define SDRAM_ADDR_LCDBACK 0x33D00000 //保存起始画面点阵(备份)
#define dwEnFontAddr 0x33E00000 //8*16英文字库
#define dwEnFont1616 (dwEnFontAddr + 4096) //16*16英文字库
#define dwEnFont1624 (dwEnFontAddr + 12288) //16*24英文字库
#define dwEnFont2424 (dwEnFontAddr + 24576) //24*24英文字库
#define dwEnFont2432 (dwEnFontAddr + 43008) //24*32英文字库
#define dwEnFont3232 (dwEnFontAddr + 67584) //32*32英文字库
#define dwEnFont3248 (dwEnFontAddr + 100352) //32*48数字字库
#define dwEnFont3264 (dwEnFontAddr + 103232) //32*64数字字库
#define dwEnFont4880 (dwEnFontAddr + 107072) //48*80数字字库
#define dwChFontAddr (dwEnFontAddr + 114272) //24*24汉字字库
//********************** Local Function **********************
#ifdef __DISPLAY
#define EXTERN
#else
#define EXTERN extern
#endif
EXTERN int Sqrt (DWORD x);
EXTERN void PutPixel (WORD x, WORD y,WORD color);
EXTERN WORD GetPixelColor (WORD x, WORD y);
EXTERN void ReversePutPixel (WORD x, WORD y);
EXTERN void ClearScreen (WORD wColor);
EXTERN void Line(WORD x1,WORD y1,WORD x2,WORD y2,WORD color,BYTE cType);
EXTERN void DrawLine (WORD x1,WORD y1,WORD x2,WORD y2,WORD color);
EXTERN BYTE BorderDeal (WORD *x1, WORD *y1, WORD *x2, WORD *y2);
EXTERN void GetCharSize (BYTE cfontSize,WORD *cCharSize,WORD *VSize);
EXTERN void ShowChar1616(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar1624(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar2424(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar2432(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar3232(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar3248(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar3264(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowChar4880(int addr,WORD x,WORD y,WORD color,int bcolor);
EXTERN void ShowString(char *s,WORD x,WORD y,WORD fcolor,int bcolor,BYTE cfont);
EXTERN void ShowMsg(char *cmsg, char *emsg, DWORD wait);
EXTERN void FilledRectangle(WORD x1,WORD y1,WORD x2,WORD y2,WORD color1,WORD color2);
EXTERN void Circle(WORD x, WORD y, WORD radius, WORD color);
EXTERN void DrawCircle(WORD x, WORD y, WORD radius,WORD color,BYTE fill);
EXTERN void FillCircle(WORD x,WORD y,WORD radius,WORD color1,WORD color2);
EXTERN void Rectangle(WORD x1,WORD y1,WORD x2,WORD y2,WORD color,BYTE cType);
EXTERN void ReverseBlock(WORD x1,WORD y1,WORD x2,WORD y2);
EXTERN void RestoreArea(WORD x,WORD y,WORD width,WORD height);
EXTERN void ReKeyBoradBefor(WORD x,WORD y,WORD width,WORD height);
EXTERN void ShowTouched(WORD cx1,WORD cy1,WORD cx2,WORD cy2);
EXTERN void NumberDisplay (int data,BYTE dot,BYTE cDigital,WORD xx,WORD yy,WORD fColor,int bColor,BYTE fontSize);
EXTERN void DispFloat(int data, WORD dot,WORD digital, WORD x, WORD y, WORD fColor, WORD bColor,BYTE direct,BYTE cfont);
EXTERN void SaveCurrScreen (DWORD SaveAddr);
EXTERN void SaveCurrScreen(DWORD SaveAddr);
EXTERN void RestoreScreen(DWORD SaveAddr);
EXTERN void ShowString_back(char *s,WORD x,WORD y,WORD fColor,WORD bColor,BYTE cfont);
EXTERN void ShowStringAndBox(char *msg,WORD x,WORD y,int fcolor,int bcolor,BYTE cLeft,BYTE cTop,BYTE cfontSize);
#undef EXTERN
//********************** Extern Variable **********************
extern volatile int CONFIG_SM501_MEM_BASE;
/*
extern uchar cCommType; //通讯类型0-自定通讯类型;1-Modbus通讯
extern int bmpAddr[MAX_BMP_NUMS]; //画面地址索引表
extern int bmpLens[MAX_BMP_NUMS]; //画面长度索引表
extern int bitbmpLens[MAX_BMP_NUMS];//画面点阵长度索引
extern unsigned char blockuse[BLOCKS]; //每块Nandflash使用情况:=0xff时表示未使用
extern strucMapInfo mapInfo[MAX_BMP_NUMS];//画面信息
extern unsigned short wTouchX,wTouchY;//触摸位置
extern DWORD dwCommTime;
extern DWORD dwJumpTime; //画面跳转时间
extern unsigned char cCommErrCount;//通讯故障次数
extern unsigned char CurrBMP; //当前页面号
extern unsigned char CurrIndex; //当前元件索引
extern int SetData[MAX_ITEMS];//一个画面上的数据
extern unsigned short cLanguage; //语言选择
extern char cInitEnter[MAX_ITEMS];//是否第一次显示
extern int lastData[MAX_ITEMS];//上次通讯数值
extern short LastErrShow[16];
extern unsigned char cCommType; //通讯类型0-自定通讯类型;1-Modbus通讯
extern unsigned short SHOW_CHINESE;
extern unsigned short SHOW_ENGLISH;
*/
//********************** Extern Function **********************
int abs(int);
//*****************************************************************
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -