реклама на сайте
подробности

 
 
> Проблема с управлением HD44780, Не удается должным образом вывести на дисплей необходимую информацию
endasm
сообщение Dec 27 2012, 12:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 9-07-12
Пользователь №: 72 673



Здравствуйте, несколько дней уже разбираюсь с управлением ЖКИ 16х2 на базе контроллера HD44780 по 4-битному интерфейсу. Написал по примеру несколько функций для этого. Но максимум что удалось сделать - это вывести мигающий курсор в верхнем левом углу дисплея в виде черного прямоугольника. Скорее всего в функциях есть проблема, помогите разобраться в чем дело, подключение дисплея правильное. Ниже код функций:
CODE
#include <avr/io.h>

#define F_CPU 4000000UL
#include <avr/delay.h>

#define E 0 //E = PORTC.0 - стробирующий сигнал
#define RS 1 //RS = PORTC.1 - определение типа данных: команда(RS=0) или данные(RS=1)
#define RW 2 //RW = PORTC.2 - выбор режима: запись(RW=0) или чтение(RW=1)

void lcd_SendCommand(unsigned char lcd) //функция передачи команд в дисплей
{
unsigned char temp;

temp =(lcd & ~(1<<RS)) | (1<<E); //задаём тип данных, который хотим переслать
PORTC=temp; //выводим в порт старшую тетраду команды, сигналы RS и E
PORTC=temp & ~(1<<E); //cигнал записи команды
_delay_us(5);

temp =((lcd*16) & ~(1<<RS)) | (1<<E); //задаём тип данных, который хотим переслать
PORTC=temp; //выводим в порт младшую тетраду команды, сигналы RS и E
PORTC=temp & ~(1<<E); //cигнал записи команды
_delay_us(5);
}

void lcd_SendData(unsigned char lcd) //функция передачи данных в дисплей
{
unsigned char temp;

temp =(lcd & (1<<RS)) | (1<<E); //задаём тип данных, который хотим переслать
PORTC=temp; //выводим в порт старшую тетраду данных, сигналы RS и E
PORTC=temp & ~(1<<E); //cигнал записи данных
_delay_us(5);

temp =((lcd*16) & (1<<RS)) | (1<<E); //задаём тип данных, который хотим переслать
PORTC=temp; //выводим в порт младшую тетраду данных, сигналы RS и E
PORTC=temp & ~(1<<E); //cигнал записи данных
_delay_us(5);
}

void lcd_init(void) //функция инициализации дисплея
{
lcd_SendCommand(0b00101000); //4-бит интерфейс, 2 строки, 5х8 точек
_delay_ms(10);
lcd_SendCommand(0b00000001); //очистка дисплея, указатель встал на 0x00 DDRAM
_delay_ms(10);
lcd_SendCommand(0b00000110); //адресс будет инкреминтироваться, экран не движется
_delay_ms(10);
}

int main(void)
{
DDRC =0b01111111; //настройка PORTC на выход
PORTC=0b01111011;
_delay_ms(10);

lcd_init(); //инициализация дисплея

lcd_SendCommand(0b00001100); //включаем дисплей, настраиваем курсор(режим: в виде подчеркивания)

lcd_SendData('1');
lcd_SendData('2');
lcd_SendData('3');
lcd_SendData('4');
lcd_SendData('5');
lcd_SendData('6');
lcd_SendData('7');
lcd_SendData('8');
lcd_SendData('9');
lcd_SendData('0');
lcd_SendData('A');
lcd_SendData('B');
lcd_SendData('C');
while(1);
}


Сообщение отредактировал IgorKossak - Dec 27 2012, 17:45
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!, форматирование
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- endasm   Проблема с управлением HD44780   Dec 27 2012, 12:34
- - Dust112   Советую проверить функцию инициализации, в частнос...   Dec 27 2012, 13:18
- - endasm   Проверил, всё правильно, биты: DL=0, N=1, F=0 lcd...   Dec 27 2012, 13:47
- - Dust112   После 5 секудного гугления: Необходимо помнить, ч...   Dec 27 2012, 14:08
|- - Ruslan1   Цитата(Dust112 @ Dec 27 2012, 16:08) Посл...   Dec 27 2012, 15:47
- - endasm   Сейчас поправлю и отпишусь. Не помогло.   Dec 27 2012, 14:54
- - Dust112   Значит затык в задержках. Какой конкретно ЖКИ испо...   Dec 27 2012, 15:07
- - endasm   WINSTAR WH1602B   Dec 27 2012, 15:15
- - Dust112   А мануал на HD44780 читали? Там же есть пример ини...   Dec 27 2012, 15:37
- - ARV   и была охота велосипед изобретать? полно ведь гото...   Dec 27 2012, 15:55
|- - S17   Может поможет: hd44780 online simulator: http://ww...   Dec 27 2012, 20:11
|- - ARV   Цитата(S17 @ Dec 28 2012, 00:11) Мне бы н...   Dec 28 2012, 08:10
||- - S17   Цитата(ARV @ Dec 28 2012, 12:10) их есть ...   Dec 28 2012, 10:28
|- - Genadi Zawidowski   Цитата(S17 @ Dec 28 2012, 00:11) Мне бы н...   Dec 28 2012, 17:47
|- - endasm   Цитата(Genadi Zawidowski @ Dec 28 2012, 20...   Dec 29 2012, 13:17
|- - Сергей Борщ   QUOTE (endasm @ Dec 29 2012, 15:17) Нужно...   Dec 29 2012, 22:52
|- - endasm   Цитата(Сергей Борщ @ Dec 30 2012, 01:52) ...   Dec 30 2012, 07:53
|- - Marian   Цитата(endasm @ Dec 30 2012, 10:53) Я оши...   Dec 30 2012, 14:08
|- - ARV   Цитата(Marian @ Dec 30 2012, 18:08) Посмо...   Dec 30 2012, 15:28
- - endasm   Инициализировал как в даташите - не помогло: курсо...   Dec 27 2012, 16:46
|- - Ruslan1   Цитата(endasm @ Dec 27 2012, 18:46) Иници...   Dec 27 2012, 20:08
- - hd44780   А незабываемый AVRLib - http://www.procyonengineer...   Dec 28 2012, 16:03
|- - ARV   Цитата(hd44780 @ Dec 28 2012, 20:03) У ме...   Dec 28 2012, 17:18
- - vgo1   Лет 7 назад я использовал ЖКИ модуль с Mega8. Прог...   Dec 28 2012, 17:33
- - endasm   Вообщем переделал я немного функции и дисплей почт...   Dec 30 2012, 21:16
|- - S17   Цитата(endasm @ Dec 31 2012, 01:16) Подск...   Dec 30 2012, 21:54
|- - _Артём_   Цитата(endasm @ Dec 30 2012, 23:16) а вот...   Dec 30 2012, 21:55
|- - endasm   Цитата(_Артём_ @ Dec 31 2012, 00:55) Види...   Dec 30 2012, 22:18
|- - Сергей Борщ   QUOTE (endasm @ Dec 31 2012, 00:18) подск...   Dec 30 2012, 22:55
- - endasm   Вообщем всё наконец таки заработало как надо, спас...   Dec 30 2012, 23:02
- - S17   Цитата(endasm @ Dec 31 2012, 03:02) Вообщ...   Dec 31 2012, 16:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 11:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016