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