超薄顯示屏OLED在陀螺經(jīng)緯儀中的應(yīng)用
出處:junj 發(fā)布于:2007-04-15 21:51:11
關(guān)鍵詞:OLED SSD1303 ARM 陀螺儀
陀螺經(jīng)緯儀通過敏感地球自轉(zhuǎn)的水平分量來測定儀器架設(shè)點真北方位的精密儀器,工作情況類似于電子經(jīng)緯儀,所不同的是電子經(jīng)緯儀只能測定兩個目標的相對夾角,而陀螺經(jīng)緯儀不僅可以測定目標之間的相對夾角,而且可以測定目標與地理北或真北方位之間的夾角。儀器工作通常在野外進行,環(huán)境條件較為惡劣。以前顯示部分用液晶實現(xiàn),帶來的問題是除重量和體積外,低溫靠加熱實現(xiàn),功耗大,野外作業(yè)對電池要求較高。另一個問題是采取任何措施,都無法解決太陽照射下,液晶顯示不清楚這個問題,這是由于液晶顯示自身特性決定的。
OLED 在顯示信息方面有許多吸引人的特點。OLED 無LCD 的視角問題,可提供全視角顯示。由于OLED 具有能自發(fā)光的特點,在亮度上也比LCD 高得多,也不像LCD 需要背光源,所以不僅提高了電源的有效功率,功耗只有LCD 的一半,而且器件厚度也比LCD 薄。OLED 響應(yīng)時間比典型LCD 快一千倍。所以,它具有高效率、高對比度、寬視角、工作電壓低等優(yōu)點[1 -2]。臺灣錸寶公司生產(chǎn)的內(nèi)嵌SSD1303驅(qū)動芯片的超薄OLED顯示屏P09703點陣數(shù)128X64,厚度僅2.05毫米,重量僅11.1克,工作溫度-40℃到+85℃。在陀螺經(jīng)緯儀上選用該產(chǎn)品,很好的解決了顯示問題。下面重點討論電路設(shè)計的實現(xiàn)問題。
1 SSD1303簡介
目前,主要有Solomon 公司和美國的Clare公司等幾家公司生產(chǎn)OLED 驅(qū)動IC。Solomon 投入市場的SSD1303,是一枚把行驅(qū)動、列驅(qū)動和控制器集成為一體的OLED 驅(qū)動器芯片。這個驅(qū)動器為132 × 64點陣OLED 圖形顯示而設(shè)計的,包括行驅(qū)動器、列驅(qū)動器、電流參考發(fā)生器、對比度控制、振蕩器和幾個MCU 接口模式。工作邏輯電壓2.4V~3.5V,具有豐富的軟件功能,支持4種顏色選擇和每種顏色64級控制,它的軟件對比度具有256級控制,內(nèi)嵌的132 × 64 bit 的圖形動態(tài)隨機存儲器( GDDRAM),提供了行remapping、列remapping、垂直滾動和部分顯示功能。使該驅(qū)動器適合于不同像素尺寸和顏色的多種OLED 顯示。
2 P09703與LPC2131的硬件連接
LPC2100/lLPC2105/LPC2106 系列微控制器是飛利浦半導(dǎo)體推出的基于16/32 位ARM7TDMI-S CPU,并帶有128/256 k字節(jié)(kB)嵌入的高速Flash存儲器的微控制器,128位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32位代碼能夠在時鐘速率下運行。對代碼規(guī)模有嚴格控制的應(yīng)用可使用16 位Thumb 模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。由于LPC2100/lLPC2105/LPC2106系列微控制器采用非常小的64腳封裝、極低的功耗、多個32位定時器、4路10位ADC PWM 輸出以及多達9個外部中斷,這使它們特別適用于工業(yè)控制、醫(yī)療系統(tǒng)、訪問控制和電子收款機(POS)等應(yīng)用領(lǐng)域。因為LPC2100系列微控制器沒有外部總線控制器,所以它們外接擴展芯片不是很方便。不過,因為它們的速度很快,所以即使使用軟件模擬總線外接擴展芯片也比普通的80c51快得多,而豐富的片內(nèi)資源也不是普通51能夠比擬的。
鑒于P09703與P09702具有相同的圖形顯示控制器SSD1303,而P09702硬件接口適合試驗連接,下面以P09702與LPC2131為例進行說明,由于OLED顯示屏P09702的邏輯電平為2.4V - 3.5V,我們選用PHILIPS公司生產(chǎn)的基于ARM7TDMI-S、單電源供電的微控制器LPC2131作為控制器,圖一給出了包括電源、時鐘、復(fù)位等一個嵌入式處理系統(tǒng)正常工作的電路外,電源電路提供模擬3.3V和數(shù)字3.3V,以提高系統(tǒng)工作穩(wěn)定性。同時繪制了P09702與LPC2131的硬件連接方式。
超薄顯示屏OLED在陀螺經(jīng)緯儀中的應(yīng)用
530)this.width=530" border=0>
圖 一
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的操作流程非常簡單。但要注意的是SSD1303的接口控制電路內(nèi)有幾套時序電路以適配不同計算機操作時序的要求。時序適配電路的設(shè)置端為BS0,BS1,BS2。在P09703中選擇BS1和BS2不同的連接,以確定選擇Intel8080時序還是M6800時序。在P09702中由于沒有BS1和BS2的選擇,出廠時已經(jīng)設(shè)置為Intel8080時序,所以下面的程序為Intel8080時序。
#define AD0_PIN_NUM 8 //8位數(shù)據(jù)總線
#define DC_PIN_NUM 5 //P0.5 數(shù)據(jù)/指令控制位,低電平—指令操作,高電平—數(shù)據(jù)操作
#define WR_PIN_NUM 6 //P0.6 寫數(shù)據(jù)/指令控制位,高電平變低電平時寫入
#define RD_PIN_NUM 7 //P0.7 讀數(shù)據(jù)/指令控制位,低電平有效
#define CS_PIN_NUM 16 //P0.16 使能位,低電平有效
void ExBusInit(void) //初始化P09702OLED顯示屏總線
{ uint32 temp;
// 設(shè)置引腳連接模塊:DC_PIN_NUM、WR_PIN_NUM、RD_PIN_NUM、CS_PIN_NUM、 AD0_PIN_NUM為GPIO
PINSEL0 &= ~(3 << (2 * DC_PIN_NUM));
PINSEL0 &= ~(3 << (2 * WR_PIN_NUM));
PINSEL0 &= ~(3 << (2 * RD_PIN_NUM));
PINSEL0 &= ~(3 << (2 * (CS_PIN_NUM-16)));
for (temp= AD0_PIN_NUM; temp < 16; temp++){
PINSEL0 &= ~(3 << (2 *temp));
}
// 設(shè)置引腳方向,所有相關(guān)引腳為輸出
temp = 0xff << AD0_PIN_NUM;
IODIR = IODIR | temp;
IODIR = IODIR | (1 << WR_PIN_NUM) | (1 << RD_PIN_NUM) | (1 << DC_PIN_NUM) | (1 << CS_PIN_NUM);
// 設(shè)置引腳輸出值,除CS_PIN_NUM輸出為低電平外,其余均為高電平
IOCLR = (1 << CS_PIN_NUM);
IOSET = (1 << DC_PIN_NUM) | (1 << WR_PIN_NUM) | (1 << RD_PIN_NUM);
temp = 0xff << AD0_PIN_NUM;
IOSET = IOSET | temp;
}
uint8 ReadData(void) //從P09702OLED顯示屏讀取數(shù)據(jù)
{ uint32 temp,temp1;
temp1 = IODIR;
IODIR = temp1 & (~(0xff << AD0_PIN_NUM)); // 設(shè)置AD0_PIN_NUM為輸入
IOCLR = 1 << RD_PIN_NUM;
temp = IOPIN;
IOSET = 1 << RD_PIN_NUM;
IODIR = temp1 | (0xff << AD0_PIN_NUM);
temp = temp >> AD0_PIN_NUM;
return (uint8) temp;
}
void WriteCommand(uint8 Data) //寫指令代碼到P09702OLED顯示屏
{ IOCLR = 1 << DC_PIN_NUM;
IOSET = Data << AD0_PIN_NUM;
Data = ~Data;
IOCLR = Data << AD0_PIN_NUM;
IOCLR = 1 << WR_PIN_NUM;
IOSET = 1 << WR_PIN_NUM;
IOSET = 1 << DC_PIN_NUM;
}
void WriteData(uint8 Data) //寫參數(shù)及數(shù)據(jù)到P09702OLED顯示屏
{ IOSET = Data << AD0_PIN_NUM;
Data = ~Data;
IOCLR = Data << AD0_PIN_NUM;
IOCLR = 1 << WR_PIN_NUM;
IOSET = 1 << WR_PIN_NUM;
}
main(){ int j, i;
ExBusInit(); //初始化P09702OLED顯示屏總線
InitOled(); //初始化P09702OLED顯示屏,由于SSD1303軟件控制指令非常豐富,該函數(shù)內(nèi)容較長,在這里不做描述,詳情見P09702應(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); //屏幕顯示,全亮
}
}
上述僅是對P09702基本的應(yīng)用,有關(guān)更多的SSD1303軟件控制指令,通過該文介紹的方法,并結(jié)合SSD1303的指令集[4],讀者能夠?qū)09702應(yīng)用自如。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- LED照明技術(shù)特性與選型運維指南2026/1/5 10:26:27
- 工業(yè)觸摸屏選型與現(xiàn)場應(yīng)用技術(shù)指南2025/12/22 11:44:57
- 顯示器色深 6Bit、8Bit、10Bit 與 6 抖 8、8 抖 10、FRC2025/8/28 15:29:32
- Micro-LED技術(shù)解析2025/8/26 17:21:56
- LED顯示屏標清、高清、超清、1080P與4K的解析2025/8/8 17:05:00









