Hi Gents;
I have been trying to make my new shining Winstar WG320240C LCD (
Could you please check my code and circuit below if you see something wrong and drop me a line or two ;) If there is also anyone who worked this LCD out, please send me any reference, cuz I am getting crazy soon..
For connections I set up like:
------------------------------------------------
----- |-- PIN1 Ground |-- PIN2 +5V |-- PIN3 ~apprx. -16V |-- PIN4 RD/E connected to PA6 |-- PIN5 WR/RW connected to PA5 |-- PIN6 Ao connected to PA7 |-- PIN7 DB0 connected to PC0 |-- PIN8 DB1 connected to PC1 |-- PIN9 DB2 connected to PC2 LCD |-- PIN10 DB3 connected to PC3 |-- PIN11 DB4 connected to PC4 |-- PIN12 DB5 connected to PC5 |-- PIN13 DB6 connected to PC6 |-- PIN14 DB7 connected to PC7 |-- PIN15 CS connected to Gnd |-- PIN16 RES connected to PD7 |-- PIN17 Negative voltage output connected to PIN3 through a POT |-- PIN18 Frame Ground connected to Gnd |-- PIN19 NC |-- PIN20 NC
----
My code is:
----------------------------------------
.include "m162def.inc" .equ CTL_RW = 5 .equ CTL_E = 6 .equ CTL_A = 7 .equ CTLPORT = PORTA .equ DATPORT = PORTC .def rtemp1 = r16 .def rtemp2 = r17 .def data = r18 .macro cmdw ldi data, (@0) rcall lcd_cmdw .endmacro .macro datw ldi data, (@0) rcall lcd_datw .endmacro .org 0 rjmp start ;-- lcd_reset ;-- adjusts the port/pin directions ;-- and sends a reset pulse to the LCD lcd_reset: ldi rtemp1, $ff out DDRA, rtemp1 ldi rtemp1, $a0 out PORTA, rtemp1 ldi rtemp1, $ff out DDRC, rtemp1 ; PC0..PC7 -> all output sbi DDRD, 7 ; PD7 -> output sbi PORTD, 7 ; first set PD7 rcall delay1ms rcall delay1ms rcall delay1ms rcall delay1ms ldi rtemp1, $00 out PORTA, rtemp1 cbi PORTD, 7 ; clear PD7 (reset) rcall delay1ms ; wait 3ms. rcall delay1ms rcall delay1ms rcall delay1ms rcall delay1ms sbi PORTD, 7 ; set PD7 ldi rtemp1, $a0 out PORTA, rtemp1 ldi r18, 200 lcd_rs_lp: rcall delay1ms ; wait for stabilization. approx 100 ms. dec r18 brne lcd_rs_lp ret ;-- lcd_init ;-- initializes lcd lcd_init: ; System Set cmdw $40 datw $30 datw $87 datw $07 datw $27 ; dec 39 datw $42 ; dec 66 datw $ef ; dec 239 datw $28 ; dec 40 datw $00 ; Scroll cmdw $44 datw $00 datw $00 datw $f0 datw $80 datw $25 datw $f0 ; HDOT cmdw $5a datw $00 ; Overlay cmdw $5b datw $03 ; Display OFF cmdw $58 datw $16 rcall lcd_tclr ; Cursor format cmdw $5d datw $07 datw $87 ; Display ON cmdw $59 datw $16 ; Cursor direction cmdw $4c ; Cursor write cmdw $46 datw $00 datw $00 ret lcd_tclr: cmdw $46 datw $00 datw $00 ldi r28, $e8 ldi r29, $03 ; 1000 cmdw $42 lcd_tclrlp: datw $00 sbiw r28, 1 brne lcd_tclrlp ret ;-- lcd_cmdw ;-- writes a command to the lcd. lcd_cmdw: cbi CTLPORT, CTL_E sbi CTLPORT, CTL_A cbi CTLPORT, CTL_RW sbi CTLPORT, CTL_E out DATPORT, data cbi CTLPORT, CTL_E ret ;-- lcd_datw ;-- writes data to lcd lcd_datw: cbi CTLPORT, CTL_E cbi CTLPORT, CTL_A cbi CTLPORT, CTL_RW sbi CTLPORT, CTL_E out DATPORT, data cbi CTLPORT, CTL_E ret ;-- delay1ms ;-- delays 1000 CLK cycles delay1ms: nop nop nop ldi rtemp1, 10 delayo: ldi rtemp2, 32 delayi: dec rtemp2 brne delayi dec rtemp1 brne delayo ret start: ldi rtemp1, 0 out sreg, rtemp1 ldi rtemp1, low(RAMEND) out spl, rtemp1 ldi rtemp1, high(RAMEND) out sph, rtemp1 rcall lcd_reset rcall lcd_init datw $3 sbi DDRD, 6 sbi PORTD, 6 lp: rjmp lp
Thnx..
Aris