Hola a todos,
Acabo de suscribirme al foro y quiero solicitar su ayuda con este proyecto.
Estoy construyendo un display basado en el PG320240D de Powertip controlado por un PIC16F877 a 16Mhz y despues de muchas pruebas no he podido conseguir enviar ni un solo caracter. Realmente me siento confundido y no se cual es mi error(es).
Aqui esta el codigo mas reciente que he probado para que le den una checadita y me iluminen. Los diagramas no los he podido adjuntar pero los tengo comprimidos con formato paint, si los necesitan los puedo enviar por mail.
De antemano muchas gracias
Hector Rosales
Mexico, DF
;*********************************************************************************************************
LIST P = 16F877
RADIX HEX
INCLUDE "P16F877.inc"
errorlevel -302 ; supress "register not in bank0, check page bits" message
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF
;********************************************************************************************************
;VARIABLES DEFINITION
;********************************************************************************************************
#DEFINE LCD_PWRE PORTB,0 ;Power Up the Diplay
#DEFINE LCD_RST PORTB,1 ;Reset
#DEFINE LCD_RD PORTB,2 ;Read
#DEFINE LCD_A0 PORTC,0 ;A0
#DEFINE LCD_WR PORTC,1 ;Write
#DEFINE LCD_CS PORTC,2 ;Chip Select Enable/Disable the Display
#DEFINE LCD_DAT PORTD ;LCD data on PORTD
J EQU 0x25
K EQU 0x26
;*********************************************************************************************************
;INPUT/OUTPUT PORTS CONFIGURATION
;*********************************************************************************************************
org 0x00 ;Program start
bsf STATUS,5 ;Change to Bank 1
movlw 0x07
movwf ADCON1 ;Set all pins as digital
movlw 0x0F ;Set w = 00001111 for PORTA configuration
movwf PORTA ;Set RA0:RA3 as inputs, RA4:RA7 as outputs
movlw 0x00 ;Set w = 00000000 for PORTB, PORTD & PORTE configuration
movwf PORTB ;Set RB0:RB2 as outputs. Display Power Enable, Reset and Read
movwf PORTC ;Set RC0:RC7 as outputs. Display A0, Write, Chip Select
movwf PORTD ;Set RD0:RD7 as outputs. Display data
bcf STATUS,5 ;Change to Bank 0
;*********************************************************************************************************
;PORTS INITIALIZATION & DISPLAY POWER UP
;*********************************************************************************************************
clrf PORTA ;PORTA = w = 00000000
clrf PORTD ;PORTD = w = 00000000
bsf LCD_PWRE ;LCD Power Up
bsf LCD_RST ;LCD No Reset
bcf LCD_CS ;LCD chip select active /CS
;2msec delay @ 16MHz crystal from POWER UP
call Delay
bcf LCD_RST ;LCD Reset
;2msec delay @ 16MHz crystal
call Delay
bsf LCD_RST ;LCD No Reset
call Delay
;*********************************************************************************************************
;Display SYSTEM SET instruction
;*********************************************************************************************************
movlw 0x40
call send_cmd
movlw 0x30
call send_dat
movlw 0x87
call send_dat
movlw 0x07
call send_dat
movlw 0x1F
call send_dat
movlw 0x52
call send_dat
movlw 0x7F
call send_dat
movlw 0x20
call send_dat
movlw 0x00
call send_dat
;Display SCROLL instruction
movlw 0x44
call send_cmd
movlw 0x00
call send_dat
movlw 0x00
call send_dat
movlw 0x7F
call send_dat
movlw 0x00
call send_dat
movlw 0x10
call send_dat
movlw 0x7F
call send_dat
;Display HDOT SCR instruction
movlw 0x5A
call send_cmd
movlw 0x00
call send_dat
;Display OVLAY instruction
movlw 0x5B
call send_cmd
movlw 0x01
call send_dat
;Display DISP ON/OFF instruction
movlw 0x58
call send_cmd
movlw 0x16
call send_dat
;Clear data in first layer
movlw 0x42
call send_cmd
movlw 0x20
call send_dat
;Clear data in second layer
movlw 0x42
call send_cmd
movlw 0x00
call send_dat
;Display CSRW instruction
movlw 0x46
call send_cmd
movlw 0x00
call send_dat
movlw 0x00
call send_dat
;Display CSR FORM instruction
movlw 0x5D
call send_cmd
movlw 0x04
call send_dat
movlw 0x86
call send_dat
;Display DISP ON/OFF instruction
movlw 0x59
call send_cmd
movlw 0x16
call send_dat
;Display CSR DIR instruction
movlw 0x4C
call send_cmd
;Display MWRITE instruction
movlw 0x42
call send_cmd
movlw 0x45 ;E
call send_dat
movlw 0x50 ;P
call send_dat
movlw 0x53 ;S
call send_dat
movlw 0x4F ;O
call send_dat
movlw 0x4E ;N
call send_dat
;*********************************************************************************************************
;Subroutines
;*********************************************************************************************************
;LCD Command Subroutine
send_cmd:
bsf LCD_A0 ;A0=1
movwf LCD_DAT ;Place data in PORTD
bcf LCD_CS ;Activate CS pin CS=0
bcf LCD_WR ;Activate WR pin WR=0
nop
bsf LCD_WR ;Deactivate CS pin CS=1
bsf LCD_CS ;Deactivate WR pin WR=1
return
;Send Data to LCD Subroutine
send_dat:
movwf LCD_DAT ;Place data in PORTD
bcf LCD_A0 ;A0=0
bcf LCD_CS ;Activate CS pin CS=0
bcf LCD_WR ;Activate WR pin WR=0
nop
bsf LCD_WR ;Deactivate CS pin CS=1
bsf LCD_CS ;Deactivate WR pin WR=1
return
;2msec delay Subroutine
Delay:
movlw 0x34 ;w = 52 decimal for 2msec delay
movwf J ;J = w
loopj movwf K ;K = w
loopk decfsz K,f ;K=K-1, jump if K=0
goto loopk
decfsz J,f ;J=J-1, jump if J=0
goto loopj
return
end