|
| |||||||||||||
|
Опубликовано 2010-03-07 09:55:14 автором Ruslan Подключение Lcd к микроконтроллеру AVR. Урок AVR 4Научившись мигать светодиодом, вам, наверное, захочется подключить к микроконтроллеру что-то более информативное, например Lcd дисплей. Как это сделать? Да всё, как всегда, очень просто. Символьный ЖКИ мы подружим сегодня с нашим старым знакомым ATmega8. Для этого нам потребуется сам Lcd, я использовал знакосинтезирующий ЖКИ 16x2, и микроконтроллер atmega8.
Для начала напишем программу, которая будет что-либо выводить на дисплей. Для этого откроем Code Vision AVR, создадим новый проект. В закладке LCD выбираем порт, к которому будет подключен дисплей.
Я подключил к порту D, выбираем File -> Creative Save and Exit. Указываем, куда будем сохранять файлы и смотрим на код программы. Далее для вывода строки нам понадобится добавить несколько строк кода
#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)
{
}
}
}
Давайте теперь разберемся с выводами дисплея.
sudo avrdude -c usbasp -p m8 -U flash:w:'/media/ruslan/Media/Greenchip.com.ua/Lessons/lcd/Exe/lcd.hex':i и получаем Ну собственно и все, если что-то не получается, пишите в комментариях. Комментарии - (4)
Добавить комментарийДля отправки комментария вы должны авторизоваться. |
|||||||||||||