Autor Tema: PG320240 controlado por PIC16F76  (Leído 1514 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hrosales

  • PIC10
  • *
  • Mensajes: 20
PG320240 controlado por PIC16F76
« en: 15 de Octubre de 2004, 13:59:00 »
Hola,

He decidido abrir un nuevo tema al respecto debido a que el proyecto original ha sufrido algunos cambios. Se trata de un Display grafico PG320240 de Powertip controlado por un PIC16F76, actualmente lo trabajo a 8MHz y he conseguido inicializarlo con el siguiente codigo (solo pongo los valores porque el codigo completo es muy largo en assembler):

Codigo:
Display SYSTEM SET instruction
0x40
0x30
0x07
0x07
0x27
0x2B
0xEF
0x28
0x00

Display SCROLL instruction
0x44
0x00
0x00
0xF0
0x80
0x25
0xF0
0x00
0x00
0x00
0x00

Display CSR FORM instruction
0x5D
0x04
0x86

Display CSR DIR instruction
0x4C

Display HDOT SCR instruction
0x5A
0x00

Display OVLAY instruction
0x5B
0x01

Display DISP OFF instruction
0x58

;***************************************************************************
Clear text screen in first layer and leave cursor at first position
;***************************************************************************
        movlw  0x4C
        call  lcd_cmd

        movlw  0x46
        call  lcd_cmd

        movlw  0x00
        call  lcd_data

        movlw  0x00
        call  lcd_data

        movlw  0x1E        ;30 lines of text on screen = 240/8
        movwf  J
loopj1  movlw  0x28        ;40 characters per line = 320/8
        movwf  K
loopk1  movlw  0x42        ;LCD memory write command
        call  lcd_cmd
        movlw  0x20        ;ASCII space
        call  lcd_data
        decfsz  K, 1       ;K=K-1, jump if K=0
        goto  loopk1
        clrwdt
        decfsz  J, 1       ;J=J-1, jump if J=0
        goto  loopj1

;***************************************************************************
;Clear graphics screen in second layer and leave cursor at first position
;***************************************************************************
        movlw  0x5B       ;Set overlay parameter to graphic mode
        call  lcd_cmd

        movlw  0x09
        call  lcd_data

        movlw  0x4C       ;Cursor movement to right
        call  lcd_cmd

        movlw  0x46       ;Set cursor address to layer 1
        call  lcd_cmd

        movlw  0x80
        call  lcd_data

        movlw  0x25
        call  lcd_data

        movlw  0x82       ;240 scan lines of graphics screen
        movwf  J
loopj2  movlw  0x25       ;40 bytes per line = 320/8
        movwf  K
loopk2  movlw  0x42       ;LCD memory write command
        call  lcd_cmd
        movlw  0x00       ;ASCII zero
        call  lcd_data
        decfsz  K, 1      ;K=K-1, jump if K=0
        goto  loopk2
        clrwdt
        decfsz  J, 1      ;J=J-1, jump if J=0
        goto  loopj2

        movlw  0x82       ;240 scan lines of graphics screen
        movwf  J
loopj3  movlw  0x25       ;40 bytes per line = 320/8
        movwf  K
loopk3  movlw  0x42       ;LCD memory write command
        call  lcd_cmd
        movlw  0x00       ;ASCII zero
        call  lcd_data
        decfsz  K, 1      ;K=K-1, jump if K=0
        goto  loopk3
        clrwdt
        decfsz  J, 1      ;J=J-1, jump if J=0
        goto  loopj3


Display DISP ON instruction
0x59
0x54

Display CSRW instruction
0x46
0x00
0x00

Display MWRITE instruction
0x20
0x45
0x50
0x53
0x4F
0x4E


Hasta aqui todo parecia muy bonito pero cuando quise poner "EPSON ELECTRONICS", ya no aparecio nada. Pero me he dado cuenta que si pongo "EPSON ELECTRONI" si lo muestra por que solo despliega cadenas completas de caracteres en multiplos de 5 cada cadena. Asi que para poner "EPSON ELECTRONICS" tuve que hacer:

Codigo:
Display MWRITE instruction
0x45
0x50
0x53
0x4F
0x4E

0x20
0x45
0x4C
0x45
0x43

0x54
0x52
0x4F
0x4E
0x49

0x43
0x53
0x20
0x20
0x20


Estoy tratando de entender por que sucede esto, alguien me lo podria explicar?...

Por cierto, solo estoy poniendo en assembler el codigo del borrado de los layers de texto y grafico pero no estoy seguro de que esten correctos, es decir, si se haga asi, aunque limpia bien el LCD pero ajustando el contraste el fondo parece azul y las letras parecen un poco tenues, si se ven pero me gustaria mejorarlo.

En fin que de ahora en adelante comienza el trabajo duro, que es realizar varias pantallas que van a interactuar por medio de menus y submenus.

He tratado de adjuntar los archivos correspondientes pero no me deja, espero que alguien me haga favor de subirlos, quien se apunta? Digame como.

Gracias

Hector Rosales