Перейти к содержанию

Как просто подключить LCD 16x2 к atmega8


Рекомендуемые сообщения

Добрый день!

Помогите, пожалуйста подключить лсд 16х2 к атмега8. Мне нужно выводит инфу при нажатии кнопки.

Перерыл много но сообразить как это сделать не могу.

Я написал программку которая при нажатии на кнопочку переключает входы усилителя.

Спасибо.

С ув. Владимир.

 

код:

 

#define F_CPU 8000000

#include <avr/io.h>

#include <util/delay.h>

void preset (){

DDRB = 0xff;

PORTB = 0x00;

DDRC = 0b00000111;

PORTC = 0b00000001;

DDRD = 0xff;

PORTD = 0xff;

}

int main(void)

{

preset();

while(1)

{

if (PIND&(1<<PD0))

{ PORTB = 0x00;}

else

{ PORTB = 0xff;

if (PORTC==0b00000100) PORTC = 0b00000001;

else PORTC = (PORTC<<1);

_delay_ms(300);

}

if (PIND&(1<<PD1))

{ PORTB = 0x00;}

else

{

}

}

}

post-12843-0-26136400-1445434952_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Владимир, для многих алфавитно-цифровых дисплеев существуют и общедоступны готовые библиотеки для работы. Для вашего - наверняка. Все, что нужно - найти соотв. библиотеку, скачать её, убедиться, что она совместима с вашим компилятором, в противном случае скачать соответствующий компилятор, и дальше работать с помощью этой библиотеки. Кликайте и вам откликнется :cool:

Изменено пользователем yamazaki
Ссылка на комментарий
Поделиться на другие сайты

А чтобы искать библиотеку, нужно узнать на каком чипе постоен ваш LCD 16x2.

Популярных их 2-3 типа.

Ссылка на комментарий
Поделиться на другие сайты

Пример для HD44780

 

#define F_CPU 8000000
#include <avr/io.h>
#include <math.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include "lcd_lib.h"
#include "lcd_lib.c"


int main(void)
{
DDRC = 0b00000111;
PORTC = 0b00000001;

lcd_init();// инициализация LCD
lcd_clr();// очистить LCD
_delay_ms(10);

lcd_gotoxy(0, 0);
lcd_string("INPUT  1",8);

while (1)
	{
	if (PIND & 1)
		{
		if (PORTC==0b00000100) PORTC = 0b00000001;
		else PORTC = (PORTC<<1);
		lcd_gotoxy(0, 0);
		switch (PORTC)
			{
			case 0b00000001: lcd_string("INPUT 01",8); break;
			case 0b00000010: lcd_string("INPUT 02",8); break;
			case 0b00000100: lcd_string("INPUT 03",8); break;
			default: break;
			}
		_delay_ms(300);
		}
	}


}

В архиве primer_HD44780 проект примера в протеусе и AVR студии, в архиве 361 библиотека.

post-18213-0-92321600-1445596664_thumb.jpg

primer_HD44780.zip

361.zip

  • Я с тобой! 2
Ссылка на комментарий
Поделиться на другие сайты

Огромное Вам спасибо! Буду разбираться...

Изменено пользователем voevoda
Потер бессмысленное цитирование
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Нельзя просто так сложить char и int. :wink:

Например:

#include <string.h>
#include <stdlib.h>

//В main

char st[15];	
int x=350;

strcpy(st,"INPUT ");
itoa(x,st+6,10);   //6, потому что INPUT с пробелом 6 символов
lcd_gotoxy(0, 0);	
lcd_string(st,strlen(st));

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Поделитесь пожалуйста формулой - блок-схемой - кодом анализатора спектра для данного LCD(16x2) для AVR

пример:

_https://www.youtube.com/watch?v=afRfNe4eBbA_

_https://www.youtube.com/watch?v=eU0ErmzW59w_

Спасибо!

Ссылка на комментарий
Поделиться на другие сайты

вроде есть соображение в принципе работы, но всеравно сложно. может у кого то есть информация по принципу работы спектроанализатора

Ссылка на комментарий
Поделиться на другие сайты

... но всеравно сложно ...
Володя, привет! Это не просто сложно, а очень сложно. По-моему вы пытаетесь заезжать не с того конца.

 

Вам нужен спектр-анализатор - собирайте готовый проект, их немало в сети и прошивки прилагаются.

Вам нужно изучить программирование контроллеров - начинайте "от печки", с моргания тремя светиками.

 

Волшебной формулы, как вы пишите выше, не существует.

Вот такие мои мысли.

Ссылка на комментарий
Поделиться на другие сайты

А вы с этим экраном то разобрались для начала?

https://forum.datagor.ru/topic/10627-hitachi-lmg6511-nhbc-ishu-datashit/page__view__findpost__p__139701

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...