当前位置:   article > 正文

【速成】蓝桥杯嵌入式省一教程:(二)LCD显示_lcd_displaystringline

lcd_displaystringline

在嵌入式开发中,屏幕显示是一个非常重要的功能。同时,其移植对于初学者来说较为复杂,需要较好地掌握I2C或SPI等通讯协议。然而,在蓝桥杯中,比赛方已经为我们提供了与LCD有关的库,这让我们能够简单方便地使用LCD屏幕。

在选手资源数据包中,官方为我们提供了液晶驱动参考程序。我们使用MDK5_LCD_HAL中的例程,其在Cube中的配置如下:

通过调用lcd.c(在Src文件夹中)、lcd.h、fonts.h(在Inc文件夹中),就可以方便地使用LCD屏幕进行显示。

下面是官方提供的LCD显示例程:

  1. LCD_Init(); //LCD初始化
  2. LCD_Clear(Blue); //使用蓝色清屏
  3. LCD_SetBackColor(Blue); //设置背景颜色为蓝色
  4. LCD_SetTextColor(White); //设置字体颜色为白色
  5. LCD_DisplayStringLine(Line0, (uint8_t *)" "); //文字显示
  6. LCD_DisplayStringLine(Line1, (uint8_t *)" ");
  7. LCD_DisplayStringLine(Line2, (uint8_t *)" LCD Test ");
  8. LCD_DisplayStringLine(Line3, (uint8_t *)" ");
  9. LCD_DisplayStringLine(Line4, (uint8_t *)" ");
  10. LCD_SetBackColor(White);
  11. LCD_SetTextColor(Blue);
  12. LCD_DisplayStringLine(Line5, (uint8_t *)" ");
  13. LCD_DisplayStringLine(Line6, (uint8_t *)" HAL LIB ");
  14. LCD_DisplayStringLine(Line7, (uint8_t *)" ");
  15. LCD_DisplayStringLine(Line8, (uint8_t *)" @80 ");
  16. LCD_DisplayStringLine(Line9, (uint8_t *)" ");

如果想要将某变量的值实时显示在LCD屏幕上,就要通过sprintf函数将变量赋值到一个字符串数组中,再通过LCD_DisplayStringLine函数该字符串数组。如:

  1. char text[20]; //定义一个字符串数组
  2. uint8_t year = 2024; //需要显示的变量
  3. sprintf(text, "%d lanqiao", year); //将变量赋值到字符串数组中(需要调用stdio.h)
  4. LCD_DisplayStringLine(Line0, (uint8_t *)text); //显示该字符串数组

这样就能在LCD屏幕上以指定的背景及字体颜色在第一行显示2024 lanqiao这些文字啦!

下面我们以第十四届省赛题为例,总结一下本文所讲内容:

 

  1. /* Cube自动生成的头文件引用 */
  2. #include "lcd.h"
  3. #include "fonts.h"
  4. int view = 0;
  5. char text[20];
  6. char M = 'H';
  7. int P = 32;
  8. double V = 68.3;
  9. int R = 1;
  10. int K = 1;
  11. int N = 20;
  12. double MH = 110.8;
  13. double ML = 38.2;
  14. int main(void)
  15. {
  16. /* Cube自动生成的初始化 */
  17. LCD_Init();
  18. LCD_Clear(Black);
  19. LCD_SetBackColor(Black);
  20. LCD_SetTextColor(White);
  21. while(1)
  22. {
  23. if (切换界面)
  24. {
  25. LCD_Clear(Black); //清屏
  26. view++;
  27. if (view > 2)
  28. {
  29. view = 0;
  30. {
  31. }
  32. if (view == 0) //数据界面
  33. {
  34. LCD_DisplayStringLine(Line1, (uint8_t *)" DATA ");
  35. sprintf(text, " M=%c ", M);
  36. LCD_DisplayStringLine(Line3, (uint8_t *)text);
  37. sprintf(text, " P=%d%% ", P);
  38. LCD_DisplayStringLine(Line4, (uint8_t *)text);
  39. sprintf(text, " V=%.1f ", V);
  40. LCD_DisplayStringLine(Line5, (uint8_t *)text);
  41. }
  42. else if (view == 1) //参数界面
  43. {
  44. LCD_DisplayStringLine(Line1, (uint8_t *)" PARA ");
  45. sprintf(text, " R=%d ", R);
  46. LCD_DisplayStringLine(Line3, (uint8_t *)text);
  47. sprintf(text, " K=%d ", K);
  48. LCD_DisplayStringLine(Line4, (uint8_t *)text);
  49. }
  50. else if (view == 2) //统计界面
  51. {
  52. LCD_DisplayStringLine(Line1, (uint8_t *)" RECD ");
  53. sprintf(text, " N=%d ", N);
  54. LCD_DisplayStringLine(Line3, (uint8_t *)text);
  55. sprintf(text, " MH=%.1f ", MH);
  56. LCD_DisplayStringLine(Line4, (uint8_t *)text);
  57. sprintf(text, " ML=%.1f ", V);
  58. LCD_DisplayStringLine(Line5, (uint8_t *)text);
  59. }
  60. }
  61. }

附录

sprintf函数的声明

  1. extern _ARMABI int sprintf(char * __restrict /*s*/, const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2)));
  2. /*
  3. * is equivalent to fprintf, except that the argument s specifies an array
  4. * into which the generated output is to be written, rather than to a
  5. * stream. A null character is written at the end of the characters written;
  6. * it is not counted as part of the returned sum.
  7. * Returns: the number of characters written to the array, not counting the
  8. * terminating null character.
  9. */

LCD电路原理图

LCD界面

lcd.c

  1. /*
  2. 程序说明: CT117E嵌入式竞赛板LCD驱动程序
  3. 软件环境: Keil uVision 4.10
  4. 硬件环境: CT117E嵌入式竞赛板
  5. 日 期: 2011-8-9
  6. */
  7. #include "lcd.h"
  8. #include "fonts.h"
  9. //#include "systick.h"
  10. static vu16 TextColor = 0x0000, BackColor = 0xFFFF;
  11. vu16 dummy;
  12. /*******************************************************************************
  13. * Function Name : Delay_LCD
  14. * Description : Inserts a delay time.
  15. * Input : nCount: specifies the delay time length.
  16. * Output : None
  17. * Return : None
  18. *******************************************************************************/
  19. void Delay_LCD(u16 n)
  20. {
  21. u16 i, j;
  22. for (i = 0; i < n; ++i)
  23. for(j = 0; j < 3000; ++j);
  24. }
  25. /*
  26. uC8230型液晶控制器寄存器配置
  27. */
  28. void REG_8230_Init(void)
  29. {
  30. LCD_WriteReg(0x0000, 0x0001);
  31. Delay_LCD(1000);
  32. LCD_WriteReg(0x0001, 0x0000);
  33. LCD_WriteReg(0x0010, 0x1790);
  34. LCD_WriteReg(0x0060, 0x2700);
  35. LCD_WriteReg(0x0061, 0x0001);
  36. LCD_WriteReg(0x0046, 0x0002);
  37. LCD_WriteReg(0x0013, 0x8010);
  38. LCD_WriteReg(0x0012, 0x80fe);
  39. LCD_WriteReg(0x0002, 0x0500);
  40. LCD_WriteReg(0x0003, 0x1030);
  41. LCD_WriteReg(0x0030, 0x0303);
  42. LCD_WriteReg(0x0031, 0x0303);
  43. LCD_WriteReg(0x0032, 0x0303);
  44. LCD_WriteReg(0x0033, 0x0300);
  45. LCD_WriteReg(0x0034, 0x0003);
  46. LCD_WriteReg(0x0035, 0x0303);
  47. LCD_WriteReg(0x0036, 0x0014);
  48. LCD_WriteReg(0x0037, 0x0303);
  49. LCD_WriteReg(0x0038, 0x0303);
  50. LCD_WriteReg(0x0039, 0x0303);
  51. LCD_WriteReg(0x003a, 0x0300);
  52. LCD_WriteReg(0x003b, 0x0003);
  53. LCD_WriteReg(0x003c, 0x0303);
  54. LCD_WriteReg(0x003d, 0x1400);
  55. LCD_WriteReg(0x0092, 0x0200);
  56. LCD_WriteReg(0x0093, 0x0303);
  57. LCD_WriteReg(0x0090, 0x080d);
  58. LCD_WriteReg(0x0003, 0x1018);
  59. LCD_WriteReg(0x0007, 0x0173);
  60. }
  61. void REG_932X_Init(void)
  62. {
  63. LCD_WriteReg(R227, 0x3008); // Set internal timing
  64. LCD_WriteReg(R231, 0x0012); // Set internal timing
  65. LCD_WriteReg(R239, 0x1231); // Set internal timing
  66. LCD_WriteReg(R1, 0x0000); // set SS and SM bit //0x0100
  67. LCD_WriteReg(R2, 0x0700); // set 1 line inversion
  68. LCD_WriteReg(R3, 0x1030); // set GRAM write direction and BGR=1.
  69. LCD_WriteReg(R4, 0x0000); // Resize register
  70. LCD_WriteReg(R8, 0x0207); // set the back porch and front porch
  71. LCD_WriteReg(R9, 0x0000); // set non-display area refresh cycle ISC[3:0]
  72. LCD_WriteReg(R10, 0x0000); // FMARK function
  73. LCD_WriteReg(R12, 0x0000); // RGB interface setting
  74. LCD_WriteReg(R13, 0x0000); // Frame marker Position
  75. LCD_WriteReg(R15, 0x0000); // RGB interface polarity
  76. /**************Power On sequence ****************/
  77. LCD_WriteReg(R16, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
  78. LCD_WriteReg(R17, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
  79. LCD_WriteReg(R18, 0x0000); // VREG1OUT voltage
  80. LCD_WriteReg(R19, 0x0000); // VDV[4:0] for VCOM amplitude
  81. // Delay_Ms(200); // Delay 200 MS , Dis-charge capacitor power voltage
  82. HAL_Delay(200);
  83. LCD_WriteReg(R16, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB
  84. LCD_WriteReg(R17, 0x0227); // R11H=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0]
  85. // Delay_Ms(50); // Delay 50ms
  86. HAL_Delay(50);
  87. LCD_WriteReg(R18, 0x001D); // External reference voltage= Vci;
  88. // Delay_Ms(50); // Delay 50ms
  89. HAL_Delay(50);
  90. LCD_WriteReg(R19, 0x0800); // R13H=1D00 when R12H=009D;VDV[4:0] for VCOM amplitude
  91. LCD_WriteReg(R41, 0x0014); // R29H=0013 when R12H=009D;VCM[5:0] for VCOMH
  92. LCD_WriteReg(R43, 0x000B); // Frame Rate = 96Hz
  93. // Delay_Ms(50); // Delay 50ms
  94. HAL_Delay(50);
  95. LCD_WriteReg(R32, 0x0000); // GRAM horizontal Address
  96. LCD_WriteReg(R33, 0x0000); // GRAM Vertical Address
  97. /* ----------- Adjust the Gamma Curve ---------- */
  98. LCD_WriteReg(R48, 0x0007);
  99. LCD_WriteReg(R49, 0x0707);
  100. LCD_WriteReg(R50, 0x0006);
  101. LCD_WriteReg(R53, 0x0704);
  102. LCD_WriteReg(R54, 0x1F04);
  103. LCD_WriteReg(R55, 0x0004);
  104. LCD_WriteReg(R56, 0x0000);
  105. LCD_WriteReg(R57, 0x0706);
  106. LCD_WriteReg(R60, 0x0701);
  107. LCD_WriteReg(R61, 0x000F);
  108. /* ------------------ Set GRAM area --------------- */
  109. LCD_WriteReg(R80, 0x0000); // Horizontal GRAM Start Address
  110. LCD_WriteReg(R81, 0x00EF); // Horizontal GRAM End Address
  111. LCD_WriteReg(R82, 0x0000); // Vertical GRAM Start Address
  112. LCD_WriteReg(R83, 0x013F); // Vertical GRAM Start Address
  113. LCD_WriteReg(R96, 0x2700); // Gate Scan Line 0xA700
  114. LCD_WriteReg(R97, 0x0001); // NDL,VLE, REV
  115. LCD_WriteReg(R106, 0x0000); // set scrolling line
  116. /* -------------- Partial Display Control --------- */
  117. LCD_WriteReg(R128, 0x0000);
  118. LCD_WriteReg(R129, 0x0000);
  119. LCD_WriteReg(R130, 0x0000);
  120. LCD_WriteReg(R131, 0x0000);
  121. LCD_WriteReg(R132, 0x0000);
  122. LCD_WriteReg(R133, 0x0000);
  123. /* -------------- Panel Control ------------------- */
  124. LCD_WriteReg(R144, 0x0010);
  125. LCD_WriteReg(R146, 0x0000);
  126. LCD_WriteReg(R147, 0x0003);
  127. LCD_WriteReg(R149, 0x0110);
  128. LCD_WriteReg(R151, 0x0000);
  129. LCD_WriteReg(R152, 0x0000);
  130. /* Set GRAM write direction and BGR = 1 */
  131. /* I/D=01 (Horizontal : increment, Vertical : decrement) */
  132. /* AM=1 (address is updated in vertical writing direction) */
  133. LCD_WriteReg(R3, 0x01018); //0x1018
  134. LCD_WriteReg(R7, 0x0173); // 262K color and display ON
  135. }
  136. /*******************************************************************************
  137. * Function Name : STM3210B_LCD_Init
  138. * Description : Initializes the LCD.
  139. * Input : None
  140. * Output : None
  141. * Return : None
  142. *******************************************************************************/
  143. void LCD_Init(void)
  144. {
  145. LCD_CtrlLinesConfig();
  146. dummy = LCD_ReadReg(0);
  147. if(dummy == 0x8230)
  148. {
  149. REG_8230_Init();
  150. }
  151. else
  152. {
  153. REG_932X_Init();
  154. }
  155. dummy = LCD_ReadReg(0);
  156. }
  157. /*******************************************************************************
  158. * Function Name : LCD_SetTextColor
  159. * Description : Sets the Text color.
  160. * Input : - Color: specifies the Text color code RGB(5-6-5).
  161. * Output : - TextColor: Text color global variable used by LCD_DrawChar
  162. * and LCD_DrawPicture functions.
  163. * Return : None
  164. *******************************************************************************/
  165. void LCD_SetTextColor(vu16 Color)
  166. {
  167. TextColor = Color;
  168. }
  169. /*******************************************************************************
  170. * Function Name : LCD_SetBackColor
  171. * Description : Sets the Background color.
  172. * Input : - Color: specifies the Background color code RGB(5-6-5).
  173. * Output : - BackColor: Background color global variable used by
  174. * LCD_DrawChar and LCD_DrawPicture functions.
  175. * Return : None
  176. *******************************************************************************/
  177. void LCD_SetBackColor(vu16 Color)
  178. {
  179. BackColor = Color;
  180. }
  181. /*******************************************************************************
  182. * Function Name : LCD_ClearLine
  183. * Description : Clears the selected line.
  184. * Input : - Line: the Line to be cleared.
  185. * This parameter can be one of the following values:
  186. * - Linex: where x can be 0..9
  187. * Output : None
  188. * Return : None
  189. *******************************************************************************/
  190. void LCD_ClearLine(u8 Line)
  191. {
  192. LCD_DisplayStringLine(Line, " ");
  193. }
  194. /*******************************************************************************
  195. * Function Name : LCD_Clear
  196. * Description : Clears the hole LCD.
  197. * Input : Color: the color of the background.
  198. * Output : None
  199. * Return : None
  200. *******************************************************************************/
  201. void LCD_Clear(u16 Color)
  202. {
  203. u32 index = 0;
  204. LCD_SetCursor(0x00, 0x0000);
  205. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  206. for(index = 0; index < 76800; index++)
  207. {
  208. LCD_WriteRAM(Color);
  209. }
  210. }
  211. /*******************************************************************************
  212. * Function Name : LCD_SetCursor
  213. * Description : Sets the cursor position.
  214. * Input : - Xpos: specifies the X position.
  215. * - Ypos: specifies the Y position.
  216. * Output : None
  217. * Return : None
  218. *******************************************************************************/
  219. void LCD_SetCursor(u8 Xpos, u16 Ypos)
  220. {
  221. LCD_WriteReg(R32, Xpos);
  222. LCD_WriteReg(R33, Ypos);
  223. }
  224. /*******************************************************************************
  225. * Function Name : LCD_DrawChar
  226. * Description : Draws a character on LCD.
  227. * Input : - Xpos: the Line where to display the character shape.
  228. * This parameter can be one of the following values:
  229. * - Linex: where x can be 0..9
  230. * - Ypos: start column address.
  231. * - c: pointer to the character data.
  232. * Output : None
  233. * Return : None
  234. *******************************************************************************/
  235. void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c)
  236. {
  237. u32 index = 0, i = 0;
  238. u8 Xaddress = 0;
  239. Xaddress = Xpos;
  240. LCD_SetCursor(Xaddress, Ypos);
  241. for(index = 0; index < 24; index++)
  242. {
  243. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  244. for(i = 0; i < 16; i++)
  245. {
  246. if((c[index] & (1 << i)) == 0x00)
  247. {
  248. LCD_WriteRAM(BackColor);
  249. }
  250. else
  251. {
  252. LCD_WriteRAM(TextColor);
  253. }
  254. }
  255. Xaddress++;
  256. LCD_SetCursor(Xaddress, Ypos);
  257. }
  258. }
  259. /*******************************************************************************
  260. * Function Name : LCD_DisplayChar
  261. * Description : Displays one character (16dots width, 24dots height).
  262. * Input : - Line: the Line where to display the character shape .
  263. * This parameter can be one of the following values:
  264. * - Linex: where x can be 0..9
  265. * - Column: start column address.
  266. * - Ascii: character ascii code, must be between 0x20 and 0x7E.
  267. * Output : None
  268. * Return : None
  269. *******************************************************************************/
  270. void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii)
  271. {
  272. Ascii -= 32;
  273. LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]);
  274. }
  275. /*******************************************************************************
  276. * Function Name : LCD_DisplayStringLine
  277. * Description : Displays a maximum of 20 char on the LCD.
  278. * Input : - Line: the Line where to display the character shape .
  279. * This parameter can be one of the following values:
  280. * - Linex: where x can be 0..9
  281. * - *ptr: pointer to string to display on LCD.
  282. * Output : None
  283. * Return : None
  284. *******************************************************************************/
  285. void LCD_DisplayStringLine(u8 Line, u8 *ptr)
  286. {
  287. u32 i = 0;
  288. u16 refcolumn = 319;//319;
  289. while ((*ptr != 0) && (i < 20)) // 20
  290. {
  291. LCD_DisplayChar(Line, refcolumn, *ptr);
  292. refcolumn -= 16;
  293. ptr++;
  294. i++;
  295. }
  296. }
  297. /*******************************************************************************
  298. * Function Name : LCD_SetDisplayWindow
  299. * Description : Sets a display window
  300. * Input : - Xpos: specifies the X buttom left position.
  301. * - Ypos: specifies the Y buttom left position.
  302. * - Height: display window height.
  303. * - Width: display window width.
  304. * Output : None
  305. * Return : None
  306. *******************************************************************************/
  307. void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
  308. {
  309. if(Xpos >= Height)
  310. {
  311. LCD_WriteReg(R80, (Xpos - Height + 1));
  312. }
  313. else
  314. {
  315. LCD_WriteReg(R80, 0);
  316. }
  317. LCD_WriteReg(R81, Xpos);
  318. if(Ypos >= Width)
  319. {
  320. LCD_WriteReg(R82, (Ypos - Width + 1));
  321. }
  322. else
  323. {
  324. LCD_WriteReg(R82, 0);
  325. }
  326. /* Vertical GRAM End Address */
  327. LCD_WriteReg(R83, Ypos);
  328. LCD_SetCursor(Xpos, Ypos);
  329. }
  330. /*******************************************************************************
  331. * Function Name : LCD_WindowModeDisable
  332. * Description : Disables LCD Window mode.
  333. * Input : None
  334. * Output : None
  335. * Return : None
  336. *******************************************************************************/
  337. void LCD_WindowModeDisable(void)
  338. {
  339. LCD_SetDisplayWindow(239, 0x13F, 240, 320);
  340. LCD_WriteReg(R3, 0x1018);
  341. }
  342. /*******************************************************************************
  343. * Function Name : LCD_DrawLine
  344. * Description : Displays a line.
  345. * Input : - Xpos: specifies the X position.
  346. * - Ypos: specifies the Y position.
  347. * - Length: line length.
  348. * - Direction: line direction.
  349. * This parameter can be one of the following values: Vertical
  350. * or Horizontal.
  351. * Output : None
  352. * Return : None
  353. *******************************************************************************/
  354. void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction)
  355. {
  356. u32 i = 0;
  357. LCD_SetCursor(Xpos, Ypos);
  358. if(Direction == Horizontal)
  359. {
  360. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  361. for(i = 0; i < Length; i++)
  362. {
  363. LCD_WriteRAM(TextColor);
  364. }
  365. }
  366. else
  367. {
  368. for(i = 0; i < Length; i++)
  369. {
  370. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  371. LCD_WriteRAM(TextColor);
  372. Xpos++;
  373. LCD_SetCursor(Xpos, Ypos);
  374. }
  375. }
  376. }
  377. /*******************************************************************************
  378. * Function Name : LCD_DrawRect
  379. * Description : Displays a rectangle.
  380. * Input : - Xpos: specifies the X position.
  381. * - Ypos: specifies the Y position.
  382. * - Height: display rectangle height.
  383. * - Width: display rectangle width.
  384. * Output : None
  385. * Return : None
  386. *******************************************************************************/
  387. void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width)
  388. {
  389. LCD_DrawLine(Xpos, Ypos, Width, Horizontal);
  390. LCD_DrawLine((Xpos + Height), Ypos, Width, Horizontal);
  391. LCD_DrawLine(Xpos, Ypos, Height, Vertical);
  392. LCD_DrawLine(Xpos, (Ypos - Width + 1), Height, Vertical);
  393. }
  394. /*******************************************************************************
  395. * Function Name : LCD_DrawCircle
  396. * Description : Displays a circle.
  397. * Input : - Xpos: specifies the X position.
  398. * - Ypos: specifies the Y position.
  399. * - Height: display rectangle height.
  400. * - Width: display rectangle width.
  401. * Output : None
  402. * Return : None
  403. *******************************************************************************/
  404. void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius)
  405. {
  406. s32 D;
  407. u32 CurX;
  408. u32 CurY;
  409. D = 3 - (Radius << 1);
  410. CurX = 0;
  411. CurY = Radius;
  412. while (CurX <= CurY)
  413. {
  414. LCD_SetCursor(Xpos + CurX, Ypos + CurY);
  415. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  416. LCD_WriteRAM(TextColor);
  417. LCD_SetCursor(Xpos + CurX, Ypos - CurY);
  418. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  419. LCD_WriteRAM(TextColor);
  420. LCD_SetCursor(Xpos - CurX, Ypos + CurY);
  421. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  422. LCD_WriteRAM(TextColor);
  423. LCD_SetCursor(Xpos - CurX, Ypos - CurY);
  424. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  425. LCD_WriteRAM(TextColor);
  426. LCD_SetCursor(Xpos + CurY, Ypos + CurX);
  427. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  428. LCD_WriteRAM(TextColor);
  429. LCD_SetCursor(Xpos + CurY, Ypos - CurX);
  430. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  431. LCD_WriteRAM(TextColor);
  432. LCD_SetCursor(Xpos - CurY, Ypos + CurX);
  433. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  434. LCD_WriteRAM(TextColor);
  435. LCD_SetCursor(Xpos - CurY, Ypos - CurX);
  436. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  437. LCD_WriteRAM(TextColor);
  438. if (D < 0)
  439. {
  440. D += (CurX << 2) + 6;
  441. }
  442. else
  443. {
  444. D += ((CurX - CurY) << 2) + 10;
  445. CurY--;
  446. }
  447. CurX++;
  448. }
  449. }
  450. /*******************************************************************************
  451. * Function Name : LCD_DrawMonoPict
  452. * Description : Displays a monocolor picture.
  453. * Input : - Pict: pointer to the picture array.
  454. * Output : None
  455. * Return : None
  456. *******************************************************************************/
  457. void LCD_DrawMonoPict(uc32 *Pict)
  458. {
  459. u32 index = 0, i = 0;
  460. LCD_SetCursor(0, 319);
  461. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  462. for(index = 0; index < 2400; index++)
  463. {
  464. for(i = 0; i < 32; i++)
  465. {
  466. if((Pict[index] & (1 << i)) == 0x00)
  467. {
  468. LCD_WriteRAM(BackColor);
  469. }
  470. else
  471. {
  472. LCD_WriteRAM(TextColor);
  473. }
  474. }
  475. }
  476. }
  477. /*******************************************************************************
  478. * Function Name : LCD_WriteBMP
  479. * Description : Displays a bitmap picture loaded in the internal Flash.
  480. * Input : - BmpAddress: Bmp picture address in the internal Flash.
  481. * Output : None
  482. * Return : None
  483. *******************************************************************************/
  484. void LCD_WriteBMP(u32 BmpAddress)
  485. {
  486. u32 index = 0, size = 0;
  487. size = *(vu16 *) (BmpAddress + 2);
  488. size |= (*(vu16 *) (BmpAddress + 4)) << 16;
  489. index = *(vu16 *) (BmpAddress + 10);
  490. index |= (*(vu16 *) (BmpAddress + 12)) << 16;
  491. size = (size - index) / 2;
  492. BmpAddress += index;
  493. LCD_WriteReg(R3, 0x1008);
  494. LCD_WriteRAM_Prepare();
  495. for(index = 0; index < size; index++)
  496. {
  497. LCD_WriteRAM(*(vu16 *)BmpAddress);
  498. BmpAddress += 2;
  499. }
  500. LCD_WriteReg(R3, 0x1018);
  501. }
  502. /*******************************************************************************
  503. * Function Name : LCD_WriteReg
  504. * Description : Writes to the selected LCD register.
  505. * Input : - LCD_Reg: address of the selected register.
  506. * - LCD_RegValue: value to write to the selected register.
  507. * Output : None
  508. * Return : None
  509. *******************************************************************************/
  510. void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
  511. {
  512. GPIOB->BRR |= GPIO_PIN_9;
  513. GPIOB->BRR |= GPIO_PIN_8;
  514. GPIOB->BSRR |= GPIO_PIN_5;
  515. GPIOC->ODR = LCD_Reg;
  516. GPIOB->BRR |= GPIO_PIN_5;
  517. __nop();
  518. __nop();
  519. __nop();
  520. GPIOB->BSRR |= GPIO_PIN_5;
  521. GPIOB->BSRR |= GPIO_PIN_8;
  522. GPIOC->ODR = LCD_RegValue;
  523. GPIOB->BRR |= GPIO_PIN_5;
  524. __nop();
  525. __nop();
  526. __nop();
  527. GPIOB->BSRR |= GPIO_PIN_5;
  528. GPIOB->BSRR |= GPIO_PIN_8;
  529. }
  530. /*******************************************************************************
  531. * Function Name : LCD_ReadReg
  532. * Description : Reads the selected LCD Register.
  533. * Input : None
  534. * Output : None
  535. * Return : LCD Register Value.
  536. *******************************************************************************/
  537. u16 LCD_ReadReg(u8 LCD_Reg)
  538. {
  539. u16 temp;
  540. GPIOB->BRR |= GPIO_PIN_9;
  541. GPIOB->BRR |= GPIO_PIN_8;
  542. GPIOB->BSRR |= GPIO_PIN_5;
  543. GPIOC->ODR = LCD_Reg;
  544. GPIOB->BRR |= GPIO_PIN_5;
  545. __nop();
  546. __nop();
  547. __nop();
  548. GPIOB->BSRR |= GPIO_PIN_5;
  549. GPIOB->BSRR |= GPIO_PIN_8;
  550. LCD_BusIn();
  551. GPIOA->BRR |= GPIO_PIN_8;
  552. __nop();
  553. __nop();
  554. __nop();
  555. temp = GPIOC->IDR;
  556. GPIOA->BSRR |= GPIO_PIN_8;
  557. LCD_BusOut();
  558. GPIOB->BSRR |= GPIO_PIN_9;
  559. return temp;
  560. }
  561. /*******************************************************************************
  562. * Function Name : LCD_WriteRAM_Prepare
  563. * Description : Prepare to write to the LCD RAM.
  564. * Input : None
  565. * Output : None
  566. * Return : None
  567. *******************************************************************************/
  568. void LCD_WriteRAM_Prepare(void)
  569. {
  570. GPIOB->BRR |= GPIO_PIN_9;
  571. GPIOB->BRR |= GPIO_PIN_8;
  572. GPIOB->BSRR |= GPIO_PIN_5;
  573. GPIOC->ODR = R34;
  574. GPIOB->BRR |= GPIO_PIN_5;
  575. __nop();
  576. __nop();
  577. __nop();
  578. GPIOB->BSRR |= GPIO_PIN_5;
  579. GPIOB->BSRR |= GPIO_PIN_8;
  580. __nop();
  581. __nop();
  582. __nop();
  583. GPIOB->BSRR |= GPIO_PIN_9;
  584. }
  585. /*******************************************************************************
  586. * Function Name : LCD_WriteRAM
  587. * Description : Writes to the LCD RAM.
  588. * Input : - RGB_Code: the pixel color in RGB mode (5-6-5).
  589. * Output : None
  590. * Return : None
  591. *******************************************************************************/
  592. void LCD_WriteRAM(u16 RGB_Code)
  593. {
  594. GPIOB->BRR |= GPIO_PIN_9;
  595. GPIOB->BSRR |= GPIO_PIN_8;
  596. GPIOB->BSRR |= GPIO_PIN_5;
  597. GPIOC->ODR = RGB_Code;
  598. GPIOB->BRR |= GPIO_PIN_5;
  599. __nop();
  600. __nop();
  601. __nop();
  602. GPIOB->BSRR |= GPIO_PIN_5;
  603. GPIOB->BSRR |= GPIO_PIN_8;
  604. __nop();
  605. __nop();
  606. __nop();
  607. GPIOB->BSRR |= GPIO_PIN_9;
  608. }
  609. /*******************************************************************************
  610. * Function Name : LCD_ReadRAM
  611. * Description : Reads the LCD RAM.
  612. * Input : None
  613. * Output : None
  614. * Return : LCD RAM Value.
  615. *******************************************************************************/
  616. u16 LCD_ReadRAM(void)
  617. {
  618. u16 temp;
  619. GPIOB->BRR |= GPIO_PIN_9;
  620. GPIOB->BRR |= GPIO_PIN_8;
  621. GPIOB->BSRR |= GPIO_PIN_5;
  622. GPIOC->ODR = R34;
  623. GPIOB->BRR |= GPIO_PIN_5;
  624. __nop();
  625. __nop();
  626. __nop();
  627. GPIOB->BSRR |= GPIO_PIN_5;
  628. GPIOB->BSRR |= GPIO_PIN_8;
  629. LCD_BusIn();
  630. GPIOA->BRR |= GPIO_PIN_8;
  631. __nop();
  632. __nop();
  633. __nop();
  634. temp = GPIOC->IDR;
  635. GPIOA->BSRR |= GPIO_PIN_8;
  636. LCD_BusOut();
  637. GPIOB->BSRR |= GPIO_PIN_9;
  638. return temp;
  639. }
  640. /*******************************************************************************
  641. * Function Name : LCD_PowerOn
  642. * Description : Power on the LCD.
  643. * Input : None
  644. * Output : None
  645. * Return : None
  646. *******************************************************************************/
  647. void LCD_PowerOn(void)
  648. {
  649. LCD_WriteReg(R16, 0x0000);
  650. LCD_WriteReg(R17, 0x0000);
  651. LCD_WriteReg(R18, 0x0000);
  652. LCD_WriteReg(R19, 0x0000);
  653. Delay_LCD(20);
  654. LCD_WriteReg(R16, 0x17B0);
  655. LCD_WriteReg(R17, 0x0137);
  656. Delay_LCD(5);
  657. LCD_WriteReg(R18, 0x0139);
  658. Delay_LCD(5);
  659. LCD_WriteReg(R19, 0x1d00);
  660. LCD_WriteReg(R41, 0x0013);
  661. Delay_LCD(5);
  662. LCD_WriteReg(R7, 0x0173);
  663. }
  664. /*******************************************************************************
  665. * Function Name : LCD_DisplayOn
  666. * Description : Enables the Display.
  667. * Input : None
  668. * Output : None
  669. * Return : None
  670. *******************************************************************************/
  671. void LCD_DisplayOn(void)
  672. {
  673. LCD_WriteReg(R7, 0x0173);
  674. }
  675. /*******************************************************************************
  676. * Function Name : LCD_DisplayOff
  677. * Description : Disables the Display.
  678. * Input : None
  679. * Output : None
  680. * Return : None
  681. *******************************************************************************/
  682. void LCD_DisplayOff(void)
  683. {
  684. LCD_WriteReg(R7, 0x0);
  685. }
  686. /*******************************************************************************
  687. * Function Name : LCD_CtrlLinesConfig
  688. * Description : Configures LCD Control lines.
  689. Push-Pull mode.
  690. * Input : None
  691. * Output : None
  692. * Return : None
  693. *******************************************************************************/
  694. void LCD_CtrlLinesConfig(void)
  695. {
  696. GPIO_InitTypeDef GPIO_InitStruct = {0};
  697. __HAL_RCC_GPIOC_CLK_ENABLE();
  698. __HAL_RCC_GPIOA_CLK_ENABLE();
  699. __HAL_RCC_GPIOB_CLK_ENABLE();
  700. GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_9;
  701. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  702. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  703. GPIO_InitStruct.Pull = GPIO_NOPULL;
  704. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  705. GPIO_InitStruct.Pin = GPIO_PIN_8 ;
  706. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  707. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  708. GPIO_InitStruct.Pull = GPIO_NOPULL;
  709. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  710. LCD_BusOut();
  711. GPIOA->BSRR |= 0x0100;
  712. GPIOB->BSRR |= 0x0220;
  713. }
  714. /*******************************************************************************
  715. * Function Name : LCD_BusIn
  716. * Description : Configures the Parallel interface for LCD(PortC)
  717. * Input : None
  718. * Output : None
  719. * Return : None
  720. *******************************************************************************/
  721. void LCD_BusIn(void)
  722. {
  723. GPIO_InitTypeDef GPIO_InitStruct = {0};
  724. GPIO_InitStruct.Pin = GPIO_PIN_All;
  725. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  726. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  727. GPIO_InitStruct.Pull = GPIO_NOPULL;
  728. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  729. }
  730. /*******************************************************************************
  731. * Function Name : LCD_BusOut
  732. * Description : Configures the Parallel interface for LCD(PortC)
  733. * Input : None
  734. * Output : None
  735. * Return : None
  736. *******************************************************************************/
  737. void LCD_BusOut(void)
  738. {
  739. GPIO_InitTypeDef GPIO_InitStruct = {0};
  740. GPIO_InitStruct.Pin = GPIO_PIN_All;
  741. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  742. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  743. GPIO_InitStruct.Pull = GPIO_NOPULL;
  744. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  745. }
  746. /*******************************************************************************
  747. * Function Name : LCD_DrawPicture
  748. * Description : Displays a 16 color picture.
  749. * Input : - picture: pointer to the picture array.
  750. * Output : None
  751. * Return : None
  752. *******************************************************************************/
  753. void LCD_DrawPicture(const u8 *picture)
  754. {
  755. int index;
  756. LCD_SetCursor(0x00, 0x0000);
  757. LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
  758. for(index = 0; index < 76800; index++)
  759. {
  760. LCD_WriteRAM(picture[2 * index + 1] << 8 | picture[2 * index]);
  761. }
  762. }

lcd.h

  1. /*
  2. 程序说明: CT117E嵌入式竞赛板LCD驱动程序
  3. 软件环境: Keil uVision 4.10
  4. 硬件环境: CT117E嵌入式竞赛板
  5. 日 期: 2011-8-9
  6. */
  7. /* Define to prevent recursive inclusion -------------------------------------*/
  8. #ifndef __LCD_H
  9. #define __LCD_H
  10. /* Includes ------------------------------------------------------------------*/
  11. #include "main.h"
  12. /* Exported types ------------------------------------------------------------*/
  13. /* Exported constants --------------------------------------------------------*/
  14. /* LCD Registers */
  15. #define R0 0x00
  16. #define R1 0x01
  17. #define R2 0x02
  18. #define R3 0x03
  19. #define R4 0x04
  20. #define R5 0x05
  21. #define R6 0x06
  22. #define R7 0x07
  23. #define R8 0x08
  24. #define R9 0x09
  25. #define R10 0x0A
  26. #define R12 0x0C
  27. #define R13 0x0D
  28. #define R14 0x0E
  29. #define R15 0x0F
  30. #define R16 0x10
  31. #define R17 0x11
  32. #define R18 0x12
  33. #define R19 0x13
  34. #define R20 0x14
  35. #define R21 0x15
  36. #define R22 0x16
  37. #define R23 0x17
  38. #define R24 0x18
  39. #define R25 0x19
  40. #define R26 0x1A
  41. #define R27 0x1B
  42. #define R28 0x1C
  43. #define R29 0x1D
  44. #define R30 0x1E
  45. #define R31 0x1F
  46. #define R32 0x20
  47. #define R33 0x21
  48. #define R34 0x22
  49. #define R36 0x24
  50. #define R37 0x25
  51. #define R40 0x28
  52. #define R41 0x29
  53. #define R43 0x2B
  54. #define R45 0x2D
  55. #define R48 0x30
  56. #define R49 0x31
  57. #define R50 0x32
  58. #define R51 0x33
  59. #define R52 0x34
  60. #define R53 0x35
  61. #define R54 0x36
  62. #define R55 0x37
  63. #define R56 0x38
  64. #define R57 0x39
  65. #define R59 0x3B
  66. #define R60 0x3C
  67. #define R61 0x3D
  68. #define R62 0x3E
  69. #define R63 0x3F
  70. #define R64 0x40
  71. #define R65 0x41
  72. #define R66 0x42
  73. #define R67 0x43
  74. #define R68 0x44
  75. #define R69 0x45
  76. #define R70 0x46
  77. #define R71 0x47
  78. #define R72 0x48
  79. #define R73 0x49
  80. #define R74 0x4A
  81. #define R75 0x4B
  82. #define R76 0x4C
  83. #define R77 0x4D
  84. #define R78 0x4E
  85. #define R79 0x4F
  86. #define R80 0x50
  87. #define R81 0x51
  88. #define R82 0x52
  89. #define R83 0x53
  90. #define R96 0x60
  91. #define R97 0x61
  92. #define R106 0x6A
  93. #define R118 0x76
  94. #define R128 0x80
  95. #define R129 0x81
  96. #define R130 0x82
  97. #define R131 0x83
  98. #define R132 0x84
  99. #define R133 0x85
  100. #define R134 0x86
  101. #define R135 0x87
  102. #define R136 0x88
  103. #define R137 0x89
  104. #define R139 0x8B
  105. #define R140 0x8C
  106. #define R141 0x8D
  107. #define R143 0x8F
  108. #define R144 0x90
  109. #define R145 0x91
  110. #define R146 0x92
  111. #define R147 0x93
  112. #define R148 0x94
  113. #define R149 0x95
  114. #define R150 0x96
  115. #define R151 0x97
  116. #define R152 0x98
  117. #define R153 0x99
  118. #define R154 0x9A
  119. #define R157 0x9D
  120. #define R192 0xC0
  121. #define R193 0xC1
  122. #define R227 0xE3
  123. #define R229 0xE5
  124. #define R231 0xE7
  125. #define R239 0xEF
  126. /* LCD Control pins */
  127. //#define CtrlPin_NCS GPIO_Pin_9 /* PB.9 */
  128. //#define CtrlPin_RS GPIO_Pin_8 /* PB.8 */
  129. //#define CtrlPin_NWR GPIO_Pin_5 /* Pb.5 */
  130. //#define CtrlPin_NRD GPIO_Pin_10 /* Pb.10 */
  131. /* LCD color */
  132. #define White 0xFFFF
  133. #define Black 0x0000
  134. #define Grey 0xF7DE
  135. #define Blue 0x001F
  136. #define Blue2 0x051F
  137. #define Red 0xF800
  138. #define Magenta 0xF81F
  139. #define Green 0x07E0
  140. #define Cyan 0x7FFF
  141. #define Yellow 0xFFE0
  142. #define Line0 0
  143. #define Line1 24
  144. #define Line2 48
  145. #define Line3 72
  146. #define Line4 96
  147. #define Line5 120
  148. #define Line6 144
  149. #define Line7 168
  150. #define Line8 192
  151. #define Line9 216
  152. #define Horizontal 0x00
  153. #define Vertical 0x01
  154. /* Exported macro ------------------------------------------------------------*/
  155. /* Exported functions ------------------------------------------------------- */
  156. /*----- High layer function -----*/
  157. typedef int32_t s32;
  158. typedef int16_t s16;
  159. typedef int8_t s8;
  160. typedef __IO uint32_t vu32;
  161. typedef __IO uint16_t vu16;
  162. typedef __IO uint8_t vu8;
  163. typedef uint32_t u32;
  164. typedef uint16_t u16;
  165. typedef uint8_t u8;
  166. typedef const uint32_t uc32; /*!< Read Only */
  167. typedef const uint16_t uc16; /*!< Read Only */
  168. typedef const uint8_t uc8; /*!< Read Only */
  169. void LCD_Init(void);
  170. void LCD_SetTextColor(vu16 Color);
  171. void LCD_SetBackColor(vu16 Color);
  172. void LCD_ClearLine(u8 Line);
  173. void LCD_Clear(u16 Color);
  174. void LCD_SetCursor(u8 Xpos, u16 Ypos);
  175. void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c);
  176. void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);
  177. void LCD_DisplayStringLine(u8 Line, u8 *ptr);
  178. void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width);
  179. void LCD_WindowModeDisable(void);
  180. void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction);
  181. void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width);
  182. void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius);
  183. void LCD_DrawMonoPict(uc32 *Pict);
  184. void LCD_WriteBMP(u32 BmpAddress);
  185. void LCD_DrawBMP(u32 BmpAddress);
  186. void LCD_DrawPicture(const u8 *picture);
  187. /*----- Medium layer function -----*/
  188. void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);
  189. u16 LCD_ReadReg(u8 LCD_Reg);
  190. void LCD_WriteRAM_Prepare(void);
  191. void LCD_WriteRAM(u16 RGB_Code);
  192. u16 LCD_ReadRAM(void);
  193. void LCD_PowerOn(void);
  194. void LCD_DisplayOn(void);
  195. void LCD_DisplayOff(void);
  196. /*----- Low layer function -----*/
  197. void LCD_CtrlLinesConfig(void);
  198. void LCD_BusIn(void);
  199. void LCD_BusOut(void);
  200. #endif /* __LCD_H */
  201. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

fonts.h

  1. /*
  2. 程序说明: CT117E嵌入式竞赛板LCD驱动程序
  3. 软件环境: Keil uVision 4.10
  4. 硬件环境: CT117E嵌入式竞赛板
  5. 日 期: 2011-8-9
  6. */
  7. /* Define to prevent recursive inclusion -------------------------------------*/
  8. #ifndef __FONTS_H
  9. #define __FONTS_H
  10. /* Includes ------------------------------------------------------------------*/
  11. #include "main.h"
  12. /* Exported types ------------------------------------------------------------*/
  13. /* ASCII Table: each character is 16 column (16dots large)
  14. and 24 raw (24 dots high) */
  15. uc16 ASCII_Table[] =
  16. {
  17. /* Space ' ' */
  18. //0x0000,0x0000,0x0000,0x0FF8,0x4808,0x4808,0x4808,0x4B88 ,
  19. //0x4A48,0x4A4C,0x4A44,0x4A44,0x4A44,0x4A44,0x4A64,0x4B24 ,
  20. // 0x4924,0x4824,0x49E4,0x4E04,0x4004,0x6004,0x3FFC,0x0000 ,
  21. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  22. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  23. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  24. //0x0000, 0xC000, 0xE001, 0x3003, 0xD81E, 0xCC18, 0xC438, 0xC000,
  25. // 0xC000, 0xC002, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000,
  26. // 0xC000, 0xC000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000,
  27. /* '!' */
  28. 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  29. 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000,
  30. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  31. /* '"' */
  32. 0x0000, 0x0000, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CC,
  33. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  34. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  35. /* '#' */
  36. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0C60, 0x0C60,
  37. 0x0C60, 0x0630, 0x0630, 0x1FFE, 0x1FFE, 0x0630, 0x0738, 0x0318,
  38. 0x1FFE, 0x1FFE, 0x0318, 0x0318, 0x018C, 0x018C, 0x018C, 0x0000,
  39. /* '$' */
  40. 0x0000, 0x0080, 0x03E0, 0x0FF8, 0x0E9C, 0x1C8C, 0x188C, 0x008C,
  41. 0x0098, 0x01F8, 0x07E0, 0x0E80, 0x1C80, 0x188C, 0x188C, 0x189C,
  42. 0x0CB8, 0x0FF0, 0x03E0, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000,
  43. /* '%' */
  44. 0x0000, 0x0000, 0x0000, 0x180E, 0x0C1B, 0x0C11, 0x0611, 0x0611,
  45. 0x0311, 0x0311, 0x019B, 0x018E, 0x38C0, 0x6CC0, 0x4460, 0x4460,
  46. 0x4430, 0x4430, 0x4418, 0x6C18, 0x380C, 0x0000, 0x0000, 0x0000,
  47. /* '&' */
  48. 0x0000, 0x01E0, 0x03F0, 0x0738, 0x0618, 0x0618, 0x0330, 0x01F0,
  49. 0x00F0, 0x00F8, 0x319C, 0x330E, 0x1E06, 0x1C06, 0x1C06, 0x3F06,
  50. 0x73FC, 0x21F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  51. /* ''' */
  52. 0x0000, 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
  53. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  54. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  55. /* '(' */
  56. 0x0000, 0x0200, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x0060, 0x0060,
  57. 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
  58. 0x0060, 0x0060, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0200, 0x0000,
  59. /* ')' */
  60. 0x0000, 0x0020, 0x0060, 0x00C0, 0x0180, 0x0180, 0x0300, 0x0300,
  61. 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600,
  62. 0x0300, 0x0300, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0020, 0x0000,
  63. /* '*' */
  64. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0,
  65. 0x06D8, 0x07F8, 0x01E0, 0x0330, 0x0738, 0x0000, 0x0000, 0x0000,
  66. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  67. /* '+' */
  68. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180,
  69. 0x0180, 0x0180, 0x0180, 0x3FFC, 0x3FFC, 0x0180, 0x0180, 0x0180,
  70. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  71. /* ',' */
  72. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  73. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  74. 0x0000, 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000,
  75. /* '-' */
  76. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  77. 0x0000, 0x0000, 0x0000, 0x0000, 0x07E0, 0x07E0, 0x0000, 0x0000,
  78. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  79. /* '.' */
  80. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  81. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  82. 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  83. /* '/' */
  84. 0x0000, 0x0C00, 0x0C00, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300,
  85. 0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x00C0, 0x00C0, 0x00C0,
  86. 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  87. /* '0' */
  88. 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x180C, 0x180C, 0x180C,
  89. 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C18, 0x0E38,
  90. 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  91. /* '1' */
  92. 0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180,
  93. 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  94. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  95. /* '2' */
  96. 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x1800,
  97. 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018,
  98. 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  99. /* '3' */
  100. 0x0000, 0x01E0, 0x07F8, 0x0E18, 0x0C0C, 0x0C0C, 0x0C00, 0x0600,
  101. 0x03C0, 0x07C0, 0x0C00, 0x1800, 0x1800, 0x180C, 0x180C, 0x0C18,
  102. 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  103. /* '4' */
  104. 0x0000, 0x0C00, 0x0E00, 0x0F00, 0x0F00, 0x0D80, 0x0CC0, 0x0C60,
  105. 0x0C60, 0x0C30, 0x0C18, 0x0C0C, 0x3FFC, 0x3FFC, 0x0C00, 0x0C00,
  106. 0x0C00, 0x0C00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  107. /* '5' */
  108. 0x0000, 0x0FF8, 0x0FF8, 0x0018, 0x0018, 0x000C, 0x03EC, 0x07FC,
  109. 0x0E1C, 0x1C00, 0x1800, 0x1800, 0x1800, 0x180C, 0x0C1C, 0x0E18,
  110. 0x07F8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  111. /* '6' */
  112. 0x0000, 0x07C0, 0x0FF0, 0x1C38, 0x1818, 0x0018, 0x000C, 0x03CC,
  113. 0x0FEC, 0x0E3C, 0x1C1C, 0x180C, 0x180C, 0x180C, 0x1C18, 0x0E38,
  114. 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  115. /* '7' */
  116. 0x0000, 0x1FFC, 0x1FFC, 0x0C00, 0x0600, 0x0600, 0x0300, 0x0380,
  117. 0x0180, 0x01C0, 0x00C0, 0x00E0, 0x0060, 0x0060, 0x0070, 0x0030,
  118. 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  119. /* '8' */
  120. 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C18, 0x0C18, 0x0C18, 0x0638,
  121. 0x07F0, 0x07F0, 0x0C18, 0x180C, 0x180C, 0x180C, 0x180C, 0x0C38,
  122. 0x0FF8, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  123. /* '9' */
  124. 0x0000, 0x03E0, 0x07F0, 0x0E38, 0x0C1C, 0x180C, 0x180C, 0x180C,
  125. 0x1C1C, 0x1E38, 0x1BF8, 0x19E0, 0x1800, 0x0C00, 0x0C00, 0x0E1C,
  126. 0x07F8, 0x01F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  127. /* ':' */
  128. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180,
  129. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  130. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  131. /* ';' */
  132. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180,
  133. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  134. 0x0180, 0x0180, 0x0100, 0x0100, 0x0080, 0x0000, 0x0000, 0x0000,
  135. /* '<' */
  136. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  137. 0x1000, 0x1C00, 0x0F80, 0x03E0, 0x00F8, 0x0018, 0x00F8, 0x03E0,
  138. 0x0F80, 0x1C00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  139. /* '=' */
  140. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  141. 0x1FF8, 0x0000, 0x0000, 0x0000, 0x1FF8, 0x0000, 0x0000, 0x0000,
  142. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  143. /* '>' */
  144. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  145. 0x0008, 0x0038, 0x01F0, 0x07C0, 0x1F00, 0x1800, 0x1F00, 0x07C0,
  146. 0x01F0, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  147. /* '?' */
  148. 0x0000, 0x03E0, 0x0FF8, 0x0C18, 0x180C, 0x180C, 0x1800, 0x0C00,
  149. 0x0600, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x0000, 0x0000,
  150. 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  151. /* '@' */
  152. 0x0000, 0x0000, 0x07E0, 0x1818, 0x2004, 0x29C2, 0x4A22, 0x4411,
  153. 0x4409, 0x4409, 0x4409, 0x2209, 0x1311, 0x0CE2, 0x4002, 0x2004,
  154. 0x1818, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  155. /* 'A' */
  156. 0x0000, 0x0380, 0x0380, 0x06C0, 0x06C0, 0x06C0, 0x0C60, 0x0C60,
  157. 0x1830, 0x1830, 0x1830, 0x3FF8, 0x3FF8, 0x701C, 0x600C, 0x600C,
  158. 0xC006, 0xC006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  159. /* 'B' */
  160. 0x0000, 0x03FC, 0x0FFC, 0x0C0C, 0x180C, 0x180C, 0x180C, 0x0C0C,
  161. 0x07FC, 0x0FFC, 0x180C, 0x300C, 0x300C, 0x300C, 0x300C, 0x180C,
  162. 0x1FFC, 0x07FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  163. /* 'C' */
  164. 0x0000, 0x07C0, 0x1FF0, 0x3838, 0x301C, 0x700C, 0x6006, 0x0006,
  165. 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x6006, 0x700C, 0x301C,
  166. 0x1FF0, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  167. /* 'D' */
  168. 0x0000, 0x03FE, 0x0FFE, 0x0E06, 0x1806, 0x1806, 0x3006, 0x3006,
  169. 0x3006, 0x3006, 0x3006, 0x3006, 0x3006, 0x1806, 0x1806, 0x0E06,
  170. 0x0FFE, 0x03FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  171. /* 'E' */
  172. 0x0000, 0x3FFC, 0x3FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
  173. 0x1FFC, 0x1FFC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
  174. 0x3FFC, 0x3FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  175. /* 'F' */
  176. 0x0000, 0x3FF8, 0x3FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
  177. 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
  178. 0x0018, 0x0018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  179. /* 'G' */
  180. 0x0000, 0x0FE0, 0x3FF8, 0x783C, 0x600E, 0xE006, 0xC007, 0x0003,
  181. 0x0003, 0xFE03, 0xFE03, 0xC003, 0xC007, 0xC006, 0xC00E, 0xF03C,
  182. 0x3FF8, 0x0FE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  183. /* 'H' */
  184. 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C,
  185. 0x3FFC, 0x3FFC, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C,
  186. 0x300C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  187. /* 'I' */
  188. 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  189. 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  190. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  191. /* 'J' */
  192. 0x0000, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600,
  193. 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0618, 0x0618, 0x0738,
  194. 0x03F0, 0x01E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  195. /* 'K' */
  196. 0x0000, 0x3006, 0x1806, 0x0C06, 0x0606, 0x0306, 0x0186, 0x00C6,
  197. 0x0066, 0x0076, 0x00DE, 0x018E, 0x0306, 0x0606, 0x0C06, 0x1806,
  198. 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  199. /* 'L' */
  200. 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
  201. 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
  202. 0x1FF8, 0x1FF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  203. /* 'M' */
  204. 0x0000, 0xE00E, 0xF01E, 0xF01E, 0xF01E, 0xD836, 0xD836, 0xD836,
  205. 0xD836, 0xCC66, 0xCC66, 0xCC66, 0xC6C6, 0xC6C6, 0xC6C6, 0xC6C6,
  206. 0xC386, 0xC386, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  207. /* 'N' */
  208. 0x0000, 0x300C, 0x301C, 0x303C, 0x303C, 0x306C, 0x306C, 0x30CC,
  209. 0x30CC, 0x318C, 0x330C, 0x330C, 0x360C, 0x360C, 0x3C0C, 0x3C0C,
  210. 0x380C, 0x300C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  211. /* 'O' */
  212. 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xC003, 0xC003,
  213. 0xC003, 0xC003, 0xC003, 0xC003, 0xC003, 0x6006, 0x700E, 0x381C,
  214. 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  215. /* 'P' */
  216. 0x0000, 0x0FFC, 0x1FFC, 0x380C, 0x300C, 0x300C, 0x300C, 0x300C,
  217. 0x180C, 0x1FFC, 0x07FC, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,
  218. 0x000C, 0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  219. /* 'Q' */
  220. 0x0000, 0x07E0, 0x1FF8, 0x381C, 0x700E, 0x6006, 0xE003, 0xC003,
  221. 0xC003, 0xC003, 0xC003, 0xC003, 0xE007, 0x6306, 0x3F0E, 0x3C1C,
  222. 0x3FF8, 0xF7E0, 0xC000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  223. /* 'R' */
  224. 0x0000, 0x0FFE, 0x1FFE, 0x3806, 0x3006, 0x3006, 0x3006, 0x3806,
  225. 0x1FFE, 0x07FE, 0x0306, 0x0606, 0x0C06, 0x1806, 0x1806, 0x3006,
  226. 0x3006, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  227. /* 'S' */
  228. 0x0000, 0x03E0, 0x0FF8, 0x0C1C, 0x180C, 0x180C, 0x000C, 0x001C,
  229. 0x03F8, 0x0FE0, 0x1E00, 0x3800, 0x3006, 0x3006, 0x300E, 0x1C1C,
  230. 0x0FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  231. /* 'T' */
  232. 0x0000, 0x7FFE, 0x7FFE, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  233. 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  234. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  235. /* 'U' */
  236. 0x0000, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C,
  237. 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x300C, 0x1818,
  238. 0x1FF8, 0x07E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  239. /* 'V' */
  240. 0x0000, 0x6003, 0x3006, 0x3006, 0x3006, 0x180C, 0x180C, 0x180C,
  241. 0x0C18, 0x0C18, 0x0E38, 0x0630, 0x0630, 0x0770, 0x0360, 0x0360,
  242. 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  243. /* 'W' */
  244. 0x0000, 0x6003, 0x61C3, 0x61C3, 0x61C3, 0x3366, 0x3366, 0x3366,
  245. 0x3366, 0x3366, 0x3366, 0x1B6C, 0x1B6C, 0x1B6C, 0x1A2C, 0x1E3C,
  246. 0x0E38, 0x0E38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  247. /* 'X' */
  248. 0x0000, 0xE00F, 0x700C, 0x3018, 0x1830, 0x0C70, 0x0E60, 0x07C0,
  249. 0x0380, 0x0380, 0x03C0, 0x06E0, 0x0C70, 0x1C30, 0x1818, 0x300C,
  250. 0x600E, 0xE007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  251. /* 'Y' */
  252. 0x0000, 0xC003, 0x6006, 0x300C, 0x381C, 0x1838, 0x0C30, 0x0660,
  253. 0x07E0, 0x03C0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  254. 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  255. /* 'Z' */
  256. 0x0000, 0x7FFC, 0x7FFC, 0x6000, 0x3000, 0x1800, 0x0C00, 0x0600,
  257. 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018, 0x000C, 0x0006,
  258. 0x7FFE, 0x7FFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  259. /* '[' */
  260. 0x0000, 0x03E0, 0x03E0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,
  261. 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,
  262. 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x03E0, 0x03E0, 0x0000,
  263. /* '\' */
  264. 0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x00C0, 0x00C0,
  265. 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0300,
  266. 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  267. /* ']' */
  268. 0x0000, 0x03E0, 0x03E0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300,
  269. 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300,
  270. 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x03E0, 0x03E0, 0x0000,
  271. /* '^' */
  272. 0x0000, 0x0000, 0x01C0, 0x01C0, 0x0360, 0x0360, 0x0360, 0x0630,
  273. 0x0630, 0x0C18, 0x0C18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  274. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  275. /* '_' */
  276. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  277. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  278. 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  279. /* ''' */
  280. 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0000,
  281. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  282. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  283. /* 'a' */
  284. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03F0, 0x07F8,
  285. 0x0C1C, 0x0C0C, 0x0F00, 0x0FF0, 0x0CF8, 0x0C0C, 0x0C0C, 0x0F1C,
  286. 0x0FF8, 0x18F0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  287. /* 'b' */
  288. 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x03D8, 0x0FF8,
  289. 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38,
  290. 0x0FF8, 0x03D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  291. /* 'c' */
  292. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x07F0,
  293. 0x0E30, 0x0C18, 0x0018, 0x0018, 0x0018, 0x0018, 0x0C18, 0x0E30,
  294. 0x07F0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  295. /* 'd' */
  296. 0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1BC0, 0x1FF0,
  297. 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30,
  298. 0x1FF0, 0x1BC0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  299. /* 'e' */
  300. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0,
  301. 0x0C30, 0x1818, 0x1FF8, 0x1FF8, 0x0018, 0x0018, 0x1838, 0x1C30,
  302. 0x0FF0, 0x07C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  303. /* 'f' */
  304. 0x0000, 0x0F80, 0x0FC0, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0,
  305. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  306. 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  307. /* 'g' */
  308. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0DE0, 0x0FF8,
  309. 0x0E18, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0C0C, 0x0E18,
  310. 0x0FF8, 0x0DE0, 0x0C00, 0x0C0C, 0x061C, 0x07F8, 0x01F0, 0x0000,
  311. /* 'h' */
  312. 0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x07D8, 0x0FF8,
  313. 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818,
  314. 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  315. /* 'i' */
  316. 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0,
  317. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  318. 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  319. /* 'j' */
  320. 0x0000, 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x00C0, 0x00C0,
  321. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  322. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00F8, 0x0078, 0x0000,
  323. /* 'k' */
  324. 0x0000, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x0C0C, 0x060C,
  325. 0x030C, 0x018C, 0x00CC, 0x006C, 0x00FC, 0x019C, 0x038C, 0x030C,
  326. 0x060C, 0x0C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  327. /* 'l' */
  328. 0x0000, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  329. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  330. 0x00C0, 0x00C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  331. /* 'm' */
  332. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3C7C, 0x7EFF,
  333. 0xE3C7, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183, 0xC183,
  334. 0xC183, 0xC183, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  335. /* 'n' */
  336. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0798, 0x0FF8,
  337. 0x1C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818,
  338. 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  339. /* 'o' */
  340. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0FF0,
  341. 0x0C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C30,
  342. 0x0FF0, 0x03C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  343. /* 'p' */
  344. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D8, 0x0FF8,
  345. 0x0C38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0C38,
  346. 0x0FF8, 0x03D8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0000,
  347. /* 'q' */
  348. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1BC0, 0x1FF0,
  349. 0x1C30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C30,
  350. 0x1FF0, 0x1BC0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000,
  351. /* 'r' */
  352. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07B0, 0x03F0,
  353. 0x0070, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030, 0x0030,
  354. 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  355. /* 's' */
  356. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03E0, 0x03F0,
  357. 0x0E38, 0x0C18, 0x0038, 0x03F0, 0x07C0, 0x0C00, 0x0C18, 0x0E38,
  358. 0x07F0, 0x03E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  359. /* 't' */
  360. 0x0000, 0x0000, 0x0080, 0x00C0, 0x00C0, 0x00C0, 0x07F0, 0x07F0,
  361. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  362. 0x07C0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  363. /* 'u' */
  364. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818,
  365. 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1C38,
  366. 0x1FF0, 0x19E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  367. /* 'v' */
  368. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180C, 0x0C18,
  369. 0x0C18, 0x0C18, 0x0630, 0x0630, 0x0630, 0x0360, 0x0360, 0x0360,
  370. 0x01C0, 0x01C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  371. /* 'w' */
  372. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x41C1, 0x41C1,
  373. 0x61C3, 0x6363, 0x6363, 0x6363, 0x3636, 0x3636, 0x3636, 0x1C1C,
  374. 0x1C1C, 0x1C1C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  375. /* 'x' */
  376. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x381C, 0x1C38,
  377. 0x0C30, 0x0660, 0x0360, 0x0360, 0x0360, 0x0360, 0x0660, 0x0C30,
  378. 0x1C38, 0x381C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  379. /* 'y' */
  380. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3018, 0x1830,
  381. 0x1830, 0x1870, 0x0C60, 0x0C60, 0x0CE0, 0x06C0, 0x06C0, 0x0380,
  382. 0x0380, 0x0380, 0x0180, 0x0180, 0x01C0, 0x00F0, 0x0070, 0x0000,
  383. /* 'z' */
  384. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFC, 0x1FFC,
  385. 0x0C00, 0x0600, 0x0300, 0x0180, 0x00C0, 0x0060, 0x0030, 0x0018,
  386. 0x1FFC, 0x1FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  387. /* '{' */
  388. 0x0000, 0x0300, 0x0180, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0,
  389. 0x00C0, 0x0060, 0x0060, 0x0030, 0x0060, 0x0040, 0x00C0, 0x00C0,
  390. 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x0180, 0x0300, 0x0000, 0x0000,
  391. /* '|' */
  392. 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  393. 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
  394. 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000,
  395. /* '}' */
  396. 0x0000, 0x0060, 0x00C0, 0x01C0, 0x0180, 0x0180, 0x0180, 0x0180,
  397. 0x0180, 0x0300, 0x0300, 0x0600, 0x0300, 0x0100, 0x0180, 0x0180,
  398. 0x0180, 0x0180, 0x0180, 0x0180, 0x00C0, 0x0060, 0x0000, 0x0000,
  399. /* '~' */
  400. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  401. 0x10F0, 0x1FF8, 0x0F08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  402. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  403. };
  404. #endif
  405. /* __FONTS_H */
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/470217
推荐阅读
相关标签
  

闽ICP备14008679号