На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Инициализация LCD дисплея [PIC] [ASM]
      Здравствуйте, пару месяцев начал изучать микропроцессора PIC, как зажигать светодиодики, опрос кнопки, прерывания и их обработка, решил двигаться дальше, и решил подключить LCD дисплей.
      LCD дисплей немного странноват, идёт в комплекте с Ардуино, что за проц на дисплее не совсем понятно на нём только номер RG1602A. Нашёл описание команд дисплея, собственно LCD info
      Там же даётся алгоритм его инициализации. Накидал простейший код.
      ExpandedWrap disabled
        #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

      В результате дисплей даже не инициализируется, подсветка и питание подключены и работают.

      В чём проблема, неверно инициализирую или не те команды для дисплея, и если не те команды, то которые от него.
        Здравствуйте народ, разобрался с этой фигнёй. Надо оказывается тонны даташитов очень внимательно читать, в частности по Пик микро. В итоге беда была в настройках ПОРТ_А, у него на выводах висят компараторы, пока их не настроишь работает Х... пойми как всё.
        Если кому интересно, пишите, что знаю расскажу.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0185 ]   [ 16 queries used ]   [ Generated: 19.03.24, 10:09 GMT ]