機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
MSP430與液晶顯示器的串行接口方案
MSP430與液晶顯示器的串行接口方案
 更新時間:2008-7-26 20:34:28  點擊數(shù):4
【字體: 字體顏色

摘要:針對利用微控制器(mcu)控制液晶顯示驅動器(lcd)的應用開發(fā)實例,提出一種采用串行方式來設計微控制器和液晶顯示驅動器之間接口的方案。該方案是在現(xiàn)有點陣式液晶顯示屏上附加一個mcu,通過程序設計利用mcu的i/o端口去模擬i2c串行總線,從而實現(xiàn)利用mcu去控制lcd的目的;同時介紹一種在圖符液晶顯示系統(tǒng)中顯示動態(tài)曲線的技術和實現(xiàn)方法。

關鍵詞:液晶顯示驅動器 i2c串行總線 msp430

1 概述

點陣式液晶與外部的硬件接口簡單,能以點陣或圖形方式顯示出各種信息,因此在電子設計中得到廣泛應用。但是,對它的接口設計必須遵循一定的硬件和時序規(guī)范,不同的液晶顯示驅動器,可能需要采用不同的接口方式和控制指令才能夠實現(xiàn)所需信息的顯示。某些液晶顯示驅動器與外部的接口必須采用串行方式,而其串行接口往往不是標準的串行接口,這就為這類液晶顯示驅動器的設計帶來了困難。

針對上述問題,本文提出一種利用微控制器(mcu)的i/o端口,通過軟件設計模擬與所使用的液晶顯示驅動器規(guī)范相符的串行總線的設計思想,實現(xiàn)mcu對液晶顯示驅動器的控制,從而建立起一套不但可以顯示各種字符,而且可以動態(tài)顯示曲線的游人顯示系統(tǒng)。

2 系統(tǒng)設計

本文所建立的液晶顯示系統(tǒng),選用美國德州儀器(ti)公司的msp430f149微控制器來控制液晶顯示驅動器upd16682a,從而實現(xiàn)各種信息的顯示。

2.1 msp430f14x微控制器簡介

ti公司的msp430f14x微控制器與其它msp430系列微控制器相同,均甚至一個真正的正交16位risc cpu內核:具有16個可單周期全尋址的16位寄存器,僅27條的精簡指令集以及7種均采用雙重取數(shù)據(jù)技術(ddft)的一致性尋址方式。ddft技術利用每個時鐘脈沖對存儲器進行兩次數(shù)據(jù)存取操作。從而不再需要復雜的時鐘乘法和指令流水線方案。

msp430f14x系列mcu片內不但包括60多kb的flash、2kb的ram、一個看門狗時鐘、12位16通道的a/d轉換器、定時器、高精度比較器、pwm以及高速的usart控制器等常用資源,還在某些型號中集成了lcd控制器。其i/o資源豐富,且每個輸入/輸出(i/o)引腳上都提供了矢量中斷功能,每個外圍器件都支持復雜的事件驅動型操作。同其它微控制器相,帶片內flash的微控制器可將系統(tǒng)功耗降低5倍,并且減小了硬件線路板空間,與現(xiàn)代程序設計技術(如計算分支以及高級語言(如c語言)結合使用,使得msp430的體系結構更為高效。

msp430f14x可采用一個集成的數(shù)字控制振蕩器(dco)或外部高速晶振對系統(tǒng)進行定時,其工作電壓范圍為1.8~3.6v,并可根據(jù)需要提供高達8mips(每秒百萬條指令)的操作性能,對于對成本非常敏感的應用,該系列器件能夠采用dco來工作而無需外部晶振,快速的指令執(zhí)行周期配之以低于6ms的等機啟動時間,使得系統(tǒng)總功耗比競爭器件低了10倍,大大延長了諸如公用設施計量、便攜式儀表測試和智能檢測等工程應用系統(tǒng)中的電池使用壽命。

msp430f14x系列微控制器允許用戶使用標準c語言進行程序編程,并提供高效的c語言編譯環(huán)境;配之以支持對具有仿零點功能的快閃產(chǎn)品進行豐取的快速實時仿真工具fet及優(yōu)良的調試環(huán)境,使msp430f14x系列微控制器在工程設計中得到了廣泛應用。

2.2 液晶顯示驅動器upd16682a簡介

upd16682是nec公司2001年初推出的液晶顯示驅動器,該產(chǎn)品內置大容量顯示ram內存,并能夠提供132×65點陣的全點顯示,特別適合用于16×16或12×12點陣中、日文字符顯示。該產(chǎn)品采用 3v單電源供電,內置升壓電路并具3倍壓和4倍壓兩種工作模式,支持8位串行或并行數(shù)據(jù)的輸入,內置時鐘發(fā)生電路和程序可編程控制的偏壓電路。

(1)upd16682a的顯示內存

upd16682a的顯示ram內存保存著被顯示內容的點陣信息。顯示ram的每一位對應顯示屏上的一個點,總共可以存儲132×65點的信息;通過選擇對應的ram頁地址和列地址,微控制器可以訪問其中的任何一個點。微控制器對upd16682a的顯示ram的讀寫操作通過upd16682a的i/o緩沖器進行(串行模式下upd16682a不支持讀操作),并且該讀操作和液晶顯示屏驅動信號的讀取操作是獨立的,因此,當顯示內存的數(shù)據(jù)同時被雙方訪問時,不會出現(xiàn)顯示信息的抖動等現(xiàn)象。從微控制器讀入的顯示數(shù)據(jù)按照d7~d0的數(shù)據(jù)位順序與液晶顯示屏的行順序一一對應,其顯示關系對應圖如圖1所示。如果在系統(tǒng)中使用了多片upd16682a,則在片間進行顯示數(shù)據(jù)的轉移和顯示一整幅圖案時用戶就會有很大的自由度。

(2)upd16682a與微控制器的接口

upd16682a可以通過8位雙向數(shù)據(jù)總線(并行模式下)或者通過串行總線接收來自微控制器的數(shù)據(jù),這兩種模式可以通過將其p/s引腳置高或置低進行選擇。當工作于并行輸入模式下時,upd16682a的片選信號端、讀寫信號端以及控制信號端(a0)和數(shù)據(jù)線(d0~d7)都應該同微控制器的對應端口進行連接。此時upd16682a內部顯示ram的數(shù)據(jù)以刷新液晶顯示的內容,也可以通過數(shù)據(jù)總線讀取顯示內存的內容。當工作于串行模式下,upd16682a僅使用數(shù)據(jù)線d6輸入串行數(shù)據(jù),即串行總線的數(shù)據(jù)輸入端(si),數(shù)據(jù)線d7被用作時鐘輸入(scl)端,并將片將信號和控制信號(a0)同微控制器總線進行連接,置高或接地讀寫信號。此時upd16682a內部顯示ram的數(shù)據(jù)訪問是單向的,即微控制器只可以向顯示ram寫數(shù)據(jù)以刷新液晶顯示的內容,但不可以讀取顯示ram的內容。

(3)upd16682a的串行接口

upd16682a的串行接口是ttl電平,不是標準的串行接口,對串行數(shù)據(jù)的接收沒有具體波特率、數(shù)據(jù)接口協(xié)議的要求,內部包括1個8位的移位寄存器和1個3位的計數(shù)器。upd16682a在每個串行時鐘的上升沿將串行數(shù)據(jù)捕獲到其內部的移位寄存器,同時計數(shù)器自動加1。當串行數(shù)據(jù)按照d7~d0的順序被依次捕獲到后,在第8個時鐘周期的上升沿,已接收到內部的8位串行數(shù)據(jù)被轉換成一個8位的并行數(shù)據(jù);同時,upd16682a讀取控制信號線a0上的電平,并且根據(jù)a0信號來判斷當前被寫入的8位串行數(shù)據(jù)是一個顯示數(shù)據(jù)還是一個控制命令。對控制信號線a0的讀操作由upd16682a的內部定時器來控制,在每隔8個串行時鐘之后自動操作一次。

(4)upd16682a的控制指令

upd16682a通過讀取其控制信號線a0的電平來判斷當前從片外設備接收的數(shù)據(jù)是一個顯示數(shù)據(jù)還是控制命令。當a0電平為高時,認為接收到的是一個顯示數(shù)據(jù);而當a0電平為低時,則認為接收到的是一個顯示控制命令。利用upd16682a的控制命令可以實現(xiàn)對upd16682a大多數(shù)操作的控制。

2.3 upd16682a與msp430f149的硬件接口設計

圖2是系統(tǒng)upd16682a與msp430f149的硬件接口示意圖。圖中系統(tǒng)采用4mhz晶振,并由系統(tǒng)時鐘分頻得到其它內外設所用的時鐘。msp430f149和upd16682a相連接的i/o口被定義為輸出,msp430f149利用片內12位a/d采集傳感器變換后的電壓信號。經(jīng)程序處理后,通過上述i/o口傳送到upd16682a進行信息顯示。由于驅動液晶顯示的電壓需要十幾v,如果系統(tǒng)板采用 3v單供電,則液晶顯示驅動器必須采用片內升壓電路。圖中upd16682a采用內部4倍壓連接方式。

2.4 軟件設計

msp420f149允許用戶標準c進行編程,并提供高效的c編譯環(huán)境。如果對程序運行時間的要求不是很荷刻,采用c語言進行程序開發(fā)應當是編程人員的首先。以下主要介紹關于自定義串口總線的程序設計,同時介紹一種在upd16682a下的畫點和畫線函數(shù),提供在釁符顯示屏下顯示曲線的實現(xiàn)方法,從而為程序實現(xiàn)動態(tài)顯示波形提供了可能。

2.4.1 串行口控制程序

微控制器送往upd16682a的數(shù)據(jù)有顯示數(shù)據(jù)或顯示命令兩種。兩者的區(qū)分由upd16692a控制信號線a0的狀態(tài)來表征,因此將msp430f149的port2.2端口電平置高或置低就可控制upd16682a的狀態(tài)。

按照upd16682a串行接口聽原理,為了向其寫入一個8位或16位的數(shù)據(jù),首先必須通過程序設計向upd16682a產(chǎn)生一個時鐘輸出。時鐘產(chǎn)生可以有兩種方式。一是利用微控制器定時器中斷,定時依次從i/o端口輸出高、低電平。二是利用指令產(chǎn)生和數(shù)據(jù)同步的時鐘脈沖,通過產(chǎn)生一個電平的跳變沿將位數(shù)據(jù)送到upd16682a,然后通過逐次移位,就可以將一個8位數(shù)據(jù)寫進upd16682a內部的數(shù)據(jù)鎖存器。在第8個時鐘脈沖的上升沿,鎖存器中數(shù)據(jù)炙一個8位的并行數(shù)據(jù),同時根據(jù)a0信號線睥電平來顯示圖符或執(zhí)行相應的控制命令。雖然這里的串行數(shù)據(jù)的發(fā)送沒有具體波特率和數(shù)據(jù)接口協(xié)議的要求,但是在編寫程序時,必須認真考慮串行方式下各個信號的時序。以下是向upd16682a寫入一個8位控制命令的程序:

void set_address(unsigned char column,unsigned char page){

unsigned char colh,coll;

//設頁地址

colh=page|0xb0;

write_command(colh);

//設列地址

colh=(column&0xf0)>>4;

colh|=0x10;

coll=column&0x0f;

write_command(colh);

write_command(coll);

}

2.4.2 字符顯示屏上的曲線繪制程序

有了上述程序,就可以方便地在upd16682a上指定位置顯示設定的圖案和字符了。如果用戶需要動態(tài)地展示信號波形和曲線,還可設計出專用的畫點和畫線函數(shù),從而大大提高了字符液晶顯示屏的動態(tài)圖形顯示能力。通常而言,液晶顯示屏上的一點對應液晶顯示驅動器顯示ram中的一位。顯示ram中的某位為1,則在液晶顯示屏上的相應點即為點亮狀態(tài);而要想實現(xiàn)在液顯示屏上動態(tài)的顯示點和曲線,必須用到顯示ram中的數(shù)據(jù)。通常的做法是讀取指定點周圍的數(shù)據(jù),然后在這些點中的某個指定位置插入1位,從而將液晶顯示屏上的指定點點亮,這就是基本的畫點原理。但是,在串行方式下,upd16682a不具備數(shù)據(jù)讀出能力。為此,我們仿照顯示ram顯示的方式,在msp430f149的數(shù)據(jù)區(qū)開辟了一塊和upd16682a顯示ram同樣大小的內存塊,在向upd16682a顯示ram寫入顯示數(shù)據(jù)的同時,也向該內存塊的對應位置寫入同樣的數(shù)據(jù),保證了該內存塊的內容和upd16682a顯示ram中的數(shù)據(jù)是同步刷新的。因此在畫點函數(shù)中,我們直接從該內存塊中取出需要的顯示數(shù)據(jù)進行處理,然后再通過自定義串行總線送往upd16682a進行顯示。用這種方式,我們實現(xiàn)了在液晶顯示屏的任意位置畫出一個點,并且還可以利用這種方式編制自己的畫線函數(shù),這樣就使upd16682a具備了動態(tài)顯示波形的能力,也就擴展了字符液晶顯示屏動態(tài)曲線波形的顯示功能。以下是upd16682a編寫的畫點函數(shù):

void drawpointxy(unsigned char x,unsigned char y){

unsigned char page,dot,dat,coul,couh;

dot=0x01;

page=y/8; /*計算當前點頁地址、列地址*/

r_page=page; /*點亮當前點并保持周圍點信息不變*/

r_column=x;

page|=0xb0;

dat=y%8;

dot=dot<<dat;

couh=(x&0xf0)>>4;

/*通過自定義串行總線向upd16682a發(fā)送數(shù)據(jù)*/

couh=couh|0x10;

coul=(x&0x0f);

write_command(page);

write_command(couh);

write_command(coul);

dat=displayram[r_page][r_column];

dat|=dot;

write_displaydata(dat); /*向顯示ram寫入數(shù)據(jù)*/

}

程序中的二維全局數(shù)組displayram[][]即為在msp430f149中開辟的內存塊,用于保存當前upd16682a顯示ram中對應位置的顯示數(shù)據(jù)。全局變量r_page和r_column分別保存8位顯示數(shù)據(jù)的頁地址和列地址。

如果想進一步實現(xiàn)曲線的顯示,程序中則需要計算兩個點之間在x方向和y方向上的偏差,并依據(jù)偏差大小來插入要顯示的點。本系統(tǒng)中,用這種設計方法獲得了平滑的曲線顯示效果。

3 應用

經(jīng)實踐證明,本文所介紹的利用微控制器的i/o端口實現(xiàn)微控制器和液晶顯示驅動器之間的自定義串行總線的設計方案,取得了很好的應用效果。設計的液晶顯示系統(tǒng)工作穩(wěn)定可靠,開發(fā)的在字符型lcd下動態(tài)顯示曲線波形的技術,擴展了字符型lcd動態(tài)顯示曲線的功能,也為液晶顯示驅動器的應用開發(fā)提供了一種新的途徑。本文所提出的用軟件模擬串行總線的方法具有很強的通用性,為實現(xiàn)i2c串行接口提供了一種新方式。


 

  • 上一篇: MSP430單片機實現(xiàn)微波成像系統(tǒng)的掃描控制與數(shù)據(jù)采集
  • 下一篇: MSP430的低功耗特性在藍牙產(chǎn)品中的應用
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1