摘è¦ï¼šæœ¬æ–‡åœ¨ä»‹ç´¹å…·æœ‰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ì)。
é—œ(guÄn)éµè©žï¼šOLED SSD1303 uPSD3200 單片機(jÄ«)
在自動(dòng)控制和智能化儀器儀表ä¸ï¼Œäººæ©Ÿ(jÄ«)交互是ä¸å¯ç¼ºå°‘çš„ä¸€éƒ¨åˆ†ã€‚å¦‚ä½•é¸æ“‡åˆé©çš„顯示器件和用最少的單片機(jÄ«)å£ç·šå¯¦(shÃ)ç¾(xià n)éµç›¤è¼¸å…¥ï¼Œä»¥ä¾¿å°‡æ›´å¤šçš„單片機(jÄ«)å£ç·šç”¨ä½œå…¶å®ƒåŠŸèƒ½æŽ§åˆ¶ï¼Œæ˜¯æ¯å€‹(gè)從事自動(dòng)控制和智能化儀器儀表電氣è¨(shè)計(jì)工程師è¦è€ƒæ…®çš„å•題。就顯示器件而言,隨著科å¸(xué)技術(shù)的發(fÄ)展,電å顯示技術(shù)ä¹Ÿåœ¨ä¸æ–·åœ°æ›´æ–°?lián)Q代。從傳統(tÇ’ng)的陰極射線管(CRT)發(fÄ)展到液晶å±ï¼ˆLCD)?,F(xià n)æ£åœ¨å‘新一代顯示技術(shù)éŽæ¸¡ã€‚作為新型顯示技術(shù)候é¸çš„æœ‰ï¼šç‰é›¢å體放電顯示å±ï¼ˆPDPï¼‰ã€æœ‰æ©Ÿ(jÄ«)電致發(fÄ)å…‰å±ï¼ˆOLED)ã€ç™¼(fÄ)光二極管(LED)ã€é›»å ´(chÇŽng)激發(fÄ)發(fÄ)光(FED)ç‰ã€‚ç›®å‰åœ¨ç ”究開發(fÄ)æ–¹é¢ç«¶çˆå¾—最激烈的是PDPã€OLEDã€LCDã€‚å®ƒå€‘å„æœ‰æ‰€é•·ï¼Œä½†è¿½æ±‚的最終目標(biÄo)都是一樣的,å³è¦æ±‚é”(dá)到質(zhì)輕ã€é«”è–„ã€é«˜äº®åº¦ã€å¿«é€ŸéŸ¿æ‡‰(yÄ«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è)å…©æ–¹é¢ä¾†çœ‹ï¼Œåœ¨æŠ€è¡“(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毫米,é‡é‡åƒ…11.1克,工作溫度-40℃到+85℃。下é¢çµ¦å‡ºuPSD3200單片機(jÄ«)與OLED顯示å±P09703的硬件連接和軟件編程。
1 uPSD3200單片機(jī)簡介
帶å¯ç·¨ç¨‹é‚輯的單片機(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ç³»åˆ—åŒæ¨£å¯ä»¥é€šéŽ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系列,在原來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å£çš„å 用。如圖一所示,這里è¦èªªæ˜Žçš„æ˜¯ç”±äºŽ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種沒有串行接å£ï¼Œåœ–二為P09703OLED顯示å±8080時(shÃ)åºåœ–。
圖一 P09703與uPSD3234BV硬件連接原ç†åœ–
圖二 P09703OLED顯示å±8080時(shÃ)åºåœ–
3 軟件編程
在與計(jì)算機(jÄ«)連接方é¢ï¼ŒSSD1303的接å£ï¼ŒåŒ…括數(shù)據(jù)輸入緩å˜å™¨ã€æ•¸(shù)據(jù)輸出鎖å˜å™¨ï¼ŒæŒ‡ä»¤å¯„å˜å™¨åŠè¯ç¢¼å™¨ï¼Œå¿™ç‹€æ…‹(tà i)觸發(fÄ)å™¨ä»¥åŠæ™‚(shÃ)åºæŽ§åˆ¶é›»è·¯ç‰ï¼Œå…·æœ‰é«˜æ€§èƒ½çš„æŽ¥å£æŽ§åˆ¶é›»è·¯ã€‚計(jì)算機(jÄ«)å¯ä»¥éš¨æ™‚(shÃ)訪å•SSD1303而ä¸éœ€è¦åˆ¤æ–·å…¶ç•¶(dÄng)å‰ç‹€æ…‹(tà i),與以å‰ç”¨çš„以T6963C控制器ä¸åŒï¼ŒSSD1303判斷忙狀態(tà i)在æ“ä½œä¸Šä¸æ˜¯é‚£ä¹ˆé‡è¦ï¼Œå› ?yà n)镾SD1303的接å£éƒ¨èƒ½å¤ 驿™‚(shÃ)地接收計(jì)算機(jÄ«)的訪å•ã€‚åªæ˜¯åœ¨è¨ˆ(jì)算機(jÄ«)å°(duì)顯示å˜å„²(chÇ”)器大é‡çš„æ•¸(shù)據(jù)傳輸時(shÃ)與控制部å‘é©…(qÅ«)å‹•(dòng)部傳輸顯示數(shù)據(jù)相沖çªï¼Œæœƒ(huì)在顯示å±ä¸Šå‡ºç¾(xià n)“雪花â€ã€‚但是由于這個(gè)間隙時(shÃ)間很çŸï¼ŒåŠ ä¸Šäººçœ¼åœ¨è¦–è¦ºä¸Šçš„æƒ°æ€§è€Œçœ‹ä¸å‡ºâ€œé›ªèбâ€ç¾(xià n)象,有時(shÃ)判斷忙標(biÄo)å¿—å†é€²(jìn)行顯示數(shù)據(jù)傳輸時(shÃ),忙標(biÄo)志已經(jÄ«ng)æ¶ˆå¤±äº†ã€‚æ£æ˜¯ç”±äºŽé€™äº›ï¼Œè¨ˆ(jì)算機(jÄ«)訪å•SSD1303çš„æ“作æµç¨‹éžå¸¸ç°¡å–®ã€‚
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;
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); //å±å¹•顯示,全亮
ï½
ï½
上述僅是å°(duì)P09703基本的應(yÄ«ng)用,有關(guÄn)更多的SSD1303軟件控制指令,通éŽè©²æ–‡ä»‹ç´¹çš„æ–¹æ³•,并çµ(jié)åˆSSD1303的指令集[3]ï¼Œè®€è€…èƒ½å¤ ?qÅ«)îš¶09703有更深了解。å°(duì)äºŽæŒ‰éµæˆ‘們給出了電路原ç†åœ–,由于編æˆç›¸å°(duì)簡單,這里就ä¸åšæè¿°äº†ã€‚