摘要:本文在介紹具有USB,I2C,ADC,DDC和PWM功能,嵌入8032控制器內(nèi)核的uPSD3200單片機的基礎(chǔ)上,重點分析利用uPSD3200單片機與臺灣錸寶公司最新產(chǎn)品,內(nèi)嵌SSD1303驅(qū)動芯片的超薄OLED顯示屏P09703的硬件連接和軟件編程,同時給出利用uPSD3200單片機一個A/D口實現(xiàn)32個按鍵的原理圖,從而實現(xiàn)完整的人機對話設(shè)計。
在自動控制和智能化儀器儀表中,人機交互是不可缺少的一部分。如何選擇合適的顯示器件和用最少的單片機口線實現(xiàn)鍵盤輸入,以便將更多的單片機口線用作其它功能控制,是每個從事自動控制和智能化儀器儀表電氣設(shè)計工程師要考慮的問題。就顯示器件而言,隨著科學(xué)技術(shù)的發(fā)展,電子顯示技術(shù)也在不斷地更新?lián)Q代。從傳統(tǒng)的陰極射線管(CRT)發(fā)展到液晶屏(LCD)。現(xiàn)正在向新一代顯示技術(shù)過渡。作為新型顯示技術(shù)候選的有:等離子體放電顯示屏(PDP)、有機電致發(fā)光屏(OLED)、發(fā)光二極管(LED)、電場激發(fā)發(fā)光(FED)等。目前在研究開發(fā)方面競爭得最激烈的是PDP、OLED、LCD。它們各有所長,但追求的最終目標都是一樣的,即要求達到質(zhì)輕、體薄、高亮度、快速響應(yīng)、高清析度、低電壓、高效率、長壽命、低成本。
目前,在光電顯示領(lǐng)域,CRT已經(jīng)走向末路,LCD正處于發(fā)展的頂峰時期,與技術(shù)成熟、產(chǎn)業(yè)鏈完善、規(guī)模龐大的LCD產(chǎn)業(yè)相比,OLED還處于發(fā)展的初級階段,它的優(yōu)勢可以從技術(shù)與產(chǎn)業(yè)兩方面來看,在技術(shù)上:OLED很薄、很輕,厚度可以做到比LCD??;由于是不需要背光源的主動發(fā)光,所以O(shè)LED視角很廣,一般認為接近180度;并且具有省電、耐低溫特性,在低溫下的性能遠遠優(yōu)于LCD;響應(yīng)速度快,圖像刷新率幾乎是LCD的100至1000倍;除了圖像質(zhì)量的根本性改進外,還具有抗震性好這一特性,這對于便攜式設(shè)備而言十分有利;不僅如此,由于可彎曲的塑料也可以用作基質(zhì)材料,所以O(shè)LED顯示屏的外形不受限制,可以是任何形狀,可以放到任意物體的表面。由于使用了新的基質(zhì)材料,OLED顯示屏比目前最薄的薄膜電晶體管(TFT)屏幕還要平整得多[1]。臺灣錸寶公司生產(chǎn)的內(nèi)嵌SSD1303驅(qū)動芯片的超薄OLED顯示屏P09703點陣數(shù)128X64,厚度僅2.05毫米,重量僅11.1克,工作溫度-40℃到+85℃。下面給出uPSD3200單片機與OLED顯示屏P09703的硬件連接和軟件編程。
1 uPSD3200單片機簡介
帶可編程邏輯的單片機uPSD3200系列是ST公司最新推出的在Flash PSD結(jié)構(gòu)中嵌入8032控制器內(nèi)核(12CLOCK)的可編程器件。uPSD3200系列帶兩塊Flash存儲器,SRAM(支持后備電池),通用I/O口,帶有16個宏單元的3000門可編程邏輯電路PLD,管理監(jiān)控功能,并可實現(xiàn)USB,I2C,ADC,DDC和PWM功能,片內(nèi)8032微控中心,帶兩個標準異步通訊口,三個16位定時/計數(shù)器和兩個外部中斷。何FlashPSD系列一樣,uPSD3200系列同樣可以通過JATG ISP接口進行在系統(tǒng)編程。uPSD3200系列芯片在稅控收款機、POS機、微型打印機、出車計價器和GPS系統(tǒng)等領(lǐng)域有著廣泛的應(yīng)用[2]。在成功推出uPSD3200系列后,ST公司2004年推出內(nèi)嵌高速8032控制器內(nèi)核(4CLOCK)的uPSD3300系列,在原來uPSD3200系列的基礎(chǔ)上提供8路10位ADC,IrDA,JTAG調(diào)試等增強功能,使其能更廣闊的應(yīng)用前景。
2 P09703與uPSD3200的硬件連接
臺灣錸寶公司最新推出的超薄OLED顯示屏P09703主要特性為:
由于OLED顯示屏P09703的邏輯電平為2.4V - 3.5V,我們選用ST公司生產(chǎn)的uPSD3200系列單片機時,注意選用3.3V器件,我們以uPSD3234BV為例,給出OLED顯示屏P09703與uPSD3234BV單片機的硬件連接圖,同時給出利用uPSD3200單片機一個A/D口實現(xiàn)32個按鍵的原理圖,可以大幅度減少對I/O口的占用。如圖一所示,這里要說明的是由于OLED顯示屏P09703內(nèi)藏控制器為臺灣SOLOMON生產(chǎn)的SSD1303,該控制器在接口控制電路內(nèi)有兩套時序電路,由時序適配電路設(shè)置以適配不同計算機操作時序的要求。時序適配電路的設(shè)置端為BS1和BS2。BS1和BS2的時序設(shè)置如表一所示。OLED顯示屏P09703種沒有串行接口,圖二為P09703OLED顯示屏8080時序圖。
圖一 P09703與uPSD3234BV硬件連接原理圖
圖二 P09703OLED顯示屏8080時序圖
3 軟件編程
在與計算機連接方面,SSD1303的接口,包括數(shù)據(jù)輸入緩存器、數(shù)據(jù)輸出鎖存器,指令寄存器及譯碼器,忙狀態(tài)觸發(fā)器以及時序控制電路等,具有高性能的接口控制電路。計算機可以隨時訪問SSD1303而不需要判斷其當前狀態(tài),與以前用的以T6963C控制器不同,SSD1303判斷忙狀態(tài)在操作上不是那么重要,因為SSD1303的接口部能夠適時地接收計算機的訪問。只是在計算機對顯示存儲器大量的數(shù)據(jù)傳輸時與控制部向驅(qū)動部傳輸顯示數(shù)據(jù)相沖突,會在顯示屏上出現(xiàn)“雪花”。但是由于這個間隙時間很短,加上人眼在視覺上的惰性而看不出“雪花”現(xiàn)象,有時判斷忙標志再進行顯示數(shù)據(jù)傳輸時,忙標志已經(jīng)消失了。正是由于這些,計算機訪問SSD1303的操作流程非常簡單。
sbit DC_PIN_NUM = P0^5; //P0.5 數(shù)據(jù)/指令控制位,低電平—指令操作,高電平—數(shù)據(jù)操作
sbit WR_PIN_NUM = P0^6; //P0.6 寫數(shù)據(jù)/指令控制位,高電平變低電平時寫入
sbit RD_PIN_NUM = P0^7; //P0.7 讀數(shù)據(jù)/指令控制位,低電平有效
unsigned char ReadData(void) //從P09703OLED顯示屏讀取數(shù)據(jù)
{ unsigned char temp;
DC_PIN_NUM = 1;
RD_PIN_NUM = 0;
RD_PIN_NUM = 1;[!--empirenews.page--]
temp = P4;
return temp;
}
unsigned char ReadCommand(void) //從P09703OLED顯示屏讀取寄存器狀態(tài)
{ unsigned char temp;
DC_PIN_NUM = 1;
RD_PIN_NUM = 0;
RD_PIN_NUM = 1;
temp = P4;
return temp;
}
void WriteCommand(unsigned char Data) //寫指令代碼到P09703OLED顯示屏
{ DC_PIN_NUM = 0;
P4=Data;
WR_PIN_NUM = 0;
WR_PIN_NUM = 1;
}
void WriteData(uint8 Data) //寫參數(shù)及數(shù)據(jù)到P09703OLED顯示屏
{ DC_PIN_NUM = 1;
P4=Data;
WR_PIN_NUM = 0;
WR_PIN_NUM = 1;
}
main(){ int j, i;
InitOled(); //初始化P09703OLED顯示屏,由于SSD1303軟件控制指令非常豐富,該函數(shù)內(nèi)容較長,在這里不做描述,詳情見P09703應(yīng)用筆記,這里要說明的是:InitOled()中的comm_out2()函數(shù)用WriteCommand()函數(shù)替代
for(i=0;i<8;i++)
WriteCommand (0xB0+i); //設(shè)置顯示位置—行
WriteCommand (0x02); //設(shè)置顯示位置—列低地址
WriteCommand (0x10); //設(shè)置顯示位置—列高地址
for(j=0;j<128;j++)
WriteData((0xFF); //屏幕顯示,全亮
}
}
上述僅是對P09703基本的應(yīng)用,有關(guān)更多的SSD1303軟件控制指令,通過該文介紹的方法,并結(jié)合SSD1303的指令集[3],讀者能夠?qū)09703有更深了解。對于按鍵我們給出了電路原理圖,由于編成相對簡單,這里就不做描述了。