欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

如何使用采用SPI Flash存儲(chǔ)中文字符庫(kù)的方法說(shuō)明

單片機(jī)愛(ài)好者 ? 2018-12-15 10:59 ? 次閱讀

嵌入式系統(tǒng)中,有時(shí)候需要中文字符來(lái)表示我們的某些信息,但是中文字符庫(kù)本身占據(jù)空間比較大,因此有時(shí)候僅僅對(duì)系統(tǒng)中需要的字符進(jìn)行編碼,其它的則省掉,但是這樣對(duì)于編程調(diào)用字符時(shí)是比較麻煩的,只能一個(gè)一個(gè)進(jìn)行調(diào)用然戶顯示。然而,有時(shí)候在比較大的系統(tǒng)中需要很多的中文字符,如果還是對(duì)需要的進(jìn)行一個(gè)個(gè)編碼將顯得非常費(fèi)時(shí),此時(shí)有必要采用一個(gè)字庫(kù)來(lái)完成我們的工作。

嵌入式系統(tǒng)中,用得比較多的是GBK2312B編碼的字庫(kù)(還有一個(gè)是Unicode編碼),編碼后得到的是一個(gè)字符數(shù)組,每一個(gè)中文字符對(duì)應(yīng)多個(gè)字節(jié)(具體字節(jié)數(shù)看取模的大?。?,需要顯示某個(gè)字符只需取得該字符的GBK內(nèi)碼,然后找到該字符對(duì)應(yīng)數(shù)組中的地址,最后將這個(gè)字符對(duì)應(yīng)的所有字節(jié)按照預(yù)定的格式寫入液晶屏即可。這樣操作帶來(lái)的簡(jiǎn)便就是,你想顯示某個(gè)字符只需以字符串的格式輸入該字符然后調(diào)用顯示函數(shù)就行了。這時(shí)有個(gè)問(wèn)題出現(xiàn)了,7千多個(gè)字符編碼后得占用多大空間???

大概有200KB,但是對(duì)于現(xiàn)在的MCU,本身自帶的rom就很寶貴,另外MCU的ROM越大其成本就越高。所以,如果將200kb的字庫(kù)寫入MCU將不太劃算。不將字庫(kù)存入MCU,就得存入另外一種介質(zhì)中,這種介質(zhì)可能是SD卡, SPI Flash。對(duì)于SD卡我沒(méi)有試過(guò),雖然容量大,但據(jù)說(shuō)讀取速度比較慢,另外封裝較大,占板子面積,感覺(jué)適用與大的系統(tǒng)吧,比如MP3;而SPI flash, 體積小,容量也還可以,我所了解的也有8M的,可能還有更大容量的。好了,廢話了這么多,那么本文接下來(lái)就紹如何用SPI flash做中文字庫(kù):

第一步,當(dāng)然需要你將你所用的SPIflasn的初始化以及讀寫函數(shù)寫好(我使用的W25X16,2M,傳輸速率最大74MHZ,很快的;板子主芯片STM32F103RBT6)。寫函數(shù):void W25X_Write_Bytes(uint32_t addr,u8* pBuffer, u16 nBytes) 注:W25X16寫時(shí),需要先擦除。讀函數(shù):void W25X_Read_Bytes(uint32_t addr, u8* pBuffer, u16 nBytes)第二步,編寫串口傳輸函數(shù),采用串口中斷的方式,波特率設(shè)置為115200(測(cè)試沒(méi)有問(wèn)題),接收外部輸入的一個(gè)字節(jié)后立馬將其寫入SPI FLASH。與之前兩個(gè)字符表示一個(gè)字節(jié)的方法速度提升一倍。代碼:

u8 result;

u32 pAddr=0;

void USART1_IRQHandler(void)

{

if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)

{

result= USART_ReceiveData(USART1);

W25X_Write_Bytes(pAddr++,&result,1);

USART_ClearITPendingBit(USART1,USART_IT_RXNE);// 清除串口接受中斷

}

}

第三步,設(shè)置一個(gè)按鍵進(jìn)行擦除操作,通過(guò)串口或者LCD進(jìn)行交互,以提示是否擦除完成??梢赃M(jìn)行寫FLASH。第四步,制作中文字庫(kù),GB3212庫(kù)包含6768個(gè)簡(jiǎn)體中文,首先打開(kāi)“取點(diǎn)陣.exe”軟件,然后在軟件中打開(kāi)“字符庫(kù).txt”文件。

然后選擇取模方式,可以設(shè)置字體樣式、大小和方向設(shè)置等。注意“方向設(shè)置“選項(xiàng),這里為了對(duì)應(yīng)工程中的顯示程序,選擇——橫向取模,高位在坐。其它選項(xiàng)只要適當(dāng)修改顯示程序就可以。

然后點(diǎn)擊“輸出“按鈕,將在該目錄下得到字模數(shù)組文件(temp.txt)。第五步,整理字庫(kù)文件。上一步得到的字模數(shù)組文件還不能直接使用,需要進(jìn)行整理以適合串口發(fā)送,去除各種注釋符和標(biāo)點(diǎn)字符,只保留兩位字符組成的十六進(jìn)制格式。接著將“temp.txt”改名為“HzLib.txt”,然后運(yùn)行“整理字庫(kù).exe”,此時(shí)將得到整理好的字庫(kù)“OutHzLib.txt”然后就可以直接將該字庫(kù)通過(guò)串口發(fā)送到MCU了。

第六步,串口發(fā)送數(shù)據(jù)。推薦用附件中的串口調(diào)試軟件,因?yàn)橛行┸浖趯?duì)于文件發(fā)送這個(gè)功能做得似乎有些問(wèn)題。本人也測(cè)試了兩款串口調(diào)試軟件,均不能得到結(jié)果,如果有其它好的也可以,反正只要達(dá)到目的就行。設(shè)置串口參數(shù),然后在發(fā)送區(qū)設(shè)置中勾選“按十六進(jìn)制發(fā)送”,點(diǎn)擊“啟動(dòng)文件數(shù)據(jù)原”選項(xiàng),選擇制作好的字庫(kù)“OutHzLib.txt”,不要點(diǎn)擊“文件載入”。

第七步,打開(kāi)串口,將板子接通電源,首先對(duì)Flash進(jìn)行擦除操作,提示擦除結(jié)束后,點(diǎn)擊串口發(fā)送,然后就慢慢等著字庫(kù)寫入FLASH。測(cè)試在波特率為115200下,取模大小為16*16,耗時(shí)為70s,似乎也不太久,如果取模越大,耗時(shí)就越長(zhǎng)。寫好字模后,就可以在工程中調(diào)用字庫(kù)進(jìn)行中文顯示了(取GBK內(nèi)碼操作見(jiàn)工程)。另外如果flash容量夠大的話,還可以寫入其它字體樣式和大小的字庫(kù),做一個(gè)專屬的字庫(kù)芯片。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1644

    瀏覽量

    148719
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3626

    瀏覽量

    129771
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1724

    瀏覽量

    92164

原文標(biāo)題:采用SPI Flash存儲(chǔ)中文字符庫(kù)

文章出處:【微信號(hào):gh_dae0718828df,微信公眾號(hào):gh_dae0718828df】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于定義中文字符串的問(wèn)題

    本人使用的是pic18f25k20,想要定義一些中文字符串,結(jié)果定義的時(shí)候發(fā)現(xiàn)了一些問(wèn)題,無(wú)法理解,請(qǐng)各位大神幫忙。直接上圖吧,定義了兩個(gè)中文字符串,第二個(gè)后面多了一些方框,不知道是什么意思,編譯的話都通過(guò)了。是不是這種定義方式對(duì)中文字
    發(fā)表于 11-06 11:34

    如何在multiedit中對(duì)中文字符進(jìn)行刪除操作?

    在multiedit中利用MULTIEDIT_AddKey(hMulti, GUI_KEY_BACKSPACE)可以很好的刪除光標(biāo)上一個(gè)8為ascii字符,但是對(duì)于16位的中文字符就不好使,大家用的是什么辦法來(lái)刪除中文字符的呀?
    發(fā)表于 09-25 04:25

    C語(yǔ)言關(guān)于中文字符串的使用誤區(qū)在哪

    C語(yǔ)言關(guān)于中文字符串的使用誤區(qū)背景前幾天在寫c語(yǔ)言代碼進(jìn)行文件讀寫的時(shí)候,在處理文件中的中文詩(shī)句的過(guò)程中發(fā)現(xiàn)了c語(yǔ)言txt文本文件的中文讀取到char數(shù)組中的一些不同尋常之處,因此做一個(gè)總結(jié)。c語(yǔ)言
    發(fā)表于 07-14 07:54

    C語(yǔ)言中文字符串的使用誤區(qū)有哪些?

    c語(yǔ)言漢字的存儲(chǔ)方式和特點(diǎn)是什么?C語(yǔ)言中文字符串的使用誤區(qū)有哪些?
    發(fā)表于 10-15 06:24

    使用printf去打印中文字符的時(shí)候出現(xiàn)亂碼是為什么?

    使用printf去打印中文字符的時(shí)候出現(xiàn)亂碼是為什么?
    發(fā)表于 12-02 07:12

    Arduino發(fā)送中文字符為什么需要轉(zhuǎn)碼?

    Arduino IDE支持GB編碼之前,有沒(méi)有一種簡(jiǎn)便的方法,來(lái)解決中文漢字輸出的問(wèn)題?答案就是:ATFC043串口智能屏。Arduino IDE編譯中文字符這是Arduino IDE自帶串口監(jiān)視器的顯示
    發(fā)表于 12-17 11:23

    STM32程序printf打印中文字符到串口出現(xiàn)亂碼的解決方法

    STM32程序printf打印中文字符到串口出現(xiàn)亂碼解決方法作者但也請(qǐng)保留上面這段聲明。 謝謝! (以上兩個(gè)鏈接均是我個(gè)人的博客,只是在不同的平臺(tái)上面)前言:相信同我一樣,有一部分同學(xué)在寫單片機(jī)程序的...
    發(fā)表于 02-21 07:08

    如何在終端上使用UART輸出中文字符

    應(yīng)用程序: 演示如何在終端上使用 UART 輸出中文字符 BSP 版本:M451系列BSP CMSIS V3.01.003 硬件: NuTiny-EVB-M451 LQFP100 V1.3 序列
    發(fā)表于 08-23 06:46

    如何使用M051驅(qū)動(dòng)LCD顯示中文字符

    應(yīng)用程序: 此代碼使用 M051 驅(qū)動(dòng) LCD 顯示中文字符 。 BSP 版本: M051系列 BSP CMSIS v3.01.001 硬件: Nu-LB_004 v1.0 The sample
    發(fā)表于 08-23 08:07

    M451如何在終端上使用UART輸出中文字符

    應(yīng)用程序: 演示如何在終端終端上使用 UART 輸出中文字符 BSP 版本:M451系列BSP CMSIS V3.01.003 硬件: NuTiny-EVB-M451 LQFP100 V1.3
    發(fā)表于 08-30 07:23

    如何使用M051驅(qū)動(dòng)LCD顯示中文字符

    應(yīng)用程序: 此代碼使用 M051 驅(qū)動(dòng) LCD 顯示中文字符 。 BSP 版本: M051系列 BSP CMSIS v3.01.001 硬件: Nu-LB_004 v1.0 The sample
    發(fā)表于 08-30 06:52

    使用FPGA驅(qū)動(dòng)LCD顯示中文字符年的VHDL程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用FPGA驅(qū)動(dòng)LCD顯示中文字符年的VHDL程序。
    發(fā)表于 12-18 16:44 ?10次下載

    allegro中文字符絲印制作工具軟件下載

    allegro中文字符絲印制作工具軟件下載
    發(fā)表于 07-09 09:21 ?10次下載

    如何遍歷中文字符

    今天和大家分享下如何遍歷中文字符串,主要是如何打印中文字符,因?yàn)?b class='flag-5'>中文字符串每個(gè)字符占用不只一個(gè)字節(jié)的空間,如果我們逐個(gè)字節(jié)遍歷,會(huì)出現(xiàn)奇怪的結(jié)果。而UTF-8編碼寫的
    的頭像 發(fā)表于 07-03 09:15 ?750次閱讀
    如何遍歷<b class='flag-5'>中文字符</b>串

    LCD中文字符顯示機(jī)制的原理 如何將字符顯示到LCD

    比如中文字符24×24字體大小表示水平需要24個(gè)像素點(diǎn)、垂直需要24個(gè)像素點(diǎn)。
    發(fā)表于 07-27 14:50 ?3187次閱讀
    LCD<b class='flag-5'>中文字符</b>顯示機(jī)制的原理 如何將<b class='flag-5'>字符</b>顯示到LCD