新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LCD12864程序

        LCD12864程序

        作者: 時間:2016-11-11 來源:網絡 收藏
        希望對第一次接觸液晶屏的人有一定幫助……………………

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

        #include
        #include // 聲明了void _nop_(void)
        #include

        #define uchar unsigned char
        #define uint unsigned int

        #define DPORT P3 // 命令數據輸出端口
        sbit RS =P2^7 ;
        sbit RW =P2^6 ;
        sbit E =P2^5 ;
        sbit CS2=P2^4 ;
        sbit CS1=P2^3 ;

        #define disp_start 0xc0//顯示起始行設置.
        #define page_add 0xb8//頁面地址設置.(第 0 頁)
        #define col_add 0x40//列地址設置. (第 0 列)
        #define disp_on 0x3f//打開顯示.
        #define disp_off 0x3e //關閉顯示.

        /*--函數聲明--*/
        void Led_init(void);
        void Lcd_clr(void);
        void Wr_com(uchar);
        void Wr_dat(uchar);
        void Rstatue(void);
        uchar Rdat(void);
        void Display_ch(uchar,uchar,uchar*); // 僅僅只能顯示 16*16 漢字
        void Position(uchar,uchar);
        void Draw_ph(uchar,uchar*); // 畫 128*16 的圖片 (占兩頁)
        void Delay(uint);

        /***********************************************************************************************/
        /****************************** 主 函 數 *****************************************/
        void main(void)
        {
        Delay(50);
        Led_init(); // LCD初始化
        Wr_com(disp_off);//關閉顯示.
        Lcd_clr(); // LCD清屏
        Wr_com(disp_on); //打開顯示.
        Delay(1000);

        //Wr_com(disp_off);//關閉顯示.
        Draw_ph(0,XTCSH);// 0 表示 頁(<7); XTCSH 圖片首地址 (128*16)
        //Wr_com(disp_on); //打開顯示.
        Delay(6000);

        Lcd_clr(); // LCD清屏

        Wr_com(disp_off);//關閉顯示.
        Draw_ph(2,ZZR);
        Display_ch(4,65,WANG); // 5 表示 頁(<8); 65 表示 列(<128)[相鄰兩個漢字列差為 16] ;WANG 顯示漢字首地址
        Display_ch(4,81,XUE);
        Display_ch(4,97,FAN);
        Draw_ph(6,NYR);
        Wr_com(disp_on); //打開顯示.

        while(1);
        }


        /**********************************************************************************************/
        /*---------------------- LCD12864 顯示部分 (控制芯片 KS0108 )---------------------------*/
        /**********************************************************************************************/
        /*----------------LCD初始化-------------------------------------*/
        void Led_init(void)
        {
        P2=0;
        Wr_com(disp_start);//顯示起始行設置.
        Wr_com(page_add);//頁面地址設置.
        Wr_com(col_add);//列地址設置.
        Wr_com(disp_on);//打開顯示.
        }
        /*---------------------LCD清屏---------------------------------*/
        void Lcd_clr(void)
        {
        uchar page,col;
        CS1=0;
        CS2=0;
        for (page=0;page<8;page++)
        {
        Wr_com(page_add | page);
        Wr_com(col_add);
        for (col=0;col<64;col++) Wr_dat(0x00);//列地址自動加一.
        }
        }
        /*---------------------寫命令----------------------------------*/
        void Wr_com(uchar c)
        {
        Rstatue();
        RS=0;
        RW=0;
        DPORT=c; // "寫" (下降沿有效)
        E=1;
        E=0;
        }
        /*---------------------寫數據----------------------------------*/
        void Wr_dat(uchar c)
        {
        Rstatue();
        RS=1;
        RW=0;
        DPORT=c; // "寫" (下降沿有效)
        E=1;
        E=0;
        }
        /*----------------------讀狀態---------------------------------*/
        void Rstatue(void)
        {
        uchar data temp=0;
        DPORT=0xff;
        RS=0;
        RW=1;
        while(1) // 有必要讓 E 的上升沿在循環體中
        {
        E=0;
        temp=(DPORT&0x90); // "讀" (上升沿有效)
        E=1;
        if(temp==0) break;
        }
        E=0;
        }
        /*-----------------------讀數據--------------------------------*/
        /*uchar Rdat(void)
        {
        uchar data temp=0;
        Rstatue();
        RS=1;
        RW=1;
        temp=DPORT; // "讀" (上升沿有效)
        E=0;
        E=1;
        return temp;
        }
        /*----------------------單個顯示漢字程序( 16*16 )----------------------------*/
        void Display_ch(uchar page,uchar col,uchar *p)
        {
        uchar i,j,X,Y;
        X=page;
        Y=col;
        CS1=0;
        CS2=1;
        for(j=0;j<2;j++)
        {
        for(i=0;i<16;i++)
        {
        if(Y>63) // 到了右便半屏幕
        {
        Y=Y-64 ;
        CS1=1 ;
        CS2=0 ;
        }
        if(i<1||Y!=0) Position(X,Y);
        Wr_dat(*p); // 列 自動加 1
        Y++;
        p++;
        }
        X++;
        Y=col;
        }

        CS1=0;
        CS2=0;
        }
        /*---------------------定位顯示坐標---------------------*/
        void Position(uchar page,uchar col)
        {
        uchar X,Y; // X 表示行, Y 表示列
        X= page | page_add ;
        Y= col | col_add ;
        Wr_com(X) ;
        Wr_com(Y) ;
        }
        /*------------------ 畫圖程序(128*16 ; 二頁) -------------------*/
        void Draw_ph(uchar page,uchar *p)
        {
        uchar i,j;
        uchar temp=page;
        for(j=0;j<2;j++)
        {
        CS1=0; // 左半屏幕
        CS2=1;
        Wr_com(page_add|temp);
        Wr_com(col_add);
        for(i=0;i<64;i++)
        {
        Wr_dat(*p); // 列 自動加 1
        p++;
        }

        CS1=1; // 右半屏幕
        CS2=0;
        Wr_com(page_add|temp);
        Wr_com(col_add);
        for(i=0;i<64;i++)
        {
        Wr_dat(*p); // 列 自動加 1
        p++;
        }
        temp++;
        }

        CS1=0;
        CS2=0;
        }
        /*---------------------延時程序-------------------------*/
        void Delay(uint delay)
        {
        uchar data i;
        while(delay)
        {
        for(i=0;i<125;i++) {;}
        delay--;
        }
        }
        /**********************************************************************************************/

        /***************************************************************************************************************/
        /* 漢 字 字 模(下面代碼保存為Zhiku.h文件)
        /***************************************************************************************************************/
        #define uchar unsigned char

        // " 制作人: "
        uchar code ZZR[]={0x00,0x50,0x4F,0x4A,0x48,0xFF,0x48,0x48,0x48,0x00,0xFC,0x00,0x00,0xFF,0x00,0x00, //
        0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //
        0x00,0x00,0x3F,0x01,0x01,0xFF,0x21,0x61,0x3F,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,
        0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00,
        0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x01,0x06,0x0C,0x18,0x30,0x60,0x20,0x00,
        0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
        // 系統初始化
        uchar code XTCSH[]={0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,
        0x20,0x30,0x2C,0xA3,0x60,0x10,0x84,0xC4,0xA4,0x9D,0x86,0x84,0xA4,0xC4,0x84,0x00,
        0x00,0x08,0x88,0xC9,0x2E,0x98,0x48,0x00,0x08,0x08,0xF8,0x08,0x08,0xFC,0x08,0x00,
        0x10,0x90,0x70,0x1F,0x12,0xF0,0x00,0x20,0x70,0x28,0x27,0x22,0x28,0x70,0x20,0x00,
        0x80,0x40,0x20,0xF8,0x07,0x02,0x00,0x00,0xFF,0xC0,0x60,0x30,0x1C,0x08,0x00,0x00,
        0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,0x00,
        0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
        0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
        0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00,
        0x20,0x22,0x23,0x12,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x41,0x70,0x00,
        0x02,0x01,0x00,0x7F,0x01,0x02,0x44,0x20,0x10,0x0C,0x03,0x20,0x40,0x3F,0x00,0x00,
        0x40,0x21,0x12,0x0C,0x06,0x09,0x30,0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00,
        0x00,0x00,0x00,0x7F,0x00,0x04,0x02,0x01,0x3F,0x40,0x40,0x40,0x40,0x78,0x00,0x00,
        0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
        // 2008.08.16
        uchar code NYR[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
        0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
        0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
        0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
        0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
        0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
        0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};
        // " 王 "
        uchar code WANG[]={ 0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x86,0x04,0x00,0x00,
        0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x41,0x61,0x40,0x00};
        // " 雪 "
        uchar code XUE[]={ 0x00,0x18,0x0A,0xAA,0xAA,0xAA,0x0A,0xFE,0x0A,0xAA,0xAA,0xAA,0x0A,0x18,0x08,0x00,
        0x00,0x00,0x42,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0x4A,0xFE,0x00,0x00,0x00};
        // " 凡 "
        uchar code FAN[]={0x00,0x00,0x00,0x00,0xFE,0x02,0x22,0x42,0x82,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,
        0x00,0x40,0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00 };



        /**********************************************************************************************/



        關鍵詞: LCD12864程

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 苗栗市| 大洼县| 金寨县| 沙雅县| 康定县| 高安市| 西城区| 砀山县| 云霄县| 洪江市| 仲巴县| 保康县| 竹北市| 玉龙| 木兰县| 嘉义市| 德保县| 南城县| 商都县| 张家川| 巨鹿县| 遵义市| 江都市| 三河市| 富源县| 宁都县| 隆德县| 崇阳县| 印江| 新建县| 綦江县| 玛纳斯县| 建宁县| 旬阳县| 正镶白旗| 马关县| 江城| 沙湾县| 巍山| 仁怀市| 阳春市|