LCDInfo.com
http://forum.lcdinfo.com/

T6963C 240x128 Parallel port Visual Basic Question
http://forum.lcdinfo.com/viewtopic.php?f=9&t=2390
Page 1 of 1

Author:  de fre [ Wed Jan 09, 2008 10:45 ]
Post subject:  T6963C 240x128 Parallel port Visual Basic Question

hi,
I have a lcd 240x128 and it has a T6963C driver...
(CM240128-1 LCD)

My lcd is connected with the parallel port, and I want to control the lcd with visual basic.
Is this possibel?
Does some 1 has a sample file you can send me?

this is my wiring circuit: http://chrix.woaf.net/hitachi/images/schema.jpg

sry for my bad english, but it would be really Happy if you could help me!

I found a topic for this, but Marc isn't answering on my pm...
http://forum.lcdinfo.com/viewtopic.php?t=127&highlight=

thx, Fre

Author:  _Lone_Wolf_ [ Wed Jan 09, 2008 14:22 ]
Post subject: 

if you can control the port where the lcd is connected, yes then you should be able to do it, exactly how i cant tell thats all i can help

Author:  Nimish [ Mon May 05, 2008 13:47 ]
Post subject:  parallel port access using VB6

You can learn parallel port access using VB6 from this site
http://lcdinterfacing.googlepages.com

Author:  de fre [ Sun May 11, 2008 21:34 ]
Post subject: 

Hi,
I tried to make my one program but it doesn't work

I use the IO.dll file...
(http://www.geekhideout.com/iodll.shtml)

Code:
Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean


this is my test code now:
(I press command button 2 then 4 after that 3, normally something would come on the screen...)
Code:
Private Sub Command2_Click() 'data x as
Call PortOut(&H37A, &HC) '0111 C/D low
Call PortOut(&H37A, &H8) '0011 WR low
Call PortOut(&H378, &H1) 'x = 1 (just a random guess)
Call PortOut(&H37A, &H9) '0010 CE low
Call PortOut(&H37A, &H8) '0011 CE high
Call PortOut(&H37A, &HC) '0111 WR high
End Sub
Private Sub Command3_Click() 'command char
Call PortOut(&H37A, &H4) '1111 C/D high
Call PortOut(&H37A, &H0) '1011 WR low
Call PortOut(&H378, &H55) 'char = u
Call PortOut(&H37A, &H1) '1010 CE low
Call PortOut(&H37A, &H0) '1011 CE high
Call PortOut(&H37A, &HC) '0111 C/D low
End Sub
Private Sub Command4_Click() 'data y as
Call PortOut(&H37A, &HC)
Call PortOut(&H37A, &H8) 'Y = 8 (just a random guess)
Call PortOut(&H378, &H1)
Call PortOut(&H37A, &H9)
Call PortOut(&H37A, &H8)
Call PortOut(&H37A, &HC)
End Sub

'wiring:  CE = 1
'         RD = 14
'         wr = 16
'         c/d = 17



it's pretty easy written cuz its still a test program.

Now a bit information:
To let something pop up on the screen you need to send first a few control signals.


.1 Write data - The data to be written should be set on D0 - 7 and

C/\D taken low,
/WR taken low (/RD should be high)
/CE pulsed low for greater than 80ns

2.2 Read data - C/\D take low,

/RD take low (/WR should be high)
/CE take low
After 150ns read the data on D0-7
/CE take high

2.3 Write Command - To Write a Command - The command should be set on D0 - 7 and

C/\D taken high,
/WR taken low (/RD should be high)
/CE pulsed low for greater than 80ns

2.4 Read Status - To check the Status of the T6963C controller -

C/\D take high,
/RD take low (/WR should be high)
/CE take low
After 150ns read the data on D0-7
/CE take high
Note that there is no such thing as reading an command instruction

To send something on the screen you need to follow this course:

status check
1st data Xadrs 24h
status check
2nd data Yadrs 03h
status check
Command 21h

Source:
http://www.nbb.cornell.edu/neurobio/land/STUDENTPROJ/1999to2000/gurnee/T6963rr.pdf

I think I did exactly what the wrote on the data sheet...
what could be wrong cuz it isn't working?

My lcd works fine, I tested it with lcd studio.

some important things:
rw, ce ,rd are inverted
c/d is right
(tested it with parallel port monitor.)


thx, Fré

If you don't understand something just ask!

(sorry for my bad english)

Author:  de fre [ Mon May 12, 2008 9:15 ]
Post subject: 

some 1 said I need t setup the lcd first...

is it this I need to send?:
SET CONTROL WORD
REGISTERS SETTING

if it is:
http://img186.imageshack.us/img186/9673/setlcdej5.jpg

I don't understand what they mean with D1 and D2???

I just need to send the code on the data line?
and do nothing else with the read writhe commands?

Author:  de fre [ Sat May 17, 2008 16:01 ]
Post subject: 

After reading the datasheet again and again...
I found something wrond in my write data and write command.
Code:
_____________
|RD-CD-WR-CE|
|0 |0 |1 |0 |
|0 |0 |1 |1 |
|----Data---|
|0 |0 |0 |1 |
|0 |0 |1 |1 |
|0 |0 |0 |0 |

RD,WR en CE are inverted by the lpt port, this signals need to come to the driver also inverted. Becous you see on the t6963c datasheet that RD,WR en CE are inverted inputs. C/D is not inverted by the LPT port and I doesn't need to get inverted to the controller port.
I think this table is not wrong, But my lcd isn't still working?
Does anyone of you know what could be rong?(with the table or the code?)

Here is my code that I use:
Code:
Public Sub WriteCtrl(Command As Byte) 'command char
Call PortOut(&H37A, &H6)
Call PortOut(&H37A, &H7)
Call PortOut(&H378, Command)
Call PortOut(&H37A, &H5)
Call PortOut(&H37A, &H7)
Call PortOut(&H37A, &H4)
End Sub
Public Sub WriteData(Data As Byte) 'data x en y as
Call PortOut(&H37A, &H2)
Call PortOut(&H37A, &H3)
Call PortOut(&H378, Data)
Call PortOut(&H37A, &H1)
Call PortOut(&H37A, &H3)
Call PortOut(&H37A, &H0)
End Sub

'wiring:  CE = 1
'         WR = 14
'         c/d = 16 (not inverted)
'         RD = 17

Public Sub CursorPointerSet()
WriteData &H5
WriteData &H3
WriteCtrl &H21
End Sub

Public Sub OffsetRegisterSet()
WriteData &H0
WriteData &H2
WriteCtrl &H22
End Sub


Public Sub AddressPointerSet()
WriteData &H0 'lowerbits from the 8bit char
WriteData &H0 'upperbits from the 8bit char
WriteCtrl &H24
End Sub

Public Sub TextHomeAddress()
WriteData &H0 'Begin adress
WriteData &H0
WriteCtrl &H40 And &H40
End Sub

Public Sub TextAreaSet()
WriteData &H1E '30lijnen
WriteData &H0
WriteCtrl &H41 And &H41
End Sub

Public Sub GrapicHomeAddress()
WriteData &H2 'waar de grafieken moeten beginnen
WriteData &H0
WriteCtrl &H42 And &H42
End Sub

Public Sub GrapicTextAreaSet()
WriteData &H0 'volgende lijn waar de volgende grafiek moet beginnen
WriteData &H14
WriteCtrl &H43
End Sub

Public Sub ModeSet()
WriteCtrl &H80
End Sub

Public Sub DisplayMode()
WriteCtrl &H94
End Sub

Public Sub Settings()
CursorPointerSet
OffsetRegisterSet
TextHomeAddress
TextAreaSet
GrapicHomeAddress
GrapicTextAreaSet
End Sub

Public Sub DisplaySet()
ModeSet
DisplayMode
End Sub

Public Sub Send()
AddressPointerSet 'APS = 00, 00
WriteData &H55 'random char
End Sub

Page 1 of 1 All times are UTC + 2 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/