PDA

View Full Version : SED1335 320x240 graphic LCD



Demon
- 4th May 2006, 03:02
Hi,

I thought I'd share the code I've come up with. As far as I know only Compsys has code for this controller, and it is for a smaller size. Since the setting parameters may not be obvious for some (like me, took me forever to figure this out):

(...figures, the source came out all misaligned in the text file...)

Robert
:)

Demon
- 28th May 2006, 19:14
This is the code and circuitry to control the contrast and backlight via the PIC:

CLEAR
ADCON1 = 7

ASM
@ DEVICE PIC16F877, HS_OSC, WDT_OFF, PWRT_ON, BOD_ON, LVP_OFF, CPD_OFF,
WRT_OFF, DEBUG_OFF, PROTECT_OFF
ENDASM

DEFINE OSC 20

varContrast VAR BYTE
varBacklight VAR BYTE

varContrast = 100
HPWM 1,varContrast,32767

varBacklight = 200
HPWM 2,varBacklight,32767

' Here I have logic to scan 4 input buttons to increase/decrease varBacklight
' and varContast, then I reissue HPWM commands using new values.

END


Robert
:)

mister_e
- 29th May 2006, 15:08
For the contrast line, you don't need any driver between your PIC and the LCD, a simple resistor in serie will do the job.... let's say in a range of 500 ohms - 2K.

Demon
- 29th May 2006, 15:49
Salut Steve! Donne-moi de tes nouvelles de ton voyage.

How will you adjust the contrast using just a resistor?

I wanted it so that both the contrast and backlight could be adjusted from 4 UP/DOWN buttons. Using transistors and HPWM was the cheapest way I could come up with. I now have a range of 256 steps for both controls.

Robert
:)

mister_e
- 29th May 2006, 15:53
It will work the same way for contrast. You must keep your transistor for the backlight. For contrast, use HPWM and a in-serie resistor from your PIC to your LCD VO line. If this input don't need negative voltage, i have to work AS IS. Maybe you'll need to revert the values (0-255 to 255-0) but that's not a big deal.

Demon
- 29th May 2006, 15:59
I used a 25K pot at first to get the contrast working:

- Vss at one end with 0V.
- Vout at the other end with -30V (built-in negative voltage).
- V0 at the wiper.

For a good contrast, the V0 wiper varied from -20V to -24V, with -22V for a good setting.

Robert
:)

mister_e
- 29th May 2006, 16:01
DOH! sorry... always read the Datasheet first, always read the schematic correctly too (Vout) Tabarnak!

Where's the whip?

mister_e
- 29th May 2006, 16:16
maybe another solution... maybe, if not, broke my legs... again :)

try it first. Place a 10K resistor between Vout and VO, on Vo place a 1K resistor in serie. Now send the other resistor end to 5 Volt. What happen with the contrast?

If i'm not dumb it should do something. If so, in serie with the other 1K resistor, place a diode in serie. Anode to PIC, cathode to resistor end. Is it working? I have some doubt on that so far... -voltage against 0V and 5 Volt+diode plah plah. I really need to return on a bench... feel rusty here!

Demon
- 29th May 2006, 16:26
$99 USD per LCD.

I can't afford to do magic shows with these suckers.

Robert
:)

mister_e
- 29th May 2006, 16:34
anyway, forget me on the previous, it will work yeah but not on the range you said... your method is good, keep it.

mister_e
- 29th May 2006, 16:44
Nice job you did! Any spare MAX232 output on your board?

Demon
- 3rd June 2006, 17:28
I'm not using any MAX232...?

Why do you ask that?

Robert
:)

mister_e
- 3rd June 2006, 18:37
do a test... you'll see why sometime a spare MAX232 transmitter can be usefull. Place your voltmeter on a transmitter output.... set the transmitter input to GND, then to 5Volt. What do you get on your Voltmeter?

Demon
- 5th June 2006, 03:39
Sorry Steve, no time for a test, especially when I don't know what you want me to test. :) The few hours I have are spent trying to finish this never-ending project.

Robert
:)

Demon
- 5th June 2006, 03:42
SendData:
pinA0 = 0
pinData = varByte
pinWR = 0
@ nop ' <--- ADD
pinWR = 1
return

SendCommand:
pinA0 = 1
pinData = varCommand
pinWR = 0
@ nop ' <--- ADD
pinWR = 1
return


The [@ NOP] turns out to be very important for high-speed display, it corrects a timing issue. Without it, there is a sort of 'echo' on the LCD when you display characters extremely fast (my initial tests were keyboard-type speeds).

Robert
:)

mister_e
- 5th June 2006, 04:33
Is it still the game project we already talked about about a year ago but just grow with the age :)

Demon
- 5th June 2006, 13:04
Yup, same project, but getting more complex as I learn more. Now I'm using a PIC 18F4550 at 48MHz with a high-speed USB link to a PC. I no longer process the game text on the PIC, the mcu is now used exclusively for I/O to and from the LCD and buttons, nothing more. VB6 will manage a database PC-side.

Robert
:)