新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 采用C8051F023單片機的OLED顯示方案設計

        采用C8051F023單片機的OLED顯示方案設計

        作者: 時間:2012-03-01 來源:網絡 收藏

        2.3 各種控制信號

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

        表1 讀寫狀態一覽表



        D/C


        WR#


        RD#


        狀態


        0


        0


        1


        寫命令


        0


        1


        0


        讀命令(“忙”檢測)


        1


        0


        1


        寫數據


        1


        1


        0


        讀數據


        2.4 讀寫的時序

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






        圖3 時序波形圖
        3 軟件程序的設計

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





        圖4 程序流程圖

        4 文字和圖片的顯示

        VGG12864G內置128×64 bits的顯示存儲器,用于存儲顯示數據,圖5為RAM的地址結構。RAM容量為128×64=8192 bits,它被分成8頁(page0-page7),每頁8行,每頁的第一列剛好是一個字節,低位在上,高位在下;顯示屏上各像素點的顯示狀態與顯示存儲器的各位二進制數據一一對應,顯示存儲器的數據直接作為圖形顯示的驅動信號。數據顯示為“1”,相應的像素點顯示;數據顯示為“0”,相應的像素點不顯示。

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




        圖5 顯示數據RAM的地址結構


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 包头市| 西乌珠穆沁旗| 苍南县| 永胜县| 丰顺县| 泊头市| 南乐县| 甘肃省| 如东县| 齐河县| 中江县| 务川| 榆社县| 烟台市| 广德县| 东阿县| 东莞市| 望江县| 乐昌市| 会昌县| 盐山县| 乐至县| 兰溪市| 包头市| 桃园县| 普安县| 胶州市| 哈密市| 新兴县| 阜城县| 专栏| 上虞市| 汉源县| 读书| 龙江县| 洛宁县| 辛集市| 静安区| 乳山市| 咸丰县| 宝应县|