Перейти к содержанию

Рекомендуемые сообщения

Уважаемые, значит приобрёл себе дисплейчик

post-104977-0-75403100-1342906616_thumb.jpg

по практиковаться с графическими дисплеями. Но вот беда, ни как не могу настроить контрастность в нём(

подключаю 3 пин "Vo" как по даташиту через переменный резистор на 10 КОм, по суте регулировка контрастности! Но эфекта ноль.

Прочитал в просторах инета что: "Управление контрастностью осуществляется отрицательным напряжением с вывода Vee."

Поставил тупо перемычку между 3 пином "Vo" и 18 пином "Vee" и тут чудо, появилось изображение, но на столько тусклое что при поподании на дисплей света от обычной лампы, ни черта не видно(

вот фото:

post-104977-0-16278900-1342907031_thumb.jpg

Уважаемые, помогите пожалуйста решить проблему контрасности!!! весь инет уже перерыл blink.gif

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Спасибо вам большое hd44780

Но ни черта не получается у меня с контрастностью(((

подключаю как вот тут

post-104977-0-43985700-1342976044_thumb.png

ну ни как(

где отрецательное напряжение на выводе "Vee" у меня там -3.07v где то. Такое ощущение что ему хочется минус 5 вольт для нормальной контрастности.....

Может вы попробуете подключить свой диспейчик? может у меня просто тупо LCD бракованый попался...

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Блин, решил проблему!!!

у меня была просадка напряжения всего в 0.2v(((

Видать пора менять свою старую макетную плату.

Решил спаять на другой макетной плате (для меги 32 в TQFP корпусе специально берёг) и немного поднть напряжение до 5.5v - 5.8v

на всякие случаи поставил резисторы что бы не спалить не контроллер не дисплей.

И вуаля заработал мой измучанный WG12864A вот фотка

post-104977-0-55588300-1342993839_thumb.jpg

Кстати контрастность подключил через переменный резистор на 5КОм только от отрецательного напряжения

вот:

post-104977-0-04544500-1342993931_thumb.jpg

Спасибо огромное всем кто помог.

кстати может оставить тему? Может по программе будут вопросы, а они обязательно будут!

Изменено пользователем Кирилл84

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Конечно оставить. ) Я когда разбирался, брал инфу от сюда. Правда тут мега 8535. )

__http://mega-avr.ucoz.ru/publ/codevisionavr_connect_display_wg12864b_and_microcontroller_atmega8535_part1/1-1-0-6__

Изменено пользователем vitiv
Ссылка на комментарий
Поделиться на другие сайты

Тоже сейчас пытаюсь, разобраться с лсд но нифига не получается , контрастность работает а вот на сам дисплей ничего не выводится :(

Дисплей у меня lcm1602k, контроллер atmega16, ципляю на порт С

Программа вот:

#include <mega16.h> //Включаем библиотеку для работы с микроконтроллером ATMega16

#asm

.equ __lcd_port=0x18 ;PORTC

#endasm // Инициализируем PORTС как порт ЖКИ

#include <lcd.h> //Включаем библиотеку для работы с ЖКИ

void main(void)

{

char *_str="12345"; //Создаем выводимую строку

lcd_init(16); // Инициализация ЖКИ на 16 символов

lcd_gotoxy(0, 0); // Переводим курсор на первый символ первой строки

lcd_puts(_str); // Выводим строку _str на дисплей ЖКИ

while (1)

{

};

}

Может кто найдет ошибку, а то уже целый день мучаюсь, никак не заведу :(

Пришел, увидел, нафлудил...

много баса не бывает, бывают еще не достаточно "размятые" уши!

Ссылка на комментарий
Поделиться на другие сайты

Значит так уважаемые: появиласть куча вопросов по программной части!

Из статей которые предоставил многоуважаемый hd44780 попытался вывести изображение на свой LCD переделав немного программу под мегу8 и поменяв порты (ибо перепаивать не охото было) решил проверить сначало в протеусе, после нескольких манипуляций и подгонки кода в протеусе появилось долгожданное изображение))) но как только я залил прошивку в настоящее железо, увы, экран молчит((( как такое может быть? в протеусе работает на ура, а в настоящем железе нет.

На всякие случаи решил перепрошить МК на старую "тестовую" версию прошивки где в самом начале темы на фотке моей, так работает с ней!

подскажите пожалуйста, что не так ?

вот проектик test wg12864a.rar

vitiv спасибо вам за ссылочку, я именно от туда и брал инфу. Но чет ни как не могу реализовать в железе(

m777dv58rus странный какой у вас дисплейчик :rolleyes: чёт я даже даташита на него не могу найти :blink:

Изменено пользователем Кирилл84

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

m777dv58rus блин, простите, действительно есть даташит, у меня просто голова уже кругом от моего графического LCD <_<

у вашего LCD контроллер "KS0066U" он идентичен "HD44780"

вот я проверил ваш код, у меня всё ок, правда в протеусе))) Вы подключаетесь по 4 битной шине?

на железе не смогу помочь, но в протеусе у меня все гуд.

вот проектик LCD.rar

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Про шину не знаю, но у меня всего 7 проводков + питание :)

И еще я заливаю прошивку через сина прог , так как у меня программатор Usbbit на ft232 , через СV авр заливать не получается :(

Может че во фьюзах еще надо делать?? :o

Щас вашу прошивку попробую залить :rolleyes:

НИ*ЕРА СЕБЕ!!!!! ОН ЗАРАБОТАЛ!!! B)

Изменено пользователем m777dv58rus

Пришел, увидел, нафлудил...

много баса не бывает, бывают еще не достаточно "размятые" уши!

Ссылка на комментарий
Поделиться на другие сайты

m777dv58rus, я не знаю, что у Вас заработало и где.

Кирилл Вам правильно написал

у вашего LCD контроллер "KS0066U" он идентичен "HD44780"

Оба они СИМВОЛЬНЫЕ, графики там никакой нету (кроме 7 или 8 пользовательских знаков, но это не графика, а обман трудящихся :D ).

А у Кирилла дисплей настоящий графический, никаким KS0066U и HD44780 там и не пахнет. Поэтому там и схемы подключения и работа с ним совершенно разные.

У дисплея WG12864 контроллер KS0107/KS0108. Могу pdf дать, если сомневаетесь.

Изменено пользователем hd44780
Ссылка на комментарий
Поделиться на другие сайты

Я так и не понял в чем же была ошибка? :blink:

Сейчас уже часики на них собрал)))

Изменено пользователем m777dv58rus

Пришел, увидел, нафлудил...

много баса не бывает, бывают еще не достаточно "размятые" уши!

Ссылка на комментарий
Поделиться на другие сайты

Вот

post-142996-0-69925200-1343123163_thumb.jpg

Изменено пользователем m777dv58rus

Пришел, увидел, нафлудил...

много баса не бывает, бывают еще не достаточно "размятые" уши!

Ссылка на комментарий
Поделиться на другие сайты

Вот

Ну всё правильно. Этот дисплей не графический, а символьный (алфавитно-цивровой). На контроллере HD44780 или KS0066U - в принципе всё равно.

А с какого поста темы Вы брали прошивку? Если с 10-го, то всё нормально. Там Вам Кирилл и дал прошивку именно под Ваш дисплей.

Это на его графическом она не пойдёт.

Изменено пользователем hd44780
Ссылка на комментарий
Поделиться на другие сайты

Брал из 10 поста, только вот до сих пор не пойму, почему же он раньше не работал :blink:

Программы вроде как индентичны кроме вот этой строки: .equ __lcd_port=0x18 ;PORTC , тут 18 , а в прошивке из 10 поста 0х15, что вообще это означает???

Пришел, увидел, нафлудил...

много баса не бывает, бывают еще не достаточно "размятые" уши!

Ссылка на комментарий
Поделиться на другие сайты

m777dv58rus Хорошо, что у вас получилось :) Я сам когда изучал символьные LCD пришлось "попотеть" :rolleyes: но к счастю далось легко!

Кстати, если интересно, вот пару видео как я изучал символьные LCD

не обращайте внимание на секунды, я только учился))))

Может вдохновит на что нибуть)))

И всё же уважаемые, мы помойму немного от темы ушли( мне бы с моим графическим что нибуть замутить :blink:

Изменено пользователем Кирилл84

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Я со своим символьным буду собирать синтезатор частоты и RDS кодер для пиратской радиостанции B)

попробуй осциллограф на нем сделать как вот тут :)http://radiokot.ru/circuit/digital/measure/21/

Изменено пользователем m777dv58rus

Пришел, увидел, нафлудил...

много баса не бывает, бывают еще не достаточно "размятые" уши!

Ссылка на комментарий
Поделиться на другие сайты

m777dv58rus спасибо большое за статейку, но у меня меги 32 под рукой нет, что бы проверить.

Госпада, вот код который в протеусе у меня выводит на LCD букву "L" в центре каждого кристала

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 24.07.2012
Author  : Kirill                          
Company : Home                            
Comments: 


Chip type           : ATmega8
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega8.h> 
#include <delay.h> 


enum DisplMode{ command,data };		//command - 0, data - 1
enum DisplCrystal{ cs1,cs2,cstwo };		//cs1 - 0, cs2 - 1, cstwo - 3      
#define port_ddrdata  DDRD
#define pin_data      PIND
#define port_data     PORTD
#define port_command  PORTB
#define port_ddrcom   DDRB   

#define 	nop					#asm("nop")
#define 	array				6
#define 	flags_busy			0x80
#define     __direction_in      port_ddrdata=0x00;port_data=0xff
#define     __direction_out     port_ddrdata=0xff;port_data=0x00
#define     __port_init         port_ddrdata=0xff;port_ddrcom=0xff   




//********************************************************//
#define cd_data       port_command|=0x01 //DI
#define cd_command    port_command&=0xFE

#define rw_read       port_command|=0x02 //RW
#define rw_write      port_command&=0xFD

#define e_on          port_command|=0x04 //E
#define e_off         port_command&=0xFB

#define cs1_off       port_command|=0x08 //CS1
#define cs1_on        port_command&=0xF7

#define cs2_off       port_command|=0x10 //CS2
#define cs2_on        port_command&=0xEF

#define rst_off       port_command|=0x20 //RESET
#define rst_on        port_command&=0xDF        

//********************************************************// 


void display_reset( void )
 {
    rst_on; delay_us( 10 ); rst_off;
 } 




unsigned char read_flags_busy( unsigned char crystal )
 {
    unsigned char status;
    unsigned char temp;


    if( !crystal ){ cs1_on; cs2_off; }else{ cs1_off; cs2_on; }
    __direction_in;                              //Шина данных - вход
    cd_command;                                  //DI = 0 команда
    rw_read;                                     //RW = 1 чтение
    delay_us( 4 );
    e_on;
    nop;
    nop;
    e_off;
    temp=pin_data;                             //Чтение c шины значение регистра статуса

    if( temp==flags_busy ){ status = 1; }     //контроллер занят  
    else                  { status = 0; }    //контроллер освободился
    __direction_out;                          //Шина данных - выход


    return ( status );                      //возвращает результат выполнения функции
 }

void write_data_display( unsigned char mode, unsigned char data, unsigned char cs ) 
 {
     switch( cs )                                            //выбор контроллера LCD
       {
           case cs1:     cs1_on;  cs2_off; break;
           case cs2:     cs1_off; cs2_on;  break;
           case cstwo:   cs1_on;  cs2_on;  break;
       }


    if( mode ){ cd_data; }else{ cd_command; }   //DI = 1 или DI = 0
     rw_write;                             //RW = 0 - запись
     nop;                                  //пустая команда ( ассемблер )
     nop;                                  //нужно подбирать под определ.частоту
     port_data = data;                     //засылаемые данные в выбранный контроллер LCD
     e_on;                                 //логический перепад
     nop;                                  //на выводе Е
     nop;                                  //для того, чтобы контроллер 
     e_off;                                //зафиксировал управ.сигналы и данные
     cs1_off;                              //контроллеры LCD не доступны
     cs2_off;                              //на всякий случай


        while( read_flags_busy( cs1 ) !=0 );              //проверяем флаг занятости
        while( read_flags_busy( cs2 ) !=0 ); 
 }

void display_init( void )
 {
    __port_init;
    display_reset( );                          //Обязательно!
    write_data_display( command,0xC0,cstwo );  //стартовая линия дисплея в нуль
    write_data_display( command,0x3F,cstwo );  //включение дисплея ( отображение RAM )

 } 
  void display_xy( unsigned char x,unsigned char y,unsigned char cs )
 {
    write_data_display( command,0xb8+y,cs ); //Устанавливаем регистр Х адреса + значение y
    write_data_display( command,0x40+x,cs ); //Устанавливаем счетчик Y адреса + значение х
 }

 void display_clear( unsigned char cs )
 {
    char x,y;


    for( x=0;x<64;x++ ){
    for( y=0;y<8;y++ ){
       display_xy( x,y,cs );               //устанавливаем регистры
       write_data_display( data,0,cs );  //записываем нули в 8-битные ячейки памяти RAM
    }
   }
 }

  void display_out_byte( unsigned char byte, unsigned char cs )
 {  
    write_data_display( data,byte,cs );  
 }

  void main( void )
 {
   display_init( );
   display_clear( cstwo );  //cstwo – оба контроллера
   display_xy( 16,3,cs1 );  //указываем начальное значение отображения RAM 

                            //при каждой записи данных в память,счетчик Y                                                      //адреса увлечивает свое значение на 1
   // ПЕРВЫЙ ЭКРАН
   //записываем побайтно данные в память RAM 
   display_out_byte( 0b11111111,cs1 ); //L
   display_out_byte( 0b11111111,cs1 );
   display_out_byte( 0b10000000,cs1 );
   display_out_byte( 0b10000000,cs1 );
   display_out_byte( 0b10000000,cs1 ); // или display_out_byte( 0x80,cs1 );
   display_out_byte( 0b10000000,cs1 );
   display_out_byte( 0b00000000,cs1 );
   display_out_byte( 0b00000000,cs1 );


   // ВТОРОЙ ЭКРАН
   //записываем побайтно данные в память RAM
   display_xy( 56,3,cs2 );

   display_out_byte( 0b11111111,cs2 ); //L
   display_out_byte( 0b11111111,cs2 );
   display_out_byte( 0b10000000,cs2 );
   display_out_byte( 0b10000000,cs2 );
   display_out_byte( 0b10000000,cs2 );
   display_out_byte( 0b10000000,cs2 );
   display_out_byte( 0b00000000,cs2 );
   display_out_byte( 0b00000000,cs2 );


   while( 1 );
 }





вот прин скрин протеуса

post-104977-0-90630900-1343157433_thumb.jpg

ну ни в какую не хочет на железе работать :angry:

Изменено пользователем Alex
Перекопипастил код с нормальными комментами

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Вообще не рисует :(

Есть подозрение, что в этом коде не правильно "как минимум" задана инициализация LCD. Хотя весь день вчера сверял, вроде норм.

может попробуем разобрать функцию инициализации?

P.S. Одна голова хорошо, а две лучше :)

Для любого процесса найдётся такой, без завершения которого невозможен данный

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...