1 引言 電子系統(tǒng)的開(kāi)發(fā)朝著功耗低,速度快,體積小的方向飛速發(fā)展。TI公司的MSP430系列超低功耗單片機(jī)憑借自身優(yōu)良的品質(zhì)和工作性能被廣泛的應(yīng)用于越來(lái)越多的領(lǐng)域中。本文給出了MSP430F149單片機(jī)與5V電源的LCD液晶顯示器之間的邏輯接口的兩種解決方案。 MSP430F149是美國(guó)TI公司推出的超低功耗混合信號(hào)16位單片機(jī)系列中的一種,在1.8~3.6V電壓、1MHz的時(shí)鐘下運(yùn)行耗電電流在0.1~400μA之間;具有16個(gè)中斷可以任意嵌套;可將CPU置于省電模式用中斷方式喚醒只需6μs,可編制出實(shí)時(shí)性特別高的源代碼;高效的查表處理方法;8MHz晶體驅(qū)動(dòng)下,指令周期為125ns。內(nèi)含8個(gè)外部通道的12位高性能A/D轉(zhuǎn)換器和一個(gè)自動(dòng)掃描功能的容量為16個(gè)字的可編程緩沖器,使得采樣速率可達(dá)200kHz。片內(nèi)含有兩個(gè)定時(shí)器:帶有7個(gè)捕獲/比較寄存器的16位Timer_B和帶有3個(gè)捕獲/比較寄存器的16位Timer_A。該芯片具有60KB的FlashROM,2kB的RAM,它可以10萬(wàn)次擦寫(xiě),有超強(qiáng)的抗干擾能力[1]。此外,MSP430F149具有強(qiáng)大的中斷輸出功能,48個(gè)I/O引腳,每個(gè)I/O口分別對(duì)應(yīng)輸入、輸出、功能選擇、中斷等多個(gè)寄存器,使得功能口和通用I/O口復(fù)用,在對(duì)同一個(gè)I/O口進(jìn)行操作前首先要選擇其要實(shí)現(xiàn)的功能,這樣大大的增強(qiáng)了端口的功能和靈活性,大大提高了對(duì)外圍設(shè)備的開(kāi)發(fā)能力,本文就是利用I/O口來(lái)開(kāi)發(fā)LCD顯示系統(tǒng)。
2 邏輯電平不同接口時(shí)出現(xiàn)的問(wèn)題 本系統(tǒng)用到的MSP430F149的供電電壓是3.3V,輸入電壓最大也不能超過(guò)3.3V,而用到的LCD是12864-12A,它的供電電壓是5V,輸出電壓也達(dá)到了5V,兩者屬于不同電源電壓的邏輯器件,相互接口時(shí)會(huì)存在以下三個(gè)問(wèn)題[2-3]: (1) 加入到輸入輸出引腳上的電平的問(wèn)題。器件對(duì)加入到輸入腳或者輸出腳上的最大電壓是有限制的。這些引腳由二極管或分離元件接到Vcc。如果接入的電壓過(guò)高,則電流將會(huì)通過(guò)二極管或分離元件流向電源。本系統(tǒng)中3.3V的MSP430F149的引腳上如果直接接到LCD的引腳上,LCD上電以后,引腳上輸出的5V電壓會(huì)向MSP430F149的3.3V電源充電。持續(xù)的電流會(huì)損壞二極管和電路元件。 (2) 兩個(gè)電源間電流的互串問(wèn)題。在等待或掉電方式時(shí)MSP430F149的3.3V電源降落到0V,大電流將流通到地,這使總線上的高電壓被下拉到地,這些情況將會(huì)引起信號(hào)丟失和元件損壞。必須注意的是:不管是在3.3V的工作狀態(tài)還是在0V的等待狀態(tài)都不允許電流流向Vcc。 (3) 輸入轉(zhuǎn)換門(mén)限問(wèn)題。每個(gè)器件都會(huì)有自己的驅(qū)動(dòng)門(mén)限,MSP430F149引腳上的輸出電壓經(jīng)過(guò)轉(zhuǎn)換后必須達(dá)到LCD的驅(qū)動(dòng)電壓門(mén)限,才能夠驅(qū)動(dòng)LCD。如果單純考慮MSP430F149引腳最大電壓限制而將接口處電壓鉗制在一個(gè)很小的值,系統(tǒng)也是不能運(yùn)行的。
3 MSP430與LCD的邏輯接口問(wèn)題解決方案 3.1 基于三極管的接口實(shí)例 圖1所示的接口電路是由兩個(gè)三極管組成的。當(dāng)MSP430F149的輸出信號(hào)為高時(shí),是2.8V的電平,作為基極輸入信號(hào)使3DG102A導(dǎo)通,因?yàn)橛猩侠娮,集電極的輸出信號(hào)是0V,此時(shí)S8050不導(dǎo)通,接到S8050集電極的LCD的引腳得到的電平信號(hào)為5V,滿(mǎn)足了LCD的輸入門(mén)限,能夠觸發(fā)顯示功能。同樣,MSP430F149的輸出信號(hào)為低時(shí),是0V的電平,作為基極輸入信號(hào)不能使3DG102A導(dǎo)通,因?yàn)橛猩侠娮,集電極的輸出信號(hào)是5V,此時(shí)S8050導(dǎo)通,接到S8050集電極的LCD的引腳得到的電平信號(hào)為0V,滿(mǎn)足LCD低電平要求。

圖1 雙三級(jí)管組成的接口電路 圖2所示的接口電路是由一個(gè)三極管構(gòu)成的。顯然,此時(shí)的接口輸出的邏輯信號(hào)與MSP430F149輸出的邏輯信號(hào)相反。但輸出信號(hào)的電平提升到了足夠驅(qū)動(dòng)LCD的幅值,這里需要注意的是編程時(shí)所有I/O口輸出的命令數(shù)值應(yīng)取反后再輸出,以滿(mǎn)足圖1所示接口的邏輯要求。

圖2 基于單個(gè)三極管的接口電路 3.2 基于同向門(mén)、反相門(mén)的實(shí)用接口電路 圖3所示的接口電路由一個(gè)同相門(mén)7407構(gòu)成,能夠?qū)SP430F149輸出的高電平信號(hào)提升到5V,而保持低電平信號(hào)不變,從而達(dá)到了LCD的驅(qū)動(dòng)要求。MSP430F149引腳處1k電阻起到限流作用,保證MSP430的引腳處電流不會(huì)過(guò)高。

圖3 基于一個(gè)同相門(mén)的接口電路 圖4所示的由兩個(gè)非門(mén)組成的接口電路,輸出信號(hào)與MSP430F149的輸入信號(hào)同邏輯,由于上拉電阻的作用,高低電平幅值達(dá)到LCD驅(qū)動(dòng)要求。

圖4 兩個(gè)非門(mén)組成的接口電路 圖5所示接口電路和圖2所示的有同樣的效果,高低電平幅值達(dá)到LCD驅(qū)動(dòng)要求,但需注意是:要求編程時(shí)I/O口輸出的命令數(shù)值前取非。

圖5 基于一個(gè)非門(mén)的接口電路 以上5種接口電路中,解決了MSP430引腳上的最大電壓限制問(wèn)題;輸出端口高低電平幅值達(dá)到LCD驅(qū)動(dòng)要求;顯然,更不會(huì)出現(xiàn)電流互串的問(wèn)題。解決了以上不同電源電壓邏輯器件相互接口時(shí)的三個(gè)基本問(wèn)題。其中此系統(tǒng)中的器件都很便宜,且原理簡(jiǎn)單易懂,適合學(xué)生在初期學(xué)習(xí)期間使用。 3.3 其它接口電路的特點(diǎn) 現(xiàn)在市面上流行的一種雙電源電平移位器74LVC4245也適合本系統(tǒng),如圖6所示,它需要3.3V和5V兩種電源,雙電源能夠保證兩邊端口的輸出擺幅達(dá)到滿(mǎn)電源幅值,并且有很好的噪聲抑制作用,因此由該器件構(gòu)成的接口電路應(yīng)用于3V和5V的混合系統(tǒng)中是很理想的。它的缺點(diǎn)是增加了功耗

圖6 雙電源電平移位器74LVC4245 文獻(xiàn)[4]給出了一種基于穩(wěn)壓管的接口電路(如圖7所示),這種方法利用3.6V穩(wěn)壓管的電位鉗制作用將MSP430引腳端的電壓限制在它的容限以?xún)?nèi),但LCD端的輸入電壓為2.25V,與LCD的2.20V門(mén)限電壓非常接近,如受到環(huán)境及其它不穩(wěn)定因素影響,實(shí)際應(yīng)用效果并不理想。

圖 7 基于穩(wěn)壓管的接口電路 3.4 MSP430F149控制LCD液晶顯示系統(tǒng)整體電路 MSP430F149的I/O口都是典型的復(fù)用端口(外圍模塊功能和I/O端口功能),在對(duì)LCD讀寫(xiě)操作之前要選擇為I/O端口功能,更要設(shè)置P3、P4口為輸出口。本系統(tǒng)接口電路如圖8所示,端口功能分配如下:P3.5接到LCD的E端口,作為使能端,P3.6和P3.7作為控制口分別接到R/W和RS引腳。P4.0~P4.7作為數(shù)據(jù)線分別接到LCD的DB0~DB7。

圖8 MSP430F149控制LCD液晶顯示系統(tǒng)
4 程序清單 基于C語(yǔ)言的MSP430F149控制LCD顯示程序如下: /*************顯示主程序**********************/ void main(void) { WDTCTL=WDTPW+WDTHOLD; P1DIR=0XFF; P1OUT=0X01; Init_lcd(); Lcd_InsWrite(0x80); //顯示在第一行 LCD_DataWrite(0xB9); // 顯示一個(gè)“光”字 LCD_DataWrite(0xE2); LCD_DataWrite(0XB7); //伏// LCD_DataWrite(0xFC); LCD_DataWrite(0xB5); //電// LCD_DataWrite(0xE7); LCD_DataWrite(0xD5); //站// LCD_DataWrite(0xBE); LCD_DataWrite(0xCF); //系// LCD_DataWrite(0xB5); LCD_DataWrite(0xCD); //統(tǒng)// LCD_DataWrite(0xB3); delay(400); } void delay(int m) //延時(shí)程序 { int i=0; for(i=0;i<m;i++) ; } /*********顯示文字**************/ void LCD_DataWrite(char Data) { P4DIR=0XFF; //P4口設(shè)置成輸出模式 P3OUT=0X9F; //RS=1, R/W=0 寫(xiě)數(shù)據(jù) P3OUT|=BIT5; //E=1 使能 P4OUT=Data; //寫(xiě)數(shù)據(jù) delay(3); //延時(shí) P3OUT&=~BIT5; //E=0鎖存 /**********寫(xiě)指令*************/ void Lcd_InsWrite(char Instruction) { P4DIR=0XFF; // P4口設(shè)置成輸出模式 P3OUT=0x1F; // RS=0,R/W=0 寫(xiě)指令 P3OUT|=BIT5; //E=1 使能 P4OUT=Instruction; //功能設(shè)定 delay(3); //延時(shí) P3OUT&=~BIT5; //E=0:下降沿鎖存數(shù)據(jù) } /************初始化LCD***********************/ void Init_lcd(void) { P3DIR=0XE0; //P3.5-E,P3.6-R/W,P3.7-RS輸出 Lcd_InsWrite(0x30); //基本指令 delay(400); Lcd_InsWrite(0x01); //清除顯示 delay(400); Lcd_InsWrite(0x0e); // 顯示狀態(tài)設(shè)定:整體顯示,游標(biāo)on,游標(biāo)位置反白 delay(400); 運(yùn)行程序清單中所示程序?qū)⒃贚CD12864的第一行左起顯示“光伏電站系統(tǒng)”六個(gè)字,適合圖1,圖3,圖4中的接口電路設(shè)計(jì)。對(duì)圖2,圖5的中接口電路,由于輸入輸出為反相邏輯關(guān)系,編程時(shí)需在此程序的每一條I/O口輸出的命令數(shù)值前取非,雖然程序復(fù)雜一些,但接口電路相對(duì)較簡(jiǎn)單。
5 結(jié)束語(yǔ) 通過(guò)開(kāi)發(fā)MSP430F149控制驅(qū)動(dòng)的LCD液晶顯示系統(tǒng),對(duì)3.3V和5V系統(tǒng)之間的邏輯接口問(wèn)題進(jìn)行了研究,給出了基于三極管和基于邏輯門(mén)的兩類(lèi)實(shí)用接口電路設(shè)計(jì)方案。由于該芯片功能強(qiáng)大十分適合中小型儀器的開(kāi)發(fā),此系統(tǒng)也可以作為其它便攜式儀器的顯示部分。 |