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