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

Підключення Lcd до мікроконтролера AVR


Навчившись блимати світлодіод, вам, напевно, захочеться підключити до мікроконтролера щось більш інформативне, наприклад Lcd дисплей. Як це зробити? Та все, як завжди, дуже просто. Символьний LCD ми подружим сьогодні з нашим старим знайомим ATmega8. Для цього нам знадобиться сам Lcd, я використовував знакосинтезуючий 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
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

char *buffer_Lcd="Hello"; //Створюємо виводний рядок void main(void) { // 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 // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture Falling on Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // LCD module initialization lcd_init(16); lcd_gotoxy(0, 0); // Переводимо курсор на перший символ першого рядка lcd_puts(buffer_Lcd); // Виводимо рядок while (1) { }; }

ФункціяОголошення
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 та мікроконтролером
Ну власне і все, якщо щось не виходить, пишіть в коментарях.

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

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

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