/*******************************************************
文件名 : Nokia5110Lcd.h
描述 : 诺基亚 5110 LCD 驱动头文件
作者 : xylch101
编辑器 : Notepad 2
日期 : 2008年06月27日
*******************************************************/
/******************************************************* 文件名 : Nokia5110Lcd.h 描述 : 诺基亚 5110 LCD 驱动头文件 作者 : xylch101 编辑器 : Notepad 2 日期 : 2008年06月27日 *******************************************************/ #ifndef NOKIA_5110_LCD_H #define NOKIA_5110_LCD_H //宽高像素 #define LCD_X_RES 84 #define LCD_Y_RES 48 //管脚配置 (atmega16L) 自行修改 #define LCD_DC_PIN 0x08 // PB3 #define LCD_CE_PIN 0x10 // PB4 #define SPI_MOSI_PIN 0x20 // PB5 #define LCD_RST_PIN 0x40 // PB6 #define SPI_CLK_PIN 0x80 // PB7 typedef unsigned char byte; typedef unsigned int word; //枚举 D/C 模式选择 typedef enum { DC_CMD = 0, //写命令 DC_DATA = 1 //写数据 } LcdExecType; //枚举 画点类型选择 typedef enum { PIXEL_CLEAR = 0, //擦除 PIXEL_DRAW = 1, //画点 PIXEL_XOR = 2 //取反 } LcdPixelMode; //驱动函数声明 void LcdInit ( void ); void LcdSetContrast ( byte contrast ); void LcdSetXY (byte X, byte Y); void LcdExec ( byte data, LcdExecType cd ); byte UnClear ( byte data, byte n ); byte LnClear ( byte data, byte n ); void SplitByte ( byte data, byte nByLow, byte bytes[ 2 ] ); void BufferPixelStuff ( byte type, byte index, byte x, byte y, byte width, byte height); void CacheEnglishString ( byte x, byte y, byte width, byte height, byte bWidth, byte *dataPtr ); void CachePixel ( byte x, byte y, LcdPixelMode mode ); void CommitBuffer ( void ); void ClearBuffer ( void ); #endif
文件名 : Nokia5110Lcd.c
描述 : 诺基亚 5110 LCD 驱动源文件
/******************************************************* 文件名 : Nokia5110Lcd.c 描述 : 诺基亚 5110 LCD 驱动源文件 作者 : xylch101 编辑器 : Notepad 2 日期 : 2008年06月27日 *******************************************************/ #include <avr/io.h> #include "Nokia5110Lcd.h" #include "PixelStuff.h" //中、英文字、图片字模 //全屏缓存 ( 6x84 bytes ) byte LcdPixelBuffer[ LCD_Y_RES / 8 ][ 84 ] = { {0}, {0} }; /********************************************* 函数名 : LcdInit 功能 : LCD SPI 初始化 参数 : 无 返回 : 无 编辑器 : Notepad 2 *********************************************/ void LcdInit( void ) { PORTB |= LCD_RST_PIN; DDRB |= LCD_RST_PIN | LCD_DC_PIN | LCD_CE_PIN | SPI_MOSI_PIN | SPI_CLK_PIN; PORTB &= ~LCD_RST_PIN; PORTB |= LCD_RST_PIN; //初始化SPI SPCR = 0x50; PORTB |= LCD_CE_PIN; //设置LCD LcdExec( 0x21, DC_CMD ); LcdExec( 0xC8, DC_CMD ); LcdExec( 0x06, DC_CMD ); LcdExec( 0x13, DC_CMD ); LcdExec( 0x20, DC_CMD ); LcdExec( 0x0C, DC_CMD ); //清屏 ClearBuffer( ); CommitBuffer( ); } /********************************************* 函数名 : LcdSetContrast 功能 : 设置 LCD 对比度 参数 : byte contrast 对比度值:0~127 返回 : 无 编辑器 : Notepad 2 *********************************************/ void LcdSetContrast( byte contrast ) { LcdExec( 0x21, DC_CMD ); LcdExec( 0x80 | contrast, DC_CMD ); LcdExec( 0x20, DC_CMD ); } /********************************************* 函数名 : LcdSetXY 功能 : 设置 LCD 当前坐标 参数 : byte X 横坐标:0~83 byte Y 纵坐标:0~05 返回 : 无 编辑器 : Notepad 2 *********************************************/ void LcdSetXY(byte X, byte Y) { LcdExec( 0x40 | Y, DC_CMD); // 行 LcdExec( 0x80 | X, DC_CMD); // 列 } /********************************************* 函数名 : LcdExec 功能 : 执行 LCD 指令/数据 参数 : byte data 指令/数据值 LcdExecType dc 指令/数据选择(DC_CMD/DC_DATA) 返回 : 无 编辑器 : Notepad 2 *********************************************/ void LcdExec( byte data, LcdExecType dc ) { PORTB &= ~LCD_CE_PIN; if ( dc == DC_DATA ) { PORTB |= LCD_DC_PIN; } else { PORTB &= ~LCD_DC_PIN; } SPDR = data; while ( (SPSR & 0x80) != 0x80 ); PORTB |= LCD_CE_PIN; } /********************************************* 函数名 : UnClear 功能 : 高n位清零 参数 : byte data 8位数据 byte n 清零多少位 返回 : byte 清零后的结果 举例 : data取11111000 n取3 --> 00011000 编辑器 : Notepad 2 *********************************************/ byte UnClear( byte data, byte n ) { byte tmpData, i; tmpData = 0; for( i = 0; i < n; i++ ) { tmpData |= ( 1 << ( 7 - i ) ); } return ( data & ( ~tmpData ) ); } /********************************************* 函数名 : LnClear 功能 : 低n位清零 参数 : byte data 8位数据 byte n 清零多少位 返回 : byte 清零后的结果 举例 : data取00011111 n取3 --> 00011000 编辑器 : Notepad 2 *********************************************/ byte LnClear( byte data, byte n ) { byte tmpData, i; tmpData = 0; for( i = 0; i < n; i++ ) { tmpData |= ( 1 << i ); } return ( data & ( ~tmpData ) ); } /********************************************* 函数名 : SplitByte 功能 : 一个字节拆成两个字节 参数 : byte data 8位数据 byte nByLow 从低位起多少位拆开 byte bytes[ 2 ] 存放返回的两个字节 返回 : 无 举例 : data取11111111 nByLow取2 --> bytes[0]=11111100、bytes[1]=00000011 编辑器 : Notepad 2 *********************************************/ void SplitByte( byte data, byte nByLow, byte bytes[ 2 ] ) { bytes[ 0 ] = data << nByLow; bytes[ 1 ] = data >> ( 8 - nByLow ); } /********************************************* 函数名 : BufferPixelStuff 功能 : 把图片、文字点阵写入全屏缓存(精确定位,右上角坐标可以为LCD上任意位置。 字符大小不限,自行修改数组点阵数据,单个字符的宽高参数不要传错了,16号 字模不要传成12,12了,12号字模不要传成16,16了) 参数 : byte type type=1-->图片点阵 / type=2-->ascii字符 / type=3-->中文字符 byte index 数据在数组中的位置(当type=2时,直接传ascii字符,如:'A') byte x 横坐标:0~83 byte y 纵坐标:0~47 byte width 点阵数据的宽度(位数) 如果是字符就为一个字符的宽度、如果是图片就为整个图片的宽度 byte height 点阵数据的高度(位数) 如果是字符就为一个字符的高度、如果是图片就为整个图片的高度 返回 : 无 编辑器 : Notepad 2 *********************************************/ void BufferPixelStuff( byte type, byte index, byte x, byte y, byte width, byte height) { byte i, j, tmpRow; byte row = y / 8; byte offset = y % 8; byte level = ( height % 8 == 0 ? height / 8 : ( height / 8 + 1 ) ); byte bytes[ 2 ] = { 0 }; byte byteTmp; for( j=0; j < width; j++ ) { tmpRow = row; byteTmp = UnClear( LcdPixelBuffer[ tmpRow ][ x + j ], 8 - offset ); for( i=0; i < level; i++ ) { if( type == 1 ) { SplitByte( pgm_read_byte( &PIXEL_BMP[ index ][ i * width + j ] ), offset, bytes); } else if( type == 2 ) { SplitByte( pgm_read_byte( &PIXEL_ENGLISH_CHAR[ index - 32 ][ i * width + j ] ), offset, bytes); } else if( type == 3 ) { SplitByte( pgm_read_byte( &PIXEL_CHINESE_CHAR[ index ][ i * width + j ] ), offset, bytes); } else { return; } LcdPixelBuffer[ tmpRow++ ][ x + j ] = byteTmp | bytes[ 0 ]; byteTmp = bytes[ 1 ]; } LcdPixelBuffer[ tmpRow ][ x + j ] = byteTmp | LnClear( LcdPixelBuffer[ tmpRow ] [x + j ], ( offset + height ) % 8 ); } } /********************************************* 函数名 : CacheEnglishString 功能 : 把ascii字符串写入全屏缓存(精确定位,右上角坐标可以为LCD上任意位置) 参数 : byte x 横坐标:0~83 byte y 纵坐标:0~47 byte width 一个字符的宽度(位数) byte height 一个字符的高度(位数) byte bWidth 字符间距 byte *dataPtr 要显示的字符串 (如:"Hello world!") 返回 : 无 编辑器 : Notepad 2 *********************************************/ void CacheEnglishString( byte x, byte y, byte width, byte height, byte bWidth, byte *dataPtr ) { byte i = 0; while ( *dataPtr ) { BufferPixelStuff( 2, *dataPtr++, x + i * ( width + bWidth ), y, width, height ); i++; } } /********************************************* 函数名 : CachePixel 功能 : 画一个点到入全屏缓存中(精确定位,坐标可以为LCD上任意位置) 参数 : byte x 横坐标:0~83 byte y 纵坐标:0~47 byte width 一个字符的宽度(位数) byte height 一个字符的高度(位数) LcdPixelMode mode 画点方式 (PIXEL_CLEAR-->擦除、PIXEL_DRAW-->画点、PIXEL_XOR-->取反) 返回 : 无 编辑器 : Notepad 2 *********************************************/ void CachePixel( byte x, byte y, LcdPixelMode mode ) { byte row; byte offset; byte data; if ( x > LCD_X_RES ) return; if ( y > LCD_Y_RES ) return; row = y / 8; offset = y % 8; data = LcdPixelBuffer[ row ][ x ]; if ( mode == PIXEL_CLEAR ) { data &= (~(0x01 << offset)); } else if ( mode == PIXEL_DRAW ) { data |= (0x01 << offset); } else if ( mode == PIXEL_XOR ) { data ^= (0x01 << offset); } LcdPixelBuffer[ row ][ x ] = data; } /********************************************* 函数名 : CommitBuffer 功能 : 提交缓存,把当前缓存上的数据写到LCD上 参数 : 无 返回 : 无 编辑器 : Notepad 2 *********************************************/ void CommitBuffer( void ) { byte row, col; LcdSetXY( 0x00, 0x00 ); for ( row = 0; row < LCD_Y_RES / 8; row++ ) { for ( col = 0; col < LCD_X_RES; col++ ) { LcdExec( LcdPixelBuffer[ row ][ col ], DC_DATA ); } } } /********************************************* 函数名 : ClearBuffer 功能 : 清空缓存 参数 : 无 返回 : 无 编辑器 : Notepad 2 *********************************************/ void ClearBuffer( void ) { byte row, col; for( row = 0; row < LCD_Y_RES / 8; row++ ) { for( col=0; col < LCD_X_RES; col++ ) { LcdPixelBuffer[ row ][ col ] = 0x00; } } }
/*******************************************************
文件名 : PixelStuff.h
描述 : 点阵数据
作者 : xylch101
编辑器 : Notepad 2
日期 : 2008年06月27日
*******************************************************/
/******************************************************* 文件名 : PixelStuff.h 描述 : 点阵数据 作者 : xylch101 编辑器 : Notepad 2 日期 : 2008年06月27日 *******************************************************/ #ifndef PIXEL_STUFF_H #define PIXEL_STUFF_H #include <avr/pgmspace.h> /********************************************* 数组名 : PIXEL_ENGLISH_CHAR 功能 : 5X7ASCII点阵数据 编辑器 : Notepad 2 *********************************************/ const prog_char PIXEL_ENGLISH_CHAR[ ][ 5 ] = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x07, 0x00, 0x07, 0x00 }, // " { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ { 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // % { 0x36, 0x49, 0x55, 0x22, 0x50 }, // & { 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' { 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( { 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) { 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * { 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + { 0x00, 0x00, 0x50, 0x30, 0x00 }, // , { 0x10, 0x10, 0x10, 0x10, 0x10 }, // - { 0x00, 0x60, 0x60, 0x00, 0x00 }, // . { 0x20, 0x10, 0x08, 0x04, 0x02 }, // / { 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 { 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 { 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 { 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 { 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 { 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 { 0x00, 0x36, 0x36, 0x00, 0x00 }, // : { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; { 0x08, 0x14, 0x22, 0x41, 0x00 }, // < { 0x14, 0x14, 0x14, 0x14, 0x14 }, // = { 0x00, 0x41, 0x22, 0x14, 0x08 }, // > { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? { 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ { 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C { 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E { 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F { 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H { 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I { 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K { 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M { 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P { 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q { 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T { 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U { 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V { 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z { 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ { 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ { 0x00, 0x01, 0x02, 0x04, 0x00 }, // ' { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a { 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c { 0x38, 0x44, 0x44, 0x48, 0x7F }, // d { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e { 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f { 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g { 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h { 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i { 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j { 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k { 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l { 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m { 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p { 0x08, 0x14, 0x14, 0x18, 0x7C }, // q { 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s { 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t { 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u { 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v { 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y { 0x44, 0x64, 0x54, 0x4C, 0x44 } // z }; /********************************************* 数组名 : PIXEL_CHINESE_CHAR 功能 : 12X12中文点阵数据 编辑器 : Notepad 2 *********************************************/ const prog_char PIXEL_CHINESE_CHAR[ ][ 24 ] = { //孙(0) 浩(1) 顾(2) 丽(3) 萍(4) 电(5) 压(6) 采(7) 集(8) 机(9) 控(10) 制(11) 正(12) 转(13) 反(14) {0x82,0x82,0xF2,0x4E,0x00,0xF0,0x00,0xFF,0x00,0x30,0xC0,0x00,0x00,0x08,0x0F,0x00,0x01,0x00,0x08,0x0F,0x00,0x00,0x01,0x00},/*"孙",0*/ {0x22,0x44,0x00,0x28,0xA6,0xA4,0xA4,0xBF,0xA4,0xA4,0x20,0x00,0x04,0x02,0x01,0x00,0x0F,0x04,0x04,0x04,0x04,0x0F,0x00,0x00},/*"浩",1*/ {0xFE,0x02,0xFA,0x8A,0xFA,0x00,0xF2,0x1A,0xD6,0x12,0xF2,0x00,0x07,0x00,0x0F,0x04,0x02,0x00,0x09,0x04,0x03,0x04,0x09,0x00},/*"顾",2*/ {0x02,0xFA,0x4A,0x8A,0xFA,0x02,0xFA,0x4A,0x8A,0xFA,0x02,0x00,0x00,0x0F,0x00,0x08,0x0F,0x00,0x0F,0x00,0x08,0x0F,0x00,0x00},/*"丽",3*/ {0x4A,0x92,0x02,0x57,0x92,0x12,0xF2,0x17,0x92,0x52,0x02,0x00,0x08,0x04,0x01,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,0x01,0x00},/*"萍",4*/ {0xFC,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0xFC,0x00,0x00,0x00,0x03,0x01,0x01,0x01,0x07,0x09,0x09,0x09,0x09,0x08,0x0E,0x00},/*"电",5*/ {0x00,0xFE,0x02,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x02,0x00,0x08,0x07,0x08,0x08,0x08,0x08,0x0F,0x08,0x09,0x0A,0x08,0x00},/*"压",6*/ {0x40,0x4A,0x52,0x42,0xC6,0xEA,0xC1,0x41,0x51,0x49,0x40,0x00,0x04,0x04,0x02,0x01,0x00,0x0F,0x00,0x01,0x02,0x04,0x04,0x00},/*"采",7*/ {0x08,0x04,0xFE,0xAB,0xAA,0xAA,0xFF,0xAA,0xAA,0xAA,0x82,0x00,0x0A,0x0A,0x06,0x02,0x02,0x0F,0x02,0x02,0x06,0x0A,0x0A,0x00},/*"集",8*/ {0x88,0x68,0xFF,0x28,0x40,0xFE,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x0F,0x08,0x04,0x03,0x00,0x00,0x07,0x08,0x0E,0x00},/*"机",9*/ {0x88,0xFF,0x48,0x00,0x4C,0xA4,0x95,0x86,0x94,0xA4,0x4C,0x00,0x08,0x0F,0x00,0x00,0x08,0x08,0x08,0x0F,0x08,0x08,0x08,0x00},/*"控",10*/ {0x18,0xD6,0x54,0xFF,0x54,0xD4,0x10,0xFC,0x00,0x00,0xFF,0x00,0x00,0x07,0x00,0x0F,0x04,0x07,0x00,0x01,0x08,0x08,0x0F,0x00},/*"制",11*/ {0x00,0x02,0xE2,0x02,0x02,0xFE,0x42,0x42,0x42,0x42,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x0F,0x08,0x08,0x08,0x08,0x08,0x00},/*"正",12*/ {0x74,0x4F,0xF4,0x40,0x24,0xE4,0xBC,0xA7,0xA4,0xA4,0x20,0x00,0x02,0x02,0x0F,0x01,0x00,0x02,0x02,0x04,0x06,0x09,0x00,0x00},/*"转",13*/ {0x00,0xFE,0x12,0x72,0x92,0x12,0x11,0x11,0x91,0x71,0x00,0x00,0x08,0x07,0x08,0x08,0x04,0x05,0x02,0x05,0x04,0x08,0x08,0x00}/*"反",14*/ }; /********************************************* 数组名 : PIXEL_BMP 功能 : 48X24图片点阵数据 编辑器 : Notepad 2 0:AVR 1:AD 2:MC 3:正转 *********************************************/ const prog_char PIXEL_BMP[ ][ 144 ] = { { // AVR 0x00,0x00,0x00,0x00,0x80,0xE0,0xFC,0xFF,0xFF,0xFF,0x7F,0xFF,0xFE,0xFC,0xF0,0xC1, 0x0F,0x7F,0xFF,0xFF,0xFE,0xF0,0xC0,0x00,0x00,0x00,0xC0,0xF8,0xFE,0xFF,0xFF,0x3F, 0x07,0xC1,0xF0,0xFE,0xFF,0xFF,0xFF,0x1F,0x07,0x8F,0xCF,0xFF,0xFF,0xFF,0xFE,0xFC, 0x00,0x80,0xF0,0xFC,0xFF,0xFF,0xFF,0x7F,0x7F,0x78,0x78,0x79,0x7F,0x7F,0xFF,0xFF, 0xFC,0xF0,0xC1,0x07,0x1F,0xFF,0xFF,0xFE,0xFC,0xFF,0xFF,0xFF,0x1F,0x07,0xC1,0xF0, 0xFE,0xFF,0xFF,0x3F,0x0F,0x0F,0x7F,0xFF,0xFF,0xFF,0xFF,0xE7,0x07,0x03,0x01,0x00, 0x02,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03, 0x03,0x03,0x03,0x03,0x00,0x00,0x03,0x1F,0x3F,0x1F,0x07,0x00,0x00,0x02,0x03,0x03, 0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00 }, { //AD 0x08,0x04,0xFE,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x70,0x1C,0x06,0x0E,0x3C,0xF0,0xC0,0x80,0x00,0x00, 0x00,0x00,0xFF,0xC0,0x70,0x18,0x0C,0x04,0x04,0x02,0x02,0x02,0x04,0x04,0x0C,0x18,0x10,0x30,0x20,0x60,0x40,0x40,0xC0,0x80, 0x80,0x80,0xC0,0x40,0x60,0x20,0x30,0x18,0x0E,0x00,0x04,0x06,0x27,0xE5,0xE1,0xE1,0x21,0x21,0x25,0x67,0xE7,0xC7,0x84,0x00, 0x00,0x00,0x3F,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xA8,0x70,0x20,0x80,0xFF,0xFF,0xFF,0x80,0x80,0xC0,0xC0,0xE0,0x7F,0x3F,0x1F }, { //M ctr 0xFF,0x01,0xE1,0xBD,0xBD,0xBD,0xBD,0xE1,0x01,0x01,0x01,0x01,0xFD,0xFD,0xFD,0xFD,0x01,0x01,0x01,0x01,0x01,0xFD,0xFD,0xFD, 0xFD,0x01,0x01,0x01,0x01,0x01,0xFF,0x02,0xFE,0xFE,0x3C,0x78,0xF0,0xE0,0xC0,0x80,0xC0,0x70,0x18,0xFC,0xFE,0xFE,0xFE,0x02, 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xC0,0x7F,0x7F,0x7F,0x7F,0xC0,0x00,0x00,0x00,0x07,0xFD,0xFD,0xFD, 0xFD,0x07,0x00,0x00,0x00,0x00,0xFF,0x40,0x7F,0x7F,0x40,0x00,0x00,0x01,0x03,0x01,0x00,0x00,0x40,0x7F,0x7F,0x7F,0x7F,0x40, 0xFF,0x80,0x80,0xBF,0xBF,0xBF,0xBF,0x80,0x80,0x80,0x80,0x81,0xBF,0xBF,0xBF,0xBF,0x81,0x80,0x80,0x80,0x80,0xBF,0xBF,0xBF, 0xBF,0x80,0x80,0x80,0x80,0x80,0xFF,0x00,0x7C,0x82,0x82,0x82,0x44,0x02,0x02,0xFE,0x02,0x02,0xFE,0x12,0x12,0x32,0xCC,0x00 }, { //正转图片 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8, 0xE8,0xFE,0xF4,0xE8,0x70,0x20,0x00,0x00,0xF8,0xF8,0xF8,0xF8,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x10,0x38,0x7C,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x00, 0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7C,0x38,0x10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x10,0x1F,0x1F,0x1F,0x00,0x00,0x04,0x0E,0x17,0x2F,0x7F,0x17, 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { //反转图片 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0xF8,0xF8,0xF8,0x00,0x00,0x20,0x70,0xE8,0xF4,0xFE,0xE8, 0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x08,0x1C,0x3E,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00, 0x00,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x3E,0x1C,0x08, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x10,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, 0x17,0x7F,0x2F,0x17,0x0E,0x04,0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x10,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 } }; #endif