找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1261|回复: 0
收起左侧

STM32应用 TFT ILI9328液晶显示源程序

[复制链接]
ID:424834 发表于 2020-8-13 16:05 | 显示全部楼层 |阅读模式
# STM32F103C8T6 TFTILI9328液晶显示屏使用教程
硬件----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

STM32F103C8T6 TFTILI9328 ST-LINKV2下载 杜帮线
效果--------------------------------------------------------------------

tft1.jpg tft2.png tft3.png
代码——————————————————————————————————————————————————————------------------------------------------

  1. TFT.C

  2. ```c

  3. /****************************************************************************************************

  4. 文件功能描述:320x240TFT驱动程序,控制TFT实现汉字,字符显示,画点功能。

  5. ****************************************************************************************************/

  6. #include "stm32f10x.h" //STM32器件寄存器定义头文件,必须包含

  7. #include "user_Config.h" //用户配置头文件,用于配置硬件连接资源,位于项目文件夹下

  8. #include "Ascii_8x16.h" //8x16大小字符

  9. #include "Chinese.h" //16x16像素大小的汉字

  10. //**************声明外部函数和变量**************

  11. extern unsigned int Device_code;

  12. /****************************************************************************************************

  13. //        实现功能:        延时

  14. //        输入参数:        count 设置延时时间

  15. ****************************************************************************************************/

  16. void delayms(unsigned int count)

  17. {

  18. int i,j;

  19. for(i=0;i

  20. {

  21.         for(j=0;j<0x640;j++);

  22. }

  23. }

  24. /****************************************************************************************************

  25. //        实现功能:        写命令

  26. //        输入参数: DH 需要输入16bits命令的高8位

  27. // DL 需要输入16bits命令的低8位

  28. ****************************************************************************************************/

  29. void Write_Cmd(unsigned char DH,unsigned char DL)

  30. {

  31.         CS_CLR;

  32.         RS_CLR;

  33. RD_SET;

  34. RW_CLR;

  35.         

  36.         //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下

  37.         GPIO_Write(DataPort,(u16)(DL | 0xff00));         //送低8位命令给573待锁存

  38.         LE_SET;                                                         //锁存位

  39.         LE_CLR;                                                         //断开锁存,位选573的Q7~Q0仍保持

  40.         GPIO_Write(DataPort,(u16)(DH | 0xff00));                        //送高8位命令给TFT

  41.         /*

  42. //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可

  43. DataPort_L=DL;

  44. DataPort_H=DH;

  45.         */

  46.         RW_SET;

  47.         CS_SET;

  48. }

  49. /****************************************************************************************************

  50. //        实现功能:        写数据(2*8bits)

  51. //        输入参数: DH 需要输入16bits数据的高8位

  52. // DL 需要输入16bits数据的低8位

  53. ****************************************************************************************************/

  54. void Write_Data(unsigned char DH,unsigned char DL)

  55. {

  56.         

  57.         CS_CLR;

  58.         RS_SET;

  59.         //注意:当使用8位数据口驱动16位数据模式时,使用74HC573作为IO扩展,程序如下

  60.         GPIO_Write(DataPort,(u16)(DL | 0xff00));         //送低8位命令给573待锁存

  61.         LE_SET;                                                                                 //锁存位

  62.         LE_CLR;                                                                                 //断开锁存,位选573的Q7~Q0仍保持

  63.         GPIO_Write(DataPort,(u16)(DH | 0xff00));                        //送高8位命令给TFT

  64.         /*

  65. //如果使用16位数据口驱动16位数据模式,则无需IO扩展,直接将数据送到数据口即可

  66. DataPort_L=DL;

  67. DataPort_H=DH;

  68.         */

  69.         RW_CLR;

  70.         RW_SET;

  71.         CS_SET;

  72. }

  73. /****************************************************************************************************

  74. //        实现功能:        写数据(16位)

  75. //        输入参数: y 需要输入16bits数据

  76. ****************************************************************************************************/

  77. void Write_Data_U16(unsigned int y)

  78. {

  79.         unsigned char m,n;

  80.         m=y>>8;

  81.         n=y;

  82.         Write_Data(m,n);

  83. }

  84. /****************************************************************************************************

  85. //        实现功能:        向x寄存器写入y数据

  86. //        输入参数: x 需要输入的命令 16位

  87. // y 需要输入的数据 16位

  88. ****************************************************************************************************/

  89. void Write_Cmd_Data (unsigned char x,unsigned int y)

  90. {

  91.         unsigned char m,n;

  92.         m=y>>8;

  93.         n=y;

  94.         Write_Cmd(0x00,x);

  95.         Write_Data(m,n);

  96. }

  97. /****************************************************************************************************

  98. //        实现功能:        设置坐标

  99. // 输入参数: x0,y0 起始坐标

  100. // x1,y1 结束坐标

  101. ****************************************************************************************************/

  102. void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)

  103. {

  104. Write_Cmd_Data(0x50,x0); // Horizontal GRAM Start Address

  105. Write_Cmd_Data(0x51,x1); // Horizontal GRAM End Address

  106. Write_Cmd_Data(0x52,y0); // Vertical GRAM Start Address

  107. Write_Cmd_Data(0x53,y1); // Vertical GRAM Start Address

  108. Write_Cmd_Data(0x20,x0); // GRAM horizontal Address

  109. Write_Cmd_Data(0x21,y0); // GRAM Vertical Address

  110. Write_Cmd (0x00,0x22); // 0x0022,Start to Write Data to GRAM

  111. }

  112. /****************************************************************************************************

  113. //        实现功能:        TFT清屏

  114. //        输入参数:        bColor 清屏所使用的背景色

  115. ****************************************************************************************************/

  116. void CLR_Screen(unsigned int bColor)

  117. {

  118. unsigned int i,j;

  119. LCD_SetPos(0,240,0,320);                                                                                                        //320x240,坐标从0开始

  120. for (i=0;i<320;i++)

  121.         {

  122.         for (j=0;j<240;j++)

  123.         Write_Data_U16(bColor);

  124.         }

  125. }

  126. /****************************************************************************************************

  127. //        实现功能:        显示Ascii字符

  128. // 输入参数: x 横坐标

  129. // y 纵坐标

  130. //                c 需要显示的字符

  131. //                fColor 字符颜色

  132. //                bColor 字符背景颜色

  133. ****************************************************************************************************/

  134. void LCD_PutChar(unsigned int x, unsigned int y, char c, unsigned int fColor, unsigned int bColor)

  135. {

  136.         unsigned int i,j;

  137.         LCD_SetPos(x,x+8-1,y,y+16-1); //设置字符显示位置

  138.         for(i=0; i<16;i++)

  139.         { //循环写入16字节,一个字符为16字节

  140.                 unsigned char m=Font8x16[(c-0x20)*16+i]; //提取c字符的第i个字节以,c减去0x20是由于Ascii码库中的0~1f被去掉

  141.                         for(j=0;j<8;j++)

  142.                         { //循环写入8位,一个字节为8位

  143.                                 if((m&0x80)==0x80)

  144.                                         { //判断最高位是否为1

  145.                                                 Write_Data_U16(fColor); //最高位为1,写入字符颜色

  146.                                         }

  147.                                 else

  148.                                         {

  149.                                                 Write_Data_U16(bColor); //最高位为0,写入背景颜色

  150.                                         }

  151.                                 m<<=1; //左移1位,准备写下一位

  152.                         }

  153.         }

  154. }

  155. /****************************************************************************************************

  156. //        实现功能:        显示16x16汉字

  157. // 输入参数: x 横坐标

  158. // y 纵坐标

  159. //                g 需要显示的字符编码

  160. //                fColor 字符颜色

  161. //                bColor 字符背景颜色

  162. ****************************************************************************************************/

  163. void Put16x16(unsigned short x, unsigned short y, unsigned char g[2], unsigned int fColor,unsigned int bColor)

  164. {

  165.         unsigned int i,j,k;

  166.         

  167.         LCD_SetPos(x, x+16-1,y, y+16-1); //设置汉字显示位置

  168.         for (k=0;k<64;k++) //循环64次,查询汉字字模位置

  169.         {

  170.         if ((ch16[k].GBK[0]==g[0])&&(ch16[k].GBK[1]==g[1])) //判断第k个汉字的编码是否与输入汉字g[2]相等

  171.         {

  172.         for(i=0;i<32;i++) //如果相等,既已找到待显示字模位置,循环写入32字节

  173.                 {

  174.                 unsigned short m=ch16[k].hz16[i];         //读取32字节中的第i字节

  175.                 for(j=0;j<8;j++)         //循环写入8位数据

  176.                 {

  177.                         if((m&0x80)==0x80) Write_Data_U16(fColor);                 //判断最高位是否为1,最高位为1,写入字符颜色

  178.                         else Write_Data_U16(bColor);                 //最高位为0,写入背景颜色

  179.                 m<<=1;         //左移1位,准备写下一位

  180.         }

  181.                 }

  182.         }

  183. }        

  184. }

  185. /****************************************************************************************************

  186. //        实现功能:        显示中英文字符串

  187. // 输入参数: x 横坐标

  188. // y 纵坐标

  189. //                *s 待显示的字符串,例如LCD_PutString(24,16,"123Eee",White,Blue);即把"123Eee"的第一个字符地址赋给指针变量s.

  190. //                bColor 字符背景颜色

  191. ****************************************************************************************************/

  192. void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor)

  193. {

  194.         unsigned char l=0;         //显示屏位置增量

  195.         

  196. while(*s)

  197.         {

  198.                 if( *s < 0x80)                 //判断s指向的字符串中的某字符的编码值是否小于128,如果小于,即为ASCII字符

  199.                 {

  200.                         LCD_PutChar(x+l*8,y,*s,fColor,bColor);                        //显示该字符

  201.                 s++;l++;                 //指针加1,位置加1

  202.                         }

  203.                 else

  204.                 {

  205.                         Put16x16(x+l*8,y,(unsigned char*)s,fColor,bColor);                //显示该汉字

  206.                 s+=2;l+=2;         //因为汉字为编码为2字节,指针加2,显示16x16所以位置加2

  207.                         }

  208.         }

  209. }

  210. /****************************************************************************************************

  211. //        实现功能:        指定位置显示RGB颜色

  212. // 输入参数: x0,y0 起始坐标

  213. // x1,y1 结束坐标

  214. //                Color 背景颜色

  215. ****************************************************************************************************/

  216. void Show_RGB (unsigned short x0,unsigned short x1,unsigned short y0,unsigned short y1,unsigned int Color)

  217. {

  218.         unsigned int i,j;

  219.         

  220.         LCD_SetPos(x0,x1,y0,y1);                                                                                                //横屏这里要进行坐标变换,如果是竖屏,则直接是x0,x1,y0,y1做参数

  221.         for (i=y0;i<=y1;i++)

  222.         {

  223.         for (j=x0;j<=x1;j++)

  224.         Write_Data_U16(Color);

  225.         }

  226. }

  227. /****************************************************************************************************

  228. //        实现功能:        TFT初始化

  229. ****************************************************************************************************/

  230. void TFT_Initial(void)

  231. {

  232.         RST_SET;

  233.         delayms(1);                         // Delay 1ms

  234.         RST_CLR;

  235.         delayms(10);                         // Delay 10ms

  236.         RST_SET;

  237.         delayms(50);                         // Delay 50 ms

  238.         if(Device_code==0x9320)

  239. {

  240. //************* Start Initial Sequence **********//

  241.         Write_Cmd_Data(0x00,0x0001);                 //Set the OSC bit as ‘1’ to start the internal oscillator

  242.         Write_Cmd_Data(0x01,0x0100);         // set SS and SM bit

  243.         Write_Cmd_Data(0x02,0x0700);                 // set 1 line inversion

  244.         Write_Cmd_Data(0x03,0x1030);                 //set GRAM Write direction and BGR=1

  245.         Write_Cmd_Data(0x04,0x0000);         // Resize register

  246.         Write_Cmd_Data(0x08,0x0202);                 // set the back porch and front porch

  247.         Write_Cmd_Data(0x09,0x0000);         // set non-display area refresh cycle ISC[3:0]

  248.         Write_Cmd_Data(0x0A,0x0000);         // FMARK function

  249.         Write_Cmd_Data(0x0C,0x0000);         // RGB interface setting

  250.         Write_Cmd_Data(0x0D,0x0000);                 // Frame marker Position

  251.         Write_Cmd_Data(0x0F,0x0000);         // RGB interface polarity

  252.         delayms(30);

  253.         //*************Power On sequence ****************//

  254.         Write_Cmd_Data(0x10, 0x16b0); // SAP, BT[3:0], AP, DSTB, SLP, STB

  255.         delayms(30);

  256.         Write_Cmd_Data(0x11, 0x0007); //Write final user’s setting values to VC bit

  257.         Write_Cmd_Data(0x12, 0x013a); // set Internal reference voltage

  258.         Write_Cmd_Data(0x13, 0x1a00); // VDV[4:0] for VCOM amplitude

  259.         delayms(30);

  260.         Write_Cmd_Data(0x29, 0x000c); // Set VCM[5:0] for VCOMH

  261.         delayms(30); // Delay 50ms

  262.         // ----------- Adjust the Gamma Curve ----------//

  263.         Write_Cmd_Data(0x0030, 0x0000);

  264.         Write_Cmd_Data(0x0031, 0x0505);

  265.         Write_Cmd_Data(0x0032, 0x0304);

  266.         Write_Cmd_Data(0x0035, 0x0006);

  267.         Write_Cmd_Data(0x0036, 0x0707);

  268.         Write_Cmd_Data(0x0037, 0x0105);

  269.         Write_Cmd_Data(0x0038, 0x0002);

  270.         Write_Cmd_Data(0x0039, 0x0707);

  271.         Write_Cmd_Data(0x003C, 0x0704);

  272.         Write_Cmd_Data(0x003D, 0x0807);

  273.         //------------------ Set GRAM area ---------------//

  274.         Write_Cmd_Data(0x0050, 0x0000); // Horizontal GRAM Start Address

  275.         Write_Cmd_Data(0x0051, 0x00EF); // Horizontal GRAM End Address

  276.         Write_Cmd_Data(0x0052, 0x0000); // Vertical GRAM Start Address

  277.         Write_Cmd_Data(0x0053, 0x013F); // Vertical GRAM Start Address

  278.         Write_Cmd_Data(0x0060, 0x2700); // Gate Scan Line

  279.         Write_Cmd_Data(0x0061, 0x0001); // NDL,VLE, REV

  280.         Write_Cmd_Data(0x006A, 0x0000); // set scrolling line

  281. Write_Cmd_Data(0x20, 0x0000); // GRAM horizontal Address

  282.         Write_Cmd_Data(0x21, 0x0000); // GRAM Vertical Address

  283.         //-------------- Partial Display Control ---------//

  284.         Write_Cmd_Data(0x0080, 0x0000);

  285.         Write_Cmd_Data(0x0081, 0x0000);

  286.         Write_Cmd_Data(0x0082, 0x0000);

  287.         Write_Cmd_Data(0x0083, 0x0000);

  288.         Write_Cmd_Data(0x0084, 0x0000);

  289.         Write_Cmd_Data(0x0085, 0x0000);

  290.         //-------------- Panel Control ---------//

  291. Write_Cmd_Data(0x90,0x0010); //Frame Cycle Contral

  292.         Write_Cmd_Data(0x92,0x0000); //Panel Interface Contral

  293.         Write_Cmd_Data(0x93,0x0003); //Panel Interface Contral 3.

  294.         Write_Cmd_Data(0x95,0x0110); //Frame Cycle Contral

  295.         Write_Cmd_Data(0x97,0x0000); //

  296.         Write_Cmd_Data(0x98,0x0000); //Frame Cycle Contral.

  297.         //-------------- Display on ---------//

  298. Write_Cmd_Data(0x07,0x0173);

  299.         }

  300.         else if(Device_code==0x1505 )

  301. {

  302. //************* Start Initial Sequence **********//

  303.         Write_Cmd_Data(0x00,0x0001); //Set the OSC bit as ‘1’ to start the internal oscillator

  304. Write_Cmd_Data(0x01,0x0100); // set SS and SM bit

  305.         Write_Cmd_Data(0x02,0x0700); // set 1 line inversion

  306.         Write_Cmd_Data(0x03,0x1030); //set GRAM Write direction and BGR=1

  307. Write_Cmd_Data(0x04,0x0000); // Resize register

  308.         Write_Cmd_Data(0x08,0x0202); // set the back porch and front porch

  309. Write_Cmd_Data(0x09,0x0000); // set non-display area refresh cycle ISC[3:0]

  310. Write_Cmd_Data(0x0A,0x0000); // FMARK function

  311. Write_Cmd_Data(0x0C,0x0000); // RGB interface setting

  312.         Write_Cmd_Data(0x0D,0x0000); // Frame marker Position

  313. Write_Cmd_Data(0x0F,0x0000); // RGB interface polarity

  314. delayms(30);

  315.         //*************Power On sequence ****************//

  316.         Write_Cmd_Data(0x10, 0x16b0); // SAP, BT[3:0], AP, DSTB, SLP, STB

  317.         delayms(30);

  318.         Write_Cmd_Data(0x11, 0x0007); //Write final user’s setting values to VC bit

  319.         Write_Cmd_Data(0x12, 0x013a); // set Internal reference voltage

  320.         Write_Cmd_Data(0x13, 0x1a00); // VDV[4:0] for VCOM amplitude

  321. delayms(30);

  322. Write_Cmd_Data(0x29, 0x000c); // Set VCM[5:0] for VCOMH

  323.         delayms(30); // Delay 50ms

  324.         // ----------- Adjust the Gamma Curve ----------//

  325.         Write_Cmd_Data(0x0030, 0x0000);

  326.         Write_Cmd_Data(0x0031, 0x0505);

  327.         Write_Cmd_Data(0x0032, 0x0304);

  328.         Write_Cmd_Data(0x0035, 0x0006);

  329.         Write_Cmd_Data(0x0036, 0x0707);

  330.         Write_Cmd_Data(0x0037, 0x0105);

  331.         Write_Cmd_Data(0x0038, 0x0002);

  332.         Write_Cmd_Data(0x0039, 0x0707);

  333.         Write_Cmd_Data(0x003C, 0x0704);

  334.         Write_Cmd_Data(0x003D, 0x0807);

  335.         //------------------ Set GRAM area ---------------//

  336.         Write_Cmd_Data(0x0050, 0x0000); // Horizontal GRAM Start Address

  337.         Write_Cmd_Data(0x0051, 0x00EF); // Horizontal GRAM End Address

  338.         Write_Cmd_Data(0x0052, 0x0000); // Vertical GRAM Start Address

  339.         Write_Cmd_Data(0x0053, 0x013F); // Vertical GRAM Start Address

  340.         Write_Cmd_Data(0x0060, 0x2700); // Gate Scan Line

  341.         Write_Cmd_Data(0x0061, 0x0001); // NDL,VLE, REV

  342.         Write_Cmd_Data(0x006A, 0x2700); // set scrolling line

  343. Write_Cmd_Data(0x20, 0x0000); // GRAM horizontal Address

  344.         Write_Cmd_Data(0x21, 0x0000); // GRAM Vertical Address

  345.         //-------------- Partial Display Control ---------//

  346.         Write_Cmd_Data(0x0080, 0x0000);

  347.         Write_Cmd_Data(0x0081, 0x0000);

  348.         Write_Cmd_Data(0x0082, 0x0000);

  349.         Write_Cmd_Data(0x0083, 0x0000);

  350.         Write_Cmd_Data(0x0084, 0x0000);

  351.         Write_Cmd_Data(0x0085, 0x0000);

  352.         //-------------- Panel Control ---------//

  353. Write_Cmd_Data(0x90,0x0010); //Frame Cycle Contral

  354.         Write_Cmd_Data(0x92,0x0000); //Panel Interface Contral

  355.         Write_Cmd_Data(0x93,0x0003); //Panel Interface Contral 3.

  356.         Write_Cmd_Data(0x95,0x0110); //Frame Cycle Contral

  357.         Write_Cmd_Data(0x97,0x0000); //

  358.         Write_Cmd_Data(0x98,0x0000); //Frame Cycle Contral.

  359.         //-------------- Display on ---------//

  360. Write_Cmd_Data(0x07,0x0173);

  361.         }

  362. else if(Device_code==0x9328)

  363. {

  364. //************* Start Initial Sequence **********//

  365.         Write_Cmd_Data(0x0001,0x0100); //set SS and SM bit //设置扫描方向 100

  366. Write_Cmd_Data(0x0002,0x0700); //EOR=1 and B/C=1 to set the line inversion //设置行反转

  367. Write_Cmd_Data(0x0003,0x1030); //set Entry Mode //设置进入模式 1030

  368. Write_Cmd_Data(0x0004,0x0000); //

  369. Write_Cmd_Data(0x00A4,0x0001);

  370. Write_Cmd_Data(0x0008,0x0202); // set the back porch and front porch

  371. Write_Cmd_Data(0x0009,0x0000); // set non-display area refresh cycle ISC[3:0]

  372. Write_Cmd_Data(0x000A,0x0000); // FMARK function

  373. Write_Cmd_Data(0x000C,0x0000); // RGB interface setting

  374. Write_Cmd_Data(0x000D, 0x0000); // Frame marker Position

  375. Write_Cmd_Data(0x000F, 0x0000); // RGB interface polarity

  376. //*************Power On sequence ****************//

  377. Write_Cmd_Data(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB

  378. Write_Cmd_Data(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]

  379. Write_Cmd_Data(0x0012, 0x0000); // VREG1OUT voltage

  380. Write_Cmd_Data(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude

  381. delayms(30);

  382. Write_Cmd_Data(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB

  383. Write_Cmd_Data(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0]

  384. delayms(30);

  385. Write_Cmd_Data(0x0012, 0x001C); // External reference voltage= Vci;

  386. delayms(30);

  387. Write_Cmd_Data(0x0013, 0x1800); // R13=1200 when R12=009D;VDV[4:0] for VCOM amplitude

  388. Write_Cmd_Data(0x0029, 0x001C); // R29=000C when R12=009D;VCM[5:0] for VCOMH

  389. Write_Cmd_Data(0x002B, 0x000D); // Frame Rate = 91Hz

  390. delayms(30);

  391. Write_Cmd_Data(0x0020, 0x0000); // GRAM horizontal Address

  392. Write_Cmd_Data(0x0021, 0x0000); // GRAM Vertical Address

  393. // ----------- Adjust the Gamma Curve ----------//                 

  394.         Write_Cmd_Data(0x0030, 0x0007);

  395.         Write_Cmd_Data(0x0031, 0x0302);

  396. Write_Cmd_Data(0x0032, 0x0105);

  397.         Write_Cmd_Data(0x0035, 0x0206);

  398. Write_Cmd_Data(0x0036, 0x0808);        

  399. Write_Cmd_Data(0x0037, 0x0206);

  400. Write_Cmd_Data(0x0038, 0x0504);

  401. Write_Cmd_Data(0x0039, 0x0007);

  402. Write_Cmd_Data(0x003C, 0x0105);

  403. Write_Cmd_Data(0x003D, 0x0808);

  404. //------------------ Set GRAM area ---------------//

  405. Write_Cmd_Data(0x0050, 0x0000); // Horizontal GRAM Start Address

  406. Write_Cmd_Data(0x0051, 0x00EF); // Horizontal GRAM End Address

  407. Write_Cmd_Data(0x0052, 0x0000); // Vertical GRAM Start Address

  408.         delayms(30);

  409. Write_Cmd_Data(0x0053, 0x013F); // Vertical GRAM Start Address

  410.         delayms(30);

  411. Write_Cmd_Data(0x0060, 0xA700); // Gate Scan Line

  412. Write_Cmd_Data(0x0061, 0x0001); // NDL,VLE, REV

  413. Write_Cmd_Data(0x006A, 0x0000); // set scrolling line

  414. //-------------- Partial Display Control ---------//

  415. Write_Cmd_Data(0x0080, 0x0000);

  416. Write_Cmd_Data(0x0081, 0x0000);

  417. Write_Cmd_Data(0x0082,0x0000);

  418. Write_Cmd_Data(0x0083,0x0000);

  419. Write_Cmd_Data(0x0084,0x0000);

  420. Write_Cmd_Data(0x0085,0x0000);

  421. //-------------- Panel Control -------------------//

  422. Write_Cmd_Data(0x0090, 0x0010);

  423. Write_Cmd_Data(0x0092, 0x0000);

  424. Write_Cmd_Data(0x0093, 0x0003);

  425. Write_Cmd_Data(0x0095, 0x0110);

  426. Write_Cmd_Data(0x0097, 0x0000);

  427. Write_Cmd_Data(0x0098, 0x0000);

  428. Write_Cmd_Data(0x0007, 0x0133); // 262K color and display ON

  429.         }

  430. }

  431. /****************************************************************************************************

  432. //        实现功能:        画点

  433. // 输入参数: x,y 需要画点坐标

  434. // color 点的颜色

  435. ****************************************************************************************************/

  436. void Put_pixel(unsigned int x,unsigned int y,unsigned int color)

  437. {

  438.         LCD_SetPos(x,x,y,y);                                                                                                //横屏这里要进行坐标变换,如果是竖屏,则直接是x0,x1,y0,y1做参数

  439.         Write_Data_U16(color);                                                                                                 //在指定点写入颜色数据

  440. }

  441. ```

  442. TFT.H

  443. ```c

  444. #ifndef uchar

  445. #define uchar unsigned char

  446. #endif

  447. #ifndef uint

  448. #define uint unsigned int

  449. #endif

  450. unsigned char pic[];

  451. void TFT_Initial(void);

  452. void show_colour_bar (void);

  453. void Write_Cmd_Data(unsigned char x, unsigned int y);

  454. void Write_Cmd(unsigned char DH,unsigned char DL);

  455. void Write_Data(unsigned char DH,unsigned char DL);

  456. void delayms(unsigned int tt);

  457. void show_photo(void);

  458. void Show_RGB (unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1,unsigned int Color);

  459. void Write_Data_U16(unsigned int y);

  460. void CLR_Screen(unsigned int bColor);

  461. void PutGB3232(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor,unsigned int bColor);

  462. void LCD_PutChar(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);

  463. void LCD_PutString(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor);

  464. void LCD_PutString24(unsigned short x, unsigned short y, unsigned char *s, unsigned int fColor, unsigned int bColor);

  465. void LCD_PutChar8x8(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor);

  466. void Put16x16(unsigned short x, unsigned short y, unsigned char g[2], unsigned int fColor,unsigned int bColor);

  467. void Put_pixel(unsigned int x,unsigned int y,unsigned int color);

  468. void address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2);

  469. void LCD_SetPos(unsigned short x0,unsigned short x1,unsigned short y0,unsigned short y1);

  470. void line(int x1,int y1,int x2,int y2,int color);

  471. void draw_circle(int x, int y, int r, int color);

  472. void LCD_PutSingleChar(unsigned int x, unsigned int y, char c, unsigned int fColor, unsigned int bColor);

  473. void Line(        uchar X0,

  474.                         uchar Y0,

  475.                         uchar X1,

  476.                         uchar Y1,

  477.                         unsigned int color);

  478. void Rectangle( uchar left,

  479.                                 uchar top,

  480.                                 uchar right,

  481.                                 uchar bottom,

  482.                                 unsigned int color);

  483. void Bar(        uchar left,

  484.                         uchar top,

  485.                         uchar right,

  486.                         uchar bottom,

  487.                         unsigned int color);        

  488. ```

  489. user_Config.h

  490. ```c

  491. /*2.8寸TFT触摸屏接口定义*/

  492. #define GPIO_TFT_DATA GPIOA                                 //数据口PA0~PA7

  493. #define RCC_GPIO_TFT RCC_APB2Periph_GPIOA

  494. #define GPIO_CTRB                        GPIOB                                 //控制口PB8~PB13

  495. #define RCC_GPIO_CTRB                                 RCC_APB2Periph_GPIOB

  496. #define RS_CLR        GPIO_ResetBits(GPIO_CTRB, GPIO_Pin_13) //RS置低

  497. #define RS_SET        GPIO_SetBits(GPIO_CTRB, GPIO_Pin_13) //RS置高

  498. #define RW_CLR        GPIO_ResetBits(GPIO_CTRB, GPIO_Pin_12) //RW置低

  499. #define RW_SET        GPIO_SetBits(GPIO_CTRB, GPIO_Pin_12)                 //RW置高

  500. #define RD_CLR        GPIO_ResetBits(GPIO_CTRB, GPIO_Pin_11) //E RD置低

  501. #define RD_SET        GPIO_SetBits(GPIO_CTRB, GPIO_Pin_11) //E ED置高

  502. #define CS_CLR        GPIO_ResetBits(GPIO_CTRB, GPIO_Pin_10) //CS置低

  503. #define CS_SET        GPIO_SetBits(GPIO_CTRB, GPIO_Pin_10) //CS置高

  504. #define RST_CLR        GPIO_ResetBits(GPIO_CTRB, GPIO_Pin_9) //RST置低

  505. #define RST_SET        GPIO_SetBits(GPIO_CTRB, GPIO_Pin_9) //RST置高

  506. #define LE_CLR        GPIO_ResetBits(GPIO_CTRB, GPIO_Pin_8) //LE置低

  507. #define LE_SET        GPIO_SetBits(GPIO_CTRB, GPIO_Pin_8) //LE置高

  508. #define DataPort GPIOA                                                                 //PA口为数据口

  509. #define D0 GPIO_Pin_0                                                                                 //D0使用的GPIO管脚

  510. #define D1 GPIO_Pin_1                                                                                                        //D1使用的GPIO管脚

  511. #define D2 GPIO_Pin_2                                                                                                 //D2使用的GPIO管脚

  512. #define D3                                GPIO_Pin_3                                                                                                        //D3使用的GPIO管脚

  513. #define D4                        GPIO_Pin_4                                                                                 //D4使用的GPIO管脚

  514. #define D5                                GPIO_Pin_5                                                                                                        //D5使用的GPIO管脚

  515. #define D6                                GPIO_Pin_6                                                                                                 //D6使用的GPIO管脚

  516. #define D7                                GPIO_Pin_7                                                                                                //D7使用的GPIO管脚

  517. /*全局变量-颜色代码*/

  518. #define White 0xFFFF                                                                                                         //显示颜色代码

  519. #define Black 0x0000

  520. #define Blue 0x001F

  521. #define Blue2 0x051F

  522. #define Red 0xF800

  523. #define Magenta 0xF81F

  524. #define Green 0x07E0

  525. #define Cyan 0x7FFF

  526. #define Yellow 0xFFE0

  527. /*函数声明区*/

  528. void RCC_Configuration(void);

  529. void NVIC_Configuration(void);

  530. void Delay(vu32 nCount);

  531. ```

  532. Ascii_8x16.h

  533. ```c

  534. //ASCII码的0x20~0x7f,0x00~0x1f为控制命令,所以被去掉

  535. const unsigned char Font8x16[] =

  536. {

  537. /*-- 文字: ASCII值0x20--*/

  538. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  539. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  540. /*-- 文字: ! ASCII值0x21--*/

  541. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  542. 0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x18,0x18,0x00,0x00,

  543. /*-- 文字: " ASCII值0x22--*/

  544. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  545. 0x00,0x12,0x36,0x24,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  546. /*-- 文字: # ASCII值0x23--*/

  547. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  548. 0x00,0x00,0x00,0x24,0x24,0x24,0xFE,0x48,0x48,0x48,0xFE,0x48,0x48,0x48,0x00,0x00,

  549. /*-- 文字: [ DISCUZ_CODE_12 ]nbsp; ASCII值0x24--*/

  550. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  551. 0x00,0x00,0x10,0x38,0x54,0x54,0x50,0x30,0x18,0x14,0x14,0x54,0x54,0x38,0x10,0x10,

  552. /*-- 文字: % ASCII值0x25--*/

  553. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  554. 0x00,0x00,0x00,0x44,0xA4,0xA8,0xA8,0xA8,0x54,0x1A,0x2A,0x2A,0x2A,0x44,0x00,0x00,

  555. /*-- 文字: & ASCII值0x26--*/

  556. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  557. 0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x50,0x6E,0xA4,0x94,0x88,0x89,0x76,0x00,0x00,

  558. /*-- 文字: ' ASCII值0x27--*/

  559. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  560. 0x00,0x60,0x60,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  561. /*-- 文字: ( ASCII值0x28--*/

  562. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  563. 0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00,

  564. /*-- 文字: ) ASCII值0x29--*/

  565. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  566. 0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00,

  567. /*-- 文字: * ASCII值0x2a--*/

  568. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  569. 0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,

  570. /*-- 文字: + ASCII值0x2b--*/

  571. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  572. 0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0x00,0x00,0x00,

  573. /*-- 文字: , ASCII值0x2c--*/

  574. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  575. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x20,0xC0,

  576. /*-- 文字: - ASCII值0x2d--*/

  577. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  578. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  579. /*-- 文字: . ASCII值0x2e--*/

  580. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  581. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,

  582. /*-- 文字: / ASCII值0x2f--*/

  583. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  584. 0x00,0x00,0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x00,

  585. /*-- 文字: 0 ASCII值0x30--*/

  586. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  587. 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,

  588. /*-- 文字: 1 ASCII值0x31--*/

  589. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  590. 0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

  591. /*-- 文字: 2 ASCII值0x32--*/

  592. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  593. 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,

  594. /*-- 文字: 3 ASCII值0x33--*/

  595. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  596. 0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,

  597. /*-- 文字: 4 ASCII值0x34--*/

  598. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  599. 0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,

  600. /*-- 文字: 5 ASCII值0x35--*/

  601. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  602. 0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,

  603. /*-- 文字: 6 ASCII值0x36--*/

  604. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  605. 0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,

  606. /*-- 文字: 7 ASCII值0x37--*/

  607. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  608. 0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,

  609. /*-- 文字: 8 ASCII值0x38--*/

  610. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  611. 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,

  612. /*-- 文字: 9 ASCII值0x39--*/

  613. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  614. 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,

  615. /*-- 文字: : ASCII值0x3a--*/

  616. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  617. 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,

  618. /*-- 文字: ; ASCII值0x3b--*/

  619. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  620. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x20,

  621. /*-- 文字: < ASCII值0x3c--*/

  622. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  623. 0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00,

  624. /*-- 文字: = ASCII值0x3d--*/

  625. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  626. 0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,

  627. /*-- 文字: > ASCII值0x3e--*/

  628. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  629. 0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00,

  630. /*-- 文字: ? ASCII值0x3f--*/

  631. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  632. 0x00,0x00,0x00,0x3C,0x42,0x42,0x62,0x02,0x04,0x08,0x08,0x00,0x18,0x18,0x00,0x00,

  633. /*-- 文字: @ ASCII值0x40--*/

  634. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  635. 0x00,0x00,0x00,0x38,0x44,0x5A,0xAA,0xAA,0xAA,0xAA,0xB4,0x42,0x44,0x38,0x00,0x00,

  636. /*-- 文字: A ASCII值0x41--*/

  637. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  638. 0x00,0x00,0x00,0x10,0x10,0x18,0x28,0x28,0x24,0x3C,0x44,0x42,0x42,0xE7,0x00,0x00,

  639. /*-- 文字: B ASCII值0x42--*/

  640. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  641. 0x00,0x00,0x00,0xF8,0x44,0x44,0x44,0x78,0x44,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,

  642. /*-- 文字: C ASCII值0x43--*/

  643. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  644. 0x00,0x00,0x00,0x3E,0x42,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x44,0x38,0x00,0x00,

  645. /*-- 文字: D ASCII值0x44--*/

  646. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  647. 0x00,0x00,0x00,0xF8,0x44,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x44,0xF8,0x00,0x00,

  648. /*-- 文字: E ASCII值0x45--*/

  649. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  650. 0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x42,0x42,0xFC,0x00,0x00,

  651. /*-- 文字: F ASCII值0x46--*/

  652. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  653. 0x00,0x00,0x00,0xFC,0x42,0x48,0x48,0x78,0x48,0x48,0x40,0x40,0x40,0xE0,0x00,0x00,

  654. /*-- 文字: G ASCII值0x47--*/

  655. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  656. 0x00,0x00,0x00,0x3C,0x44,0x44,0x80,0x80,0x80,0x8E,0x84,0x44,0x44,0x38,0x00,0x00,

  657. /*-- 文字: H ASCII值0x48--*/

  658. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  659. 0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,

  660. /*-- 文字: I ASCII值0x49--*/

  661. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  662. 0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

  663. /*-- 文字: J ASCII值0x4a--*/

  664. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  665. 0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x88,0xF0,

  666. /*-- 文字: K ASCII值0x4b--*/

  667. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  668. 0x00,0x00,0x00,0xEE,0x44,0x48,0x50,0x70,0x50,0x48,0x48,0x44,0x44,0xEE,0x00,0x00,

  669. /*-- 文字: L ASCII值0x4c--*/

  670. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  671. 0x00,0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0xFE,0x00,0x00,

  672. /*-- 文字: M ASCII值0x4d--*/

  673. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  674. 0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00,

  675. /*-- 文字: N ASCII值0x4e--*/

  676. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  677. 0x00,0x00,0x00,0xC7,0x62,0x62,0x52,0x52,0x4A,0x4A,0x4A,0x46,0x46,0xE2,0x00,0x00,

  678. /*-- 文字: O ASCII值0x4f--*/

  679. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  680. 0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x44,0x38,0x00,0x00,

  681. /*-- 文字: P ASCII值0x50--*/

  682. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  683. 0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x42,0x7C,0x40,0x40,0x40,0x40,0xE0,0x00,0x00,

  684. /*-- 文字: Q ASCII值0x51--*/

  685. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  686. 0x00,0x00,0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x82,0xB2,0xCA,0x4C,0x38,0x06,0x00,

  687. /*-- 文字: R ASCII值0x52--*/

  688. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  689. 0x00,0x00,0x00,0xFC,0x42,0x42,0x42,0x7C,0x48,0x48,0x44,0x44,0x42,0xE3,0x00,0x00,

  690. /*-- 文字: S ASCII值0x53--*/

  691. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  692. 0x00,0x00,0x00,0x3E,0x42,0x42,0x40,0x20,0x18,0x04,0x02,0x42,0x42,0x7C,0x00,0x00,

  693. /*-- 文字: T ASCII值0x54--*/

  694. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  695. 0x00,0x00,0x00,0xFE,0x92,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,

  696. /*-- 文字: U ASCII值0x55--*/

  697. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  698. 0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,

  699. /*-- 文字: V ASCII值0x56--*/

  700. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  701. 0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00,

  702. /*-- 文字: W ASCII值0x57--*/

  703. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  704. 0x00,0x00,0x00,0xD6,0x92,0x92,0x92,0x92,0xAA,0xAA,0x6C,0x44,0x44,0x44,0x00,0x00,

  705. /*-- 文字: X ASCII值0x58--*/

  706. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  707. 0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00,

  708. /*-- 文字: Y ASCII值0x59--*/

  709. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  710. 0x00,0x00,0x00,0xEE,0x44,0x44,0x28,0x28,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00,

  711. /*-- 文字: Z ASCII值0x5a--*/

  712. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  713. 0x00,0x00,0x00,0x7E,0x84,0x04,0x08,0x08,0x10,0x20,0x20,0x42,0x42,0xFC,0x00,0x00,

  714. /*-- 文字: [ ASCII值0x5b--*/

  715. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  716. 0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00,

  717. /*-- 文字: \ ASCII值0x5c--*/

  718. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  719. 0x00,0x00,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x08,0x04,0x04,0x04,0x02,0x02,

  720. /*-- 文字: ] ASCII值0x5d--*/

  721. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  722. 0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00,

  723. /*-- 文字: ^ ASCII值0x5e--*/

  724. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  725. 0x00,0x1C,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  726. /*-- 文字: _ ASCII值0x5f--*/

  727. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  728. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,

  729. /*-- 文字: ` ASCII值0x60--*/

  730. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  731. 0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  732. /*-- 文字: a ASCII值0x61--*/

  733. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  734. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x1E,0x22,0x42,0x42,0x3F,0x00,0x00,

  735. /*-- 文字: b ASCII值0x62--*/

  736. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  737. 0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x64,0x58,0x00,0x00,

  738. /*-- 文字: c ASCII值0x63--*/

  739. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  740. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x40,0x40,0x40,0x22,0x1C,0x00,0x00,

  741. /*-- 文字: d ASCII值0x64--*/

  742. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  743. 0x00,0x00,0x00,0x06,0x02,0x02,0x02,0x1E,0x22,0x42,0x42,0x42,0x26,0x1B,0x00,0x00,

  744. /*-- 文字: e ASCII值0x65--*/

  745. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  746. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x7E,0x40,0x40,0x42,0x3C,0x00,0x00,

  747. /*-- 文字: f ASCII值0x66--*/

  748. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  749. 0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x7E,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

  750. /*-- 文字: g ASCII值0x67--*/

  751. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  752. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x44,0x44,0x38,0x40,0x3C,0x42,0x42,0x3C,

  753. /*-- 文字: h ASCII值0x68--*/

  754. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  755. 0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,

  756. /*-- 文字: i ASCII值0x69--*/

  757. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  758. 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

  759. /*-- 文字: j ASCII值0x6a--*/

  760. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  761. 0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x44,0x78,

  762. /*-- 文字: k ASCII值0x6b--*/

  763. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  764. 0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0x48,0x50,0x68,0x48,0x44,0xEE,0x00,0x00,

  765. /*-- 文字: l ASCII值0x6c--*/

  766. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  767. 0x00,0x00,0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,

  768. /*-- 文字: m ASCII值0x6d--*/

  769. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  770. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00,

  771. /*-- 文字: n ASCII值0x6e--*/

  772. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  773. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDC,0x62,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,

  774. /*-- 文字: o ASCII值0x6f--*/

  775. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  776. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,

  777. /*-- 文字: p ASCII值0x70--*/

  778. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  779. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x64,0x42,0x42,0x42,0x44,0x78,0x40,0xE0,

  780. /*-- 文字: q ASCII值0x71--*/

  781. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  782. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x22,0x42,0x42,0x42,0x22,0x1E,0x02,0x07,

  783. /*-- 文字: r ASCII值0x72--*/

  784. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  785. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x32,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,

  786. /*-- 文字: s ASCII值0x73--*/

  787. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  788. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x42,0x40,0x3C,0x02,0x42,0x7C,0x00,0x00,

  789. /*-- 文字: t ASCII值0x74--*/

  790. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  791. 0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x10,0x10,0x10,0x0C,0x00,0x00,

  792. /*-- 文字: u ASCII值0x75--*/

  793. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  794. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x42,0x42,0x42,0x42,0x46,0x3B,0x00,0x00,

  795. /*-- 文字: v ASCII值0x76--*/

  796. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  797. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x10,0x10,0x00,0x00,

  798. /*-- 文字: w ASCII值0x77--*/

  799. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  800. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD7,0x92,0x92,0xAA,0xAA,0x44,0x44,0x00,0x00,

  801. /*-- 文字: x ASCII值0x78--*/

  802. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  803. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x24,0x18,0x18,0x18,0x24,0x76,0x00,0x00,

  804. /*-- 文字: y ASCII值0x79--*/

  805. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  806. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x28,0x18,0x10,0x10,0xE0,

  807. /*-- 文字: z ASCII值0x7a--*/

  808. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  809. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00,

  810. /*-- 文字: { ASCII值0x7b--*/

  811. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  812. 0x00,0x03,0x04,0x04,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x03,0x00,

  813. /*-- 文字: | ASCII值0x7c--*/

  814. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  815. 0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,

  816. /*-- 文字: } ASCII值0x7d--*/

  817. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  818. 0x00,0x60,0x10,0x10,0x10,0x10,0x10,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x60,0x00,

  819. /*-- 文字: ~ ASCII值0x7e--*/

  820. /*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

  821. 0x30,0x4C,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  822. /*-- 文字:  ASCII值0x7f--*/

  823. /*-- Fixedsys11; 此字体下对应的点阵为:宽x高=8x16 --*/

  824. 0x00,0x00,0x00,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x00,0x00,0x00,0x00

  825. };

  826. ```

  827. Chinese.h

  828. ```c

  829. /////////////////////////////////////////////////////////////////////////

  830. // 汉字取模步骤:1、在文字输入区输入汉字;2、在输入区鼠标右键选择字体,字体选Fixedsys,大小选12号,即16x16,后点确定

  831. // 3、键盘输入CTRL+ENTER组合键,4、点击左边菜单"取模方式-》C51格式",即会在点阵生成区中显示结果。

  832. //注意:软件默认为横向取模,如果需要修改取模方式,点击左边菜单"参数设置-》其他选项"即可修改.

  833. /////////////////////////////////////////////////////////////////////////

  834. // ------------------ 汉字字模数据结构体定义 ------------------------ //

  835. const struct hz16_tab //结构体名hz16_tab

  836. {

  837. unsigned char GBK[2]; //编译器在编译汉字时会编译成GBK码,每个汉字为两字节,例如"北"字内码为0xb1b1.

  838. unsigned char hz16[32]; //每个16x16汉字为16x16/8=32字节

  839. } ch16[] = //数据表

  840. {

  841. "合",0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x18,0x20,0x2E,0xDF,0xF4,0x00,0x00,

  842. 0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,

  843. /*-- 文字: 肥 --*/

  844. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  845. "肥",0x00,0x00,0x3D,0xFC,0x25,0x24,0x25,0x24,0x3D,0x24,0x25,0x24,0x25,0xFC,0x25,0x04,

  846. 0x3D,0x00,0x25,0x00,0x25,0x00,0x25,0x00,0x45,0x02,0x55,0x02,0x88,0xFE,0x00,0x00,

  847. /*-- 文字: 炜 --*/

  848. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  849. "炜",0x10,0x40,0x10,0x40,0x17,0xFE,0x14,0x40,0x54,0x40,0x5B,0xFC,0x50,0x40,0x90,0x40,

  850. 0x17,0xFE,0x10,0x42,0x28,0x42,0x24,0x42,0x44,0x54,0x40,0x48,0x80,0x40,0x00,0x40,

  851. /*-- 文字: 煌 --*/

  852. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  853. "煌",0x10,0x40,0x10,0x80,0x13,0xFC,0x16,0x04,0x1B,0xFC,0x52,0x04,0x53,0xFC,0x90,0x00,

  854. 0x13,0xFC,0x30,0x40,0x2B,0xFC,0x24,0x40,0x44,0x44,0x47,0xFE,0x80,0x00,0x00,0x00,

  855. /*-- 文字: 电 --*/

  856. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  857. "电",0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,

  858. 0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00,

  859. /*-- 文字: 子 --*/

  860. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  861. "子",0x00,0x00,0x3F,0xF0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x04,

  862. 0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,

  863. /*-- 文字: 有 --*/

  864. /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

  865. "有",0x01,0x00,0x01,0x00,0x7F,0xFE,0x02,0x00,0x04,0x00,0x0F,0xF0,0x18,0x10,0x28,0x10,

  866. 0x4F,0xF0,0x88,0x10,0x08,0x10,0x0F,0xF0,0x08,0x10,0x08,0x90,0x08,0x70,0x08,0x20,

  867. /*-- 文字: 限 --*/

  868. /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

  869. "限",0x00,0x00,0xFB,0xF8,0x92,0x08,0x93,0xF8,0xA2,0x08,0xA2,0x08,0x93,0xF8,0x8A,0x80,

  870. 0x8A,0x48,0xAA,0x50,0x92,0x20,0x82,0x20,0x82,0x10,0x82,0x8E,0x83,0x04,0x82,0x00,

  871. /*-- 文字: 公 --*/

  872. /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

  873. "公",0x00,0x00,0x04,0x40,0x06,0x40,0x04,0x40,0x08,0x20,0x08,0x10,0x10,0x18,0x22,0x0E,

  874. 0x43,0x04,0x02,0x00,0x04,0x20,0x08,0x10,0x11,0xF8,0x3F,0x18,0x10,0x10,0x00,0x00,

  875. /*-- 文字: 司 --*/

  876. /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

  877. "司",0x00,0x00,0x3F,0xFC,0x00,0x04,0x00,0x04,0x7F,0xE4,0x00,0x04,0x00,0x04,0x3F,0xC4,

  878. 0x20,0x44,0x20,0x44,0x3F,0xC4,0x20,0x44,0x20,0x04,0x00,0x14,0x00,0x08,0x00,0x00,

  879. /*-- 文字: 面 --*/

  880. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  881. "面",0x00,0x00,0x7F,0xFE,0x02,0x00,0x04,0x00,0x3F,0xFC,0x24,0x44,0x24,0x44,0x27,0xC4,

  882. 0x24,0x44,0x24,0x44,0x27,0xC4,0x24,0x44,0x24,0x44,0x3F,0xFC,0x20,0x04,0x00,0x00,

  883. /*-- 文字: 向 --*/

  884. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  885. "向",0x02,0x00,0x04,0x00,0x3F,0xFC,0x20,0x04,0x20,0x04,0x27,0xE4,0x24,0x24,0x24,0x24,

  886. 0x24,0x24,0x24,0x24,0x27,0xE4,0x24,0x24,0x20,0x04,0x20,0x14,0x20,0x08,0x00,0x00,

  887. /*-- 文字: 教 --*/

  888. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  889. "教",0x08,0x20,0x08,0x20,0x7F,0x20,0x0A,0x7E,0xFF,0xC4,0x08,0x44,0x10,0xC4,0x3E,0x48,

  890. 0xC4,0x28,0x08,0x28,0x0F,0x10,0xF8,0x10,0x08,0x28,0x08,0xC8,0x2B,0x06,0x10,0x04,

  891. /*-- 文字: 学 --*/

  892. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  893. "学",0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,

  894. 0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00,

  895. /*-- 文字: 面 --*/

  896. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  897. "面",0x00,0x00,0x7F,0xFE,0x02,0x00,0x04,0x00,0x3F,0xFC,0x24,0x44,0x24,0x44,0x27,0xC4,

  898. 0x24,0x44,0x24,0x44,0x27,0xC4,0x24,0x44,0x24,0x44,0x3F,0xFC,0x20,0x04,0x00,0x00,

  899. /*-- 文字: 向 --*/

  900. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  901. "向",0x02,0x00,0x04,0x00,0x3F,0xFC,0x20,0x04,0x20,0x04,0x27,0xE4,0x24,0x24,0x24,0x24,

  902. 0x24,0x24,0x24,0x24,0x27,0xE4,0x24,0x24,0x20,0x04,0x20,0x14,0x20,0x08,0x00,0x00,

  903. /*-- 文字: 开 --*/

  904. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  905. "开",0x00,0x00,0x7F,0xFE,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFF,0xFE,0x04,0x20,

  906. 0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x00,0x00,

  907. /*-- 文字: 发 --*/

  908. /*-- Fixedsys12; 此字体下对应的点阵为:宽x高=16x16 --*/

  909. "发",0x02,0x00,0x22,0x40,0x22,0x30,0x22,0x10,0x7F,0xFE,0x24,0x00,0x04,0x00,0x07,0xE0,

  910. 0x0C,0x20,0x0A,0x20,0x0A,0x20,0x11,0x40,0x20,0x80,0x41,0x60,0x86,0x1C,0x18,0x08

  911. };
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表