文章詳情

          清達光電1602SPI串口液晶屏樣例程序

          日期:2025-05-10 03:21
          瀏覽次數:1692
          摘要:清達光電1602SPI串口液晶屏供電電壓有5V和3.3V,顯示屏有黃綠模式和藍模式。

              清達光電1602SPI串口液晶屏為16*2字符型,接口為SPI接口,供電電壓有5V/3.3V,顯示模式有藍模式/黃綠模式,下面為這款1602SPI串口液晶屏樣例程序(基于普通的51單片機,IO口模擬時序的):


          #include<reg51.h>

          #include<string.h>

          #include<stdio.h>

          #include <intrins.h>

          #define uchar unsigned char

          #define uint unsigned int

          sbit SID=P3^4;

          sbit SCK=P3^3;

          sbit CS=P3^1;

          sbit RS=P3^0;

          #define clear 0x01 /* Clear Display */

          #define home 0x02 /* Return Home */

          #define enmode 0x06 /* Enter Mode Set */

          #define off 0x08 /* Display on/off Set */

          #define on 0x0e /* Display on/off Set */

          #define shift 0x14 /*Cursor or Display Shift*/

          #define reset 0x30 /* reset */

          #define function 0x38 /* Function Set */

          #define cgram 0x40 /* Set CGRAM

          Address */

          #define ddram1 0x80 /* Set DDRAM Line1

          Address */

          #define ddram2 0xC0 /* Set DDRAM Line2

          Address */

          #define time 1000 /* 1000 延時

          1.03895500 s */

          uchar code string1[]={"Jia Xian Ke Ji"};

          uchar code string2[]={"www.tsingtek.com"};

          uchar code string3[]={"0123456789"};

          uchar code

          string4[]={"abcdefghijklmnopqrstuvwxyz"};

          uchar code string5[]={"Thank You !"};

          uchar code

          string6[]={'2','0','1','2',0x06,'1','0',0x07,'\0'};

          /********* 自定義字符庫 *********/

          uchar code CGF[8][8]={

          0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,

          /* 隔行 00H */

          0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,

          /* 01H */

          0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,

          /* 隔列 02H */

          0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,

          /* 03H */

          0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15,0x0a,

          /* 隔點 04H */

          0x0a,0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15,

          /* 05H */

          0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,

          /* "年" 06H */

          0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,

          /* "月" 07H */

          };

          /********* 時間延時函數 *********/

          void delay(uint t) /* 1.02500 ms */

          { uint i,j;

          for(i=t;i>0;i--)

          for(j=125;j>0;j--);

          }

          void write_com(uchar Command_byte)

          {

          uint i;

          RS=0;//write command

          CS=0;

          SCK=1;

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

          {

          if((Command_byte&0x80)==0x80)

          SDI=1;

          else

          SDI=0;

          SCK=0;

          if(i==0)

          {

          delay(1);

          }

          Command_byte<<=1;

          SCK=1;

          }

          CS=1;

          delay(1);

          }

          /////////////////////////////////////////

          void write_data(uchar Data8_byte)

          {

          uint i;

          RS=1;//write data

          CS=0;

          SCK=1;

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

          {

          if((Data8_byte&0x80)==0x80)

          SDI=1;

          else

          SDI=0;

          SCK=0;

          if(i==0)

          {

          delay(1);

          }

          Data8_byte<<=

          SCK=1;

          }

          CS=1;

          RS=0;

          delay(1);

          }

          /********* 建立自定義字符函數

          *********/

          void CGFUNTION(uchar array[8][8])

          { uchar i,j;

          write_com(cgram); /* 寫“ 指令”

          CGRAM 地址 */

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

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

          write_data(array[i][j]); /* 寫“數據”

          */

          }

          /********* 字符全屏顯示函數 *********/

          void char_fill_disp(uchar dat)

          { uchar i,j,temp=0;

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

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

          { if(i==1)

          temp=j|ddram2;

          /* DDRAM **行地址 */

          else

          temp=j|ddram1;

          /* DDRAM **行地址 */

          write_com(temp);

          /* 寫“指令” */

          write_data(dat); /* 寫“數據”*/

          }

          delay(time); /* 延時 */

          }

          /********* 字符串顯示函數 *********/

          /*********** 可選行顯示 **********/

          void string_disp(uchar x, uchar y, uchar *str)

          { uchar i,j,temp=0;

          for(i=x;i<2;i++)

          for(j=y;j<16;j++)

          if(*str!='\0') /*字符串結束標志 */

          { if(i)

          temp=j|ddram2; /* DDRAM

          **行地址 */

          else

          temp=j|ddram1; /* DDRAM

          **行地址 */

          write_com(temp); /* 寫“指

          令” */

          write_data(*str++); /* 寫“數據”

          */

          }

          else

          { if(i)

          temp=j|ddram2;

          /* DDRAM **行地址 */

          else

          temp=j|ddram1;

          /* DDRAM **行地址 */

          write_com(temp);

          /* 寫“指令” */

          write_data(0xfe);

          /* 寫“數據” */

          }

          delay(time); /* 延時 */

          }

          /********* 設置參數函數 *********/

          void set(void)

          { delay(15); /* 延時 15.20800 ms */

          write_com(0x38); //Function set

          N=1(2line),F=0(5*8 dot)

          delay(5);

          write_com(0x0C); //display on

          delay(5);

          write_com(0x01); //clear display

          delay(10);

          write_com(0x06); //entry set

          delay(5);

          }

          /********* 主函數 *********/

          void main() /* 子程序里

          有延時1s */

          { set(); /* 設置參數 */

          write_com(clear); /* 清屏 */

          { char_fill_disp(0xff); /* 全屏 */

          write_com(clear); /* 清屏 */

          string_disp(0,1,string1);

          /* **行顯示字符串string1 */

          string_disp(1,0,string2);

          /* **行顯示字符串string2 */

          write_com(clear); /* 清屏 */

          char_fill_disp(0x31); /* 顯示“1”*/

          CGFUNTION(CGF);

          /* 建立自定義字符 */

          write_com(clear); /* 清屏 */

          char_fill_disp(0x00);

          /* 顯示“隔行” */

          char_fill_disp(0x02);

          /* 顯示“隔列” */

          char_fill_disp(0x04);

          /* 顯示“隔點” */

          char_fill_disp(0xff); /* 全屏 */

          write_com(clear); /* 清屏 */

          string_disp(0,3,string3);

          /* **行顯示字符串string3 */

          string_disp(1,0,string4);

          /* **行顯示字符串string4 */

          write_com(clear); /* 清屏 */

          string_disp(0,2,string5);

          /* **行顯示字符串string5:*/

          string_disp(1,8,string6); /* **行顯

          示字符串string6: 2012 年10 月*/

          delay(time);

          }

          }


          主站蜘蛛池模板: 91精品国产自产在线观看高清| 国产猛烈高潮尖叫视频免费| 亚洲国产精品成人久久久| 老师别揉我胸啊嗯上课呢视频| 国产精品亚洲色图| 一个人看的片免费高清大全| 日韩欧美福利视频| 亚洲欧美偷自乱图片| 精品亚洲一区二区三区在线观看| 国产成人亚洲综合无码| 99在线视频网站| 成人品视频观看在线| 久久精品无码aV| 欧美日韩乱妇高清免费| 免费看片在线观看| 色噜噜狠狠色综合日日| 国产欧美日韩一区二区加勒比| 99热这里只/这里有精品| 成人在线手机视频| 久久天天躁狠狠躁夜夜2020一 | 国产精品亚韩精品无码a在线| bt天堂网www天堂在线观看| 成年1314在线观看| 久久电影网午夜鲁丝片免费| 欧美一级黄色片在线观看| 亚洲精品自在线拍| 精品久久久久久无码专区| 国产一区三区二区中文在线| 国产av无码专区亚洲a∨毛片| 一级大片免费看| www免费插插视频| 免费能直接在线观看黄的视频 | 性欧美大战久久久久久久久| 国产精品美女流白浆视频| 国产中年熟女高潮大集合| 亚洲狠狠婷婷综合久久久久| 久久久久亚洲av片无码| 91制片厂天美传媒鲸鱼传媒| 美女**毛片一级视频| 最新欧洲大片免费在线| 在线观看免费a∨网站|