| Микроконтролери и електроника 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
|
|||
| Автор: | ike [ Нед Юли 12, 2015 10:30 pm ] |
| Заглавие: | Re: Проблем с флаг Busy на LCD дисплей |
Пробва ли да смениш pic16F84 с ардуино за $3 от ebay? |
|
| Автор: | timt [ Нед Юли 12, 2015 10:43 pm ] |
| Заглавие: | Re: Проблем с флаг Busy на LCD дисплей |
Аз заради тази книга ги намразих тия писатели. Инак с 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 за да добиеш представа като код и функционалност.
|
|||
| Автор: | Stefan Bu [ Нед Юли 12, 2015 11:38 pm ] |
| Заглавие: | Re: Проблем с флаг Busy на LCD дисплей |
Схемата ми е същата, но без резистор на RA4. Знам че схемата работи, но се чудя защо дисплея държи флага вдигнат. Може би проблема е точно в него. Пипна ли d7 със сондата флага пада и данните се зареждат. |
|
| Автор: | timt [ Пон Юли 13, 2015 12:35 am ] | ||
| Заглавие: | Re: Проблем с флаг Busy на LCD дисплей | ||
Пробвай това, имаше проблем с времената.
|
|||
| Автор: | 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/ |
|