武春鋒 王永偉 王志乾 劉紹錦 劉玉生
關(guān)鍵詞: 有機(jī)電致發(fā)光二極管; C8051F020單片機(jī); 控制器; SSD1309芯片; 雙接口; 判忙函數(shù)
中圖分類號: TN111?34; TP368.2 ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼: A ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2019)04?0014?05
Design and implementation of dual?interface OLED controller based on C8051F020 SCM
WU Chunfeng1,2, WANG Yongwei3, WANG Zhiqian1, LIU Shaojin1, LIU Yusheng1,2
(1. Changchun Institute of Optics, Fine Mechanics and Physics, Chinese Academy of Sciences, Changchun 130033, China;
2. University of Chinese Academy of Sciences, Beijing 100049, China; 3. The Air Force's Military Representative Office in Changchun, Changchun 130033, China)
Abstract: A design and implementation scheme of the dual?interface OLED controller based on the C8051F020 single chip microcomputer (SCM) is proposed. A printed circuit board with two OLED interfaces is designed taking the C8051F020 as the core control unit. The busy judgment function is called during the writing process of the command function and data function, so as to ensure that the drive chip can receive control instructions when it is not busy. The transmission sequence of signals like chip selection, write enabling, parallel data is appropriately arranged, so as to satisfy the set up time and hold time of the address or data. The experimental results show that the two OLEDs can accurately display the reserved information, and have the advantages of high brightness, fast response speed, and wide viewing angle. The scheme has an ideal effect, and its dual?interface function can further expand its practicability and be transplanted in display terminals of relevant instruments and apparatus.
Keywords: OLED; C8051F020 SCM; controller; SSD1309 chip; dual interface; busy judgment function
有機(jī)電致發(fā)光二極管(Organic Light Emitting Diode,OLED),又稱有機(jī)電致顯示,是一種較為新型的顯示技術(shù)[1]。與目前各類平板顯示技術(shù)相比,OLED具有亮度高、響應(yīng)速度快、適應(yīng)溫度范圍廣、易于制作在柔性襯底上等優(yōu)點(diǎn)[2?3]。本文基于C8051F020單片機(jī)設(shè)計的OLED控制器具有控制兩塊OLED顯示的功能[4]。利用Cadence制作控制器印刷電路板,在Silicon Laboratories IDE開發(fā)軟件中編寫驅(qū)動兩塊OLED顯示的程序[5]。隨后進(jìn)行了板級調(diào)試和顯示實驗。兩塊OLED的型號分別為MCOB21605G1V?EWP和MCOT128032BX?WM,均為Midas公司產(chǎn)品。前者可以顯示2行,每行顯示16個字符,每個字符5列;后者可以顯示128列,32行;分別簡記為OLED1602和OLED128032。
雙接口OLED控制器結(jié)構(gòu)如圖1所示,其由核心控制單元、電源管理單元、OLED1602和OLED128032顯示單元以及接口單元構(gòu)成[6]。C8051F020與OLED的通信經(jīng)由接口完成。OLED1602和OLED128032的驅(qū)動芯片HD44780與SSD1309均由廠家集成在屏幕面板上,單片機(jī)按照一定的時序規(guī)則發(fā)出HD44780和SSD1309的控制信號,即可驅(qū)動兩塊OLED顯示。
2.1 ?核心控制單元
本設(shè)計以新華龍C8051F020單片機(jī)為主控制器。C8051F020是片內(nèi)資源豐富的高速SoC單片機(jī),有5個16位定時器/計數(shù)器、22個中斷源,允許大量的模擬和數(shù)字外設(shè)中斷微控制器,具有很高的執(zhí)行效率[7]。與標(biāo)準(zhǔn)8051結(jié)構(gòu)相比,C8051F020的內(nèi)核CIP?51采用流水線結(jié)構(gòu),指令執(zhí)行速度有了很大的提高[8?9]。在標(biāo)準(zhǔn)8051中,一條指令需要12個或24個時鐘周期,而對于CIP?51內(nèi)核,大多數(shù)指令的執(zhí)行時間為1或2個時鐘周期[10]。
針對本控制器,單片機(jī)I/O分配如下:P0口控制兩塊OLED使能、讀/寫、命令/數(shù)據(jù)選擇等;P4口連接OLED1602的8位雙向數(shù)據(jù)端口,指令/數(shù)據(jù)碼從P4口寫入HD44780,判忙信號通過P4.7被C8051F020讀取;P6.5和P6.6控制OLED128032與單片機(jī)的通信協(xié)議;P7口連接OLED128032的8位雙向數(shù)據(jù)端口,指令/數(shù)據(jù)碼從P7口寫入SSD1309。
2.2 ?電源管理單元
電源管理單元如圖2所示。為了滿足系統(tǒng)各單元不同的電源要求,電源管理單元分配如下:
1) 雙接口OLED控制器的系統(tǒng)輸入電壓為直流12 V,分別接至LM7805芯片的電壓輸入端和OLED128032接口的顯示電壓輸入端。
2) 使用LM7805芯片進(jìn)行12 V到5 V轉(zhuǎn)換,將輸出的5 V電壓供給OLED1602和TPS73HD318芯片。
3) 使用TPS73HD318芯片進(jìn)行5 V到3.3 V和1.8 V的轉(zhuǎn)換,將輸出的3.3 V和1.8 V電壓分別作為C8051F020的輸入電壓和OLED128032的邏輯輸入電壓。
2.3 ?OLED1602和OLED128032顯示單元
HD44780集成了顯示數(shù)據(jù)寄存器(Display Data RAM,DDRAM)、字符發(fā)生只讀存儲器(Character Generator ROM,CGROM)、字符發(fā)生讀寫存儲器(Character Generator RAM,CGRAM)。CGROM中固化了192個常用字符的字模,這些字模分別對應(yīng)著一個字符代碼,例如:A字模的字符代碼即為其ASCII碼0x41。DDRAM寄存要顯示字模的字符代碼。若要顯示CGROM中沒有的字模,需自定義字模并寫入CGRAM中,然后將自定義字模的字符代碼寫入DDRAM中。CGRAM中最多寫入8個8 B的字模,字符代碼依次為0,1,…,7。
與HD44780不同的是,SSD1309沒有集成字符發(fā)生存儲器,顯示字符的必要條件是先自定義字模。OLED128032顯示字符的原理與OLED1602有所區(qū)別,它的32行被分成了4頁,每頁128列,每列有8個可發(fā)光點(diǎn)陣。用戶向某列寫入8位二進(jìn)制數(shù)據(jù)即可控制點(diǎn)陣發(fā)光[11]。同理,向不同頁的多個列寫入數(shù)據(jù)即可顯示自定義的中英文、數(shù)字、圖形等字符。顯然,相比OLED1602,OLED128032的顯示效果更靈活多變。
2.4 ?OLED1602和C8051F020的接口單元
OLED1602與C8051F020的通信方式為并行方式。指令/數(shù)據(jù)選擇引腳RS、讀/寫引腳R/W、片選使能引腳E、8位雙向并行數(shù)據(jù)端口DB0~DB7分別接到單片機(jī)的P0.5,P0.6,P0.7,P4.0~P4.7口。OLED128032與微處理器的通信方式可通過BS1和BS2設(shè)置為I2C、串行或并行。本控制器設(shè)置OLED128032與C8051F020的通信為8位并行方式。復(fù)位引腳RES#、片選引腳CS#、指令/數(shù)據(jù)選擇引腳D/C#、讀引腳RD#、寫引腳W#、8位雙向并行數(shù)據(jù)端口D0~D7分別接到單片機(jī)的P0.0,P0.1,P0.2,P0.3,P0.4,P7.0~P7.7。
綜上所述,設(shè)計基于C8051F020的雙接口OLED控制器的印刷電路板。圖3是焊接元器件后的控制器。
基于上述硬件條件,在Silicon Laboratories IDE開發(fā)軟件中編寫驅(qū)動兩塊OLED顯示的程序。首先要初始化C8051F020,包括關(guān)看門狗、使用外部晶振、端口初始化等步驟[12],然后編寫OLED1602的驅(qū)動程序,最后編寫OLED128032的驅(qū)動程序。
3.1 ?OLED1602軟件策略
3.1.1 ?OLED1602讀寫時序
對OLED1602的基本操作分為四種:讀狀態(tài)、讀數(shù)據(jù)、寫命令和寫數(shù)據(jù)。OLED1602的讀/寫操作時序如圖4所示。讀/寫時序中地址建立時間tSP1最小值和地址保持時間tHD1最小值分別為30 ns和10 ns;讀操作數(shù)據(jù)建立時間tD最大值為100 ns,數(shù)據(jù)保持時間tHD2最小值為20 ns;寫操作數(shù)據(jù)建立時間tSP2最小值為40 ns,數(shù)據(jù)保持時間tHD2最小值為10 ns。
C8051F020向HD44780發(fā)送寫命令和寫數(shù)據(jù)指令時,RS,R/W,E,DB[7:0]之間的時序應(yīng)滿足圖4b)要求[13]。用示波器測量出寫命令函數(shù)中四者之間的時序如圖5所示。
由圖5a)、圖5b)知,地址建立時間[t′SP1]>500 ns,[t″SP1]>410 ns,地址保持時間[t′HD1]>100 ns,[t″HD1]>200 ns。由圖5c)知,寫操作數(shù)據(jù)建立時間[t′SP2]>100 ns,數(shù)據(jù)保持時間[t′HD2]>500 ns。滿足圖4時序要求。
3.1.2 ?判忙函數(shù)
C8051F020使用外部11.059 2 MHz晶振,時鐘周期約為90 ns。寫指令函數(shù)中,RS由高變低后,R/W由高變低。如圖5a)、圖5b)可知,[t′SP1]比[t″SP1]近似多90 ns,即前后兩指令有1個時鐘周期的延遲。然而HD44780的部分指令響應(yīng)時間相比單片機(jī)是偏慢的,例如:控制顯示器開指令、顯示模式指令、設(shè)定CGRAM地址指令等的執(zhí)行時間為40 μs。只有當(dāng)前指令執(zhí)行完畢,HD44780才可以接收下一條指令。HD44780的讀取忙信號指令可以有效地解決這個問題,當(dāng)前指令未執(zhí)行完時,并行數(shù)據(jù)口的最高位DB7為高,即忙狀態(tài);否則DB7為低,可接收下條指令。
判忙函數(shù)通過讀取DB7的狀態(tài)來控制是否給HD44780發(fā)送新的指令。在寫命令函數(shù)和寫數(shù)據(jù)函數(shù)中調(diào)用判忙函數(shù),以保證在HD44780不忙的時間發(fā)送相關(guān)時序。圖4a)讀操作數(shù)據(jù)建立時間tD最大值為100 ns,而HD44780讀取忙信號指令的執(zhí)行時間為40 μs。因此,只要在判忙函數(shù)中延時40 μs后讀取DB7的狀態(tài),即可滿足要求。
3.1.3 ?OLED1602顯示控制流程
OLED1602的顯示控制流程歸納為:先初始化,然后顯示CGROM固化的字模,最后顯示自定義字符。清屏、光標(biāo)歸位、顯示模式、開顯示等操作在初始化過程完成,可設(shè)置顯示模式為2行5[×]8點(diǎn)陣字符、顯示不移動、光標(biāo)自動右移且不閃爍。
顯示CGROM固化的字模分為2個步驟:
1) 指定首個字模的顯示位置,每行最多顯示16個字符。若顯示第1行,需加上指令碼0x80;若顯示在第2行,需加上指令碼0xC0。
2) 將字符代碼寫入DDRAM中。英文字母、阿拉伯?dāng)?shù)字、常用標(biāo)點(diǎn)的字符代碼即為其ASCII碼,通過鍵盤直接輸入即可。
顯示自定義字符可分為5個步驟:
1) 建立字模。
2) 指定寫入CGRAM的首個字模的地址,需加上指令碼0x40。例如:顯示5[×]8點(diǎn)陣字符,首個地址為0x40,則最多可寫入8個字模,每個字模包括8 B。
3) 將自定義的字模寫入CGRAM。
4) 指定首個字模的顯示位置,每行最多顯示16個字符。若顯示第1行,需加上指令碼0x80;若顯示在第2行,需加上指令碼0xC0。
5) 將字符代碼寫入DDRAM中。英文字母、阿拉伯?dāng)?shù)字、常用標(biāo)點(diǎn)的字符代碼即為其ASCII碼,通過鍵盤直接輸入即可。自定義字模的字符代碼為0~7。
3.2 ?OLED128032軟件策略
3.2.1 ?OLED128032寫時序
對OLED128032的基本操作有寫命令和數(shù)據(jù)。寫時序如圖6所示。地址建立時間tAS最小值和地址保持時間tAH最小值分別為20 ns和0 ns;寫數(shù)據(jù)建立時間tDSW最小值和寫數(shù)據(jù)保持時間tDWH最小值為40 ns和15 ns。片選建立時間tCS最小值為0 ns。
C8051F020向SSD1309發(fā)送寫命令和寫數(shù)據(jù)時,RS,R/W,E,DB3之間的時序應(yīng)滿足圖6要求。C8051F020的指令執(zhí)行時間約為90 ns,所以,合理控制CS#,D/C#,WR#以及D[7:0]的發(fā)送順序即可滿足時序要求。例如:在寫命令函數(shù)中,依次將D/C#,CS#,WR#由高變?yōu)榈?,即滿足圖6地址和數(shù)據(jù)建立時間的要求。
3.2.2 ?OLED128032顯示控制流程
OLED128032的顯示控制流程如圖7所示,首先進(jìn)行初始化,設(shè)置列地址顯示順序和行掃描順序,清屏,開顯示等。向某個位置顯示一個自定義字節(jié)可分為3步:首先確定要顯示的頁,OLED128032共有4頁,向SSD1309寫入命令0xBx,x表示0~3頁;然后確定要顯示的列,需要向SSD1309連續(xù)寫2個字節(jié)0x1x和0x0y,x為列地址的高4位,y為列地址的低4位;最后直接寫入8位二進(jìn)制數(shù)據(jù)即可。將所有字模寫入對應(yīng)的列即可完整地顯示自定義字符。
將驅(qū)動程序燒寫進(jìn)C8051F020后,顯示效果如圖8所示。雙接口OLED控制器不但準(zhǔn)確地顯示了預(yù)先設(shè)置的信息,而且亮度高、響應(yīng)速度快。另外,實驗證明,用戶可從多個不同的角度觀察到清晰的顯示效果??梢詫⒈疚脑O(shè)計的雙接口OLED控制器移植到如圖9所示的某型號光電測量設(shè)備,取代原LCD顯示模塊。
本文設(shè)計并實現(xiàn)一種基于C8051F020單片機(jī)的雙接口OLED控制器。在軟件設(shè)計部分,通過引入判忙函數(shù)保證了驅(qū)動芯片在不忙狀態(tài)下接收控制指令,避免了單片機(jī)和OLED速度不匹配帶來的誤操作。為滿足地址/數(shù)據(jù)的建立時間和保持時間的時序要求,在寫命令和寫數(shù)據(jù)函數(shù)中合理安排了CS#,D/C#,WR#以及D[7:0]等信號的發(fā)送順序。實驗證明,設(shè)計的控制器驅(qū)動兩塊OLED顯示效果理想。雙接口進(jìn)一步拓展控制器的實用性,可將其移植于相關(guān)儀器儀表的顯示終端。
參考文獻(xiàn)
[1] 蔣明明.OLED驅(qū)動芯片恒流驅(qū)動模塊的設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2013.
JIANG Mingming. Design of constant current driving module for OLED driver chip [D]. Harbin: Harbin Institute of Technology, 2013.
[2] 相恒陽.基于嵌入式銀網(wǎng)格透明電極的柔性高效有機(jī)發(fā)光二極管[D].蘇州:蘇州大學(xué),2016.
XIANG Hengyang. High?performance flexible organic light?emitting diodes using embedded silver network transparent electrodes [D]. Suzhou: Soochow University, 2016.
[3] 周福強(qiáng).基于FPGA的OLED驅(qū)動設(shè)計[D].南京:南京理工大學(xué),2013.
ZHOU Fuqiang. Design of OLED driver based on FPGA [D]. Nanjing: Nanjing University of Science and Technology, 2013.
[4] 陳東成,胡敬營,呂衛(wèi)國,等.基于IP核的多接口LCD控制器的設(shè)計及實現(xiàn)[J].液晶與顯示,2017,32(2):117?123.
CHEN Dongcheng, HU Jingying, L? Weiguo, et al. Design and implementation of muti?interface LCD controller based on IP cores [J]. Chinese journal of liquid crystals and displays, 2017, 32(2): 117?123.
[5] 周潤景,袁偉亭,張鵬飛.Cadence高速電路板設(shè)計與仿真[M].北京:電子工業(yè)出版社,2015.
ZHOU Runjing, YUAN Weiting, ZHANG Pengfei. Design and simulation of Cadence high?speed circuit board [M]. Beijing: Publishing House of Electronics Industry, 2015.
[6] 韓毅,甄娜,張偉方.基于瑞薩單片機(jī)的智能模型車設(shè)計與實現(xiàn)[J].計算機(jī)工程,2011,37(10):243?245.
HAN Yi, ZHEN Na, ZHANG Weifang. Design and implementation of intelligent model car based on Renesas single chip microcomputer [J]. Computer engineering, 2011, 37(10): 243?245.
[7] 鄭喜鳳,蓋鑫瑋,魏春娟.基于C8051F020的OLED驅(qū)動控制系統(tǒng)[J].液晶與顯示,2009,24(4):567?570.
ZHENG Xifeng, GAI Xinwei, WEI Chunjuan. Driving and controlling system for OLED based on C8051F020 [J]. Chinese journal of liquid crystals and displays, 2009, 24(4): 567?570.
[8] 江賢志,劉華章,張教育,等.基于C8051F020單片機(jī)的RS485串行通信設(shè)計[J].電子測量技術(shù),2014,37(3):121?124.
JIANG Xianzhi, LIU Huazhang, ZHANG Jiaoyu, et al. Design of RS485 serial communication based on MCU C8051F020 [J]. Electronic measurement technology, 2014, 37(3): 121?124.
[9] 張建民,郭伙令,龍佳樂,等.基于單片機(jī)的智能SMS心率計設(shè)計[J].現(xiàn)代電子技術(shù),2017,40(6):148?150.
ZHANG Jianmin, GUO Huoling, LONG Jiale, et al. Design of an intelligent SMS cardiotachometer based on single chip microcontroller [J]. Modern electronics technique, 2017, 40(6): 148?150.
[10] 鮑可進(jìn).C8051F單片機(jī)原理及應(yīng)用[M].北京:中國電力出版社,2008.
BAO Kejin. Principle and application of C8051F MCU [M]. Beijing: China Electric Power Press, 2008.
[11] 楊延寧,劉立軍,張志勇.基于Proteus的單片機(jī)漢字點(diǎn)陣顯示電路設(shè)計[J].液晶與顯示,2009,24(1):98?102.
YANG Yanning, LIU Lijun, ZHANG Zhiyong. Circuit design of dot?matrix Chinese characters display based on Proteus in MCU [J]. Chinese journal of liquid crystals and displays, 2009, 24(1): 98?102.
[12] 張培仁,孫力.基于C語言C8051F系列微控制器原理與應(yīng)用[M].北京:清華大學(xué)出版社,2007.
ZHANG Peiren, SUN Li. Principle and application of C8051F series microcontroller based on C language [M]. Beijing: Tsinghua University Press, 2007.
[13] 王石.基于FPGA芯片的功能仿真平臺構(gòu)建及靜態(tài)時序分析[D].西安:西安電子科技大學(xué),2008.
WANG Shi. Construction of function simulation platform and static timing analysis based on FPGA chips [D]. Xian: Xidian University, 2008.