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