新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 我的12864學(xué)習(xí)筆記_5---12864液晶串行讀寫(xiě)操作函數(shù)

我的12864學(xué)習(xí)筆記_5---12864液晶串行讀寫(xiě)操作函數(shù)

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
在對(duì)12864進(jìn)行控制的操作中,對(duì)液晶的讀寫(xiě)操作是最基本、最底層的操作,是一切其他操作的基礎(chǔ)。

12864液晶串行連接只需要兩根線就可以實(shí)現(xiàn)對(duì)液晶的完全控制,可以大大節(jié)省IO口。

本文引用地址:http://2s4d.com/article/201611/322843.htm

而對(duì)液晶的讀操作,又是對(duì)液晶單個(gè)像素點(diǎn)進(jìn)行控制的基礎(chǔ),也是用液晶繪制曲線的基礎(chǔ)。

下面是我實(shí)現(xiàn)的串行對(duì)液晶進(jìn)行讀寫(xiě)操作的函數(shù),是針對(duì)msp430g2553單片機(jī)寫(xiě)的,按照時(shí)序不難實(shí)現(xiàn)。

程序如下,注釋的也較詳細(xì):

因?yàn)閙sp430g2553的IO管腳有限,所以我的12864是串行連接的。而并行連接的話,液晶的讀操作并不難實(shí)現(xiàn)。現(xiàn)在串行的,雖然比較復(fù)雜一些,但很類似于串行的讀操作,主要是看懂時(shí)序,然后嚴(yán)格按照時(shí)序就可以寫(xiě)出。我已經(jīng)可以實(shí)現(xiàn)了液晶的讀,寫(xiě)操作。讀寫(xiě)操作的函數(shù)如下,其中注釋的也比較詳細(xì):

//12864串行連接寫(xiě)數(shù)據(jù),寫(xiě)命令函數(shù)按照手冊(cè)上的時(shí)序進(jìn)行編程

voidwr_lcd(uchardat_comm,ucharcontent)//

{//要寫(xiě)的數(shù)據(jù)

uchara,i,j;

delay_us(50);

a=content;

LCD_SCLK0;//en=0;

LCD_SID1;//wr=1

for(i=0;i<5;i++)//數(shù)據(jù)時(shí)序*****************8前5個(gè)高電平的同步碼

{

LCD_SCLK1;

LCD_SCLK0;

}

LCD_SID0;//wr=0寫(xiě)操作

LCD_SCLK1;//en=1來(lái)一個(gè)時(shí)鐘

LCD_SCLK0;//en=0

if(dat_comm)

LCD_SID1;//RS=1寫(xiě)數(shù)據(jù)

else

LCD_SID0;//RS=0寫(xiě)指令

LCD_SCLK1;//來(lái)一個(gè)時(shí)鐘

LCD_SCLK0;

LCD_SID0;//控制字的最后一位為0

LCD_SCLK1;//來(lái)一個(gè)時(shí)鐘

LCD_SCLK0;

for(j=0;j<2;j++)//

{

uchari,j;

uchara=0;//a存放讀取的數(shù)據(jù)

delay_us(50);

LCD_SCLK0;//en=0;

LCD_SID1;//wr=1

for(i=0;i<5;i++)//數(shù)據(jù)時(shí)序*****************8前5個(gè)高電平的同步碼

{

LCD_SCLK1;

LCD_SCLK0;

}

LCD_SID1;//wr=1讀操作

LCD_SCLK1;//en=1來(lái)一個(gè)時(shí)鐘

LCD_SCLK0;//en=0

LCD_SID1;//RS=1讀數(shù)據(jù)

LCD_SCLK1;//來(lái)一個(gè)時(shí)鐘

LCD_SCLK0;

LCD_SID0;//控制字的最后一位為0

LCD_SCLK1;//來(lái)一個(gè)時(shí)鐘

LCD_SCLK0;

for(j=0;j<2;j++)//************一共2*4次循環(huán)讀一個(gè)字節(jié)數(shù)據(jù)第一次循環(huán)讀高4位,第二次循環(huán)讀低4位

{

for(i=0;i<4;i++)

{

P2DIR&=~BIT5;//把LCD_SID設(shè)為輸入,讀數(shù)據(jù)

if(P2IN&BIT5)//如果為高的話

a|=0x01;

//else

//a|=0x00;

a=a<<1;//a向高位移一位

LCD_SCLK1;

LCD_SCLK0;

}

P2DIR|=BIT5;//把LCD_SID設(shè)為輸出

LCD_SID0;

for(i=0;i<4;i++)//時(shí)鐘下面來(lái)4個(gè)時(shí)鐘脈沖

{

LCD_SCLK1;

LCD_SCLK0;

}

}

returna;

}



評(píng)論


技術(shù)專區(qū)

關(guān)閉