hi,
I am trying to control S1D13305 (SED1335-Epson Controller) based Graphic LCD with using AVR ATmega32 microcontroller.
I have written the demo code in assembly language for it in AVRStudio4. The problem is i am not getting any output on LCD. I have read the datasheet of SED1335 many times but i can not understand in details how to initialize LCD, about delay of LCD, contrast port values etc.
Please help me with this.
Regards, Sachin Rathod, India.
My code looks like this:
.include "m32def.inc"
.equ RD = 0
.equ WR = 1
.equ A0 = 2
.equ CS = 3
.equ RST = 4
.equ FS1 = 5
.equ DataPort = PORTC
.equ CtrlPort = PORTD
.equ DataDDR = DDRC
.equ CtrlDDR = DDRD
.equ SystemSet = 0x40
.equ SleepIn = 0x53
.equ DispOff = 0x58
.equ DispOn = 0x59
.equ Scroll = 0x44
.equ CurForm = 0x5D
.equ CGRAMAddr = 0x5C
.equ CurRight = 0x4C
.equ CurLeft = 0x4D
.equ CurUp = 0x4E
.equ CurDown = 0x4F
.equ HdotScr = 0x5A
.equ Overlay = 0x5B
.equ SetCurAddr = 0x46
.equ ReadCurAddr = 0x47
.equ MemWrite = 0x42
.equ MemRead = 0x43
.def Temp = r16
.def Dly1 = r17
.def Dly2 = r18
.def LcdCommand = r19
.def LcdData = r20
Reset:
LDI Temp, 0x5F
OUT SPL, Temp
LDI Temp, 0x08
OUT SPH, Temp
RCALL IOInit
RCALL Dly50ms
RCALL Dly50ms
RCALL LcdInit
RCALL Dly50ms
RCALL Dly50ms
RCALL ZPtrInit
RCALL InstructionSet
LDI LcdCommand, SetCurAddr
RCALL SendLcdCommand
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdCommand, CurRight
RCALL SendLcdCommand
LDI LcdCommand, MemWrite
RCALL SendLcdCommand
RCALL DisplayData
Forever:
RJMP Forever
IOInit:
LDI Temp, 0xFF
OUT DataDDR, Temp
LDI Temp, 0x3F
OUT CtrlDDR, Temp
RET
LcdInit:
SBI CtrlPort, RD
SBI CtrlPort, WR
CBI CtrlPort, CS
CBI CtrlPort, FS1
CBI CtrlPort, RST
RCALL Dly200us
RCALL Dly200us
SBI CtrlPort, RST
RET
SendLcdCommand:
SBI CtrlPort, A0
OUT DataPort, LcdCommand
CBI CtrlPort, WR
NOP
NOP
NOP
SBI CtrlPort, WR
RET
SendLcdData:
CBI CtrlPort, A0
OUT DataPort, LcdData
CBI CtrlPort, WR
NOP
NOP
NOP
SBI CtrlPort, WR
RET
Dly1ms:
PUSH Temp
PUSH Dly1
PUSH Dly2
LDI Temp, 0x08
Dly1msL1:
LDI Dly1, 0xA6
LDI Dly2, 0xA6
Dly1msL2:
DEC Dly1
BRNE Dly1msL2
Dly1msL3:
DEC Dly2
BRNE Dly1msL3
DEC Temp
BRNE Dly1msL1
POP Dly2
POP Dly1
POP Temp
RET
Dly200us:
PUSH Temp
PUSH Dly1
PUSH Dly2
LDI Temp, 0x02
Dly200usL1:
LDI Dly1, 0x83
LDI Dly2, 0x83
Dly200usL2:
DEC Dly1
BRNE Dly200usL2
Dly200usL3:
DEC Dly2
BRNE Dly200usL3
DEC Temp
BRNE Dly200usL1
POP Dly2
POP Dly1
POP Temp
RET
Dly50ms:
LDI Temp, 50
Dly50msL1:
RCALL Dly1ms
DEC Temp
BRNE Dly50msL1
RET
ClearText:
LDI LcdCommand, SetCurAddr
RCALL SendLcdCommand
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdCommand, CurRight
RCALL SendLcdCommand
LDI LcdCommand, MemWrite
RCALL SendLcdCommand
RCALL SendSpace
RET
ClearGraphics:
LDI LcdCommand, SetCurAddr
RCALL SendLcdCommand
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0x10
RCALL SendLcdData
LDI LcdCommand, CurRight
RCALL SendLcdCommand
LDI LcdCommand, MemWrite
RCALL SendLcdCommand
RCALL SendBlank
RET
WrSpace:
LDI LcdData, 0x20
RCALL SendLcdData
RET
WrBlank:
LDI LcdData, 0x00
RCALL SendLcdData
RET
SendSpace:
LDI Dly1, 30
SendSpaceL1:
LDI Dly2, 40
SendSpaceL2:
RCALL WrSpace
DEC Dly2
BRNE SendSpaceL2
DEC Dly1
BRNE SendSpaceL1
RET
SendBlank:
LDI Dly1, 240
SendBlankL1:
LDI Dly2, 40
SendBlankL2:
RCALL WrBlank
DEC Dly2
BRNE SendBlankL2
DEC Dly1
BRNE SendBlankL1
RET
InstructionSet:
LDI LcdCommand, SystemSet
RCALL SendLcdCommand
LDI LcdData, 0x32
RCALL SendLcdData
LDI LcdData, 0x87
RCALL SendLcdData
LDI LcdData, 0x07
RCALL SendLcdData
LDI LcdData, 0x27
RCALL SendLcdData
LDI LcdData, 0x2B
RCALL SendLcdData
LDI LcdData, 0xEF
RCALL SendLcdData
LDI LcdData, 0x28
RCALL SendLcdData
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdCommand, Scroll
RCALL SendLcdCommand
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0xEF
RCALL SendLcdData
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0x10
RCALL SendLcdData
LDI LcdData, 0xEF
RCALL SendLcdData
LDI LcdCommand, Overlay
RCALL SendLcdCommand
LDI LcdData, 0x01
RCALL SendLcdData
LDI LcdCommand, DispOff
RCALL SendLcdCommand
LDI LcdData, 0x00
RCALL SendLcdData
RCALL ClearText
RCALL ClearGraphics
LDI LcdCommand, DispOn
RCALL SendLcdCommand
LDI LcdData, 0x14
RCALL SendLcdData
LDI LcdCommand, SetCurAddr
RCALL SendLcdCommand
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdData, 0x00
RCALL SendLcdData
LDI LcdCommand, CurForm
RCALL SendLcdCommand
LDI LcdData, 0x04
RCALL SendLcdData
LDI LcdData, 0x86
RCALL SendLcdData
RET
ZPtrInit:
LDI ZL, Low (Message<<1)
LDI ZH, High(Message<<1)
RET
LoadProgMem:
LPM LcdData, Z+
RCALL SendLcdData
RET
DisplayData:
LDI Temp, 40
DisplayDataL1:
RCALL LoadProgMem
DEC Temp
BRNE DisplayDataL1
RET
Message:
.DB [".. LCM-3202401 GRAPHIC LCD .."]
|