自己用的LPC1768的開(kāi)板帶有一塊2.4寸的TFT彩色液晶屏,雖然自己工作中還用不過(guò)顯示屏,但是晚上閑著也是閑著,于是繼續(xù)玩咱的LPC1768吧。我的開(kāi)發(fā)板上的液晶屏的用的是SPI接口,當(dāng)然你也可以把它設(shè)計(jì)成并行口,其接口電路如下所示:
本文引用地址:http://cafeforensic.com/article/201611/319432.htm 話說(shuō)這個(gè)液晶屏的驅(qū)動(dòng)芯片是ILI9325,在網(wǎng)上下載了該芯片的數(shù)據(jù)手冊(cè),好家伙有111頁(yè),全是E文呀,沒(méi)辦法,誰(shuí)讓咱是小電工呢,就慢慢啃吧。ILI9325這個(gè)芯片的寄存器比較多,不過(guò)沒(méi)關(guān)系,我們暫時(shí)用到的不是太多,這里只要簡(jiǎn)要的總結(jié),剩下的還是日后用到了再好好研究吧。
1、寄存器03H(Entry Mode),該寄存器主要設(shè)置圖像的顯示模式,包括屏幕的掃描方式(水平掃描或垂直掃描),這直接影響到img2lcd軟件(這是個(gè)取模軟件)的掃描方式控制項(xiàng)。
2、寄存器04H(Resizing Control Register)重新調(diào)整大小 寄存器,通過(guò)配置該寄存器,可以調(diào)整所顯示圖片的大小。
3、寄存器07H(Display Control 1),配置該寄存器可打開(kāi)或關(guān)閉圖形。
4、水平和垂直位置的RAM地址(R50h,R51h,R52h,R53h)
看手冊(cè)上寄存器不少,不過(guò)控制方式不一樣,所用到的寄存器不一樣,這里不再列舉寄存器,想做驅(qū)動(dòng),一定要看芯片的手冊(cè),而且一定要仔細(xì)的研究它的手冊(cè)。話說(shuō)寫(xiě)液晶驅(qū)動(dòng)不顯示圖片什么的貌似對(duì)不起LCD,當(dāng)然這次懶貓這次寫(xiě)的驅(qū)動(dòng)也有圖片顯示,想圖片顯示當(dāng)然少不了取模軟件,懶貓這次用的取模軟件是img2lcd,這個(gè)軟件功能不錯(cuò),用起來(lái)也比較簡(jiǎn)單,如果不會(huì)用可以查看一下它自帶的幫助文件。
注意:LCD的配置方式不同,所設(shè)置的掃描方式也不同。
好了,貼上咱寫(xiě)的這個(gè)驅(qū)動(dòng);
void GLCD_clear (unsigned short color)
{
unsigned int i;
wr_reg(0x20, 0); // 1st line GRAM Data(AD0-AD7)
wr_reg(0x21, 0); // 1st line GRAM Data(AD8-AD16)
wr_cmd(0x22);
for(i = 0; i < (WIDTH*HEIGHT); i++){
wr_dat(color); // Set color of background
}
}
void GLCD_bitmap (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap)
{
unsigned int i;
unsigned int len = w*h;
unsigned short *bitmap_ptr = (unsigned short *)bitmap;
wr_reg(0x50, y);
wr_reg(0x51, y+h-1);
wr_reg(0x52, x);
wr_reg(0x53, x+w-1);
wr_reg(0x20, y);
wr_reg(0x21, x);
wr_cmd(0x22);
for (i = 0; i < len; i++) {
wr_dat(*bitmap_ptr++);
}
}
由于原代碼比較多,這里只貼上部分函數(shù),具體的代碼,請(qǐng)參考附件,這里上傳幾張效果圖,懶貓已把液晶屏顯示字符,顯示漢字,畫(huà)圓,畫(huà)線等的程序?qū)懞昧?,改天整理一下也發(fā)上來(lái),下一步弄一下SD卡,USB方面的東東,今天先寫(xiě)這么多吧。
評(píng)論