и снова LCD

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
gruffi
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

и снова LCD

Сообщение gruffi »

Добрый день, форумчане! Возникла проблема по подключению lcd к atmega в proteus. Пытаюсь изобрести свой велосипед...
Вот хедер lcd.h:

Код: Выделить всё

#ifndef LCD_H
	#define LCD_H
	//-----------------
	#include <avr/io.h>
	#include <avr/delay.h>
	#include <avr/stdio.h>
	//------------------------
	#define LCD_DDR_DATE  DDRB
	#define LCD_PORT_DATE PORTB
	#define LCD_PIN_DATE  PINB
	//---------------------------
	#define LCD_DDR_COMMAND  DDRG
	#define LCD_PORT_COMMAND PORTG
	#define LCD_PIN_COMMAND  PING
	//----------
	#define RS PC0
	#define RW PC1
	#define E  PC2
	//--------------------------------------
	void LCD_Command(unsigned char command); // запись команды в контроллер дисплея
	void LCD_Date(unsigned char date); // запись данных в контроллер дисплея
	void LCD_Init(); // инициализация
	void LCD_Print(char *string); // вывод строки на дисплей
	void LCD_Goto(unsigned char x, unsigned char y); // позиция курсора
	void LCD_Clear(); // очистка дисплея
#endif
А вот реализация:

Код: Выделить всё

#include "lcd.h"
//-------------------------------------
void LCD_Command(unsigned char command)
{
    LCD_PORT_COMMAND &= ~(1 << RS);
	LCD_PORT_DATE = command;
	LCD_PORT_COMMAND |= (1 << E);
	_delay_us(2);
	LCD_PORT_COMMAND &= ~(1 << E);
	LCD_PORT_DATE = (command << 4);
	LCD_PORT_COMMAND |= (1 << E);
	_delay_us(2);
	LCD_PORT_COMMAND &= ~(1 << E);
	_delay_us(40);
}
//-------------------------------
void LCD_Date(unsigned char date)
{
	LCD_PORT_COMMAND |= (1 << RS);
	LCD_PORT_DATE = date;
	LCD_PORT_COMMAND |= (1 << E); 
	_delay_us(2);
	LCD_PORT_COMMAND &= ~(1 << E);
	LCD_PORT_DATE = (date << 4);
	LCD_PORT_COMMAND |= (1 << E);
	_delay_us(2);
	LCD_PORT_COMMAND &= ~(1 << E);
	_delay_us(40);
	LCD_PORT_COMMAND &= ~(1 << RS);
}
//-------------
void LCD_Init()
{
	LCD_DDR_COMMAND = 0XFF;
	LCD_PORT_COMMAND = 0X00;

	LCD_DDR_DATE = 0XFF;
	LCD_PORT_DATE = 0X00;

	_delay_ms(40);
	LCD_Command(0x28); //4-ех разрядная шина, 2 строки
	
	LCD_Command(0xf);  //0b00001111 - дисплей, курсор, мерцание включены
	LCD_Command(0x1);  //0b00000001 - очистка дисплея
	_delay_ms(2);
	LCD_Command(0x6);  //0b00000110 - курсор движется вправо, сдвига нет
}
//--------------------------
void LCD_Print(char *string)
{
	
}
//----------------------------------------------
void LCD_Goto(unsigned char x, unsigned char y)
{

}
//--------------
void LCD_Clear()
{

}
Что только не пробовал, но не хочет работать. Пробовал чужие решения, некоторые работают, но хочу сам разобраться...подскажите, где может быть ошибка
Реклама
Аватара пользователя
gruffi
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

Re: и снова LCD

Сообщение gruffi »

Изменил инициализацию дисплея. Теперь мигает курсор, но при попытке вывести надпись он просто смещает курсор в право на количество символов в слове, но не отображает. Где может быть еще ошибка?
Реклама
Аватара пользователя
Dotoro22
Встал на лапы
Сообщения: 100
Зарегистрирован: Пт окт 28, 2011 19:45:23

Re: и снова LCD

Сообщение Dotoro22 »

От чего lcd та?
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: и снова LCD

Сообщение BerZerK-ku »

Ввыложите код/проект протеуса и тогда можно будет сказать что-то конкретное.
А так, например, вы посылаете в ЖКИ не поддерживаемые им коды символов.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
gruffi
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

Re: и снова LCD

Сообщение gruffi »

прикрепил проект...
Вложения
LCD.rar
(46.23 КБ) 158 скачиваний
Реклама
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: и снова LCD

Сообщение BerZerK-ku »

Как минимум одна ошибка есть, вы вместо символа передаете указатель. Замените двойные кавычки на апострофы '>' .
И еще: date это время, а данные data :)
Реклама
Аватара пользователя
gruffi
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт дек 29, 2011 16:25:56

Re: и снова LCD

Сообщение gruffi »

BerZerK-ku писал(а):Как минимум одна ошибка есть, вы вместо символа передаете указатель. Замените двойные кавычки на апострофы '>' .
И еще: date это время, а данные data :)
Спасибо заработало...Даже не обратил внимания, что ошибся в написании :))...Это меньшая из бед :))
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»