SED 1300 LCD

Introduction

Here is a web page about the Epson EA-X24017AR modules that use a SED1300 LCD controller. I brought one of these about six years ago, from Greenweld, and it has been sitting in my junk box waiting for some time to try it out. There was no data with the module when I brought it and it has been a bit of a struggle to find any.

Many scans of www.eio.com's discussion groups finally turned up trumps after three years.

The controller is controlled by a standard Z80 style 8 bit bus, and needs a 1Mhz clock, so it is not a very useful display to use with a a PIC16F84, needing some 10 control lines.

Any information in this web page is indicative only. You are expected to establish if it is accurate.

I have only spent a few evenings soldering up the demo board, modifying my PIC16F628 Serial Monitor Program, and writting this web page.

Module Front

Back

Data Sheets

Some data sheets for the SED1300 can be found on the web page: Character based LCD Modules datasheets

ea_x_series.pdf

/EA-Xspec.pdf

My old web page with other LCD information

Circuit

The LCD module is suitablefor 8 bit bus micros, and is really a bit obsolete for a PIC16F628.

It needs to clocked at about 1Mhz, which is connected to ENB.

Here is the circuit of my demo breadboard:

The connections from the PIC16F628 are:

PortA:

A0	- See PIC16F628 Serial Monitor Program
A1	N/C
A2	LCD module /WR Pin 11
A3	LCD module A0  Pin 10


PortB:

B0 - B7 connect to D0 to D7


LCD Module:
-	LCD module A0  Pin 10 connect to 47nF capacitor	connected to ground. Module has 500K pull up resitor. 
ENB	PIC16F628 Clock Out.

PIN	Function / comment
1	Vdd
2	D0
3	D1
4	D2
5	D3
6	D4
7	D5
8	D6
9	D7
10	A0	Address 0
11	/WR
12	/RD
13	ENB	connect 500kHz to 2MHz clock - 
14	/CS	connect to GND
15	/RESET	connect a 47nF capacitor to ground.
16	/Vout 	connect via 20K VR to GND to adjust contrast
17	Vss	
18	not connected

Code

Here is some code to drive it.
	
;--------------------------------------------------------------------------
; Sec 5.12	Routines to Control the Epson SED1300 LCD controller
;--------------------------------------------------------------------------

LCwrtData
	MOVWF	LCbuff

	BANKSEL  TRISA
	MOVLW	0x1		
	MOVWF	TRISA
	CLRF	TRISB
	BANKSEL  PORTA		

	MOVLW	0x0C
	MOVWF	PORTA
	GOTO	LCwrt

LCwrtCmd
	MOVWF	LCbuff

	BANKSEL  TRISA
	MOVLW	0x1		
	MOVWF	TRISA
	CLRF	TRISB
	BANKSEL  PORTA		

	MOVLW	0x04
	MOVWF	PORTA

LCwrt
	

	MOVFW	LCbuff
	MOVWF	PORTB 

	GOTO 	$+1
	
	BCF		PORTA,2
	GOTO	$+1
	GOTO	$+1
	BSF		PORTA,2
	CALL	LCdelay

	RETURN
		
LCdelay
	MOVLW	0xFF	 
LCdelayBit0			
	MOVWF	LCdelayCnt
LCdelayBit1	
	GOTO 	$+1
	DECFSZ	LCdelayCnt		; 1
	GOTO	LCdelayBit1		; 2 clk
	CLRWDT
	RETURN


LCinit
	MOVLW	SED1300systemReset
	CALL	LCwrtCmd
	CALL	LCdelay
	CALL	LCdelay

	MOVLW	SED1300systemReset
	CALL	LCwrtCmd
	CALL	LCdelay
	CALL	LCdelay

	MOVLW	SED1300displayOn
	CALL	LCwrtCmd


	
	MOVLW	SED1300clearDisplayData
	CALL	LCwrtCmd
	CALL	LCdelay
	CALL	LCdelay


	MOVLW	SED1300displayOn
	CALL	LCwrtCmd

	MOVLW	'S'
	CALL	LCwrtData

	MOVLW	'E'
	CALL	LCwrtData

	MOVLW	'D'
	CALL	LCwrtData

	MOVLW	' '
	CALL	LCwrtData
	MOVLW	'1'
	CALL	LCwrtData
	MOVLW	'3'
	CALL	LCwrtData
	MOVLW	'0'
	CALL	LCwrtData
	MOVLW	'0'
	CALL	LCwrtData
	MOVLW	' '
	CALL	LCwrtData
	MOVLW	':'
	CALL	LCwrtData
	
	RETURN
	
Here is the code used in my Serial Monitor Program. See PIC16F628 Serial Monitor Program

I modified my serial Monitor program PIC 16F628 Code SR002.ASM and added extra commands;
Code serial Monitor program PIC 16F628 Code SR002_SED1300.ASM for SED1300 display.

; Serial Commands:-
;
; There are two modes:- Command mode and literal mode.
;
; On power up, after displaying SED 1300 : the display is in literal mode, displays charters straight to display.
;
; A <ESC> toggles between Literal and Command mode
;
; In literal mode the characters sent are put on the display.
; A <CR> clears the display and resets the cursor.
;
; The only Control character interpreted is <CR>. 
;
; In Command Mode the following commands are recognised.
;
; (Do not use spaces, <BS> and <DEL> or cursor keys)
;
; SED1300 LCD controller commands
;	<CR>dDD;		write DD to SED1300 controller as data
;	<CR>cDD; 		write DD to SED1300 controller as command
;	<CR>i;		init chip and display SED1300 : 
;	<ESC>         Toggles back to literal mode
;
; File Regiters
;	<CR>wAADD;		write DD to register AA
;	<CR>rAA;  		read AA and output to serial port
;
;
; EEPROM
;	<CR>pAADD;		write DD to EEPROM register AA
;	<CR>gAA;  		read EEPROM register AA and output to serial port
;
; PRIPHERALS
;	<CR>f;			init PWM
;	; sets up PWM module 
;	W92FF;	- PR2 	 - set PWM period max
;	W1532;	- CCPR1L	 - Duty Cycle / ON period
;	W8600;	- TRISB	 - All Outputs
;	W1204;	- T2CON	 - Set up Tmr 2 
;	W173C;	- CCP1CON - Set up as PWM module.
;	W9265;	- PR2 	 - set PWM period for 10Khz if 4Mhz crystal.
;
;
; SERIAL PORT CONTROL:
;
;	PORT A0 is Serial input
;	PORT A0 is serial output
;
;	usb gmus-03 USB Serial Adapter
;
;	TX  D9 Pin 3 -[4k7]----+-----PA0
;	RX  D9 Pin 2 ----------/
;
;	GND D9 Pin 5 ---------------- 0V
Build this code with Microchip's MPLAB.

Commands

;--------------------------------------------------------------------------
; Sec 5.12	Epson SED1300 command constants
;--------------------------------------------------------------------------
SED1300systemReset			EQU	0x10
SED1300clearDisplayData	EQU	0x01
SED1300cursorAtHome		EQU	0x02
SED1300cursorReturn		EQU	0x03
SED1300setCursoDirectionInc	EQU	0x04
SED1300setCursoDirectionDec	EQU	0x05
SED1300cursorInc		EQU	0x06 ; one char, does not affect ram
SED1300cursorDec		EQU	0x07
SED1300setCursorFont_		EQU	0x08
SED1300setCursorFont5x7		EQU	0x09
SED1300_cursorBlinkOff		EQU	0x0A
SED1300_cursorBlinkOn		EQU	0x0B
SED1300cursorOff		EQU	0x0E

SED1300cursorOn 		EQU	0x0F
SED1300displayOff		EQU	0x0C
SED1300displayOn		EQU	0x0D
SED1300displaySuppressOff	EQU	0x20
SED1300displaySuppressOn	EQU	0x60 ; only works while cursor is on
SED1300setCursorAddress		EQU	0x80 ; + position 0..0x17

Demo bread board

I do not think that I will use this display in any projects, and it will not go beyond this demonstrator.