Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблем с флаг Busy на LCD дисплей
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=13914
Страница 1 от 4

Автор:  Stefan Bu [ Нед Юли 12, 2015 9:32 pm ]
Заглавие:  Проблем с флаг Busy на LCD дисплей

Имам проблем с pic16F84 и LCD дисплей. Дисплеят държи флага вдигнат и контролера не може да предаде данните. Интересното е че когато поставя сондата на осцилоскопа на извод D7 на дисплея флага пада и данните се визуализират. Програмата е от книгата на Млад конструктор а дисплея е 16х2 44780. Някой би ли дал съвет?

Автор:  timt [ Нед Юли 12, 2015 9:38 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Дай си целият код и схемата ако е на .asm ще ти помогна.

Автор:  Stefan Bu [ Нед Юли 12, 2015 9:55 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Схема няма как да кача, но по asm-а може да се изгради представа за начина на свързване.
list p=16F84A ;Задаване на типа на процесора
#include <p16F84A.inc>; Дефиниране на SFR регистрите
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;************Дефиниране на константи и променливи**********
w EQU 0
f EQU 1
;************Дефиниране на LCD модула**********************
DISP_ON EQU H'0C'
DISP_ON_C EQU H'0E'
DISP_ON_B EQU H'0F'
DISP_OFF EQU H'08'
CLR_DISP EQU H'01'
ENTRY_INC EQU H'06'
ENTRY_INC_S EQU H'07'
ENTRY_DEC EQU H'04'
ENTRY_DEC_S EQU H'05'
DD_RAM_ADR1 EQU H'80'
DD_RAM_ADR2 EQU H'C0'
;************Използвани променливи**************************
CBLOCK h'0c'
Counter
LCD_temp
BF_temp
ENDC
;***********Дефиниране на портовете*************************
#define E PORTA,0
#define RW PORTA,1
#define RS PORTA,2
;**********Потрбителска програма***************************
ORG h'0000'
goto Start
;**********Начало на програмата*****************************
Start bsf STATUS,RP0
movlw b'10010001'
movwf OPTION_REG
bcf STATUS,RP0
clrf PORTA
clrf PORTB
bsf STATUS,RP0
movlw b'11111000'
movwf TRISA
clrf TRISB
bcf STATUS,RP0
goto main
;*********Използвани подпрограми***************************
Init_LCD
movlw D'15'
movwf Counter
call Wait
movlw b'00110000'
movwf PORTB
bsf E
bcf E
movlw D'8'
movwf Counter
call Wait
movlw b'00111000'
movwf PORTB
bsf E
bcf E
movlw DISP_OFF
call Send_comand
movlw DISP_ON
call Send_comand
movlw ENTRY_INC
call Send_comand
return
;*********************************************************
Wait clrf TMR0
again bcf INTCON,T0IF
loop btfss INTCON,T0IF
goto loop
decfsz Counter,f
goto again
return
;**********************************************************
Send_comand
movwf LCD_temp
call Check_BF
movf LCD_temp,w
movwf PORTB
bcf RW
bcf RS
bsf E
bcf E
return
;***********************************************************
Send_char
movwf LCD_temp
call Check_BF
movf LCD_temp,w
movwf PORTB
bcf RW
bsf RS
bsf E
bcf E
return
;**********************************************************
Check_BF
bsf STATUS,RP0
movlw h'FF'
movwf TRISB
bcf STATUS,RP0
bcf RS
bsf RW
bsf E
bcf E
movf PORTB,w
movwf BF_temp
btfsc BF_temp,7
goto Check_BF
bcf RW
bsf STATUS,RP0
clrf TRISB
bcf STATUS,RP0
return
;***********************************************************
main
call Init_LCD
movlw DD_RAM_ADR1
call Send_comand
movlw 'L'
call Send_char
movlw 'C'
call Send_char
movlw 'D'
call Send_char
movlw ' '
call Send_char
movlw 'T'
call Send_char
movlw 'e'
call Send_char
movlw 's'
call Send_char
movlw 't'
call Send_char
Second_line
movlw DD_RAM_ADR2
call Send_comand
movlw ','
call Send_char
movlw 'v'
call Send_char
movlw 'e'
call Send_char
movlw 'r'
call Send_char
movlw '.'
call Send_char
movlw '1'
call Send_char
movlw '.'
call Send_char
movlw '0'
call Send_char
Stop_send
nop
goto Stop_send
END

Автор:  timt [ Нед Юли 12, 2015 10:26 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Сложил съм ти и симулация на Протеус 7.2

Прикачени файлове:
New folder.rar [38.11 KiB]
230 пъти

Автор:  ike [ Нед Юли 12, 2015 10:30 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Пробва ли да смениш pic16F84 с ардуино за $3 от ebay?

Автор:  timt [ Нед Юли 12, 2015 10:43 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

:D
Аз заради тази книга ги намразих тия писатели.
Инак с 84А-20 имам модули които работят много години и то на гадни условия. И не знам защо но още държат цена а има нови и то много функционални и евтини.

Автор:  Stefan Bu [ Нед Юли 12, 2015 11:13 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Благодаря за помощта но пак се получава същото. Ето го и дисплея
http://www.ebay.com/itm/UK-HD44780-1602 ... 33a2e2e000
За сега нямам Протеос. А за Ардуино ще трябва С , а пък него не мога да го схвана нещо.

Автор:  timt [ Нед Юли 12, 2015 11:25 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Кода работи, инсталирай си Протеус 7 има го в нета. А Асемблер за пик не се хващай после ще съжаляваш, много е труден и много ограничен. Реално тази програма на C е 10-тина реда. Някой от форума ако може да ти я драсне на C за да добиеш представа като код и функционалност.

Прикачени файлове:
1.jpg
1.jpg [ 37.41 KiB | Прегледано 3779 пъти ]

Автор:  Stefan Bu [ Нед Юли 12, 2015 11:38 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Схемата ми е същата, но без резистор на RA4. Знам че схемата работи, но се чудя защо дисплея държи флага вдигнат.
Може би проблема е точно в него. Пипна ли d7 със сондата флага пада и данните се зареждат.

Автор:  timt [ Пон Юли 13, 2015 12:35 am ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Пробвай това, имаше проблем с времената.

Прикачени файлове:
LCD84.asm [3.58 KiB]
249 пъти

Автор:  Stefan Bu [ Пон Юли 13, 2015 7:40 am ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Станах по-рано за да пробвам, но пак не става. Ще го мисля след като се прибера от работа.

Автор:  timt [ Пон Юли 13, 2015 10:45 am ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Бе, ти кварц на 4 Mhz сложил ли си на 15 и 16 пин?

Автор:  Gogo [ Пон Юли 13, 2015 2:47 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Като пипнеш със сондата, вкарваш брум и затова заработва. Пробвай с pull-up резистор (или pull-down), а най-добре не чети busy флага. Пусни си времезакъснение 43 и 39uS съответно за данни и инструкции. Дори може да спестиш един извод на пик-а, защото не ти трябва управление на R/W на дисплея - само пишеш, т.е. свързваш го към маса.

Автор:  ike [ Пон Юли 13, 2015 3:57 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Не му трябва четене на флагове, R/W пина и 4 от data жичките.

Автор:  timt [ Пон Юли 13, 2015 4:40 pm ]
Заглавие:  Re: Проблем с флаг Busy на LCD дисплей

Той човека сега почва, и аз така бях на времето и бях залепнал на тая схема. Ама все от някъде се почва.
Да каже какво е направил и до къде е стигнал и ще го подкараме. Посъветвах го в кода да не прави моите грешки ама каквото си реши. Да светне дисплея а после апетита с яденето.

Страница 1 от 4 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/