文章詳情

          清達(dá)光電1602SPI串口液晶屏樣例程序

          日期:2025-08-07 06:29
          瀏覽次數(shù):1752
          摘要:清達(dá)光電1602SPI串口液晶屏供電電壓有5V和3.3V,顯示屏有黃綠模式和藍(lán)模式。

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


          #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 延時(shí)

          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'};

          /********* 自定義字符庫(kù) *********/

          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,

          /* 隔點(diǎn) 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 */

          };

          /********* 時(shí)間延時(shí)函數(shù) *********/

          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);

          }

          /********* 建立自定義字符函數(shù)

          *********/

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

          { uchar i,j;

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

          CGRAM 地址 */

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

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

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

          */

          }

          /********* 字符全屏顯示函數(shù) *********/

          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);

          /* 寫(xiě)“指令” */

          write_data(dat); /* 寫(xiě)“數(shù)據(jù)”*/

          }

          delay(time); /* 延時(shí) */

          }

          /********* 字符串顯示函數(shù) *********/

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

          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') /*字符串結(jié)束標(biāo)志 */

          { if(i)

          temp=j|ddram2; /* DDRAM

          **行地址 */

          else

          temp=j|ddram1; /* DDRAM

          **行地址 */

          write_com(temp); /* 寫(xiě)“指

          令” */

          write_data(*str++); /* 寫(xiě)“數(shù)據(jù)”

          */

          }

          else

          { if(i)

          temp=j|ddram2;

          /* DDRAM **行地址 */

          else

          temp=j|ddram1;

          /* DDRAM **行地址 */

          write_com(temp);

          /* 寫(xiě)“指令” */

          write_data(0xfe);

          /* 寫(xiě)“數(shù)據(jù)” */

          }

          delay(time); /* 延時(shí) */

          }

          /********* 設(shè)置參數(shù)函數(shù) *********/

          void set(void)

          { delay(15); /* 延時(shí) 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);

          }

          /********* 主函數(shù) *********/

          void main() /* 子程序里

          有延時(shí)1s */

          { set(); /* 設(shè)置參數(shù) */

          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);

          /* 顯示“隔點(diǎn)” */

          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);

          }

          }


          主站蜘蛛池模板: 亚洲变态另类一区二区三区| 国产aaaaaa| 丝袜美腿美女被狂躁动态图片| 欧美国产精品久久| 动漫乱理伦片在线观看 | 日韩成人精品日本亚洲| 亚洲精品无码久久久久YW| 老少交欧美另类| 国产欧美日韩一区二区加勒比| aaa毛片免费观看| 日批视频网址免费观看| 亚洲乱色伦图片区小说| 狠狠干2022| 又粗又硬又黄又爽的免费视频| 黄网址在线永久免费观看| 国产综合无码一区二区色蜜蜜| 一个人看的www在线免费视频| 日本免费xxx| 亚洲ⅴ国产v天堂a无码二区| 男女猛烈xx00免费视频试看| 国产一区二区不卡老阿姨| 国产精品久久女同磨豆腐| 国产香蕉一区二区精品视频| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 天天成人综合网| 中文字幕一区二区三区精华液| 日韩精品一区二区三区在线观看| 亚洲欧美国产精品久久久| 粗大挺进尤物人妻中文字幕| 国产一区二区三区美女| 狠狠色综合色区| 国产精品成人久久久久久久| aⅴ免费在线观看| 巨胸动漫美女被爆羞羞视频| 久久久99精品免费观看| 日韩精品中文字幕无码一区| 亚洲天堂2016| 波多野结衣一区二区三区在线观看| 免费黄网站在线看| 美女把尿口扒开让男人桶| 国产乱子伦精品无码码专区|