Отговори на тема  [ 16 мнения ]  Отиди на страница 1, 2  Следваща
LCD дисплей в 4 bit mode 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение LCD дисплей в 4 bit mode
на няколко места гледам, че за интерфейс към LCD с 4 жици се използват D4-D7.
тук
и
тук

Като гледам чаршафа на AC-082A (наличен в комет) разбирам, че там трябва да се използват D0-D3 и то пак не ми става пълна картинката, щото при инициализацията трябва да се използват и D4 и D5?

Кое е вярното?

_________________
Хайде де!


Пет Авг 16, 2013 3:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: LCD дисплей в 4 bit mode
D4-D7 е вярно.
Но къде в този документ AC-082A видя да споменават 4 bit mode и D0-D3? На коя страница?
Повечето такива модули по света работят в 4 bit mode.

_________________
Warriors of the Night, ASSEMBLER!!!


Пет Авг 16, 2013 5:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: LCD дисплей в 4 bit mode
да бе. не знам какво се обърках. за пръв път се боря с lcd.

_________________
Хайде де!


Пет Авг 16, 2013 7:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: LCD дисплей в 4 bit mode
Не му вярвай - лъже тоя документ. Аз преди време като не знаех си проектирах платката с дисплейя куплиран към нея и датата на D0-D3 познай после кво мацане падна... Помислих си че аз съм сбъркал, ама явно в документа има грешка.


Пет Авг 16, 2013 7:49 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: LCD дисплей в 4 bit mode
Значи свързах го както трябва(към D7-D4). Сигналите, подавани от контролера, стигат до lcd дисплея.

Изпращам инициализиращите поредици 0x33 и 0x32 с достатъчни закъснения навсякъде.

После изпращам конфигуриращи команди, така че да се появи курсор и да мига.

Дисплеят обаче нищо не показва.
ето го кода:
Код:

#include <stdio.h>
#include <stdlib.h>
#include <p30F4011.h>

#define En LATDbits.LATD0
#define RW LATDbits.LATD1
#define RS LATFbits.LATF6
#define DB7 LATCbits.LATC13
#define DB6 LATCbits.LATC15
#define DB5 LATEbits.LATE8
#define DB4 LATCbits.LATC14

void delays_ms(unsigned int ms);
void config_lcd();
void send_lcd_word(unsigned char word);
void init_lcd();
void send_lcd_command(unsigned char command);
void send_lcd_data(unsigned char data);

#pragma config FOS = FRC,FPR = ERCIO, WDT = WDT_OFF, MCLRE = MCLR_EN, ICS = ICS_PGD, FPWRT = PWRT_64, BOREN = PBOR_ON, BODENV = BORV45

send_lcd_word(unsigned char word)
{
         union{
                unsigned char duma;
                struct{
                            unsigned b0:1;
                            unsigned b1:1;
                            unsigned b2:1;
                            unsigned b3:1;
                            unsigned b4:1;
                            unsigned b5:1;
                            unsigned b6:1;
                            unsigned b7:1;
                         }bits;
            } usend;

            usend.duma = word;

            RW = 0;

            DB7 = usend.bits.b7;
            DB6 = usend.bits.b6;
            DB5 = usend.bits.b5;
            DB4 = usend.bits.b4;

            En = 1;
            delays_ms(10);
            En = 0;
            delays_ms(10);

            DB7 = usend.bits.b3;
            DB6 = usend.bits.b2;
            DB5 = usend.bits.b1;
            DB4 = usend.bits.b0;

            En = 1;
            delays_ms(10);
            En = 0;
            delays_ms(10);

}

send_lcd_command(unsigned char command)
{
    RS = 0;//send command
    delays_ms(1);
    send_lcd_word(command);
}


send_lcd_data(unsigned char data)
{
    RS = 1;//send data
    delays_ms(1);
    send_lcd_word(data);

}




void init_lcd()
{
    TRISDbits.TRISD0 = 0;
    TRISDbits.TRISD1 = 0;
    TRISFbits.TRISF6 = 0;
    TRISCbits.TRISC13 = 0;
    TRISCbits.TRISC14 = 0;
    TRISCbits.TRISC15 = 0;
    TRISEbits.TRISE8 = 0;

    delays_ms(50);
   
    send_lcd_command(0x33);
    delays_ms(10);

    send_lcd_command(0x32);
    delays_ms(10);


}
void config_lcd()
{
    delays_ms(50);

    send_lcd_command(0b00101000);
    delays_ms(10);

    send_lcd_command(0b00001000);
    delays_ms(10);

    send_lcd_command(0b00000001);
    delays_ms(1);

    send_lcd_command(0b00000110);
    delays_ms(1);

    send_lcd_command(0b00001111);
    delays_ms(1);

}



int main(int argc, char** argv) {

    init_lcd();
    config_lcd();



    while(1);;

    return (EXIT_SUCCESS);
}



edit: махнах няколко стари коментара

_________________
Хайде де!


Последна промяна dan на Пет Авг 16, 2013 8:27 pm, променена общо 1 път



Пет Авг 16, 2013 7:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: LCD дисплей в 4 bit mode
Разгледай в атачнатия пдф. Тук е доста по подробно обяснено и има дадена 4 битова инициализация (стр. 209) - всъщност ти май я правиш грешно, защото освен че се пращат 3 групи по 4 бита ами и не са тези дето пращаш.


Прикачени файлове:
HD44780.PDF [390 KiB]
190 пъти
Пет Авг 16, 2013 8:19 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: LCD дисплей в 4 bit mode
Ей, Cekins, с това документче много помогна.

То се наложи да сложа и потенциометър за контраста де, че с делителя, дето го бях запоил нищо не се виждаше :)

_________________
Хайде де!


Пет Авг 16, 2013 11:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: LCD дисплей в 4 bit mode
Резистор от 2К на мен ми върши идеална работа, но зависи от захранващото напрежение и самия дисплей. 5волтовите, като ги пускам на 3.6В направо им замасявам контраст пина и доста прилично се вижда.

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Авг 17, 2013 10:02 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: LCD дисплей в 4 bit mode
тук при замасен контраст пин всичко става черно.

_________________
Хайде де!


Нед Авг 18, 2013 5:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: LCD дисплей в 4 bit mode
При 3.6В захраващо напрежение ли?

_________________
Warriors of the Night, ASSEMBLER!!!


Нед Авг 18, 2013 7:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: LCD дисплей в 4 bit mode
ike написа:
При 3.6В захраващо напрежение ли?

не, при 5V

_________________
Хайде де!


Пон Авг 19, 2013 8:55 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение Re: LCD дисплей в 4 bit mode
При мен на 3.3V I/O и при 5V захранване слагам потенциометър за регулировка на контраста и LCD-то си работи и се вижда нормално и нямам никакви проблеми. Я постни схемата как го свързваш да не гадаем.


Пон Авг 19, 2013 9:01 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 2:23 pm
Мнения: 3714
Местоположение: Високо в планината
Мнение Re: LCD дисплей в 4 bit mode
Ки4о написа:
При мен на 3.3V I/O и при 5V захранване слагам потенциометър за регулировка на контраста и LCD-то си работи и се вижда нормално и нямам никакви проблеми. Я постни схемата как го свързваш да не гадаем.


Ааа, аз още в събота пуснах дисплея. В действителност се използват D7-D4.

_________________
Хайде де!


Пон Авг 19, 2013 11:57 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: LCD дисплей в 4 bit mode
заблуждаващото е, че в 4-битов режим, D4..7 стават D0..3
що така са го направили навремето хапонците, никой не знае, но всички след тях го наследяват за съвместимост.
другото, което на времето установихме е, че времената при инициализация са критични и далеч от тези в чаршафа. доста по-големи.
и варират от контролер до контролер, така че е хубаво да се заложи на по-големи времена с цел универсалност


Пон Авг 19, 2013 12:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: LCD дисплей в 4 bit mode
Дедо - попадал съм на дисплеи дето времената им коренно се различават по времена на инициализация - така че времната могат да се гледат от даташита на конкретния дисплей. Иначе за инициализационните команди всичките са съвместими (говоря които са принципно като HD44780). Доста отдавна правих нещо с два дисплея и ги бях вързал и двата на обща дата шина и отделни служебни. Опитах отначало с обща инициализация ама ядец - единия работи с малки времена (с големи не отлепя), другия обратно.


Пон Авг 19, 2013 1:11 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 16 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни