Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.226.96.37] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте, пару месяцев начал изучать микропроцессора PIC, как зажигать светодиодики, опрос кнопки, прерывания и их обработка, решил двигаться дальше, и решил подключить LCD дисплей.
LCD дисплей немного странноват, идёт в комплекте с Ардуино, что за проц на дисплее не совсем понятно на нём только номер RG1602A. Нашёл описание команд дисплея, собственно LCD info Там же даётся алгоритм его инициализации. Накидал простейший код. #include <p16F887.inc> __CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __CONFIG _CONFIG2, _WRT_OFF & _BOR21V cblock 0x20 D_Data ;data to output Delay1 Delay2 endc Send MACRO bsf PORTB,3 ;E=1 start send nop nop bcf PORTB,3 ;E=0 end send ENDM ORG 0x00 GOTO Main ORG 0x04 GOTO IRQ IRQ: Main: bsf STATUS,RP0 ;select Register Bank1 clrf TRISA ;portA all output clrf TRISB ;portB all output ; bsf STATUS,RP1 ;select Register Bank3 ; clrf ANSEL ;portA pins are Digitals bcf STATUS,RP0 ; bcf STATUS,RP1 ;return to Register Bank0 clrf PORTA clrf PORTB call Delay call Delay bcf PORTB,1 ;RS=0 bcf PORTB,2 ;RW=0 movlw 0x30 ;write init word for display ;8bit interface, 2 line display, 5x8 char ;movwf D_Data movwf PORTA ;send data to portA ;call Delay ;delay about 39 msec Send ;Send data to display call Delay movlw 0x30 ;write init word for display movwf PORTA ;send data to portA ;call Delay Send call Delay movlw 0x30 movwf PORTA ;call Delay Send call Delay movlw 0x38 movwf PORTA ;call Delay Send call Delay movlw 0x0F movwf PORTA ;call Delay Send call Delay movlw 0x01 movwf PORTA ;call Delay Send call Delay movlw .131 ;set DDRAM adress movwf PORTA ;call Delay Send call Delay movlw .82 movwf PORTA bsf PORTB,1 ;RS=1 ;call Delay Send call Delay nop goto $-1 Delay movlw 0xFF movwf Delay2 loop2: movlw 0xFF movwf Delay1 loop1: decfsz Delay1,1 goto loop1 decfsz Delay2,1 goto loop2 return END Выводы данных дисплея подключаю на PORTA, D0-PORTA,0... Вывод RS на PORTB,0 Вывод R/W на PORTB,1 Вывод Е на PORTB,2 В результате дисплей даже не инициализируется, подсветка и питание подключены и работают. В чём проблема, неверно инициализирую или не те команды для дисплея, и если не те команды, то которые от него. |
Сообщ.
#2
,
|
|
|
Здравствуйте народ, разобрался с этой фигнёй. Надо оказывается тонны даташитов очень внимательно читать, в частности по Пик микро. В итоге беда была в настройках ПОРТ_А, у него на выводах висят компараторы, пока их не настроишь работает Х... пойми как всё.
Если кому интересно, пишите, что знаю расскажу. |