?? lcdlib.c
字號:
#include <string.h>
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\def.h"
#include "..\inc\lcd.h"
#include "..\inc\lcdlib.h"
#include <stdarg.h>
//SCR_XSIZE,SCR_YSIZE,LCD_XSIZE,LCD_YSIZE are defined in lcd.h
#define M5D(n) ((n) & 0x1fffff)
#define ARRAY_SIZE_G16 (SCR_XSIZE/2*SCR_YSIZE)
#define HOZVAL (LCD_XSIZE/4-1)
#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)
#define LINEVAL (LCD_YSIZE-1)
#define MVAL (13)
#define CLKVAL_G16 (10) //40Mhz, CLKVAL=10 ->101Hz
// 9 ->112Hz
#define CLKVAL_COLOR (10) //60Mhz
extern void ARMDisableInt(void);
extern void ARMEnableInt(void);
extern float * GetYouxiao(void);
extern float * GetFreq(void);
//extern S16 GetTouchX(void);
//extern S16 GetTouchY(void);
extern U8 Waveform(U16 x,U16 y,U8 color);
extern void SyncWaveform(U16 x,U16 y,U8 color);
extern U8 ScreenFlag;
unsigned int (*frameBuffer16)[SCR_XSIZE/8];
#define MVAL_USED 0
#define NormalGray 10
#define BlackGray 15-NormalGray
#define OVERLAY 0
#define OR 2
static U16 ziku0[][16]={0x0100,0x0104,0xFFFE,0x0100,//chinese character "nan" 0
0x0104,0x7FFE,0x4824,0x4444,
0x5FF4,0x4104,0x4104,0x5FF4,
0x4104,0x4104,0x4114,0x4008,
0x1004,0x0a7e,0xff44,0x207c,0x2044,0x267C,0x3844,0x208C,//chinese "wang" 1
0x0000,0x3FF8,0x0100,0x1FF0,0x0100,0x0104,0xFFFE,0x0000,
0x0100,0x0200,0x0410,0x1FF8,0x1010,0x1010,0x1FF0,0x1010,//chinese "zi" 2
0x1010,0x1010,0x1FF0,0x1010,0x1010,0x1010,0x1FF0,0x1010,
0x0040,0x0840,0x7C40,0x0044,0x05FE,0xFE44,0x1044,0x1044,//chinese "dong" 3
0x2044,0x2444,0x4284,0xFE84,0x4104,0x0104,0x0228,0x0410,
0x0880,0x0880,0x0880,0x1088,0x1098,0x30A0,0x50C0,0x9080,//chinese "hua" 4
0x1180,0x1280,0x1480,0x1080,0x1082,0x1082,0x107E,0x1000,
0x0000,0x0708,0x3A48,0x0A48,0x0F48,0xFA48,0x0A48,0x1218,//chinese "xing" 5
0x2108,0x41C0,0x0F00,0x0100,0x01F8,0x3F00,0x0000,0x0000,
0x0000,0x0810,0x0860,0x1180,0x1240,0x224C,0x5270,0x93C0,//chinese "di" 6
0x1220,0x1220,0x1292,0x134A,0x1226,0x1002,0x0000,0x0000,
0x0000,0x00F0,0x1F00,0x1000,0x1080,0x1080,0x10F0,0x1780,//chinese "ya" 7
0x10A0,0x2090,0x2080,0x40FC,0x9F00,0x0000,0x0000,0x0000,
0x1000,0x1000,0x1000,0x1070,0x1C90,0x70A0,0x10A0,0x18A0,//chinese "ji" 8
0x34A0,0x5122,0x9122,0x121E,0x1400,0x1000,0x0000,0x0000,
0x0000,0x1000,0x1000,0x1078,0x2488,0x4488,0x78E8,0x1088,//chinese "zu" 9
0x2C88,0x70E8,0x0088,0x1C88,0xE0FE,0x0700,0x0000,0x0000,
0x0800,0x0800,0x1300,0x1C3C,0x2744,0x7C48,0x0A78,0x1100,//chinese "zhi" 10
0x23E0,0x4420,0x07A0,0x0420,0x0420,0x07E0,0x0020,0x0000,
0x0080,0x0880,0x0890,0x14E0,0x2688,0x7A88,0x0078,0x3C80,//chinese "neng" 11
0x2480,0x3498,0x24E2,0x3482,0x2482,0x2C7C,0x0000,0x0000,
0x0800,0x0840,0x0820,0x081C,0x0DE4,0x7A00,0x0A90,0x0C88,//chinese "kong 12
0x1900,0x2830,0xC9C0,0x0840,0x287C,0x1B80,0x0000,0x0000,
0x0000,0x0408,0x0408,0x1708,0x1C28,0x2428,0x07A8,0x7C28,//chinese "zhi" 13
0x0728,0x3D28,0x2508,0x2708,0x0418,0x0408,0x0000,0x0000,
0x0030,0x0CD0,0x3490,0x14E0,0x1A10,0x03E8,0x1E80,0x0460,//chinese "qi" 14
0x083C,0x1000,0x6EF8,0x3288,0x2290,0x1CE0,0x0000,0x0000,
0x1040,0x1040,0x1040,0x1070,0x1DC0,0x7040,0x1070,0x1990,//chinese "ji" 15
0x3020,0xD120,0x10C0,0x1120,0x3618,0x100E,0x0000,0x0000,
0x0200,0x0220,0x0210,0x0200,0x03E0,0x3E00,0x0300,0x0680,//chinese "shu" 16
0x0A40,0x1220,0x2218,0x420E,0x0200,0x0200,0x0200,0x0000,
0x0100,0x0100,0x027C,0x7F80,0x0400,0x04E0,0x0F20,0x1420,//chinese "you" 17
0x27A0,0x4420,0x87A0,0x0420,0x0420,0x04A0,0x0440,0x0000,
0x0000,0x0060,0x3BA0,0x4A20,0x53A0,0x5220,0x4BC0,0x5B10,//chinese "xian" 18
0x42A0,0x4240,0x4230,0x429E,0x4300,0x4200,0x0000,0x0000,
0x0000,0x0300,0x0080,0x0880,0x0840,0x1020,0x1018,0x220E,//chinese "gong" 19
0x4200,0x8480,0x0840,0x11E0,0x1E20,0x0000,0x0000,0x0000,
0x0000,0x01F0,0x0E10,0x0010,0x0710,0x1810,0x0310,0x3D10,//chinese "si" 20
0x2110,0x2310,0x1C10,0x0010,0x0050,0x0020,0x0000,0x0000,
0x1000,0x1040,0x1020,0x1000,0x1C78,0x7380,0x1000,0x18E0,//chinese "hang" 21
0x3520,0x5120,0x9122,0x1122,0x121E,0x1400,0x0000,0x0000,
0x0000,0x0008,0x0888,0x0888,0x0888,0x2AC8,0x2AA8,0x2AA8,//chinese "zhou" 22
0x4888,0x0888,0x1088,0x1088,0x2008,0x4008,0x0000,0x0000,
0x0800,0x081C,0x08E0,0x2E20,0x2838,0x3EC8,0xC8A8,0x2AA8,//chinese "pin" 23
0x2AA8,0x04A8,0x0820,0x1050,0x2088,0xC304,0x0000,0x0000,
0x0100,0x01E0,0x0E00,0x2290,0x1720,0x0120,0x1290,0x2740,//chinese "lv" 24
0x0100,0x01FC,0x7F00,0x0100,0x0100,0x0100,0x0100,0x0000,
0x0200,0x420C,0x3270,0x1240,0x8FC0,0x6244,0x227E,0x0AC8,//??????'?'?, ?? ????
0x1348,0x2E48,0xE248,0x2248,0x2248,0x2288,0x2B08,0x2408,
0x4000,0x3008,0x17FC,0x0040,0x8040,0x6040,0x2040,0x0840,//??????'?'?, ?? ????
0x1040,0x2040,0xE040,0x2040,0x2044,0x2FFE,0x2000,0x2000,
0x0000,0x0008,0x7FFC,0x0100,0x0100,0x0100,0x0100,0x0100,//??????'?'?, ?? ????
0x0100,0x0100,0x0100,0x0100,0x0104,0xFFFE,0x0000,0x0000,
0x0804,0x1DFE,0xF104,0x1104,0x1104,0xFF04,0x11FC,0x3800,//??????'?'?, ?? ????
0x37FE,0x5420,0x5028,0x91FC,0x1020,0x1024,0x17FE,0x1000,
0x2208,0x1108,0x1110,0x0020,0x7FFE,0x4002,0x8004,0x1FE0,//??????'?'?, ?? ????
0x0040,0x0184,0xFFFE,0x0100,0x0100,0x0100,0x0500,0x0200,
0x0080,0x7840,0x4FFE,0x5402,0x5814,0x63F8,0x5000,0x4808,//??????'?'?, ?? ????
0x4FFC,0x48A0,0x68A0,0x50A0,0x4122,0x4122,0x421E,0x4C00,
0x0040,0x7840,0x4844,0x57FE,0x5080,0x60A0,0x5120,0x4A28,//??????'?'?, ?? ????
0x4BFC,0x4820,0x6928,0x5124,0x4226,0x4422,0x40A0,0x4040,
0x0840,0x0840,0x0840,0x1044,0x17FE,0x3444,0x5444,0x9444,//??????'?'?, ?? ????
0x1444,0x17FC,0x1444,0x1040,0x1040,0x1040,0x1040,0x1040,
0x0880,0x0844,0x0FFE,0x1000,0x1008,0x37FC,0x5000,0x9008,//??????'?'?, ?? ????
0x17FC,0x1000,0x13F8,0x1208,0x1208,0x1208,0x13F8,0x1208,
0x0200,0x0100,0x7FFE,0x4802,0x8684,0x0280,0x1080,0x0C80,//??????'?'?, ?? ????
0x0484,0xFFFE,0x0100,0x0140,0x0220,0x0410,0x180C,0x6004,
0x0840,0xFC40,0x08A0,0x48A0,0x4910,0x4A0E,0x4DF4,0x4800,//??????'?'?, ?? ????
0x7C48,0x0648,0x0548,0x1D50,0xE510,0x4424,0x17FE,0x0800,
0x0004,0x0BFE,0xFC20,0x1044,0x11FE,0x1104,0x1124,0x1124,//??????'?'?, ?? ????
0x1124,0x1124,0x1D24,0xF124,0x4124,0x0058,0x0084,0x0302,
0x0010,0x1FF8,0x1010,0x1010,0x1010,0x1FF0,0x1010,0x1010,//??????'?'?, ?? ????
0x1010,0x1FF0,0x1010,0x1010,0x1010,0x1FF0,0x1010,0x0000,
0x0200,0x0100,0x0104,0xFFFE,0x1010,0x0810,0x0820,0x0420,//這是漢字中的'文'字, 橫排 編碼方式
0x0440,0x0280,0x0100,0x0280,0x0460,0x0810,0x300E,0xC004,
0x1040,0x1040,0x1240,0x2248,0x23FC,0x6440,0xA440,0x2840,//這是漢字中的'件'字, 橫排 編碼方式
0x2044,0x3FFE,0x2040,0x2040,0x2040,0x2040,0x2040,0x2040,
0x1080,0x1048,0x23FC,0x2208,0x4A08,0xFBF8,0x1200,0x2204,//這是漢字中的'編'字, 橫排 編碼方式
0x43FE,0xF694,0x4A94,0x03FC,0x1A94,0xE294,0x4294,0x020C,
0x1008,0x11FC,0x1108,0xFD08,0x21F8,0x2804,0x4BFE,0x7D08,//這是漢字中的'輯'字, 橫排 編碼方式
0x09F8,0x0908,0x0FF8,0xF908,0x4908,0x0FFE,0x0808,0x0808,
0x2008,0x13FC,0x1208,0x0248,0xFE48,0x0A48,0x1248,0x3248,//這是漢字中的'視'字, 橫排 編碼方式
0x5A48,0x9668,0x12A8,0x10A0,0x1122,0x1122,0x121E,0x1400,
0x0004,0x7FFE,0x4404,0x47E4,0x4C44,0x5284,0x4104,0x4284,//這是漢字中的'圖'字, 橫排 編碼方式
0x4644,0x493C,0x7094,0x4604,0x4104,0x4084,0x7FFC,0x4004,
0x0000,0x0008,0x7FFC,0x0100,0x0100,0x0100,0x0100,0x0100,//這是漢字中的'工'字, 橫排 編碼方式
0x0100,0x0100,0x0100,0x0100,0x0104,0xFFFE,0x0000,0x0000,
0x0020,0x0FF0,0x0820,0x0820,0x0FE0,0x0820,0x0FE0,0x0820,//這是漢字中的'具'字, 橫排 編碼方式
0x0FE0,0x0820,0x0824,0xFFFE,0x0440,0x0C20,0x1018,0x2008,
0x0800,0x0A7C,0xFF48,0x0850,0x7E58,0x0844,0xFF64,0x0858,//這是漢字中的'幫'字, 橫排 編碼方式
0x1150,0x3FF0,0xD110,0x1110,0x1110,0x1150,0x1120,0x0100,
0x0220,0x3F20,0x2220,0x2224,0x23FE,0x3E24,0x2224,0x2224,//這是漢字中的'助'字, 橫排 編碼方式
0x3E24,0x2224,0x2244,0x2244,0x2F44,0xF084,0x4128,0x0210,
};
const U8 cnTxtTbl[]={"南望自動化型低壓機組智能控制器技術有限公司杭州頻率浙江工程學院陳仲信實驗項目文件編輯視圖工具幫助"};
static U16 ziku1[][8]={
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, //" " 0
0x0000,0x0000,0x0000,0x000C,0x1FCC,0x0000,0x0000,0x0000, //"!" 1
0x0000,0x6000,0x3000,0x0800,0x6000,0x3000,0x0800,0x0000, //""" 2
0x0000,0x0220,0x1E20,0x03FC,0x0220,0x1E20,0x03FC,0x0220, //"#" 3
0x0000,0x0000,0x0C78,0x1084,0x3FFF,0x1104,0x0E18,0x0000, //"$" 4
0x0000,0x0078,0x1884,0x0778,0x00C0,0x0F38,0x1084,0x0F00, //"%" 5
0x0008,0x0084,0x00E4,0x0E98,0x1124,0x10C4,0x0F84,0x0078, //"&" 6
0x0000,0x0000,0x0000,0x0000,0x0000,0x7000,0x6800,0x0800, //"'" 7
0x0000,0x4002,0x2004,0x1818,0x07E0,0x0000,0x0000,0x0000, //"(" 8
0x0000,0x0000,0x0000,0x07E0,0x1818,0x2004,0x4002,0x0000, //")" 9
0x0000,0x0240,0x0240,0x0180,0x0FF0,0x0180,0x0240,0x0240, //"*" 10
0x0000,0x0080,0x0080,0x0080,0x0FF8,0x0080,0x0080,0x0080, //"+" 11
0x0000,0x0000,0x0000,0x0000,0x0000,0x000E,0x000D,0x0001, //"," 12
0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0080,0x0000, //"-" 13
0x0000,0x0000,0x0000,0x0000,0x0000,0x000C,0x000C,0x0000, //"." 14
0x2000,0x1800,0x0600,0x0180,0x0060,0x0018,0x0006,0x0000, //"/" 15
0x0000,0x07F0,0x0808,0x1004,0x1004,0x0808,0x07F0,0x0000, //"0"number "16"
0x0000,0x0000,0x0004,0x0004,0x1FFC,0x0804,0x0804,0x0000, //number "17"
0x0000,0x0E0C,0x1184,0x1044,0x1024,0x1014,0x0E0C,0x0000, //numver "18"
0x0000,0x0C70,0x1288,0x1104,0x1104,0x1004,0x0C18,0x0000, //number "19"
0x0000,0x0024,0x1FFC,0x0824,0x0424,0x0320,0x00E0,0x0000, //number "20"
0x0000,0x1070,0x1088,0x1104,0x1104,0x1084,0x1F98,0x0000, //number "21"
0x0000,0x0070,0x1888,0x1104,0x1104,0x0888,0x07F0,0x0000, //number "22"
0x0000,0x1000,0x1C00,0x1300,0x10FC,0x1000,0x1C00,0x0000, //number "23"
0x0000,0x0E38,0x1144,0x1084,0x1084,0x1144,0x0E38,0x0000, //number "24"
0x0000,0x07F0,0x0888,0x1044,0x1044,0x088C,0x0700,0x0000, //"9"number "25"
0x0000,0x0000,0x0000,0x030C,0x030C,0x0000,0x0000,0x0000, //":" 26
0x0000,0x0000,0x0000,0x0000,0x0106,0x0001,0x0000,0x0000, //";" 27
0x0000,0x1004,0x0808,0x0410,0x0220,0x0140,0x0080,0x0000, //"<" 28
0x0000,0x0220,0x0220,0x0220,0x0220,0x0220,0x0220,0x0220, //"=" 29
0x0000,0x0080,0x0140,0x0220,0x0410,0x0808,0x1004,0x0000, //">" 30
0x0000,0x0F00,0x1080,0x106C,0x100C,0x1200,0x0E00,0x0000, //"?" 31
0x0000,0x07D0,0x0828,0x17C4,0x1424,0x13E4,0x0C18,0x03E0, //"@" 32
0x0004,0x001C,0x00E4,0x0740,0x1C40,0x03C4,0x003C,0x0004, //character "A" 33
0x0000,0x0070,0x0E88,0x1104,0x1104,0x1104,0x1FFC,0x1004, //character "B" 34
0x0000,0x1C10,0x1008,0x1004,0x1004,0x1004,0x0C18,0x03E0, //character "C" 35
0x0000,0x07F0,0x0808,0x1004,0x1004,0x1004,0x1FFC,0x1004, //character "D" 36
0x0000,0x0818,0x1004,0x17C4,0x1104,0x1104,0x1FFC,0x1004, //character "E" 37
0x0000,0x0800,0x1000,0x17C0,0x1100,0x1104,0x1FFC,0x1004, //character "F" 38
0x0000,0x0040,0x1C78,0x1044,0x1004,0x1004,0x0C18,0x03E0, //character "G" 39
0x1004,0x1FFC,0x1084,0x0080,0x0080,0x1084,0x1FFC,0x1004, //character "H" 40
0x0000,0x0000,0x1004,0x1004,0x1FFC,0x1004,0x1004,0x0000, //character "I" 41
0x0000,0x1000,0x1000,0x1FFE,0x1001,0x1001,0x0001,0x0003, //character "J" 42
0x0000,0x1004,0x181C,0x1464,0x0380,0x1104,0x1FFC,0x1004, //character "K" 43
0x0000,0x000C,0x0004,0x0004,0x0004,0x1004,0x1FFC,0x1004, //character "L" 44
0x0000,0x1004,0x1FFC,0x1F00,0x00FC,0x1F00,0x1FFC,0x1004, //character "M" 45
0x1000,0x1FFC,0x1018,0x00E0,0x0300,0x0C04,0x1FFC,0x1004, //character "N" 46
0x0000,0x07F0,0x0808,0x1004,0x1004,0x1004,0x0808,0x07F0,//character "O" 47
0x0000,0x0F00,0x1080,0x1080,0x1080,0x1084,0x1FFC,0x1004,//character "P" 48
0x0000,0x07F2,0x080A,0x101C,0x1024,0x1024,0x0818,0x07F0,//character "Q" 49
0x0004,0x0E0C,0x1130,0x11C0,0x1100,0x1104,0x1FFC,0x1004,//character "R" 50
0x0000,0x1C38,0x1044,0x1084,0x1084,0x1104,0x0E1C,0x0000,//character "S" 51
0x0000,0x1800,0x1000,0x1004,0x1FFC,0x1004,0x1000,0x1800,//character "T" 52
0x1000,0x1FF8,0x1004,0x0004,0x0004,0x1004,0x1FF8,0x1000, //character "U" 53
0x1000,0x1C00,0x1380,0x0070,0x001C,0x11E0,0x1E00,0x1000, //character "V" 54
0x0000,0x1FC0,0x103C,0x00E0,0x1F00,0x00E0,0x103C,0x1FC0, //character "W" 55
0x1004,0x180C,0x1634,0x01C0,0x01C0,0x1634,0x180C,0x1004,//character "X" 56
0x0000,0x1000,0x1C00,0x1304,0x00FC,0x1304,0x1C00,0x1000,//character "Y" 57
0x0000,0x1018,0x1C04,0x1304,0x1084,0x1064,0x101C,0x0804,//character "Z" 58
0x0000,0x4002,0x4002,0x4002,0x7FFE,0x0000,0x0000,0x0000,//character "[" 59
0x0000,0x0003,0x001C,0x0060,0x0380,0x0C00,0x3000,0x0000,//character "\" 60
0x0000,0x0000,0x0000,0x7FFE,0x4002,0x4002,0x4002,0x0000,//character "]" 61
0x0000,0x2000,0x4000,0x4000,0x4000,0x2000,0x0000,0x0000,//character "^" 62
0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,//character "_" 63
0x0000,0x0000,0x0000,0x0000,0x0000,0x000E,0x000D,0x0001,//character "," 64
0x0000,0x0008,0x0004,0x03F8,0x0244,0x0224,0x01B8,0x0000, //character "a" 65
0x0000,0x01F0,0x0308,0x0204,0x0204,0x1FF8,0x1000,0x0000, //character "b" 66
0x0000,0x0110,0x0308,0x0204,0x020C,0x0118,0x01F0,0x0000, //character "c" 67
0x0000,0x0008,0x1FF8,0x1204,0x0204,0x0208,0x01F8,0x0000, //character "d" 68
0x0000,0x0090,0x0388,0x0284,0x0288,0x0288,0x01F0,0x0000, //character "e" 69
0x1800,0x1100,0x1104,0x1104,0x0FFC,0x0104,0x0104,0x0000, //character "f" 70
0x0000,0x0106,0x01C9,0x0129,0x0129,0x0129,0x00D6,0x0000, //character "g" 71
0x0004,0x00FC,0x0104,0x0100,0x0100,0x0084,0x1FFC,0x1004, //character "h" 72
0x0000,0x0000,0x0004,0x0004,0x19FC,0x1904,0x0104,0x0000, //character "i" 73
0x0000,0x0000,0x19FE,0x1901,0x0101,0x0001,0x0003,0x0000, //character "j" 74
0x0000,0x0104,0x010C,0x01B4,0x0040,0x0024,0x1FFC,0x1004, //character "k" 75
0x0000,0x0000,0x0004,0x0004,0x1FFC,0x1004,0x1004,0x0000, //character "l" 76
0x00FC,0x0100,0x0104,0x01FC,0x0100,0x0104,0x01FC,0x0104, //character "m" 77
0x0004,0x00FC,0x0104,0x0100,0x0100,0x0084,0x01FC,0x0104, //character "n" 78
0x0000,0x00F8,0x0104,0x0104,0x0104,0x0104,0x00F8,0x0000, //character "o" 79
0x0000,0x0070,0x0088,0x0104,0x0104,0x0085,0x01FF,0x0101, //character "p" 80
0x0000,0x0070,0x0088,0x0104,0x0104,0x0085,0x01FF,0x0101, //character "q" 81
0x0000,0x0180,0x0100,0x0104,0x0084,0x01FC,0x0104,0x0104, //character "r" 82
0x0000,0x0198,0x0124,0x0124,0x0124,0x0124,0x00CC,0x0000, //character "s" 83
0x0000,0x0000,0x0104,0x0104,0x07F8,0x0100,0x0100,0x0000, //character "t" 84
0x0004,0x01FC,0x0108,0x0004,0x0004,0x0004,0x01F8,0x0100, //character "u" 85
0x0100,0x0180,0x0160,0x0010,0x000C,0x0170,0x0180,0x0100, //character "v" 86
0x0100,0x01F0,0x010C,0x0030,0x01C0,0x0030,0x010C,0x01F0, //character "w" 87
0x0000,0x0104,0x018C,0x0170,0x0074,0x018C,0x0104,0x0000, //character "x" 88
0x0100,0x0180,0x0160,0x0018,0x000E,0x0171,0x0181,0x0101, //character "y" 89
0x0000,0x010C,0x0184,0x0144,0x0134,0x010C,0x0184,0x0000, //character "z" 90
0x4002,0x4002,0x3EFC,0x0100,0x0000,0x0000,0x0000,0x0000, //character "{" 91
0x0000,0x0000,0x0000,0xFFFF,0x0000,0x0000,0x0000,0x0000, //character "|" 92
0x0000,0x0000,0x0000,0x0100,0x3EFC,0x4002,0x4002,0x0000, //character "}" 93
0x2000,0x2000,0x4000,0x4000,0x8000,0x8000,0x6000,0x0000, //character "~" 93
};
static U16 Nwbmp[][4]={
0xFFFF,0xFFFF,0xFFFF,0xFF00,0x8000,0x0000,0x0C00,0x0100,
0x8000,0x0000,0x0800,0x0100,0x8000,0x0000,0x1800,0x0100,
0x8000,0x0000,0x3000,0x0100,0x8000,0x0000,0x7000,0x0100,
0x8000,0x0003,0x6000,0x0100,0x8000,0x0002,0xE000,0x0100,
0x8000,0x0001,0xC000,0x0100,0x8000,0x041F,0xD000,0x0100,
0x8000,0x01FF,0xE000,0x0100,0x8000,0x47FF,0xF000,0x0100,
0x8000,0x1F8F,0xFC00,0x0100,0x8000,0x7C1F,0x3E00,0x0100,
0x8002,0xF01E,0x8E00,0x0100,0x8001,0x803C,0x0700,0x0100,
0x8001,0x207F,0xFF80,0x0100,0x8000,0x03FF,0xFFFC,0x4100,
0x8000,0x1FFF,0xFFFF,0x8100,0x8000,0xFFFF,0xFFFF,0xE100,
0x8003,0xFFF0,0x01FF,0xFD00,0x800F,0xFFE0,0x001F,0xBF00,
0x833F,0xE7E0,0x0607,0xFF00,0x80FF,0x8FFF,0xFA01,0xFF00,
0x89FE,0x1FFF,0xFC04,0xFF00,0x97F8,0xBFFF,0xFA01,0x3F00,
0x8FE0,0x7FFF,0xF000,0xDD00,0x9FC9,0x7FFF,0xE000,0xBF00,
0xBF82,0xFFFF,0xC000,0xBF00,0xFF01,0xFFFF,0x8000,0xBF00,
0xFE03,0xFFFF,0x0000,0x7F00,0xFE03,0xFFFE,0x0000,0x7F00,
0xFC17,0xE7FC,0x0000,0xFF00,0xFC0F,0x07F8,0x0005,0xFD00,
0xFC08,0x0FF4,0x0001,0xFD00,0xFC92,0x0FE8,0x0013,0xF900,
0xFE00,0x5FD0,0x000F,0xF500,0xFF80,0x3F90,0x001F,0xE100,
0xFFF0,0x3F40,0x013F,0x9100,0xBFFF,0xFE80,0x007F,0x0100,
0x9FFF,0xFD00,0x01FC,0x8100,0x81F8,0xFA00,0x07F2,0x0100,
0x8001,0xF000,0x1F00,0x0100,0x8001,0xE800,0x2040,0x0100,
0x8003,0xD000,0x0000,0x0100,0x8003,0x9000,0x0000,0x0100,
0x8017,0x4000,0x0000,0x0100,0x800E,0x8000,0x0000,0x0100,
0x800D,0x8000,0x0000,0x0100,0x8018,0x0000,0x0000,0x0100,
0xFFFF,0xFFFF,0xFFFF,0xFF00};
/****************general lcd function*****************/
void Lcd_Init(void)
{
//320x240 1bit/1pixel LCD
if((U32)frameBuffer16==0)
{
//The total frame memory should be inside 4MB.
//For example, if total memory is 8MB, the frame memory
//should be in 0xc000000~0xc3fffff or c400000~c7fffff.
//But, the following code doesn't meet this condition(4MB)
//if the code size & location is changed..
frameBuffer16=(unsigned int (*)[SCR_XSIZE/8])malloc(ARRAY_SIZE_G16);
}
//The following value has to be changed for better display.
rDITHMODE=0x12210;
//rDITHMODE=0x0;
rDP1_2 =0xa5a5;
rDP4_7 =0xba5da65;
rDP3_5 =0xa5a5f;
rDP2_3 =0xd6b;
rDP5_7 =0xeb7b5ed;
rDP3_4 =0x7dbe;
rDP4_5 =0x7ebdf;
rDP6_7 =0x7fdfbfe;
rLCDCON1=(0)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G16<<12);
// disable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
rLCDCON2=(LINEVAL)|(HOZVAL<<10)|(10<<21);
//LINEBLANK=10 (without any calculation)
rLCDSADDR1= (0x2<<27) | ( ((U32)frameBuffer16>>22)<<21 ) | M5D((U32)frameBuffer16>>1);
// 16-gray, LCDBANK, LCDBASEU
rLCDSADDR2= M5D((((U32)frameBuffer16+(SCR_XSIZE*LCD_YSIZE/2))>>1)) | (MVAL<<21);
rLCDSADDR3= (LCD_XSIZE/4) | ( ((SCR_XSIZE-LCD_XSIZE)/4)<<9 );
rLCDCON1=(1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G16<<12);
// enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk,
}
void Lcd_MoveViewPort(int vx,int vy)
{
U32 addr;
//The processor mode should be superviser mode.
// DisableInterrupt();
ARMDisableInt();
#if (LCD_XSIZE<128)
while((rLCDCON1>>22)<=1); // if x<128
#else
while((rLCDCON1>>22)==0); // if x>128
#endif
addr=(U32)frameBuffer16+(vx/2)+vy*(SCR_XSIZE/2);
rLCDSADDR1= (0x2<<27) | ( (addr>>22)<<21 ) | M5D(addr>>1);
// 16-gray, LCDBANK, LCDBASEU
rLCDSADDR2= M5D(((addr+(SCR_XSIZE*LCD_YSIZE/2))>>1)) | (MVAL<<21);
// EnableInterrupt();
ARMEnableInt();
}
void (*PutPixel)(U32,U32,U8);
void Glib_Init(int depth)
{
PutPixel=_PutPixelG16;
}
void _PutPixelG16(U32 x,U32 y,U8 c)
{
if(x<SCR_XSIZE && y<SCR_YSIZE)
frameBuffer16[(y)][(x)/8]=( frameBuffer16[(y)][x/8] & ~(0xf0000000>>((x)%8)*4) )
| ( (c)<<((8-1-((x)%8))*4) );
}
void Glib_Rectangle(int x1,int y1,int x2,int y2,int color)
{
Glib_Line(x1,y1,x2,y1,color);
Glib_Line(x2,y1,x2,y2,color);
Glib_Line(x1,y2,x2,y2,color);
Glib_Line(x1,y1,x1,y2,color);
}
void Glib_FilledRectangle(int x1,int y1,int x2,int y2,int color)
{
int i;
for(i=y1;i<=y2;i++)
Glib_Line(x1,i,x2,i,color);
}
// LCD display is flipped vertically
// But, think the algorithm by mathematics point.
// 3I2
// 4 I 1
// --+-- <-8 octants mathematical cordinate
// 5 I 8
// 6I7
void Glib_Line(int x1,int y1,int x2,int y2,int color)
{
int dx,dy,e;
dx=x2-x1;
dy=y2-y1;
if(dx>=0)
{
if(dy >= 0) // dy>=0
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -