| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
p_stoyanoff Опитен потребител

Регистриран на: 14 Окт 2008 Мнения: 537
|
Пуснато на: Сря Апр 06, 2011 12:12 Заглавие: Не мога да подкарам дисплей AC162PYIL |
|
|
Свързал съм въпросния дисплей към контролер PIC, според схемите дадени в мануала(прикачения файл). Написах си програма според инициализиращата последователност(също във прикачения файл). Зададох да запише няколко символа в CGRAM регистъра, но слек като подам захранване задното осветление на дисплея светва(жълтата светлина), но ни символ, ни дявол. Връзките са правилни проверих ги няколко пъти. Някакви идеи от какво може да е???
Благодаря! |
|
| Върнете се в началото |
|
 |
veskobx Опитен потребител


Регистриран на: 07 Май 2005 Мнения: 332 Местожителство: Usa
|
Пуснато на: Сря Апр 06, 2011 13:23 Заглавие: |
|
|
Дай да видиме какво си написал. _________________ Authentic Damsels |
|
| Върнете се в началото |
|
 |
p_stoyanoff Опитен потребител

Регистриран на: 14 Окт 2008 Мнения: 537
|
Пуснато на: Сря Апр 06, 2011 18:31 Заглавие: |
|
|
Използвам CCS complier. Информацията се подава на порт D.Не съм проверявал на кой адрес е порт D, за това съм го описал пин по пин.
На порт Е съм закачил управляващите. Е0 - RS, Е1 - R/W, Е2- Е.
#include <18F4520.h>
#fuses HS,NOWDT
#use delay (clock=20000000)
void main()
{
delay_ms(500);
output_high(PIN_E2);
delay_ms(30);
output_low(PIN_E0);
output_low(PIN_E1);
output_high(PIN_D0);
output_high(PIN_D1);
output_high(PIN_D2);
output_high(PIN_D3);
output_high(PIN_D4);
output_high(PIN_D5);
output_low(PIN_D6);
output_low(PIN_D7);
delay_us(50);
output_high(PIN_D0);
output_high(PIN_D1);
output_high(PIN_D2);
output_high(PIN_D3);
output_low(PIN_D4);
output_low(PIN_D5);
output_low(PIN_D6);
output_low(PIN_D7);
delay_us(50);
output_high(PIN_D0);
output_low(PIN_D1);
output_low(PIN_D2);
output_low(PIN_D3);
output_low(PIN_D4);
output_low(PIN_D5);
output_low(PIN_D6);
output_low(PIN_D7);
delay_ms(2);
output_low(PIN_D0);
output_low(PIN_D1);
output_high(PIN_D2);
output_low(PIN_D3);
output_low(PIN_D4);
output_low(PIN_D5);
output_low(PIN_D6);
output_low(PIN_D7);
delay_ms(10);
output_high(PIN_E1);
output_high(PIN_D7);
output_low(PIN_D6);
output_low(PIN_D5);
output_low(PIN_D4);
output_low(PIN_D3);
output_low(PIN_D2);
output_low(PIN_D1);
output_low(PIN_D0);
delay_us(40);
output_low(PIN_D3);
output_low(PIN_D2);
output_low(PIN_D1);
output_low(PIN_D0);
output_low(PIN_D4);
output_low(PIN_D5);
output_high(PIN_D6);
output_high(PIN_D7);
} |
|
| Върнете се в началото |
|
 |
lenko71 Опитен потребител

Регистриран на: 29 Май 2009 Мнения: 302 Местожителство: Бургас
|
Пуснато на: Сря Апр 06, 2011 20:06 Заглавие: |
|
|
| Виж тук. |
|
| Върнете се в началото |
|
 |
p_stoyanoff Опитен потребител

Регистриран на: 14 Окт 2008 Мнения: 537
|
Пуснато на: Сря Апр 06, 2011 22:51 Заглавие: |
|
|
| Примерът, който ми пращаш се отнася за дисплей със сериен входен интерфейс(SPI). Моят дисплей е с паралелен. Съществуват хедъри за С18 coplier, които са с готови функции, но трябва да се свърже дисплея на точно определени пинове. Иначе трябва да се преправят, а в моя проект ми е свободен само порт D. Ще ми отнеме много време да ги преправям, а и не е сигурно, че контролера (дисплея е някакъв малко измислен и хардуера явно е краден) ще сработи с този хедър. |
|
| Върнете се в началото |
|
 |
teodor_dj Активен потребител

Регистриран на: 02 Сеп 2009 Мнения: 69
|
Пуснато на: Чет Апр 07, 2011 2:11 Заглавие: |
|
|
Ето така е по-правилно:
| Код: | #include <18F4520.h>
#fuses HS,NOWDT
#use delay (clock=20000000)
void main()
{
delay_ms(500);
output_low(PIN_E1); // R/W - Write Select
// Send Instruction //
output_x(PIN_D0); // }
output_x(PIN_D1); // }
output_x(PIN_D2); // }
output_x(PIN_D3); // } 8-bit Data
output_x(PIN_D4); // }
output_x(PIN_D5); // }
output_x(PIN_D6); // }
output_x(PIN_D7); // }
output_low(PIN_E0); // R/S - Instruction Select
delay_us(20);
output_high(PIN_E2); // E - Enable Signal _on
delay_us(5);
output_low(PIN_E2); // E - Enable Signal _off
// Send Data //
output_x(PIN_D0); // }
output_x(PIN_D1); // }
output_x(PIN_D2); // }
output_x(PIN_D3); // } 8-bit Data
output_x(PIN_D4); // }
output_x(PIN_D5); // }
output_x(PIN_D6); // }
output_x(PIN_D7); // }
output_high(PIN_E0); // R/S - Data Select
delay_us(20);
output_high(PIN_E2); // E - Enable Signal _on
delay_us(5);
output_low(PIN_E2); // E - Enable Signal _off
} |
"Send Instruction" - конфигуриране на дисплея - избиране на типа интерфейс(8/4 - битов), едноредов/двуредов дисплей и т.н. Следвай алгоритъма за инициализация в datasheet-a. След инициализацията могат вече да се изпращат "данни" - "Send Data". Важно! - обикновено преди инициализацията пикселите на втория ред на дисплея трябва да светят. Ако това не е така - провери 3-ти пин на дисплея(VO) - регулирай контраста.
А вместо това :
| Код: | output_x(PIN_D0); // }
output_x(PIN_D1); // }
output_x(PIN_D2); // }
output_x(PIN_D3); // } 8-bit Data
output_x(PIN_D4); // }
output_x(PIN_D5); // }
output_x(PIN_D6); // }
output_x(PIN_D7); // } |
можеш да ползваш:
| Код: | | output_d(int8 data); // 8-bit Data |
|
|
| Върнете се в началото |
|
 |
p_stoyanoff Опитен потребител

Регистриран на: 14 Окт 2008 Мнения: 537
|
Пуснато на: Чет Апр 07, 2011 16:07 Заглавие: |
|
|
| Поставил съм потенциометър 5к на 3-ти крак, както е дедено във файла. Измерих специално напрежението на 3ти крак се мени от 0 до 4.5V(толкова ми вади изправителя), но така и не се появява втория ред. Това го правя без поставен контролер(не мисля, че има някакво значение). Иначе жълтата светлина свети. На пинове 1 и 16 е подадена маса, а на 2 и 15 +V. От какво може да е това? Аз ли не правя нещо както трябва?? |
|
| Върнете се в началото |
|
 |
teodor_dj Активен потребител

Регистриран на: 02 Сеп 2009 Мнения: 69
|
Пуснато на: Чет Апр 07, 2011 16:55 Заглавие: |
|
|
| Всичко изглежда да е вързано ОК, аз по-горе писах -обикновено- вторият ред на дисплея свети без инициализация. Аз поне не съм срещал дисплей, който да не свети, но това не изключва възможността да има и такива. Давай напред с програмата, там ще си покаже. |
|
| Върнете се в началото |
|
 |
ivpav Опитен потребител

Регистриран на: 02 Ное 2006 Мнения: 539 Местожителство: Хасково
|
Пуснато на: Чет Апр 07, 2011 16:58 Заглавие: |
|
|
| p_stoyanoff написа: | | Примерът, който ми пращаш се отнася за дисплей със сериен входен интерфейс(SPI). | Не е вярно !!! | p_stoyanoff написа: | | Съществуват хедъри за С18 coplier, които са с готови функции, но трябва да се свърже дисплея на точно определени пинове. | И това не е точно така , можеш да си избираш порта ! | p_stoyanoff написа: | | а в моя проект ми е свободен само порт D. | Човека ти праща пример точно с пор D. | p_stoyanoff написа: | | (дисплея е някакъв малко измислен и хардуера явно е краден) ще сработи с този хедър. | Това пък съвсем не е вярно !
Хората ти дават доста добри съвети и примери . Така без контролер какво искаш да светнеш на тоя дисплей ? _________________ ИВАН ПАВЛОВ |
|
| Върнете се в началото |
|
 |
ikarlo Опитен потребител

Регистриран на: 12 Апр 2008 Мнения: 470 Местожителство: Sofia
|
Пуснато на: Чет Апр 07, 2011 19:42 Заглавие: Re: Не мога да подкарам дисплей AC162PYIL |
|
|
| p_stoyanoff написа: | | .... но ни символ, ни дявол... |
Регулираш ли контраста? При включване на дисплея дори и да не е инициализиран, се виждат тъмни правоъгълници, където излизат символите. При лошо положение на регулатора на контраста нищо не се вижда! |
|
| Върнете се в началото |
|
 |
|