找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7351|回復(fù): 7
收起左側(cè)

PCtoLCD2013字模軟件下載與STM32 tft液晶顯示中英文與變量源碼

[復(fù)制鏈接]
ID:294956 發(fā)表于 2018-3-21 16:42 | 顯示全部樓層 |閱讀模式
F103RCT6+tft顯示程序
0.png 0.png

PCtoLCD2013字模軟件:
0.png
GB2312字模
尋址公式:
pos = ((High8bit-0xa1)*94+Low8bit-0xa1)*16*16/8;


其中:16*16/8 的16*16為矩陣大小,根據(jù)自己的配置修改。
工程中讀取字模的函數(shù)為 bsp_spi_flash.c 文件的 GetGBKCode_from_EXFlash 。

stm32單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @brief   液晶顯示漢字實(shí)驗(字庫在外部FLASH)
  7.   ******************************************************************************
  8.   * @attention
  9.   *
  10.   * 實(shí)驗平臺:秉火 F103-MINI STM32 開發(fā)板
  11.   ******************************************************************************
  12.   */

  13. #include "stm32f10x.h"
  14. #include "./usart/bsp_usart.h"        
  15. #include "./lcd/bsp_ili9341_lcd.h"
  16. #include "./flash/bsp_spi_flash.h"

  17. static void LCD_Test(void);        
  18. static void Delay ( __IO uint32_t nCount );

  19. void Printf_Charater(void)   ;


  20. int main(void)
  21. {        
  22.         //LCD 初始化
  23.         ILI9341_Init ();         

  24.         /* USART config */
  25.         USART_Config();  
  26.         
  27.         printf("\r\n ********** 液晶屏中文顯示程序(字庫在外部FLASH)*********** \r\n");
  28.         printf("\r\n 若漢字顯示不正常,請閱讀工程中的readme.txt文件說明,根據(jù)要求給FLASH重刷字模數(shù)據(jù)\r\n");

  29. //其中0、3、5、6 模式適合從左至右顯示文字,
  30. //不推薦使用其它模式顯示文字        其它模式顯示文字會有鏡像效果                        
  31. //其中 6 模式為大部分液晶例程的默認(rèn)顯示方向  
  32.         ILI9341_GramScan ( 6 );
  33.         
  34.         Printf_Charater();
  35.         
  36.         while ( 1 )
  37.         {
  38.                 LCD_Test();
  39.         }
  40.         
  41.         
  42. }



  43. /*用于測試各種液晶的函數(shù)*/
  44. void LCD_Test(void)
  45. {
  46.         /*演示顯示變量*/
  47.         static uint8_t testCNT = 0;        
  48.         char dispBuff[100];
  49.         
  50.         testCNT++;        
  51.         
  52.         LCD_SetFont(&Font8x16);
  53.         LCD_SetColors(RED,BLACK);

  54.   ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);        /* 清屏,顯示全黑 */
  55.         /********顯示字符串示例*******/
  56.   ILI9341_DispStringLine_EN_CH(LINE(0),"秉火3.2_2.8寸LCD參數(shù):");
  57.   ILI9341_DispStringLine_EN_CH(LINE(1),"分辨率:240x320 px");
  58.   ILI9341_DispStringLine_EN_CH(LINE(2),"ILI9341液晶驅(qū)動");
  59.   ILI9341_DispStringLine_EN_CH(LINE(3),"XPT2046觸摸屏驅(qū)動");

  60.         /********顯示變量示例*******/
  61.         LCD_SetTextColor(GREEN);

  62.         /*使用c標(biāo)準(zhǔn)庫把變量轉(zhuǎn)化成字符串*/
  63.         sprintf(dispBuff,"顯示變量: %d ",testCNT);
  64.   LCD_ClearLine(LINE(5));        /* 清除單行文字 */
  65.         
  66.         /*然后顯示該字符串即可,其它變量也是這樣處理*/
  67.         ILI9341_DispStringLine_EN_CH(LINE(5),dispBuff);

  68.         /*******顯示圖形示例******/
  69.   /* 畫直線 */
  70.   
  71.   LCD_ClearLine(LINE(7));/* 清除單行文字 */
  72.         LCD_SetTextColor(BLUE);

  73.   ILI9341_DispStringLine_EN_CH(LINE(7),"畫直線:");
  74.   
  75.         LCD_SetTextColor(RED);
  76.   ILI9341_DrawLine(50,170,210,230);  
  77.   ILI9341_DrawLine(50,200,210,240);
  78.   
  79.         LCD_SetTextColor(GREEN);
  80.   ILI9341_DrawLine(100,170,200,230);  
  81.   ILI9341_DrawLine(200,200,220,240);
  82.         
  83.         LCD_SetTextColor(BLUE);
  84.   ILI9341_DrawLine(110,170,110,230);  
  85.   ILI9341_DrawLine(130,200,220,240);
  86.   
  87.   Delay(0xFFFFFF);
  88.   
  89.   ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8);        /* 清屏,顯示全黑 */
  90.   
  91.   
  92.   /*畫矩形*/

  93.   LCD_ClearLine(LINE(7));        /* 清除單行文字 */
  94.         LCD_SetTextColor(BLUE);

  95.   ILI9341_DispStringLine_EN_CH(LINE(7),"畫矩形:");

  96.         LCD_SetTextColor(RED);
  97.   ILI9341_DrawRectangle(50,200,100,30,1);
  98.         
  99.         LCD_SetTextColor(GREEN);
  100.   ILI9341_DrawRectangle(160,200,20,40,0);
  101.         
  102.         LCD_SetTextColor(BLUE);
  103.   ILI9341_DrawRectangle(170,200,50,20,1);
  104.   
  105.   Delay(0xFFFFFF);
  106.         
  107.         ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8);        /* 清屏,顯示全黑 */

  108.   /* 畫圓 */
  109.   LCD_ClearLine(LINE(7));        /* 清除單行文字 */
  110.         LCD_SetTextColor(BLUE);
  111.         
  112.   ILI9341_DispStringLine_EN_CH(LINE(7),"畫圓");
  113.         
  114.         LCD_SetTextColor(RED);
  115.   ILI9341_DrawCircle(100,200,20,0);
  116.         
  117.         LCD_SetTextColor(GREEN);
  118.   ILI9341_DrawCircle(100,200,10,1);
  119.         
  120.         LCD_SetTextColor(BLUE);
  121.         ILI9341_DrawCircle(140,200,20,0);

  122.   Delay(0xFFFFFF);
  123.   
  124.   ILI9341_Clear(0,16*8,LCD_X_LENGTH,LCD_Y_LENGTH-16*8);        /* 清屏,顯示全黑 */

  125. }


  126. /**
  127.   * @brief  簡單延時函數(shù)
  128.   * @param  nCount :延時計數(shù)值
  129.   * @retval 無
  130.   */        
  131. static void Delay ( __IO uint32_t nCount )
  132. {
  133.   for ( ; nCount != 0; nCount -- );
  134.         
  135. }



  136. /*"當(dāng)"字符的字模16x16 */           
  137. unsigned char charater_matrix[] =   
  138. { /*"當(dāng)",0*/
  139. 0x01,0x00,0x21,0x08,0x11,0x08,0x09,0x10,0x09,0x20,0x01,0x00,0x7F,0xF8,0x00,        0x08,
  140. 0x00,0x08,0x00,0x08,0x3F,0xF8,0x00,0x08,0x00,0x08,0x00,0x08,0x7F,0xF8,0x00,0x08,

  141. };   
  142.   
  143. /**
  144.   * @brief  使用串口在上位機(jī)打印字模
  145.         *                                        演示字模顯示原理
  146.   * @retval 無
  147.   */
  148. void Printf_Charater(void)   
  149. {   
  150.         int i,j;   
  151.         unsigned char kk;
  152.   
  153.         /*i用作行計數(shù)*/
  154.   for ( i=0;i<16;i++)   
  155.         {   
  156.                 /*j用作一字節(jié)內(nèi)數(shù)據(jù)的移位計數(shù)*/
  157.                 /*一行像素的第一個字節(jié)*/
  158.     for(j=0; j<8; j++)   
  159.     {      
  160.                         /*一個數(shù)據(jù)位一個數(shù)據(jù)位地處理*/
  161.       kk = charater_matrix[2*i] << j ;  //左移J位         
  162.                         if( kk & 0x80)     
  163.                         {   
  164.                                 printf("*"); //如果最高位為1,輸出*號,表示筆跡
  165.                         }   
  166.                         else  
  167.                         {   
  168.                                 printf(" "); //如果最高位為0,輸出空格,表示空白  
  169.                         }   
  170.     }   
  171.                 /*一行像素的第二個字節(jié)*/
  172.     for(j=0; j<8; j++)   
  173.                 {              
  174.       kk = charater_matrix[2*i+1] << j ;  //左移J位   
  175.       
  176.                         if( kk & 0x80)         
  177.                         {   
  178.                                 printf("*"); //如果最高位為1,輸出*號,表示筆跡   
  179.                         }   
  180.                         else  
  181.                         {   
  182.                                 printf(" "); //如果最高位為0,輸出空格,表示空白
  183.                         }   
  184.                 }         
  185.     printf("\n");    //輸出完一行像素,換行
  186.         }   
  187.         printf("\n\n");                 //一個字輸出完畢
  188. }   



  189. /* ------------------------------------------end of file---------------------------------------- */

復(fù)制代碼

所有資料51hei提供下載:
29-液晶顯示中英文.rar (7.49 MB, 下載次數(shù): 169)


回復(fù)

使用道具 舉報

ID:335118 發(fā)表于 2018-5-21 22:52 | 顯示全部樓層
理解原理核心還是很有必要的
回復(fù)

使用道具 舉報

ID:290380 發(fā)表于 2019-6-4 12:33 | 顯示全部樓層
理解原理核心還是很有必要的
回復(fù)

使用道具 舉報

ID:55689 發(fā)表于 2020-4-11 06:44 | 顯示全部樓層

理解原理核心還是很有必要的
回復(fù)

使用道具 舉報

ID:296704 發(fā)表于 2020-5-5 17:00 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:135334 發(fā)表于 2020-5-7 15:25 | 顯示全部樓層
是我需要的
回復(fù)

使用道具 舉報

ID:70490 發(fā)表于 2020-6-16 20:30 | 顯示全部樓層
是我需要的,感謝分享
回復(fù)

使用道具 舉報

ID:70044 發(fā)表于 2020-10-4 22:19 | 顯示全部樓層
下載下來試試,最近國慶在家打算做個中文的桌面小顯示屏
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表