• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于STM32的OLED顯示屏接口設計

      2017-11-09 08:27:49劉正翔
      電子技術(shù)與軟件工程 2017年19期
      關鍵詞:顯示屏

      劉正翔

      摘 要近年來,新興的OLED技術(shù)以其優(yōu)越的性能受到眾多應用廠商的青睞。本文以STM32控制OLED顯示屏為例,通過介紹模塊硬件特性,闡述如何用STM32控制顯示屏,并給出關鍵的讀寫驅(qū)動源碼,對OLED驅(qū)動的應用者具有一定的借鑒意義。

      【關鍵詞】STM32 OLED 顯示屏

      近年來,一種新興的有機發(fā)光二極管顯示器OLED,以其優(yōu)越的性能,在眾多的顯示屏器件中脫穎而出,廣泛應用于商業(yè)領域和軍事領域中。傳統(tǒng)的小尺寸顯示屏大多采用LCD液晶顯示,雖然有較好的亮度和較低的功耗,但需要單獨給背光才可清晰看清楚顯示屏的數(shù)據(jù)信息,且液晶屏在黑位水平、對比度、厚度、視角、顏色均勻性等方面的性能,較之OLED性能相差甚遠。

      1 OLED屏硬件接口設計

      為縮短研發(fā)周期,國內(nèi)一些公司將OLED屏組裝成模塊并引出模塊控制引腳??蛻糁灰鶕?jù)模塊引腳即可控制OLED模塊進行顯示。經(jīng)過比較,這里以廣州星翼電子科技有限公司推出的ATK-0.96 OLED模塊為例,介紹該顯示模塊屏與主控芯片的硬件接口電路設計。

      該模塊工作溫度為-40~+70℃,內(nèi)部自帶升壓電路,分辨率為128*64像素,采用SSD1306驅(qū)動芯片,僅需3.3V供電即可。該模塊支持8位6800并口、8位8080并口、I2C總線、4線SPI總線等四種通信接口方式,通過背面兩個焊點可設置模塊接口方式:都為高電平時,為8位8080并口模式。模塊出廠默認該模式。

      本文即是采用默認的8080并口模式,通過排針與外部的STM32通信,使用到的引腳與LCD液晶模塊大同小異:除了電源與接地引腳外,主要的引腳為CS片選信號;RW寫入數(shù)據(jù)信號;RS讀取數(shù)據(jù)信號;D[0-7]8位雙向數(shù)據(jù)線信號;RST復位;DC數(shù)據(jù)或指令選擇信號等。為了控制OLED模塊只要先選擇輸入的是指令還是數(shù)據(jù),然后設置片選引腳為低電平,設置寫信號使能并將數(shù)據(jù)寫到數(shù)據(jù)線上,即可進行數(shù)據(jù)的讀寫操作。

      由于STM32的GPIO端口都是16位的,為了與模塊連接,只要選擇STM32其中一個PA端口(也可選擇其他通用端口)中的5個通用引腳作為模塊的控制信號線,再選擇另一個PB端口的低8位通用引腳作為數(shù)據(jù)線與模塊通信即可。這里選擇PA端口用做控制信號,PB端口用作數(shù)據(jù)線。由于引腳連接較為簡單,不再圖示。具體是:PA0連DC腳,PA1連片選CS,PA2連RD腳,PA3連RW腳,PA4連RST腳。PB0-PB7連數(shù)據(jù)線D0-D7腳。

      2 OLED模塊的程序設計

      2.1 初始化程序設計

      OLED屏與液晶屏類似,在應用前都需要進行初始化。整個初始化工作為一系列顯示控制芯片的設置工作,主要包括關閉顯示、設置時鐘分頻因子、設置顯示偏移、設置內(nèi)存地址、行列起始地址等。每個顯示模塊廠商均提供該初始化源碼,由于每個廠家提供的初始化源碼不同,這里就不再詳細闡述,讀者可查看廠家說明書,直接參考源碼即可。

      2.2 讀寫數(shù)據(jù)/指令

      進行顯示屏模塊的讀寫操作,實際上就是與模塊內(nèi)的控制芯片進行通信。若進行寫數(shù)據(jù)/指令,則設置DC為低電平選擇指令線,拉低片選并設置RW上升沿,使得數(shù)據(jù)寫入到顯示模塊中。數(shù)據(jù)寫入顯示模塊即寫入到顯存與屏幕對應的位置。若進行讀數(shù)據(jù),則設置DC為高電平選擇數(shù)據(jù)線。然后拉低片選并設置RD上升沿,使得數(shù)據(jù)鎖存到數(shù)據(jù)線上,即可在引腳上可讀取到數(shù)據(jù)。具體的時序圖讀者可參考廠家說明書。下面以向顯示模塊進行一次寫操作的函數(shù)為例說明。

      Void WR_Byte()

      {

      RS_Set(); //DC=1表示寫數(shù)據(jù)

      CS_Clr(); //拉低片選

      WR_Clr(); //WR的上升沿開始寫入數(shù)據(jù)

      WR_Set();

      CS_Set();

      RS_Set();

      }

      若要向顯示模塊寫入一個字節(jié)數(shù)據(jù),則在寫操作函數(shù)基礎上送入數(shù)據(jù)即可。由于主控芯片的IO端口是16位的,因此需要屏蔽高8位,只送入低8位,以避免不必要的影響。因此向顯示模塊寫入一個字節(jié)的源碼只要添加下面這行代碼即可:

      GPIOB->ODR=(GPIOB->ODR&0xff00)|(x&0x00FF);

      讀操作與寫操作類似,這里就不詳細闡述。

      2.3 顯存編碼思路

      輸入OLED模塊的數(shù)據(jù)之所以能顯示到屏幕上,是因為內(nèi)部有一個顯存,該顯存與模塊屏幕上的像素點是一一對應的關系。只要把數(shù)據(jù)送到顯存對應的地址上,就會按顯存的地址顯示到屏幕上。SSD1306的顯存為128*64bit,分為8頁,每頁128個字節(jié)??梢园扬@存想象成一個屏幕,屏幕上的每個像素點就是顯存的一個存儲位置?,F(xiàn)在考慮,若要畫一個圖形或漢字,是否直接寫入字節(jié)就可以實現(xiàn)全部的情況?由于每次寫入都是按字節(jié)寫入的。也就是說,每次都必須寫入8個像素點。若有一次寫入時,8位像素點中,低2位的像素點剛好是相鄰圖形的一個組成部分,此時再寫入完整一個字節(jié),就會把原來的圖形覆蓋掉2個像素點。為解決該問題,最簡單的解決方法是,先將該字節(jié)的8個位讀取出來,按要求修改完寫入的位,然后重新寫入。該方法缺陷是,每次都要先讀取,再寫入,消耗了時間。另一種方法,新建一個128*8字節(jié)的二維數(shù)組GRAM[i][j],修改時,直接在數(shù)據(jù)上修改,修改完一次性寫到OLED的顯存里。此思路雖然方便STM32對該模塊的控制,但需要一定內(nèi)存空間,因此對內(nèi)存小的單片機可能就不太合適。

      3 結(jié)論

      本文闡述了OLED顯示屏模塊的結(jié)構(gòu)、硬件電路設計及軟件關鍵讀寫函數(shù)編寫等。通過項目實踐,對選用的顯示模塊應用可能遇到的問題進行總結(jié),給出顯示屏硬件接口電路,及其關鍵驅(qū)動源代碼,對顯示屏應用有一定的借鑒意義。

      參考文獻

      [1]翁夢婷.OLED顯示驅(qū)動控制電路的設計[D].浙江大學碩士學位論文,2016(01).

      [2]張洋,劉軍.原子教你玩STM32(庫函數(shù)版)第2版[M].北京:航空航天大學出版社,2015(11).

      [3]劉火良,楊森.STM32庫開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2013(06).

      作者單位

      福州職業(yè)技術(shù)學院 福建省福州市 350108

      猜你喜歡
      顯示屏
      一塊布就是一個顯示屏?
      軍事文摘(2022年10期)2022-06-15 02:29:30
      蒼蠅迷戀顯示屏
      基于AT89S51單片機控制的旋轉(zhuǎn)LED顯示屏研究
      電子制作(2016年15期)2017-01-15 13:39:25
      未來五年LED顯示屏出貨將保持16%增長
      中國照明(2016年6期)2016-06-15 20:30:14
      可折疊十萬次的觸摸顯示屏
      基于AT89S52的手勢可控LED滾動顯示屏設計
      闵行区| 乐东| 青州市| 莫力| 调兵山市| 桦川县| 治县。| 安庆市| 宜章县| 米易县| 明光市| 宣恩县| 无棣县| 玉林市| 简阳市| 甘洛县| 东乡族自治县| 阿拉善左旗| 宁远县| 襄樊市| 宁德市| 淮南市| 中卫市| 腾冲县| 郴州市| 中阳县| 阿瓦提县| 天津市| 区。| 宜州市| 潍坊市| 华宁县| 寿光市| 拉萨市| 光泽县| 和平区| 曲阜市| 孝义市| 武平县| 珠海市| 呼图壁县|