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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Сорри но опять инициализация LCD, Не получается запустить LCD основаный на HD44780
John23
сообщение Jan 25 2008, 06:47
Сообщение #16


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Спасибо, поэксперементирую ещё. Надо же его всё таки включать когда то.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Jan 25 2008, 07:55
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Возьми LCD модуль из avrLib, попробуй.
У меня 3 разных дисплея (два 2x16, один 4x20), на всех работало без проблем.
Я даже алгоритм портировал на cvAVR, работает.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 25 2008, 21:06
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Не стал заморачиваться с неработающим у меня WinAvr 20071221. Поставил назад старый.

WinAVR2007 работает с AVR Studio 4.13, а WinAVR2006 работает с AVR Studio 4.12. Павильней было бы поставить свежую студию с сервиспаками.

Цитата
Надоел уже мне этот экранчик порядком, обидно тратить столько времини для того чтобы привести к жизни этот противный кусочек железа, выполняющий не такую уж важную роль.

Попробуйте эти библиотеки. Прикрепленный файл  lsd.rar ( 13.53 килобайт ) Кол-во скачиваний: 149


Цитата
Возьми LCD модуль из avrLib, попробуй.

Код громоздкий. при попытке разрешить прерывания глобально у меня прога виснет. там только lcdProgressBar() мне нравится и lcdPrintData().


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 29 2008, 08:30
Сообщение #19


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Доброго времени суток!
Цитата
Попробуйте эти библиотеки. lsd.rar

Стянул библиотечку, действительно понятное описание и читабельный код, спасибо за ссылочку)).
Содрал код инициализации и добавил лишь VLED ножку на которую даётся питание, проверил пошагово - всё работае так как написано, а продвижения все равно нет, он всего лиш загорается при подаче питания.
Если не трудно читать, то вот что есть на инициализации:
Код
//-------------------------------------------------------------------------------------
//инициализация дисплея
//-------------------------------------------------------------------------------------
#define F_CPU 1000000UL  // 1 MHz
//----------
#define VLED 0          //power
#define LCD_RS    1     //define MCU pin connected to LCD RS
#define LCD_RW    2     //define MCU pin connected to LCD R/W
#define LCD_E    3    //define MCU pin connected to LCD E
#define LCD_D4    4    //define MCU pin connected to LCD D3
#define LCD_D5    5    //define MCU pin connected to LCD D4
#define LCD_D6    6    //define MCU pin connected to LCD D5
#define LCD_D7    7    //define MCU pin connected to LCD D6
#define LDP PORTC    //define MCU port connected to LCD data pins
#define LCP PORTC    //define MCU port connected to LCD control pins
#define LDDR DDRC    //define MCU direction register for port connected to LCD data pins
#define LCDR DDRC    //define MCU direction register for port connected to LCD control pins
//VLED - PC0
//RS   - PC1
//R/W  - PC2
//E    - PC3
//DB4..DB7 - PC4..PC7

void _delay_ms(double __ms)
{
    uint16_t __ticks;
    double __tmp = ((F_CPU) / 4e3) * __ms;
    if (__tmp < 1.0)
        __ticks = 1;
    else if (__tmp > 65535)
    {
        //    __ticks = requested delay in 1/10 ms
        __ticks = (uint16_t) (__ms * 10.0);
        while(__ticks)
        {
            // wait 1/10 ms
            _delay_loop_2(((F_CPU) / 4e3) / 10);
            __ticks --;
        }
        return;
    }
    else
        __ticks = (uint16_t)__tmp;
    _delay_loop_2(__ticks);
  
}

void LCDsendCommand(uint8_t cmd)    //Sends Command to LCD
{
    LDP=(cmd&0b11110000)|1<<VLED;
    LCP|=1<<LCD_E;        
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    LDP=((cmd&0b00001111)<<4)|(1<<VLED);    
    LCP|=1<<LCD_E;        
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
}
void LCDinit(void)//Initializes LCD
{
    LDP=1<<VLED;
    LCP=1<<VLED;
        _delay_ms(15);
    //LDP=0x00;
    //LCP=0x00;
    LDDR|=1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4;
    LCDR|=1<<LCD_E|1<<LCD_RW|1<<LCD_RS;
   //---------one------
    LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4|1<<VLED; //4 bit mode
    LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;        
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    //-----------two-----------
    LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|1<<LCD_D4|1<<VLED; //4 bit mode
    LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;        
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    //-------three-------------
    LDP=0<<LCD_D7|0<<LCD_D6|1<<LCD_D5|0<<LCD_D4|1<<VLED; //4 bit mode
    LCP|=1<<LCD_E|0<<LCD_RW|0<<LCD_RS;        
    _delay_ms(1);
    LCP&=~(1<<LCD_E);
    _delay_ms(1);
    //--------4 bit--dual line---------------
    LCDsendCommand(0b00101000);
   //-----increment address, cursor shift------
    LCDsendCommand(0b00001110);
}

Я просто вызываю LCDinit() из main(). Может на момент инициализации нужно запретить глобально прерывания может это мешает тоже?
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 29 2008, 14:20
Сообщение #20


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Уважаемые знатоки, благодарю за помощь, проблема решена благодаря моему сообразительному другу.
Проблема оказалась не в порядке посылки команд и выставления задержек а в коварном подстроичном резисторе регулирующем контрастность. На самом деле значок курсора выводился уже около двух недель , только благодаря резистору я его не видел.
Совет начинающим - если вдруг инициализация не проходит НЕ исключайте этой ошибки и обязательно проверяйте етот самый резистор.
Всем спасибо, тема закрыта.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jan 29 2008, 15:12
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Даже когда индикатор не инициализирован, его половина "закрашивается черным" при регулировке контрастности


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 31 2008, 09:13
Сообщение #22


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Здравствуйте.
Цитата
Даже когда индикатор не инициализирован, его половина "закрашивается черным" при регулировке контрастности

Да уж теперь то я понимаю как много времени зря потерял из за незнания. Но поймите, плата с атмегой и дисплейчиком мне досталась в наследство и поэтому ничего о том как всё устроено и что должно быть отрегулировано не знал.
Я начал подозревать что подсветка и питание мк - реализованы отдельно, так как на форуме читал что должны подсветится знакоместа, оказалось не так, мне помогли в принципиальных схемах разобраться и нашли этот резистор, после этого притензии только к разработчику схемы(ну и к себе - за то что раньше не догадался).
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Jan 31 2008, 09:43
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



я не дока в индикаторах, но когда первый раз подключил, первым делом покрутил подстроечникsmile.gif


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 31 2008, 10:03
Сообщение #24


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Да уж, я даже не догадывался что для маленького дисплейчика тоже реализовали подстройку контрастности. Просто не подумал, я за собой заметил что зачастую ищу ошибку в чём то сложном, вместо того чтоб проверить самое банальное. Как говорится- посыпаю голову пеплом, но рад что могу двигаться дальше, а точнее пока ползти smile.gif. Впереди куча всего что прийдётся делать впервые.
Go to the top of the page
 
+Quote Post
j_serg
сообщение Jan 31 2008, 10:14
Сообщение #25





Группа: Новичок
Сообщений: 14
Регистрация: 28-01-08
Пользователь №: 34 483



Уважаемый John23. За AVR и С я взялся буквально месяц назад. Наберусь смелости и дам совет. Мой совет будет в общем, о хорошо забытой рекомендации. В кратце расскажу о своих мытарствах. LCD взял МТ-10-Т7 -- единственное, что было в нашем захолустье. Попутно скачал с какого-то форума рекомендации бедолаги, который смог запустить эту стекляшку только с помощью группы поддержки самой фирмы(фирма МЭЛТ). Хорошо, что запросы не надо было сочинять на английском. Ушло у него на это около 10 дней, если я правильно помню. Естественно я пошел по пути его рекомендаций и потерял несколько дней. Потом плюнул и скачал ДШ. с сайта фирмы и за пару часов получил рабочий код. Ваш LCD очень популярный и информации на него много. И вот выводы из приобретенного опыта.
Язык Си слишком вольный, особенно для начинающего. Не используйте отточенные конструкции опытных Си-шников, т.к. есть вероятность сразу не въехать в алгоритм и долго няньчиться с проблемой. Пишите может быть и не оптимально, но как можно проще для своего понимания и у вас все заработает. В будущем это мнение возможно и поменяется. У меня уже тоже появились затыки и я уже позвонил на форум.
Go to the top of the page
 
+Quote Post
John23
сообщение Jan 31 2008, 11:41
Сообщение #26


Участник
*

Группа: Новичок
Сообщений: 15
Регистрация: 17-01-08
Пользователь №: 34 156



Спасибо за совет smile.gif , всегда рад здравым мыслям. Копаться в ДШ сразу желания не было, поэтому сначала поискал в инете как это делают другие ( к стати тоже натыкался на вышеупомянутого бедолагу smile.gif ), после того как их советы не помогли покопался в ДШ, к моему недоумению это тоже было безрезультатно. Спасением стал этот форум, уважаемые участники которого мне всячески старались помочь. Но жалко что проблемма была такой глупой и неожиданной - просто контраст на нуле.
А касательно языка С, для меня он удобнее потому что пишу на нём не первый год (с асмом ,как ни стыдно признаться, разбираться лень, хотя в институте заставляли). До недавнего времени писал приложения под винду и волей случая сейчас приходится вникать в другую область программирования, поэтому сейчас тяжковато.
Go to the top of the page
 
+Quote Post
j_serg
сообщение Feb 1 2008, 11:02
Сообщение #27





Группа: Новичок
Сообщений: 14
Регистрация: 28-01-08
Пользователь №: 34 483



Цитата(John23 @ Jan 31 2008, 14:41) *
Спасибо за совет smile.gif , всегда рад здравым мыслям. Копаться в ДШ сразу желания не было, поэтому сначала поискал в инете как это делают другие ( к стати тоже натыкался на вышеупомянутого бедолагу smile.gif ), после того как их советы не помогли покопался в ДШ, к моему недоумению это тоже было безрезультатно. Спасением стал этот форум, уважаемые участники которого мне всячески старались помочь. Но жалко что проблемма была такой глупой и неожиданной - просто контраст на нуле.
А касательно языка С, для меня он удобнее потому что пишу на нём не первый год (с асмом ,как ни стыдно признаться, разбираться лень, хотя в институте заставляли). До недавнего времени писал приложения под винду и волей случая сейчас приходится вникать в другую область программирования, поэтому сейчас тяжковато.


Вам проще. Я в институте учил Паскаль, да и программистом никогда не работал. К томуже был перерыв в 16 лет, а вот теперь снова пришлось взяться и взяться с ходу за С. Тяжеловато по началу мыслить на С.
Go to the top of the page
 
+Quote Post

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

 


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


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