Отговори на тема  [ 46 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща
Проблем с флаг Busy на LCD дисплей 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Нед Апр 26, 2009 2:24 pm
Мнения: 398
Мнение Re: Проблем с флаг Busy на LCD дисплей
timt написа:
:D :D Това са моите номера. Когато направя платка която да върши нещо, първата работа е да направя проверка на изводите и входовете. Нещо като тест на платка и чип.


А аз си мислех че са моите :D
сега ще трябва да си ги разделим :D


Пон Юли 13, 2015 11:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Проблем с флаг Busy на LCD дисплей
Подкара ли пушкалото? Сори към Stefan Bu за въпроса в темата.


Вто Юли 14, 2015 12:00 am
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Нед Апр 26, 2009 2:24 pm
Мнения: 398
Мнение Re: Проблем с флаг Busy на LCD дисплей
timt написа:
Подкара ли пушкалото? Сори към Stefan Bu за въпроса в темата.

ми не колегата с пушката е студент и явно има по важни задачи
Иначе заредих един кондензатор до 90в.
И съответно може да се регулира времето а и напрежение
С lcd дисплей и няколко бутона програмата е написах само колкото да заработи
а и по платката се появиха разни мостчета :)


Последна промяна Наско на Вто Юли 14, 2015 12:08 am, променена общо 1 път



Вто Юли 14, 2015 12:04 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Проблем с флаг Busy на LCD дисплей
Ако има развитие, пиши че ми е интересно. Студента обеща килип.


Вто Юли 14, 2015 12:07 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Проблем с флаг Busy на LCD дисплей
Наско написа:
Напоследък ко им става на тия дисплей все по трудно захапват

Не е проблема в дисплеите, проблема е в контролерите.
Контролерите почват да работят още от около 1.8 волта и напрежението докато стигне до 3.0волта да почне да работи и дисплея, контролера вече е на средата на програмата. За това се слагат тези 100мС в началото.

_________________
Warriors of the Night, ASSEMBLER!!!


Вто Юли 14, 2015 12:51 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Яну 27, 2013 9:36 pm
Мнения: 30
Мнение Re: Проблем с флаг Busy на LCD дисплей
Ако някой иска ще му изпратя дисплея като подарък за моя сметка. И времена променях , чипа смених с 628А , писах инициализации от интернет, но в 8 битов режим не тръгва без побутване. Ще мога и в 4 битов режим, но предпочитам някой да си поиграе с него за да се види къде е проблема. А аз ще си поръчам нов от Комет.


Вто Юли 14, 2015 8:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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


Вто Юли 14, 2015 8:43 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Яну 27, 2013 9:36 pm
Мнения: 30
Мнение Re: Проблем с флаг Busy на LCD дисплей
В горните редове писах че не съм разбрал всичко от pdf-a на дисплея, но с английския не съм чак толкова зле.
Инициализация пробвах и сам. Пробвах сигурно 5 HEX-a от интернет и само с един тръгна , а с останалите не.
А за търпение имам доста.


Вто Юли 14, 2015 9:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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

Edit : Абе направи ми впечатление вчера като го гледах, ама сега пак се загледах - бъзи флаг го дават да се чете по време на Е = 1. В твоя код Е=1, Е=0 и тогава чете порта. При Е=0 линиите са в тристейт. Затова като го барнеш със скопа и реагира. Пробвай да преместиш Bcf E след проверката (или поне след прочитането на портБ).


Прикачени файлове:
HD44780.PDF [390 KiB]
194 пъти
Вто Юли 14, 2015 9:27 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Проблем с флаг Busy на LCD дисплей
@Stefan Bu пиши от къде си?
а между временно пробвай този


Прикачени файлове:
2.rar [468 Байта]
203 пъти
Вто Юли 14, 2015 9:54 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Яну 27, 2013 9:36 pm
Мнения: 30
Мнение Re: Проблем с флаг Busy на LCD дисплей
Този драйвер го четох за първи път преди повече от година. Но поради липса на свободно време не стигнах до дисплея. За втори път го прочетох преди седмици като направих поръчката в ибей. Инициализацията която е дадена на 46 страница я правих както е описана. Милисекундите с подпрограма а микросекундите с намаляване на регистър до нула. А флага го чета както е по ASM-а от книгата, но и там вкарвах закъснения.
timt благодаря за помощта, но и този HEX не сработва. Визуализира всички точки на първия ред а на втория нищо.
П.П. От Сандански съм.


Вто Юли 14, 2015 10:28 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30685
Местоположение: София
Мнение Re: Проблем с флаг Busy на LCD дисплей
#define use_portb_lcd TRUE


struct lcd_pin_map { // This structure is overlayed
BOOLEAN enable; // on to an I/O port to gain
BOOLEAN rs; // access to the LCD pins.
BOOLEAN rw; // The bits are allocated from
BOOLEAN unused; // low order up. ENABLE will
int data : 4; // be pin B0.
} lcd;

#define cycle 4 // Fc>20 Mhz 18x series 4x5, 4x10
//#define cycle 2 // Fc<20 Mhz 18x series 10x1
//#define cycle 1 // Fc<20 Mhz 16x 18x, series 10,20, 5x1

#if defined(__PCH__)

#if defined use_portb_lcd
#byte lcd = 0xF81 // This puts the entire structure
#else
#byte lcd = 0xF83 // This puts the entire structure
#endif
#else

#if defined use_portb_lcd
#byte lcd = 6 // on to port B (at address 6)
#else
#byte lcd = 8 // on to port D (at address 8)
#endif
#endif

#if defined use_portb_lcd
#define set_tris_lcd(x) set_tris_b(x)
#else
#define set_tris_lcd(x) set_tris_d(x)
#endif


#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the second line


BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};
// These bytes need to be sent to the LCD
// to start it up.
// The following are used for setting
// the I/O port direction register.

struct lcd_pin_map const LCD_WRITE = {0,0,0,1,0}; // For write mode all pins are out
struct lcd_pin_map const LCD_READ = {0,0,0,1,15}; // For read mode data pins are in



BYTE lcd_read_byte() {
BYTE low,high;
set_tris_lcd(LCD_READ);
lcd.rw = 1;
delay_cycles(cycle);
lcd.enable = 1;
delay_cycles(cycle);
high = lcd.data;
lcd.enable = 0;
delay_cycles(cycle);
lcd.enable = 1;
delay_us(1);
low = lcd.data;
lcd.enable = 0;
set_tris_lcd(LCD_WRITE);
return( (high<<4) | low);
}


void lcd_send_nibble( BYTE n ) {
lcd.data = n;
delay_cycles(cycle);
lcd.enable = 1;
delay_us(2);
lcd.enable = 0;
}


void lcd_send_byte( BYTE address, BYTE n ) {

lcd.rs = 0;
while ( bit_test(lcd_read_byte(),7) ) ;
lcd.rs = address;
delay_cycles(cycle);
lcd.rw = 0;
delay_cycles(cycle);
lcd.enable = 0;
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}


void lcd_init() {
BYTE i;
set_tris_lcd(LCD_WRITE);
lcd.rs = 0;
lcd.rw = 0;
lcd.enable = 0;
delay_ms(15);
for(i=1;i<=3;++i) {
lcd_send_nibble(3);
delay_ms(5);
}
lcd_send_nibble(2);
for(i=0;i<=3;++i)
lcd_send_byte(0,LCD_INIT_STRING[i]);
}


void lcd_gotoxy( BYTE x, BYTE y) {
BYTE address;

switch(y)
{
case 1: address=0x0;
break;
case 2: address=0x40;
break;
case 3: address=0x14;
break;
case 4: address=0x54;
break;
default : address=0x0;
break;
}
/*if(y!=1)
address=lcd_line_two;
else
address=0;*/
address+=x-1;
lcd_send_byte(0,0x80|address);
}

void lcd_putc( char c) {
switch (c) {
case '\f' : lcd_send_byte(0,1);
delay_ms(2);
break;
case '\n' : lcd_gotoxy(1,2); break;
case '\b' : lcd_send_byte(0,0x10); break;
default : lcd_send_byte(1,c); break;
}
}

char lcd_getc( BYTE x, BYTE y) {
char value;

lcd_gotoxy(x,y);
while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low
lcd.rs=1;
value = lcd_read_byte();
lcd.rs=0;
return(value);
}

Това мисля че работи, не знам дали е оригиналното или съм го бутал, помня че имаше нещо свързано с точно с този проблем.


Вто Юли 14, 2015 10:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Проблем с флаг Busy на LCD дисплей
@ ToHu, кода си бачка но нещо хардуера не е в ред. Нямам 84А за пробата инак не ме бърка.


Вто Юли 14, 2015 11:04 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Яну 27, 2013 9:36 pm
Мнения: 30
Мнение Re: Проблем с флаг Busy на LCD дисплей
Cekins това с bsf E--bcf E вчера го загледах, но да си призная не му обърнах внимание. Дисплея тръгна от раз.
Ето и проверката на флага
Check_BF
bsf STATUS,RP0
movlw h'FF'
movwf TRISB
bcf STATUS,RP0
bcf RS
bsf RW
bsf E
movf PORTB,w
movwf BF_temp
btfsc BF_temp,7
goto Check_BF
bcf E
bcf RW
bsf STATUS,RP0
clrf TRISB
bcf STATUS,RP0
return
Благодаря на всички за помощта. Ако някой идва към Сандански нека пише за да почерпя както си трябва.


Вто Юли 14, 2015 11:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Проблем с флаг Busy на LCD дисплей
На симулация не бачка този код! Единствено D7(RB7) е високо ниво.
Имай го в предвид при друг дисплей!


Вто Юли 14, 2015 11:32 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 46 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

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


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

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