Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Технологии программирования > Микроконтроллеры
Перезагрузить страницу LCD 1602 + Atmega8A
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Лев25 Лев25 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.04.2018
Question LCD 1602 + Atmega8A - 20.05.2018, 01:49

Кто понимает в этом помогите разобраться. Подключил ЖКИ 1602 с алиэкспресса к атмеге8 и не могу вывести не символа на экран. Подключил D0-D7 к порту B0-7, E к порту C0, RW к порту C1, RS к порту C2. Посмотрел обзоры, пытался сам написать код и вывести текст на ЖК, не получилось, думал что то пишу не правильно, тогда взял и скопировал код с сайта, подправил порты и все равно не показывает не чего.Еще смущает что при выкручивании контраста на максимум, знакоместа подсвечиваются не все, а некоторые не полностью. Ниже скину код и попробую прикрепить фото. Проверял пайку на КЗ все норм припаял. Кто может Написать простейший код сто процентов рабочий для моей распиновки выводящий на экран любые символы для проверки ЖКИ.
Ответить с цитированием
  (#2 (permalink)) Старый
Лев25 Лев25 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.04.2018
По умолчанию 20.05.2018, 01:51

c Код:
#define F_CPU 8000000UL

#include <avr/io.h>
#include <util/delay.h>

void Pulse_E(void)
{
    PORTC |= 0b1;
    _delay_us(60);
   
    PORTC &=~0b1;
    _delay_us(60);
}

void Send_Byte (char Data)
{
    PORTC |=0b100;
    PORTB = Data;
    Pulse_E();
}

void Send_Cmd (char Cmd)
{
    PORTC &=~0b100;
    PORTD = Cmd;
    Pulse_E();
}

void Send_Str (char* str,char length)
{
    for (int i = 1;i<length;i++)
    {
        Send_Byte(*str);
        str++;
        _delay_ms(2);
    }
}

int main(void)
{
    DDRB = 0xFF;
    DDRC = 0xFF;
   
    Send_Cmd(0b00111000);
    _delay_us(200);
   
    Send_Cmd(0b00000001);
    _delay_ms(10);
   
    Send_Cmd(0b00001100);
    _delay_us(80);
   
    Send_Str("Hi!",3);
   
    while(1)
    {
       
    }
   
}
Ответить с цитированием
  (#3 (permalink)) Старый
Лев25 Лев25 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.04.2018
По умолчанию 20.05.2018, 01:54

Вот фото и код с сайта уже подправленный мной
Миниатюры
2ad5b4b0-1232-4afb-92af-9e873db6603a.jpg  
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,293
Сказал(а) спасибо: 21
Поблагодарили 919 раз(а) в 903 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 21.05.2018, 20:50

1. Найдите даташит на HD44780, изучите порядок инициализации и команды;
2. Найдите инициализацию любого дисплея на этом контроллере и изучите по даташиту, что и как происходит на самом деле;
3. Сделайте задержки побольше. Не забудьте задержку при старте, после сброса, без неё может не заработать. Задержку в вашем случае можно увеличивать с запасом, т.к. интерфейс синхронный.


Как прикреплять картинки к сообщениям: http://www.hardforum.ru/t116562
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов