<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 采用C8051F023單片機(jī)的OLED顯示方案設(shè)計(jì)

          采用C8051F023單片機(jī)的OLED顯示方案設(shè)計(jì)

          作者: 時(shí)間:2012-03-01 來源:網(wǎng)絡(luò) 收藏

          2.3 各種控制信號

          再就是關(guān)于如何用MCU控制,MCU通過RES#、CS#、D/C、WR#、RD#和D0~D7共13個(gè)接口控制SSD1303驅(qū)動(dòng)IC,從而控制屏。CS#為片選信號,當(dāng)CS#接低電平時(shí)MCU才能與驅(qū)動(dòng)IC通信;RES#是復(fù)位使能端,當(dāng)接低電平時(shí),所有控制寄存器均被設(shè)定為出廠時(shí)的默認(rèn)狀態(tài),同時(shí)圖像寄存器清零;D/C為數(shù)據(jù)/命令選擇信號;WR#和RD#分別為寫和讀選擇信號,當(dāng)CS#為低時(shí),在其下降沿讀寫有效。通過改變D/C、WR#和RD#三個(gè)接口的高低,的控制有四種狀態(tài),可由表1出來。

          表1 讀寫狀態(tài)一覽表



          D/C


          WR#


          RD#


          狀態(tài)


          0


          0


          1


          寫命令


          0


          1


          0


          讀命令(“忙”檢測)


          1


          0


          1


          寫數(shù)據(jù)


          1


          1


          0


          讀數(shù)據(jù)


          2.4 讀寫的時(shí)序

          只要按照VGG12864G的時(shí)序波形圖進(jìn)行讀和寫,即可完成。但是,通過軟件編程拼時(shí)序的話,要考慮到許多時(shí)間參數(shù),有一定的難度。為了使得數(shù)據(jù)和命令能夠更容易的順利讀寫,我們另外一種辦法。如圖1所示,將WR#和RD#分別接的/WR和/RD,即P0.7和P0.6。在C語言編程時(shí)定義指針類型為xdata型,它是指向片外存儲器的,通過給指針的賦值訪問片外的數(shù)據(jù)存儲區(qū),當(dāng)訪問片外存儲器時(shí),/RD和/WR會在讀和寫時(shí)自動(dòng)變低,同時(shí)P3端口為數(shù)據(jù)總線,非復(fù)用方式下,地址總線的高8位使用P1口,低8位使用P2口;復(fù)用方式下,地址總線高8位仍使用P1口,低8位和數(shù)據(jù)總線復(fù)用P3口,P2口就不會受到影響。所以最好設(shè)置成復(fù)用方式(EMIOCF.4=0),P2口就可以用來作別的輸出端口,自由地控制RES#、CS#、DC。雖然不需要地址總線,但訪問片外存儲器時(shí)地址線會被使用,所以仍要避開。實(shí)驗(yàn)結(jié)果的時(shí)序波形圖如圖3所示。只要CS#為低時(shí),在WR#(RD#)的下降沿寫入(讀出)數(shù)據(jù)或命令,即可有效地完成讀寫的工作。






          圖3 時(shí)序波形圖
          3 軟件程序的設(shè)計(jì)

          整個(gè)控制OLED的顯示程序用C語言編寫,主要程序流程圖如圖4所示。初始化包括關(guān)閉看門狗、時(shí)鐘初始化、端口初始化,以及定時(shí)器和中斷的初始化。OLED初始化包括開顯示、設(shè)置顯示模式、設(shè)置對比度控制器、對比度設(shè)置(1~256)、設(shè)置行列起始地址、設(shè)置具體位置顏色、設(shè)置串口管腳配置。清OLED屏和OLED顯示都是往GDDRAM里寫數(shù)據(jù),包括讀狀態(tài)、寫命令、寫數(shù)據(jù)子程序,清OLED屏就全寫“0”,OLED顯示只要寫入所要顯示的文字或圖片的字符代碼即可。每次寫(命令或數(shù)據(jù))之前都要讀狀態(tài),看最高位D7是否為“0”,也稱之為“忙”檢測,如果為“1”,表示“忙”;反之為“閑”,在“閑”的狀況下才可以寫操作。





          圖4 程序流程圖

          4 文字和圖片的顯示

          VGG12864G內(nèi)置128×64 bits的顯示存儲器,用于存儲顯示數(shù)據(jù),圖5為RAM的地址結(jié)構(gòu)。RAM容量為128×64=8192 bits,它被分成8頁(page0-page7),每頁8行,每頁的第一列剛好是一個(gè)字節(jié),低位在上,高位在下;顯示屏上各像素點(diǎn)的顯示狀態(tài)與顯示存儲器的各位二進(jìn)制數(shù)據(jù)一一對應(yīng),顯示存儲器的數(shù)據(jù)直接作為圖形顯示的驅(qū)動(dòng)信號。數(shù)據(jù)顯示為“1”,相應(yīng)的像素點(diǎn)顯示;數(shù)據(jù)顯示為“0”,相應(yīng)的像素點(diǎn)不顯示。

          所顯示文字或圖片的字符庫,需要自己造,但人工的幾乎不可能,可以選用字模提取軟件——“字模提取 V2.2 ”,該軟件提供兩種取模方式:橫向和縱向。再根據(jù)OLED顯示數(shù)據(jù)的RAM地址結(jié)構(gòu),選縱向的取模方式,由于OLED模組的字節(jié)結(jié)構(gòu)是高位在下低位在上,所以要設(shè)置成字節(jié)倒序,字符的字體、字形、大小和顯示效果(下劃線和刪除線)可根據(jù)需要進(jìn)行調(diào)整,然后采取C51格式(若用匯編語言編程可采取A51格式)取模生成單個(gè)字符的點(diǎn)陣顯示代碼,最后根據(jù)需要在OLED屏上的顯示效果,對代碼進(jìn)行相應(yīng)調(diào)整即可得到所需字符庫。




          圖5 顯示數(shù)據(jù)RAM的地址結(jié)構(gòu)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();