字库芯片介绍与使用(附STM32程序~~~)
不知道大家是否了解字庫(kù)芯片(網(wǎng)上這方面的資料好像挺少的),今天給大家簡(jiǎn)單介紹一下字庫(kù)芯片。
先舉個(gè)例子,如果我們想在點(diǎn)陣屏或液晶屏上面顯示一個(gè)88的正方形,我們?cè)撛趺醋觥?br /> 很簡(jiǎn)單,假設(shè)屏上面“1”為點(diǎn)亮,“0”為熄滅,我們只需要按順序,將這64個(gè)點(diǎn)寫入“1”,其他地方寫入“0”就好了。
具體做法可以這樣,一個(gè)字節(jié)有8位,我們寫入一個(gè)0xFF,就可以一次點(diǎn)亮8個(gè)點(diǎn),若點(diǎn)亮64個(gè)點(diǎn),大家只需要換行再次寫入0xFF,循環(huán)幾次,累計(jì)寫好8個(gè)0xFF,就完成點(diǎn)亮一個(gè)88的正方形了。或者定義一個(gè)點(diǎn)陣數(shù)組,點(diǎn)陣數(shù)組里面是8個(gè)0xFF,將數(shù)組數(shù)據(jù)依次寫入屏中,是不是很簡(jiǎn)單!
也可以稍微增加一下難度,如果想在8*8區(qū)域內(nèi),顯示一個(gè)直角邊長(zhǎng)為8的等腰直角三角形怎么做?
聰明的你類比一下正方形,肯定一下子就想到了。
點(diǎn)亮第一行第一列的燈,
再點(diǎn)亮第二行第一列+第二列的燈,
再點(diǎn)亮第三行第一列+第二列的燈+第三列的燈。。。。。
用程序來(lái)描述,就是點(diǎn)陣數(shù)組中數(shù)據(jù)為0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF。
看來(lái)大家已經(jīng)入門了,那如果要顯示一個(gè)中文或者英文字母等字符呢?
大家是不是犯難了,前面的正方形,三角形,我們都好計(jì)算,但是字符,我們是不是不太好計(jì)算在哪個(gè)位置點(diǎn)亮哪個(gè)點(diǎn),怎么辦呢?
不要慌,字庫(kù)芯片作用就在這,它可以直接告訴你在哪個(gè)位置點(diǎn)亮哪個(gè)點(diǎn)。
在此之前,開發(fā)者通常是使用文字取模軟件進(jìn)行取模,然后存儲(chǔ)在程序數(shù)組里,再拿去顯示,當(dāng)只顯示一些特定的字符或文字時(shí),這是一個(gè)不錯(cuò)的方式,但是當(dāng)需要顯示的字符比較多時(shí),這種方法就不太適合了,這時(shí)候字庫(kù)芯片的作用就體現(xiàn)出來(lái)了。
字庫(kù)芯片廠家有提供對(duì)應(yīng)的.lib靜態(tài)庫(kù)文件,這種靜態(tài)庫(kù)文件, 是由c源文件經(jīng)過(guò)與開發(fā)者相似的環(huán)境進(jìn)行編譯得到的,使用方式和c文件一致,把lib文件和對(duì)應(yīng)的h頭文件添加到開發(fā)者的開發(fā)項(xiàng)目工程里即可,根據(jù)頭文件定義的函數(shù)接口,進(jìn)行調(diào)用。
開發(fā)者只需要輸入所需文字的對(duì)應(yīng)字符編碼(比如GB18030編碼),文字寬度,文字高度,文字粗細(xì)這幾個(gè)參數(shù),就可以獲取該文字的點(diǎn)陣數(shù)組,再將點(diǎn)陣數(shù)組數(shù)據(jù)傳遞顯示函數(shù)中,就可以將文字顯示出來(lái)了,非常簡(jiǎn)單。
字庫(kù)芯片原理圖可以參照下面設(shè)計(jì)
芯片采用SPI的通訊方式。
具體引腳功能為:
- 串行數(shù)據(jù)輸出(SO):該引腳用來(lái)把數(shù)據(jù)從芯片串行輸出,數(shù)據(jù)在時(shí)鐘的下降沿移出。
- 串行數(shù)據(jù)輸入(SI):該引腳用來(lái)把數(shù)據(jù)從串行輸入芯片,數(shù)據(jù)在時(shí)鐘的上升沿移入。
- 串行時(shí)鐘輸入(SCLK):數(shù)據(jù)在時(shí)鐘上升沿移入,在下降沿移出。
- 片選輸入(CS#):所有串行數(shù)據(jù)傳輸開始于CS#下降沿,CS#在傳輸期間必須保持為低電平,在兩條指令之間保持為高電平。
- 總線掛起輸入(HOLD#):該信號(hào)用于片選信號(hào)有效期間暫停數(shù)據(jù)傳輸,在總線掛起期間,串行數(shù)據(jù)輸出信號(hào)處于高阻態(tài),芯片不對(duì)串行數(shù)據(jù)輸入信號(hào)和串行時(shí)鐘信號(hào)進(jìn)行響應(yīng)。
當(dāng)HOLD#信號(hào)變?yōu)榈筒⑶掖袝r(shí)鐘信號(hào)(SCLK)處于低電平時(shí),進(jìn)入總線掛起狀態(tài)。
當(dāng)HOLD#信號(hào)變?yōu)楦卟r(shí)串行時(shí)鐘信號(hào)(SCLK)處于低電平時(shí),結(jié)束總線掛起狀態(tài)。
字庫(kù)芯片的使用也比較方便,比如我想顯示中文“三明治開發(fā)社區(qū)”怎么辦?
總共7個(gè)中文,以“三”字為例。
我們只需要調(diào)用這個(gè)函數(shù)
這個(gè)就是文字讀取函數(shù),參數(shù)如下
- pBits 為上面提到的顯示數(shù)組指針,里面就是我們想獲取的顯示數(shù)據(jù)。
- sty 為文字字體選擇,我們可以選擇宋體,仿宋,黑體,楷體,ASCII碼等多種字體,具體看對(duì)于字庫(kù)芯片手冊(cè)
- fontCode 為字符編碼,中文支持GB18030 , ASCII/外文支持unicode
- width 為文字寬度
- height 為文字高度
- thick 為文字粗細(xì)
以中文“三”為例,可以查詢到它的GB18030編碼為 0xC8FD。
那么代碼可以這樣
即獲取到的顯示數(shù)組指針為pBits,字體選擇VEC_SONG_STY(宋體),字符編碼為0xC8FD(中文“三”),文字寬度為48,文字高度為48,文字粗細(xì)為 48。
我們?cè)儆猛瑯臃椒?#xff0c;獲取另外幾個(gè)字的數(shù)組,整體顯示效果如下
怎么樣,是不是很簡(jiǎn)單,完全不需要我們計(jì)算什么,如有疑問(wèn)可以下發(fā)評(píng)論留言
這里再給大家一些spi操作的程序
總結(jié)
以上是生活随笔為你收集整理的字库芯片介绍与使用(附STM32程序~~~)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: visual studio 2012 密
- 下一篇: 火狐插件 xpi打包_将Firefox扩