1602a 四位接线法

1602a 四位接线法_第1张图片
四位接线法代码



/**

* VSS GND

* VDD 5V

* V0  GND

* RS  12

* RW  11

* E  10

* D4  9

* D5  8

* D6  7

* D7  6

* A  V5

* K  GND

* from http://surenpi.com

* created 2015/3/23

*/int LCD1602_RS=12;int LCD1602_RW=11;int LCD1602_EN=10;int DB[] = { 6, 7, 8, 9};char str1[]="Welcome to";char str2[]="surenpi";char str3[]="find me";char str4[]="surenpi.com";

void LCD_Command_Write(int command){

  int i,temp;

  digitalWrite( LCD1602_RS,LOW);

  digitalWrite( LCD1602_RW,LOW);

  digitalWrite( LCD1602_EN,LOW);

  temp=command & 0xf0;

  for (i=DB[0]; i <= 9; i++)

  {

    digitalWrite(i,temp & 0x80);

    temp <<= 1;

  }


  digitalWrite( LCD1602_EN,HIGH);

  delayMicroseconds(1);

  digitalWrite( LCD1602_EN,LOW);


  temp=(command & 0x0f)<<4;

  for (i=DB[0]; i <= 9; i++)

  {

    digitalWrite(i,temp & 0x80);

    temp <<= 1;

  }


  digitalWrite( LCD1602_EN,HIGH);

  delayMicroseconds(1);

  digitalWrite( LCD1602_EN,LOW);

}void cleanScreen(int delayTime = 50){

  LCD_Command_Write(0x01);


  delay(delayTime);

}

void LCD_Data_Write(int dat){

  int i=0,temp;

  digitalWrite( LCD1602_RS,HIGH);

  digitalWrite( LCD1602_RW,LOW);

  digitalWrite( LCD1602_EN,LOW);


  temp=dat & 0xf0;

  for (i=DB[0]; i <= 9; i++)

  {

    digitalWrite(i,temp & 0x80);

    temp <<= 1;

  }


  digitalWrite( LCD1602_EN,HIGH);

  delayMicroseconds(1);

  digitalWrite( LCD1602_EN,LOW);


  temp=(dat & 0x0f)<<4;

  for (i=DB[0]; i <= 9; i++)

  {

    digitalWrite(i,temp & 0x80);

    temp <<= 1;

  }


  digitalWrite( LCD1602_EN,HIGH);

  delayMicroseconds(1);

  digitalWrite( LCD1602_EN,LOW);

}

void LCD_SET_XY( int x, int y ){

  int address;

  if (y ==0)    address = 0x80 + x;

  else          address = 0xC0 + x;

  LCD_Command_Write(address);

}

void LCD_Write_Char( int x,int y,int dat){

  LCD_SET_XY( x, y );

  LCD_Data_Write(dat);

}

void LCD_Write_String(int x,int y,char *s, int delayTime = 50){

  LCD_SET_XY(x, y);    //设置地址 

  int i = 0;

  while(*s && ++i <= 16)            //写字符串  {

    LCD_Data_Write(*s); 

    s++;

  }


  delay(delayTime);


  if(*s)

  {

    cleanScreen();

    LCD_Write_String(x, y, s, delayTime);

  }

}

void setup (void){

  int i = 0;

  for(i = 6; i <= 12; i++)

  {

    pinMode(i,OUTPUT);

  }


  delay(100);

  LCD_Command_Write(0x28);//4线 2行 5x7  delay(50);

  LCD_Command_Write(0x06);

  delay(50);

  LCD_Command_Write(0x0c);

  delay(50);

  LCD_Command_Write(0x80);

  delay(50);

  LCD_Command_Write(0x01);

  delay(50);

}

void loop (void){

  cleanScreen();

  LCD_Write_String(3,0,str1);//第1行,第4个地址起  LCD_Write_String(0,1,str2, 3000);//第2行,第2个地址起 

  cleanScreen();

  LCD_Write_String(0,0,str3);

  LCD_Write_String(0,1,str4, 3000);

}



米思奇


1602a 四位接线法_第2张图片
1602a 四位接线法_第3张图片
1602a 四位接线法_第4张图片
1602a 四位接线法_第5张图片

你可能感兴趣的:(1602a 四位接线法)