цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Arduino – управление ЖК-дисплеем с параллельным интерфейсом по трем проводам



Arduino – управление ЖК-дисплеем с параллельным интерфейсом по трем проводам

Автор: Mike(admin) от 19-12-2021, 23:55

Многие, кто подключал Arduino к ЖК-дисплею с параллельным интерфейсом, знают, что для этого требуется 6 линий ввода/вывода. Теперь давайте посмотрим, как мы можем уменьшить количество требуемых линий ввода/вывода с помощью сдвигового регистра 74HC595. Конечно, мы можем уменьшить количество требуемых линий ввода/вывода, используя интерфейсную схему ЖК-дисплея с интерфейсом I2C, но она стоит в десять раз дороже 74HC595.


Arduino – управление ЖК-дисплеем с параллельным интерфейсом по трем проводам

В этой схеме мы используем сдвиговый регистр 74HC595 для управления ЖК-дисплеем 16 × 2.


Arduino – управление ЖК-дисплеем с параллельным интерфейсом по трем проводам

Для установки контрастности ЖК-дисплея используется постоянный резистор 1 кОм, обеспечивающий оптимальное значение контрастности. Подключите линию R/W к земле, так как мы не собираемся считывать данные с ЖК-дисплея. Также в нашем случае дисплей подключен в 4-битном режиме.


Далее приведен код Arduino для управления ЖК-дисплеем по трем проводам с помощью сдвигового регистра 74HC595. Здесь мы не используем какую-либо библиотеку для взаимодействия с ЖК-дисплеем.



// Определяем линии 74HC595
const int Clock=7;
const int Data=6;
const int Latch=5;

void LCDinit(void);
void LCDSendByte(char d,char RS);
void LCDPrint(char Line,char string[16]);
//=============================================================
//                Настройка
//=============================================================
void setup() {                
  // Цифровые линии на вывод данных
  pinMode(Data, OUTPUT);
  pinMode(Clock, OUTPUT);
  pinMode(Latch, OUTPUT);  
  LCDinit();  // Инициализация ЖК-дисплея в 4-битном режиме
}
//=============================================================
//               Бесконечный цикл
//=============================================================
void loop() {
  LCDPrint(0,"Digitrode");
  LCDPrint(1,"Hello There");
  delay(500);
}

//=============================================================
//             Отправка данных или команд в ЖК-дисплей
//=============================================================
void LCDSendByte(char d,char RS)
{
  char dH,dL,temp;
  dH = d & 0xF0;        
  dL = d & 0x0F;
  dL = d << 4;         
  temp=0;
  temp=dH | RS | 0x02; 
  ShiftData(temp);
  temp=0;
  temp=dH | RS; 
  ShiftData(temp);
  temp=0;
  temp=dL | RS | 0x02; 
  ShiftData(temp);
  temp=0;
  temp=dL | RS;
  ShiftData(temp);  
}
//=============================================
void ShiftData(char temp)
{
  int i;
  for(i=0;i<8;i++)      
  {
    if((temp & 0x80)==0x80)    // Отправляем 1 бит в регистр сдвига
    {digitalWrite(Data,HIGH);}
    else
    {digitalWrite(Data,LOW);}
          
    digitalWrite(Clock,LOW);
    digitalWrite(Clock,HIGH);
    temp=temp<<1;
  }

  digitalWrite(Latch,LOW);
  delay(1);
  digitalWrite(Latch,HIGH);        
}
//=================================================================
//           Функция инициализации ЖК-дисплея
//=================================================================
void LCDinit()
{
  int count;
  char t[]={0x43,0x03,0x03,0x02,0x28,0x01,0x0C,0x06,0x02,0x02};		
      for (count = 0; count <= 9; count++)
      {
        LCDSendByte(t[count],0);
      }
}
//=================================================================
//        Функция установки строка ЖК-дисплея в желаемом месте
//=================================================================
void LCDPrint(char Line,char string[16])
{
 int len,count;
 if(Line==0) {
   LCDSendByte(0x80,0);
 }
 else {
   LCDSendByte(0xC0,0);
 }
        len = strlen(string);
  	for (count=0;count<len;count++)
 	{
  	 LCDSendByte(string[count],1);  //Data RS=1
	}
}



© digitrode.ru


Теги: Arduino, дисплеи




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий