chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】基于HiSpark Wi-Fi IoT套件_5-OLED中文顯示

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-04 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:徐以鋒, 帖子地址:https://bbs.elecfans.com/jishu_2012060_1_1.html


上一篇報(bào)告已經(jīng)過去一個(gè)月了,主要是公司項(xiàng)目太急,耽擱太長(zhǎng)時(shí)間。上一次的報(bào)告主要主要介紹了HI3861的IIC操作,控制OLED顯示英文“hello world”,當(dāng)時(shí)調(diào)試的時(shí)候其實(shí)是想顯示中文的,但是因?yàn)樵菼AR開發(fā)環(huán)境下的中文顯示程序移植到鴻蒙里面后居然一堆錯(cuò)誤,編譯器差異文中對(duì)應(yīng)細(xì)節(jié)會(huì)
詳述,所以只顯示了英文。
那之后總歸覺得OLED怎么也得能顯示中文吧,所以本篇主要介紹怎么在OLED上顯示中文,當(dāng)然是基于上次報(bào)告的代碼,最終代碼會(huì)在文末附件里。主要內(nèi)容有如下幾點(diǎn):
1、 漢字取模
2、 代碼編寫修改
3、 燒錄測(cè)試
一、漢字取模
上次報(bào)告已經(jīng)介紹過,套件使用的OLED顯示cache如下圖所示,顯示點(diǎn)陣對(duì)應(yīng)cache每個(gè)字節(jié)的順序是從左到右從上倒下,而顯示的每個(gè)字節(jié)的bit是高位在下。
105009o4qqdqsdbqt632rq.png
通過顯存與點(diǎn)陣對(duì)應(yīng)關(guān)系,那漢字取模要遵循字節(jié)從左到右從上到下,字節(jié)內(nèi)為縱向8點(diǎn)(一個(gè)字節(jié)位數(shù))下高位取模方式,使用的取模軟件是“LcmZimoLCD字模提取工具軟件”,報(bào)告后邊會(huì)在附件中體現(xiàn)。因此,最終軟件設(shè)置界面設(shè)置內(nèi)容如下圖所示:
105010eu4z3c7rz30mmlc7.png
設(shè)置完成后點(diǎn)擊“參數(shù)確認(rèn)“并在下方文字框中輸入”你好“并點(diǎn)擊輸入字串進(jìn)入下一界面,下一界面如下圖所示:
105011u9wi8nzobl9of09i.png
由圖中可以看出漢字取模已經(jīng)完成,并直接生成C語言代碼。形式如下:
  1. // ------------------漢字字模的數(shù)據(jù)結(jié)構(gòu)定義------------------------ //
  2. typedef struct typFNT_GB16 // 漢字字模數(shù)據(jù)結(jié)構(gòu)
  3. {
  4. signed char Index[2]; // 漢字內(nèi)碼索引
  5. char Msk[32]; // 點(diǎn)陣碼數(shù)據(jù)
  6. };
復(fù)制代碼
  1. /////////////////////////////////////////////////////////////////////////
  2. // 漢字字模表 //
  3. // 漢字庫: 宋體16.dot 縱向取模下高位,數(shù)據(jù)排列:從左到右從上到下 //
  4. /////////////////////////////////////////////////////////////////////////
  5. struct typFNT_GB16 code GB_16[] = // 數(shù)據(jù)表
  6. {
  7. "你",0x40,0x20,0xF8,0x07,0x40,0x20,0x18,0x0F,
  8. 0x08,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,
  9. 0x00,0x00,0xFF,0x00,0x00,0x08,0x04,0x43,
  10. 0x80,0x7F,0x00,0x01,0x06,0x0C,0x00,0x00,
  11. "好",0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,
  12. 0x82,0x82,0xE2,0x92,0x8A,0xC6,0x80,0x00,
  13. 0x40,0x22,0x15,0x08,0x14,0x63,0x00,0x00,
  14. 0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00
  15. };
  16. // 漢字表:
  17. // 你好
復(fù)制代碼

此處生成的代碼需要做進(jìn)一步修改方可使用鴻蒙系統(tǒng)使用的GCC編譯器,具體修改內(nèi)容會(huì)在代碼修改中做詳述。
二、代碼編寫與修改
代碼修改主要有如下幾點(diǎn)。
1、 單個(gè)漢字字符機(jī)構(gòu)體修改:
修改漢字取模軟件生成的代碼,能夠通過鴻蒙交叉編譯器,其中結(jié)構(gòu)體 struct typFNT_GB16 內(nèi)的signed char Index[2]; 索引值由2更改為3,因?yàn)閱蝹€(gè)漢字在雙引號(hào)內(nèi)時(shí)還需要一個(gè)字節(jié)存儲(chǔ)字符串結(jié)束字符“”。最終更改后的結(jié)構(gòu)體如下:
  1. struct typFNT_GB16 // 漢字字模數(shù)據(jù)結(jié)構(gòu)
  2. {
  3. unsigned charindex[3]; // 漢字內(nèi)碼索引
  4. charmask[32]; // 點(diǎn)陣碼數(shù)據(jù)
  5. };
復(fù)制代碼
2、 漢字碼表:
查看上文中生成的漢字碼表struct typFNT_GB16 code GB_16[],可以看出字模軟件將所有數(shù)據(jù)都以字節(jié)數(shù)組的方式存放的,這種存放方式在IAR中可以直接編譯通過,也就是IAR會(huì)將字符數(shù)組映射到struct typFNT_GB16內(nèi)容中,而鴻蒙使用的GCC編譯器不支持此類操作,所以上次報(bào)告未能實(shí)現(xiàn)中文顯示。根據(jù)編譯器報(bào)錯(cuò)提示,需要將生成的漢字碼表更改為如下:
  1. const structtypFNT_GB16ST_GB_16[] =
  2. {
  3. {
  4. {"你",},
  5. {
  6. 0x40,0x20,0xF8,0x07,0x40,0x20,0x18,0x0F,
  7. 0x08,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,
  8. 0x00,0x00,0xFF,0x00,0x00,0x08,0x04,0x43,
  9. 0x80,0x7F,0x00,0x01,0x06,0x0C,0x00,0x00,
  10. }
  11. },
  12. {
  13. {"好",},
  14. {
  15. 0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,
  16. 0x82,0x82,0xE2,0x92,0x8A,0xC6,0x80,0x00,
  17. 0x40,0x22,0x15,0x08,0x14,0x63,0x00,0x00,
  18. 0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,
  19. }
  20. },
  21. };
復(fù)制代碼
3、 顯示函數(shù)添加中文顯示代碼:
需要在OLED驅(qū)動(dòng)中添加漢字處理部分,本報(bào)告依據(jù)上一個(gè)報(bào)告主要是修改OLED_DrawString16函數(shù)。其中有幾個(gè)需要特別注意的在代碼中有注釋。修改后代碼如下:
i
  1. ntOLED_DrawString16(int x, int y ,constchar* p_str, int color)
  2. {
  3. int i , j , m ;
  4. const unsigned char *p_asc= 0;
  5. const char* p_cn= 0;
  6. const struct typFNT_GB16* p_cn_lib ;
  7. if((x >= 120) || (y >= 7))
  8. return -1;
  9. while(*p_str != '')
  10. {
  11. // 判斷當(dāng)前字節(jié)是不是漢字字符,
  12. // 漢字編碼用兩個(gè)字節(jié)表示一個(gè)漢字,并且起始自己大余0x7f
  13. // 本來使用(*p_str)<0X80,但是編譯器編譯有Warning提示
  14. // 提示為此條指令永遠(yuǎn)為true,編譯中不允許有告警故更改為
  15. //(*p_str)&0X80)==0
  16. if(((*p_str)&0X80)==0)
  17. {
  18. p_asc = nAsciiDot16X8 + ((*p_str -32)<< 4) ;
  19. for(j = 0 ; j < 2 ;??j++)
  20. {
  21. for(i = 0 ; i < 8 ; i++)
  22. {
  23. if(color)
  24. {
  25. OLEDBuffer[(y + j)][x +i]= * p_asc ++;
  26. }
  27. else
  28. {
  29. OLEDBuffer[(y + j)][x +i] = ~(* p_asc ++) ;
  30. }
  31. }
  32. }
  33. x += 8 ;
  34. p_str ++ ;
  35. }
  36. Else
  37. {
  38. printf("[xxxxx]hanzi.
  39. ");
  40. p_cn = (char*)-1;
  41. p_cn_lib = ST_GB_16 ;
  42. m = GetSTLiberayNum();
  43. for(i = 0 ; i < m ; i++)
  44. {
  45. printf("[xxxxx] *p_str =%x.
  46. ",*p_str);
  47. // 此處多一個(gè)char型指針取值與0xff解釋在代碼末尾
  48. if(((*p_str)&0xff) ==p_cn_lib->index[0])
  49. {
  50. printf("[xxxxx]bingo1.
  51. ");
  52. if(((*(p_str+1))&0xff)== p_cn_lib->index[1])
  53. {
  54. p_cn = p_cn_lib->mask ;
  55. printf("[xxxxx]bingo2.
  56. ");
  57. break ;
  58. }
  59. }
  60. p_cn_lib++;
  61. }
  62. if(p_cn != (char*)-1)
  63. {
  64. for(j = 0 ; j < 2 ;??j++)
  65. {
  66. for(i = 0 ; i < 16 ;i++)
  67. {
  68. if(color)
  69. {
  70. OLEDBuffer[(y +j)][x + i]= * p_cn ++;
  71. }
  72. else
  73. {
  74. OLEDBuffer[(y +j)][x + i] = ~(* p_cn ++) ;
  75. }
  76. }
  77. }
  78. }
  79. x += 16 ;
  80. p_str += 2;
  81. }
  82. }
  83. return x;
  84. }
復(fù)制代碼

以上代碼修改過程中從注釋可以看出有兩個(gè)地方編譯器有特別之處,第一個(gè)在代碼注釋中已經(jīng)解釋,而第二個(gè)貼別解釋一下,因?yàn)楸救艘埠芾Щ蟆?/font>
其中((*p_str)&0xff) == p_cn_lib->index[0]這一條,p_str按照定義類型是“constchar*”,對(duì)其取值應(yīng)該是char類型,而實(shí)際取值后是一個(gè)4字節(jié)數(shù)值??赡芩褂玫膅cc中char為4字節(jié)的類型,使用printf("[xxxxx] *p_str =%x.
",*p_str);語句串口打印居然在字符值前面添加了0xffffff--。所以才有了((*p_str)&0xff)的處理。此處問題折騰了半個(gè)下午才找到原因,一方面對(duì)gcc使用不多,不是很熟悉,另一方面可能是自己編程方式有問題。
4、 顯示代碼添加:
在OLED顯示驅(qū)動(dòng)中添加OLED_DrawString16(8,4,"你好",1);語句,并修改BUILD.gn文件添加字庫代碼文件,編譯生成bin文件。
三、編譯測(cè)試
編譯測(cè)試不多說了,下載后按RESET按鍵重啟,OLED顯示內(nèi)容如下圖:
105012pz6sf3frnrjcvvkv.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • wi-fi
    +關(guān)注

    關(guān)注

    15

    文章

    2400

    瀏覽量

    129129
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2151

    瀏覽量

    35848
  • HiSpark
    +關(guān)注

    關(guān)注

    1

    文章

    156

    瀏覽量

    7714
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Wi-Fi:無線連接的全球通用語

    與數(shù)據(jù)鏈路層的規(guī)范。 l Wi-Fi聯(lián)盟:成立于1999年的國(guó)際組織,負(fù)責(zé)Wi-Fi商標(biāo)認(rèn)證、技術(shù)推廣與互操作性測(cè)試。 l 頻段:主要使用2.4GHz與5GHz頻段,部分支持6GHz,不同頻段在覆蓋、穿透
    發(fā)表于 01-07 09:49

    Nordic發(fā)布nRF7002 EBII 開發(fā)板, 支持Wi-Fi 6, 解鎖nRF54L新玩法

    5 GHz)以及高級(jí) Wi-Fi 6 功能,例如目標(biāo)喚醒時(shí)間 (TWT)、OFDMA 和 BSS 著色,從而實(shí)現(xiàn)高效、無干擾的電池供電運(yùn)行。它采用雙頻芯片天線,確保在各個(gè) Wi-Fi 頻段上都能提供
    發(fā)表于 12-10 11:58

    Wi-Fi模塊選型指南 | 低功耗藍(lán)牙/Wi-Fi 6模塊推薦 | 物聯(lián)網(wǎng)設(shè)備集成攻略

    物聯(lián)網(wǎng)的快速發(fā)展,Wi-Fi技術(shù)的成熟的情況下,越來越多的場(chǎng)景需要用到Wi-Fi來無線傳輸數(shù)據(jù),尤其是移動(dòng)設(shè)備中,怎么再設(shè)備中選擇合適的Wi-Fi模塊呢?下面我們來介紹下Wi-Fi模塊
    的頭像 發(fā)表于 12-09 11:27 ?866次閱讀
    <b class='flag-5'>Wi-Fi</b>模塊選型指南 | 低功耗藍(lán)牙/<b class='flag-5'>Wi-Fi</b> 6模塊推薦 | 物聯(lián)網(wǎng)設(shè)備集成攻略

    淺談Wi-Fi 6E與Wi-Fi 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    ,美國(guó)聯(lián)邦通信委員會(huì)(FCC)投票通過將6GHz頻譜劃為免許可頻段供Wi-Fi使用,這標(biāo)志著Wi-Fi正式進(jìn)入“三頻”時(shí)代——除Wi-Fi 6及前代技術(shù)使用的2.4GHz和5GHz頻段
    發(fā)表于 09-19 18:29 ?1544次閱讀
    淺談<b class='flag-5'>Wi-Fi</b> 6E與<b class='flag-5'>Wi-Fi</b> 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    如何更新 NuMaker IoT 板上的 Wi-Fi 模塊固件?

    更新 NuMaker IoT 板上的 Wi-Fi 模塊固件
    發(fā)表于 09-04 08:28

    LitePoint Wi-Fi測(cè)試軟件減輕客戶設(shè)計(jì)負(fù)擔(dān)

    Wi-Fi 7于一年多前獲得Wi-Fi聯(lián)盟認(rèn)證以來,作為最新一代通信技術(shù),Wi-Fi正逐步成為用戶實(shí)現(xiàn)無所不在無線連接的新選擇。隨著每一代Wi-Fi信號(hào)復(fù)雜性的提升,建議將硬件測(cè)試納
    的頭像 發(fā)表于 08-06 15:34 ?1061次閱讀
    LitePoint <b class='flag-5'>Wi-Fi</b>測(cè)試軟件減輕客戶設(shè)計(jì)負(fù)擔(dān)

    Texas Instruments CC335x SimpleLink?雙頻Wi-Fi? 6配套IC數(shù)據(jù)手冊(cè)

    ) 和Wi-Fi 5 (802.11ac)。這些CC335x是Texas Instruments的第10代連接組合芯片。因此,CC335x基于成熟的技術(shù)設(shè)計(jì)而成。這些器件非常適合配備運(yùn)行TCP/IP的Linux或
    的頭像 發(fā)表于 07-23 11:37 ?1047次閱讀
    Texas Instruments CC335x SimpleLink?雙頻<b class='flag-5'>Wi-Fi</b>? 6配套IC數(shù)據(jù)手冊(cè)

    有沒有什么修復(fù)方法可以確保 AP 模式下的 Wi-Fi 和 BLE 連接同時(shí)正常工作?

    我正在使用 CYBSYSKIT DEV 01 套件。我嘗試在 AP 模式下打開 Wi-Fi 并宣傳 BLE。我可以宣傳 SoftAP 和 BLE。但是,我無法從中央設(shè)備連接到 BLE。它可以立即連接并斷開連接。有沒有什么修復(fù)方法可以確保 AP 模式下的
    發(fā)表于 07-17 06:13

    Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀(jì)元——1

    Wi-Fi Alliance 所發(fā)布的統(tǒng)計(jì)資料顯示(如圖1所示),截至2024年,Wi-Fi 所貢獻(xiàn)的: ? 經(jīng)濟(jì)產(chǎn)值為 4.3萬億美元 ? 帶有Wi-Fi功能的設(shè)備年度出貨為41億臺(tái)
    發(fā)表于 06-13 11:09

    Wi-Fi HaLow如何突破傳統(tǒng)Wi-Fi性能瓶頸?

    !傳統(tǒng)Wi-Fi的痛點(diǎn)高頻段衰減快:5GHz信號(hào)穿墻后衰減超80%,地下室、倉庫成盲區(qū);大帶寬高耗電:設(shè)備需持續(xù)處理高速數(shù)據(jù)流,智能門鎖電池1個(gè)月耗盡;信道擁堵:
    的頭像 發(fā)表于 04-22 11:38 ?857次閱讀
    <b class='flag-5'>Wi-Fi</b> HaLow如何突破傳統(tǒng)<b class='flag-5'>Wi-Fi</b>性能瓶頸?

    基于 Wi-Fi 的定位服務(wù)

    以下捕獲使用 location_wifi_get 函數(shù)請(qǐng)求 Wi-Fi 定位服務(wù)。該事件的總功耗為 125.85mC,日志顯示精確度為 30.0m。 Got location: method
    發(fā)表于 04-17 15:16

    nRF Cloud Wi-Fi 定位服務(wù)

    、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通過利用 nRF Cloud 的優(yōu)化定位算法,基于 Nordic SoC 和 模組的產(chǎn)品可在定位用例
    發(fā)表于 04-17 15:07

    Wi-Fi 定位服務(wù)

    Wi-Fi 是一種著名的無線網(wǎng)絡(luò)技術(shù),用于設(shè)備的局域網(wǎng)和互聯(lián)網(wǎng)接入。Wi-Fi 通過 Wi-Fi 網(wǎng)絡(luò)為家庭、辦公室和學(xué)校等環(huán)境提供便捷的無線互聯(lián)網(wǎng)接入服務(wù)。 Wi-Fi 定位是一種
    發(fā)表于 04-17 15:01

    2.4GHz+5GHz雙頻低功耗 Wi-Fi 6協(xié)同IC -nRF7002

    開發(fā)人員能夠充分發(fā)揮Wi-Fi 6的潛力,包括更高的數(shù)據(jù)傳輸速率、更大的容量和更高的能效,以及Nordic一流的LTE-M/NB-IoT和BluetoothLE解決方案,從而簡(jiǎn)化開發(fā)過程并加快產(chǎn)品上市
    發(fā)表于 02-26 14:54

    Wi-Fi 7 與頻率控制的關(guān)系

    5 GHz 頻段,這些頻段設(shè)備撥號(hào)進(jìn)入信道的干擾最小。 聯(lián)網(wǎng)設(shè)備數(shù)量的爆炸式增長(zhǎng)已使容量不堪重負(fù)。根據(jù) Wi-Fi 聯(lián)盟的數(shù)據(jù),預(yù)計(jì)僅在 2024 年,啟用 Wi-Fi 的設(shè)備就將達(dá)到 41 億
    的頭像 發(fā)表于 01-25 14:45 ?1384次閱讀
    <b class='flag-5'>Wi-Fi</b> 7 與頻率控制的關(guān)系