LCD液晶显示屏的应用

Posted on 2022-02-04 12:35  zhoumubaiyu  阅读(337)  评论(0编辑  收藏  举报

LCD液晶显示屏的应用

LCD显示器需要由驱动芯片控制,控制芯片已经集成还在显示器中了。LCD由灰色的像素组成。一个典型的16x2LCD可在两行中显示16个字符,每个字符由5个像素宽、8个像素高组成。如果在显示器上把对比度设的很高,32组5x7像素将变得可见

  • 1602液晶显示文字试验

    • 两组电源。一组是模块的电源,一组是背光板的电源,一般均适用5v供电,本次试验背光使用3.3v供电也可以工作

    • VL是调节对比率的引脚,串联不大于5k欧的电位器进行调节。本次实验使用1k欧的电阻来设定对比度。其连接分高电位与低电位接法,本次使用低电位接法,串联1k欧电阻后接GND

    • RS是很多液晶上都有的引脚,是命令/数据选择引脚。该脚电平为高时表示将进行数据操作;为低时表示进行命令操作

    • RW也是很多液晶上都有的引脚,是读写选择端。该脚电平为高时表示要对液晶进行读操作;为低时表示要进行写操作

    • E同样也是很多液晶模块上都有的引脚,通常在总线上。信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化

    • D0~D7。8位双向并行总线,用来传送命令和数据

    • BLA是背光源正极,BLK是背光源负极

    • int DI=12;
      int RW=11;
      int DB[]={3,4,5,6,7,8,9,10}; //使用数组来定义总线需要的引脚
      int Enable=2;
      
      void LcdCommandWrite(int value)  {
        //定义所有引脚
        int i=0;
        for (i=DB[0];1<=DI;I++)  //总线赋值
        {
          digitalWrite(i,value & 01);  //因为1602流经信号识别是D7~D0,这里用来反转信号
          value>>=1;
        }
        digitalWrite(Enable,LOW);
        delayMicroseconds(1);
        digitalWrite(Enable,HIGH);
        delayMicroseconds(1);  //延时1ms
        digitalWrite(ENable,LOW);
        delayMicroseconds(1);  //延时1ms
      }
        Void LcdDataWrite(int value)  {
          //定义所有引脚
          int i=0;
          digitalWrite(DI,HIGH);
          digitalWrite(RW,HIGH);
          for(i=DB[0];I<=DB[7];i++){
            digitalWrite(i,value & 01);
            Value>>=1;
          }
          digitalWrite(Enable,LOW);
          delayMicroseconds(1);
          digitalWrite(Enable,HIGH);
          delayMicroseconds(1);
          digitalWrite(Enable,LOW);
          delayMicroseconds(1); //延时1ms
        }
      void setup (void) {
        int i=0;
        for(i=Enable;i<=DI;i++){
          pinMode(i,OUTPUT);
        }
        delay(100);
        //短暂的停顿后初始化LCD
        //用于LCD控制需要
        LcdCommandWrite(0x38);//设置为8-bit接口,2行显示,5x7文字大小
        delay(64);
        LcdCommandWrite(0x38);
        dealy(50);
        LcdCommandWrite(0x38);
        delay(50);
        LcdCommandWrite(0x06); //输入式设定
                               //自动增量,没有显示不移位
        delay(20);
        LcdCommandWrite(0x0E); //显示设置
                               //开启显示屏,光标显示,无闪烁
        delay(20);
        LcdCommandWrite(0x01); //屏幕清空,光标位置归零
        delay(20);
        LcdCommandWrite(0x80); //显示设置
                                //开启显示屏,光标显示,无闪烁
        delay(20);
      }
      void loop(void); {
        LedCommandWrite(0x01);
        delay(10);
        LedCommandWrite(0x80+3);
        dealy(10);
        //写入欢迎信息
        LedCommandWrite(W);
        LedCommandWrite(e);
        LedCommandWrite(l);
        LedCommandWrite(c);
        LedCommandWrite(o);
        LedCommandWrite(m);
        LedCommandWrite(e);
        LedCommandWrite();
        LedCommandWrite(t);
        LedCommandWrite(o);
        delay(10);
        LedCommandWrite(0xc0+1);//屏幕清空,光标位置归零
        delay(10);
        LedDataWrite(g);
        LedDataWrite(e);
        LedDataWrite(e);
        LedDataWrite(k);
        LedDataWrite(-);
        LedDataWrite(w);
        LedDataWrite(o);
        LedDataWrite(r);
        LedDataWrite(k);
        LedDataWrite(s);
        LedDataWrite(h);
        LedDataWrite(0);
        LedDataWrite(p);
        delay(10);
        LcdCommandWrite(0x01);  //屏幕清空,光标位置归零
        delay(10);
        LedDataWrite(I);
        LedDataWrite();
        LedDataWrite(s);
        LedDataWrite(m);
        LedDataWrite();
        LedDataWrite(h);
        LedDataWrite(o);
        LedDataWrite(n);
        LedDataWrite(g);
        LedDataWrite(y);
        LedDataWrite(i);
        delay(3000);
        LcdCommandWrite(0x02);  //设置模式为新文字替换老文字,无新文字的地方显示不变
        delay(10);
        LcdCommandWrite(0x80+5);  //定义光标的位置为第一行第六个位置
        delay(10);
        LedDataWrite(t);
        LedDataWrite(h);
        LedDataWrite(e);
        LedDataWrite();
        LedDataWrite(a);
        LedDataWrite(d);
        LedDataWrite(m);
        LedDataWrite(i);
        LedDataWrite(n);
        delay(5000);
        }