文章詳情

          1602字符液晶6800時序8位并口樣例程序

          日期:2025-05-09 19:45
          瀏覽次數:2112
          摘要:1602字符液晶一般為6800接口,可以使用8位或者4位數據線,清達光電提供的1602字符液晶有藍模式黃綠模式,接口有并口或者SPI串口,本文以6800 8位并口為例的程序

          1602字符液晶6800時序8位并口樣例程序由清達光電技術部提供,清達光電專業設計生產液晶模塊OLED模塊,TFT模塊等,產品齊全,供貨快捷。

          #include<reg51.h>

          #include<intrins.h>

          #include<stdio.h>

          #define uchar unsigned char

          #define uint unsigned int

          sbit RS = P3^3;

          sbit RW = P3^1;

          sbit E = P3^0;

          unsigned char X,Y;

          /*-----------建立自定義演示用字符庫-----------*/

          code  unsigned int CGTAB[9][8]={

          /*

          橫向取模 ,先上后下

          */

          0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,   /* "↓"代碼=0 */

          0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,   /* "月"代碼=1 */

          0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00,   /* "日"代碼=2 */

          0x11,0x0a,0x04,0x1f,0x04,0x1f,0x04,0x00,   /* "¥"代碼=3 */

          0x0e,0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00,   /* "元"代碼=4 */

          0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00,   /* "℃"代碼=5 */

          0x04,0x0a,0x15,0x04,0x04,0x04,0x04,0x00,   /* "↑"代碼=6 */

          0x17,0x15,0x15,0x15,0x15,0x15,0x17,0x00,   /* "10"代碼=7 */

          0x04,0x04,0x04,0x04,0x15,0x0a,0x04,0x00,   /* "↓"代碼=8 */

          };

          /*-----------自定義字符顯示用字庫-----------*/

          void delay(unsigned int t)

          {  unsigned int i,j;

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

               for(j=0;j<10;j++)

                  ;

          }

          void busy(void)

          {  P1=0xff;

            RS=0;

            RW=1;

            E=1;

            while((P1&0x80)==0x80);

            E=0;

          }

          void writecom(unsigned char com)

          {  RS=0;

            RW=0;

            P1=com;

            E=1;

            _nop_();

            E=0;

          }

          void lcdwc(unsigned char com)

          {

            busy();

            writecom(com);

          }

          void lcdwd(unsigned char dat)

          {

            busy();

            RS=1;

            RW=0;

            P1=dat;

            E=1;

            _nop_();

            E=0;

          }

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

          定義地址ddram顯示范圍

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

          void lcdpos(void)

          {

            X&=0x0f;     ///16列

            Y&=0x03;  ///2行

            if(Y==0x00)

               lcdwc(X|0x80);//**行ddram

            else if(Y==0x01)

               lcdwc((X+0x40)|0x80); //**行ddram

          }

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

           初始化函數

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

          void lcdreset()

          {  delay(150); writecom(0x38);

            delay(50); writecom(0x38);

            delay(50); writecom(0x38);

            lcdwc(0x38); //8位數據 顯示2行 5*7字符

            lcdwc(0x08); //關顯示 光標關 閃爍關

            lcdwc(0x01); //

            lcdwc(0x06); //光標右移 畫面不動

            lcdwc(0x0c); //開顯示 光標關 閃爍關

          }

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

          全部寫入

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

          void lcdfill(unsigned char n)

          {

            for(Y=0;Y<2;Y++)

               for(X=0;X<16;X++)

               {  lcdpos();       ///定義起始地址

                  lcdwd(n);  }

          }

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

          全部寫入隔點

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

          void lcdgraphic(unsigned char m)

          {

            for(Y=0;Y<2;Y++)

               for(X=0;X<16;X++)

               {  lcdpos();

                  lcdwd(m);

                  lcdwd(~m);  }

          }

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

          字符串寫入

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

          void lcdwda(unsigned char x,unsigned char y,unsigned char *s)

          {

            Y=y;

            for(X=x;X<16;X++)

            {

               lcdpos();

               lcdwd(*s);

               s++;

               delay(400);

            }

          }

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

          /*     建立自定義函數     */

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

          CGRAM()

           {

           uchar dat;

            unsigned char i,j;

            lcdwc(0x40);    /* 設置CGRAM地址 */

                  /*  調寫指令函數  */

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

              {

              for(j=0;j<8;j++)

                 {

                  dat=CGTAB[i][j];  /* 取字模 */

                  lcdwd(dat);   /*  調寫數據函數  */

                 }

              }

           }

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

          主函數

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

          main()

          {

          unsigned char i,j;

            E=0;

            lcdreset();

            while(1)

            {

             // lcdreset();

               lcdfill(0xff);

               delay(2000);

           lcdfill(0x55);

               delay(2000);

           lcdfill(0xaa);

               delay(2000);

           lcdgraphic(0xff);

           delay(2000);

            lcdgraphic(0x00);

           delay(2000);

            lcdgraphic(0x55);

           delay(2000);

            lcdgraphic(0xaa);

           delay(2000);

               for(i=0x30;i<=0x3a;i++)

               {  lcdfill(i);

                  delay(3500);//顯示0-9數字

               }

               lcdfill(' ');

               delay(2000);

           lcdwda(0,0,"ABCDEFGHIJKLMNOPQRSTUVWXYZ");

               lcdwda(0,1,"ZYXWVUTSRQPONMLKJIHGFEDCBA");

               delay(2000);

               lcdfill(' ');

            /*------------CGRAM顯示段--------------*/

              CGRAM(); /* 調自定義字符庫函數 */

              lcdwc(0x80);  /* 設置DDRAM地址**行顯示 */

             // lcdwc(0xc0);  /* 設置DDRAM地址**行顯示 */

                   /* 調寫指令函數  */

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

              {

                 /* 取字符代碼 */

                lcdwd(i); /* 調寫數據函數  */

              }

              delay(4000);  lcdfill(' ');

          }

          }

          主站蜘蛛池模板: 和武警第一次做男男gay| 大胸姐妹在线观看| 亚洲乱码国产乱码精品精| 精品欧美一区二区三区免费观看| 国产精品日本一区二区在线播放 | 中文字幕.com| 李小璐三级在线视频| 亚洲酒色1314狠狠做| 色噜噜视频影院| 国产欧美精品区一区二区三区| av片在线观看永久免费| 把极品白丝班长啪到腿软| 亚洲av永久综合在线观看尤物| 狠狠色综合网站久久久久久久| 国产一级做a爰片久久毛片男| 18精品久久久无码午夜福利| 婷婷综合五月天| 久久久久无码国产精品不卡| 欧美乱妇在线观看| 人妖视频在线观看专区| 翁与小莹浴室欢爱51章| 国产成人久久777777| 5g影院天天爽天天| 女人张开腿让男人做爽爽| 丰满女人又爽又紧又丰满 | 国产成人8X视频网站入口| 91精品国产综合久久久久| 强行扒开双腿猛烈进入| 久久久精品日本一区二区三区| 欧美亚洲第一页| 亚洲综合伊人久久大杳蕉| 精品国产呦系列在线看| 国产免费观看视频| youjizz亚洲| 国内精品卡1卡2卡区别| 一个人看的视频在线| 无码日韩精品一区二区免费 | 青春草在线视频观看| 国产精品h在线观看| 91香蕉国产在线观看人员| 娇小bbb搡bbb搡bbb|