新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 我的12864學習筆記_5---12864液晶串行讀寫操作函數(shù)

        我的12864學習筆記_5---12864液晶串行讀寫操作函數(shù)

        作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
        在對12864進行控制的操作中,對液晶的讀寫操作是最基本、最底層的操作,是一切其他操作的基礎。

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

        本文引用地址:http://www.104case.com/article/201611/322843.htm

        而對液晶的讀操作,又是對液晶單個像素點進行控制的基礎,也是用液晶繪制曲線的基礎。

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

        程序如下,注釋的也較詳細:

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

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

        voidwr_lcd(uchardat_comm,ucharcontent)//

        {//要寫的數(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ù)時序*****************8前5個高電平的同步碼

        {

        LCD_SCLK1;

        LCD_SCLK0;

        }

        LCD_SID0;//wr=0寫操作

        LCD_SCLK1;//en=1來一個時鐘

        LCD_SCLK0;//en=0

        if(dat_comm)

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

        else

        LCD_SID0;//RS=0寫指令

        LCD_SCLK1;//來一個時鐘

        LCD_SCLK0;

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

        LCD_SCLK1;//來一個時鐘

        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ù)時序*****************8前5個高電平的同步碼

        {

        LCD_SCLK1;

        LCD_SCLK0;

        }

        LCD_SID1;//wr=1讀操作

        LCD_SCLK1;//en=1來一個時鐘

        LCD_SCLK0;//en=0

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

        LCD_SCLK1;//來一個時鐘

        LCD_SCLK0;

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

        LCD_SCLK1;//來一個時鐘

        LCD_SCLK0;

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

        {

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

        {

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

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

        a|=0x01;

        //else

        //a|=0x00;

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

        LCD_SCLK1;

        LCD_SCLK0;

        }

        P2DIR|=BIT5;//把LCD_SID設為輸出

        LCD_SID0;

        for(i=0;i<4;i++)//時鐘下面來4個時鐘脈沖

        {

        LCD_SCLK1;

        LCD_SCLK0;

        }

        }

        returna;

        }



        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 武山县| 海兴县| 苍溪县| 文昌市| 宜章县| 明光市| 贡山| 阳江市| 吉木萨尔县| 石楼县| 钦州市| 留坝县| 长治县| 常州市| 阳曲县| 高邑县| 绥中县| 镇赉县| 河东区| 长顺县| 治县。| 松原市| 牟定县| 抚州市| 黄浦区| 西畴县| 中牟县| 扎囊县| 凉城县| 子洲县| 凤城市| 郁南县| 武邑县| 仁寿县| 高尔夫| 乌兰浩特市| 那坡县| 昌都县| 台中县| 碌曲县| 云林县|