欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2622|回復: 0
收起左側

基于SC95F8616單片機的W25Q16中文字庫構建及使用

[復制鏈接]
ID:776997 發表于 2020-7-16 16:21 | 顯示全部樓層 |閱讀模式
本帖最后由 jinglixixi 于 2020-7-17 19:13 編輯

1. 串行通訊傳送字庫文件
首先制作一個測試文件HEX.TXT
3.png

然后編寫主程序,其代碼如下:
  1. extern bit Uart0SendFlag;
  2. extern bit Uart0ReceiveFlag;

  3. uint8_t  Send_DATA[16];
  4. uint8_t  Rec_DATA[16];

  5. void main(void)
  6. {
  7.           uint8_t j
  8.          Uart0Init();
  9.          enableInterrupts();
  10.          while(1)
  11.          {
  12.              if(Uart0ReceiveFlag)
  13.              {
  14.                              Uart0ReceiveFlag = 0;
  15.                               u=UART0_ReceiveData8();
  16.                               printf("%c",u);
  17.                               j++;
  18.             }
  19.             if(j==16)
  20.             {
  21.                j=0;   
  22.            }
  23.        }
  24. }
復制代碼

輔助函數為:
  1. void Uart0Init(void)
  2. {
  3.          GPIO_Init(GPIO2, GPIO_PIN_1, GPIO_MODE_IN_PU);
  4.          UART0_Init(32000000, 9600, UART0_Mode_10B, UART0_CLOCK_TIMER1, UART0_RX_ENABLE);
  5.          UART0_ITConfig(ENABLE, LOW);
  6. }

  7. char putchar(char c)
  8. {
  9.          UART0_SendData8(c);
  10.          while(!Uart0SendFlag);
  11.          Uart0SendFlag = 0;
  12.          return c;
  13. }
復制代碼

通訊中斷復位程序為:
  1. void UART0Interrupt()              interrupt 4
  2. {
  3.          if(UART0_GetFlagStatus(UART0_FLAG_TI))
  4.          {
  5.                    UART0_ClearFlag(UART0_FLAG_TI);
  6.                    Uart0SendFlag = 1;
  7.          }
  8.          else if(UART0_GetFlagStatus(UART0_FLAG_RI))
  9.          {
  10.                    UART0_ClearFlag(UART0_FLAG_RI);
  11.                    Uart0ReceiveFlag = 1;   
  12.                    UART0_SendData8(UART0_ReceiveData8());
  13.          }
  14. }
復制代碼

在下載程序后,首先打開串口調試器并設好通訊參數。然后按“讀取文件”按鈕,以載入發送文件。再將發送方式選為16進制,點擊“發送”按鈕加以發送,則獲得圖示的結果,說明收發數據項一致是可行的。
1.png
串口收發效果

將下面的字庫文件發送給存儲模塊并保存,以便后續測試。
4.png

2.以區位碼進行漢字顯示
在使用自建字庫,由于規模小,一般是使用順序號來調用字模,但要使用一個完整的字庫,則要參照區位碼來調用字模。
本打算以這種方式來進行OLED_ShowCHineseh(0,2,''),無奈編譯系統不支持,只好直接采用區位碼的方式OLED_ShowCHineseh(0,2,0xB0A1),其運行效果如圖所示。
2.png
以區位碼顯示中文

顯示顯示效果的主程序如下:
  1. void main(void)
  2. {
  3.          OLED_Init();
  4.          OLED_Clear();
  5.          OLED_ShowCHineseh(0,2,0xB0A1);   //啊
  6.          OLED_ShowCHineseh(16,2,0xB0A2);  //阿
  7.          OLED_ShowCHineseh(32,2,0xB0A3);  //埃
  8.          OLED_ShowCHineseh(48,2,0xB0A4);  //挨
  9.          OLED_ShowCHineseh(64,2,0xB0A5);  //哎
  10.         
  11.          OLED_ShowCHineseh(0,4,0xB0A6);   //唉
  12.          OLED_ShowCHineseh(16,4,0xB0A7);  //哀
  13.          OLED_ShowCHineseh(32,4,0xB0A8);  //皚
  14.          OLED_ShowCHineseh(48,4,0xB0A9);  //癌
  15.          OLED_ShowCHineseh(64,4,0xB0AA);  //藹
  16.          while(1);
  17. }
復制代碼

按區位碼顯示中文函數為:
  1. void OLED_ShowCHineseh(unsigned char x,unsigned char y,unsigned int no)
  2. {                                
  3.            unsigned char t,q,w,u;
  4.            // 暫未添加區碼處理
  5.            // q=(unsigned char) (no&0xff00)>>8;
  6.            // w=(q-176)*94+w
  7.            w=(unsigned char) no&0xff;
  8.            w=(w-0xA1)*2;
  9.            if(w>9)
  10.            {
  11.                                OLED_ShowChar(16,0,w/10+'0',16);
  12.            }
  13.            OLED_ShowChar(24,0,w%10+'0',16);
  14.            OLED_Set_Pos(x,y);   
  15.            for(t=0;t<16;t++)
  16.            {
  17.                                OLED_WR_Byte(Hzk[w][t],OLED_DATA);
  18.            }  
  19.            q=q+1;
  20.            OLED_Set_Pos(x,y+1);         
  21.            for(t=0;t<16;t++)
  22.            {  
  23.                               OLED_WR_Byte(Hzk[w][t],OLED_DATA);
  24.            }
  25. }
復制代碼

這樣在具備完整中文字庫的情況下,我們就可以按漢字的編碼從字庫中讀取字模來顯示中文信息。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表