Опубликовано 2010-03-07 09:55:14 автором Ruslan

Подключение  Lcd к микроконтроллеру AVR. Урок AVR 4


Научившись мигать светодиодом, вам, наверное, захочется подключить к микроконтроллеру что-то более информативное, например Lcd дисплей. Как это сделать? Да всё, как всегда, очень просто. Символьный ЖКИ мы подружим сегодня с нашим старым знакомым ATmega8. Для этого нам потребуется сам Lcd, я использовал знакосинтезирующий ЖКИ 16x2, и микроконтроллер atmega8.

схема подключения lcd к микроконтроллеру

Для начала напишем программу, которая будет что-либо выводить на дисплей. Для этого откроем Code Vision AVR, создадим новый проект. В закладке LCD выбираем порт, к которому будет подключен дисплей.

Code Vision AVR выбор порта для вывода на lcd

Я подключил к порту D, выбираем File -> Creative Save and Exit. Указываем, куда будем сохранять файлы и смотрим на код программы. Далее для вывода строки нам понадобится добавить несколько строк кода

  • char *buffer_Lcd="Hello"; //Создаем выводимую строку
  • lcd_gotoxy(0, 0); // Переводим курсор на первый символ первой строки
  • lcd_puts(buffer_Lcd); // Выводим строку
Полный код представлен ниже:
#include <mega8.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
char *buffer_Lcd="Hello"; //Создаем выводимую строку 
void main(void)
{
// Input/Output Ports initialization
// Port B initialization
PORTB=0x00;
DDRB=0x00;

// Port C initialization
PORTC=0x00;
DDRC=0x00;

// Port D initialization
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
lcd_gotoxy(0, 0); // Переводим курсор на первый символ первой строки 
lcd_puts(buffer_Lcd);   // Выводим строку 

while (1)
      {
      }
}
}

ФункцияОбъявлениe
lcd_init(количество_символов_в_строке)Инициализирует ЖКИ с введенным количеством символов в строке.
lcd_gotoxy(x, y)Переводит курсор в точку (x, y).
lcd_clear()Очищает ЖКИ
lcd_puts(char *stroka)Выводит массив символов
lcd_putchar(char simvol) Выводит один символ
Таблица 1. Функции библиотеки Lcd.h для работы с дисплеем

Давайте теперь разберемся с выводами дисплея.

  • Vdd - + 5 вольт. - Питание Lcd.
  • Vss - Земля ( - ). - Питание Lcd.
  • V0 или VEE - контрастность дисплея. - Если посадить этот вывод на минус без резистора,то мы получим максимальную контрастность. Необходимо этот контакт подключить к минусу через переменный резистор примерно на 10 кОм.
  • А и К анод и катод подсветки lcd
  • RS - командный флаг - если подать 0, то мы посылаем команду. 1 - посылаются данные.
  • R/W - Чтение/запись - 1 - читаем данные, 0 - записываем.
  • E - импульс - чтобы lcd начал обработку данных с остальных выводов
  • DB0 - DB7 - служат для передачи данных между lcd и микроконтроллером
Для повторения в железе нам понадобится программатор USBasp, отладочная zif панель и lcd дисплей. Подсоединяем дисплей как сказано выше, заливаем прошывку в мк я использовал avr dude команда для прошывки
sudo avrdude -c usbasp -p m8 -U flash:w:'/media/ruslan/Media/Greenchip.com.ua/Lessons/lcd/Exe/lcd.hex':i
и получаем
подключение LCD к AVR Проект в Proteus и программа к уроку находятся в архиве lcd.zip.
Ну собственно и все, если что-то не получается, пишите в комментариях.

Комментарии - (4)

Добавить комментарий

Для отправки комментария вы должны авторизоваться.