Опубликовано 2010-03-07 09:55:14 автором Ruslan Підключення Lcd до мікроконтролера AVR Навчившись блимати світлодіод, вам, напевно, захочеться підключити до мікроконтролера щось більш інформативне, наприклад Lcd дисплей. Як це зробити? Та все, як завжди, дуже просто. Символьний LCD ми подружим сьогодні з нашим старим знайомим ATmega8. Для цього нам знадобиться сам Lcd, я використовував знакосинтезуючий LCD 16x2, і мікроконтролер atmega8.
Для початку напишемо програму, яка буде що-небудь виводити на дисплей. Для цього відкриємо 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) Roman говорит: Цей код буде діяти в AVR Studio 4??? Admin говорит: Цей код написаний під CODEVision AVR, під AVR Studio 4 потрібно править.
Roman говорит: Непідкажете де взяти бібліотеки для програмування Lcd? Admin говорит: Бібліотека для lcd йде разом з CodeVision AVR. Називається alcd.h
Добавить комментарийДля отправки комментария вы должны авторизоваться.
|