Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[51] Problem in t6963c with 8051

Status
Not open for further replies.

satya_jyoti

Newbie level 4
Joined
Jun 7, 2017
Messages
6
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
138
hello i am interfacing t6963c with at89s52 with external character mode (value is 88h)
using display mode text on ,graphic off,cursor off(value 94h)
all the control pins except fs (fs is grounded) i am controlling through software
for contrast control i have connected one pin of variable resister to ground,another pin is connected to the vee pin of glcd and the output pin of variable resister is connected to the v0 pin of glcd
i have wrote the code for display a diagonal line at the top left corner
my text home address is 0000h and graphic home address is 0200h
the area is 1eh for both text and graphic
my offset register data is 001fh
my address pointer data for cgram starts with 0f800h
i am using auto write
after writing 1 byte data
i am stoping auto write by the command b2h
then i am setting the address pointer data with 0000h,since i have to display my data at top left corner of glcd
after address pointer set i am providing the character code 00h,since i am using external character generator mode
when i am writing data ,i am giving the following data cd=0,wr=0,rd=1,ce=0,delay of 7us THEN CE=1
when i am writing COMMAND ,i am giving the following data cd=1,wr=0,rd=1,ce=0,delay of 7us THEN CE=1
between each byte i am checking the status
for status checking i am giving the following value cd=0,rd=0,wr=1,ce=0,then delay of 2us then checking the first two bit of the data line i.e db0 and db1 ,checking the same two bit continuously until these two bits are became one
and during auto mode ,i am checking the status of db3 until it became one
after all this also my data is not showing in glcd except
only one time i have seen my data but it covered most part of the screen and remaining part were covered with garbage which was irrespective of my data and it was displayed only once after that nothing is showing except the pixels

what might be the problem and how my data will be shown
 

Re: problem in t6963c with 8051

Hi,

unable to follow your description.

Why don´t you show:
* a schematic
* your code
* a timing diagram
* a scope picture

****
What have you done to find the problem?

I recommend to write a small piece of code - then verify it - then write the next piece of code ... and verify it ... and so on
And for sure you need to have the T6963C datasheet by hand - all the time you write the interface code.

Klaus
 

Re: problem in t6963c with 8051

SIR THIS IS MY CODE
NOW CAN U PLEASE TELL ME WHAT MISTAKE I HAVE DONE,FOR WHICH MY DATA IS NOT DISPLAYING


Code ASM - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
//////////////////SYMBOL DECLARATION///////////////////////////////////////////////////   
 
           RESET          BIT  P1.0                                                          
           CD1            BIT  P1.1     
           RD1            BIT  P1.2
           WR1            BIT  P1.3
       FS             BIT  P1.4
       CE             BIT  P1.5                 
           DATACOMMAD     EQU  P3
           TXTHMADDRS1    EQU  00H
           TXTHMADDRS2    EQU  00H
           TXTHMADDRSCMD  EQU  40H
       GRPHHMADDRS1   EQU  00H
           GRPHHMADDRS2   EQU  20H
           GRPHHMADDRSCMD EQU  42H   
           AREA1              EQU  1EH
           AREA2          EQU  00H
           TXTAREACMD     EQU  41H
           GRPHAREACMD    EQU  43H
           MODESET            EQU  88H
           DATA2          EQU  00H
           DATA1          EQU  1FH
           OFFSET         EQU  22H
           ADDRSPNTR      EQU  24H
           DISPLAYMODE    EQU  94H
;========================PRG START=====================================================            
                          ORG  00H
                                          CLR   RESET                            ;INIITIALIZATION OF LCD
                                          LCALL DELAY1MS                         ;KEEP THE RESET PIN LOW FOR 1ms
                                          SETB  RESET                            ;RELEASE THE RESET PIN 
                                          CLR   FS                               ;THE VALUE OF FONT SELECT IS 0(IF FS=1, FONT SIZE IS 6*8;IF FS=0 ,FONT SIZE IS 8*8)
                                          LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
                                           
/////////////////////////GRAPHIC AND TEXT HOME ADDRESS SET///////////////////////////////////////////////
 
 
;THIS COMMAND DEFINES  FROM WHICH MEMORY LOCATION GRAPHIC AND TEXT DATA WILL BE SAVED IN EXTERNAL RAM  
;BOTH GRAPHIC AND TEXT HOME ADDRESS SET HAS TWO DATA BYTE AND A COMMAND BYTE
;FIRST DATA BYTE IS THE UPPER ADDRESS 
;SECOND DATA BYTE IS THE LOWER ADDRESS
;40H IS THE COMMAND BYTE FOR TEXT HOME ADDRESS SET
;42H IS THE COMMAND BYTE FOR GRAPHIC HOME ADDRESS SET
;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED 
 
 
;==================================TEXT HOME ADDRESS SET================================================
                                           MOV   DATACOMMAD,#TXTHMADDRS1          ;FIRST DATABYTE FOR TEXT HOME ADDRESS
                                           LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                           LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
                                           MOV   DATACOMMAD,#TXTHMADDRS2          ;SECOND DATABYTE FOR TEXT HOME ADDRESS 
                                           LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                           LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                       MOV   DATACOMMAD,#TXTHMADDRSCMD        ;COMMAND BYTE FOR TEXT HOME ADDRESS
                                           LCALL WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
                                           LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
;==========================GRAPHIC HOME ADDRESS SET======================================================
 
 
 
                                           MOV   DATACOMMAD,#GRPHHMADDRS1         ;FIRST DATABYTE FOR GRAPHIC HOME ADDRESS
                                           LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                           LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
                                           MOV   DATACOMMAD,#GRPHHMADDRS2         ;SECOND DATABYTE FOR GRAPHIC HOME ADDRESS
                                           LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
                                           LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
                                           MOV   DATACOMMAD,#GRPHHMADDRSCMD       ;COMMAND BYTE FOR GRAPHIC HOME ADDRESS
                                           LCALL WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
                                           LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                           
///////////////////////////TEXT AND GRAPHIC AREA SET\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;IT DEFINE IN A SINGLE LINE HOW MANY COLUMN WILL BE USED FOR DATA DISPLAY 
;FOR BOTH GRAPHIC AND TEXT AREA SET HAS TWO DATA BYTE AND A COMMAND BYTE
;FIRST DATA BYTE DECIDES AFTER HOW MANY COLUMN NEXT LINE HAS TO BE STARTED 
;LET THE VALUE OF FIRST DATA BYTE IS #1EH,THEN AFTER 32 COLUMNS NEXT LINE WILL BE STARTED
;SECOND DATA BYTE IS ALWAYS 00H
;41H IS THE COMMAND BYTE FOR TEXT AREA SET
;43H IS THE COMMAND BYTE FOR GRAPHIC AREA SET
;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED 
 
 
 
 
;==================================TEXT AREA SET======================================================
                                          
                                          MOV    DATACOMMAD,#AREA1                ;FIRST DATABYTE FOR TEXT AREA
                                          LCALL  WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                          LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                          MOV    DATACOMMAD,#AREA2                ;SECOND DATABYTE FOR TEXT AREA
                                          LCALL  WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                          LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                          MOV    DATACOMMAD,#TXTAREACMD           ;COMMAND BYTE FOR TEXT AREA
                                          LCALL  WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
                                          LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
;===========================GRAPHIC AREA SET==============================================================
;
                                          MOV    DATACOMMAD,#AREA1                ;FIRST DATABYTE FOR GRAPHIC AREA
                                          LCALL  WRITEDATA                            ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                          LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                          MOV    DATACOMMAD,#AREA2                ;SECOND DATABYTE FOR GRAPHIC AREA
                                          LCALL  WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
                                          LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                          MOV    DATACOMMAD,#GRPHAREACMD          ;COMMAND BYTE FOR GRAPHIC AREA
                                          LCALL  WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
                                          LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
////////////////////////////////////////////CURSOR SET/////////////////////////////////////////////////////////////                                       
                                          
                                         ;MOV    DATACOMMAD,#00H
                                         ;LCALL  WRITEDATA
                                         ;LCALL  STATUSCHECK
                                         ;MOV    DATACOMMAD,#00H
                                         ;LCALL  WRITEDATA
                                         ;LCALL  STATUSCHECK
                                         ;MOV    DATACOMMAD,#21H
                                         ;LCALL  WRITECOMMAND
                                         ;LCALL  STATUSCHECK
                                         ;MOV    DATACOMMAD,#0A0H
                                         ;LCALL  WRITECOMMAND
                                         ;LCALL  STATUSCHECK
                                         ;MOV    DATACOMMAD,#92H
                     ;LCALL  WRITECOMMAND
                                         ;LCALL  STATUSCHECK
                                         ;MOV    DATACOMMAD,#91H
                                         ;LCALL  WRITECOMMAND
                                         ;LCALL  STATUSCHECK                        ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
                                         
////////////////////////////////////////MODE SET////////////////////////////////////////////////////////////
 
 
;THIS WILL DEFINE HOW A TEXT OR GRAPHIC DATA TO BE DISPLAYED
;IT ALSO DEFINE WHETHER THE CGRAM CAN BE USED IN INTERNAL CHARACTER GENERATOR MODE OR EXTERNAL CHARACTER GENRATOR MODE
;IN INTERNAL CHARACTER GENRATOR MODE CHARACTER CODE 00H TO 7FH ARE DEDICATED FOR BUILT IN CHARCTER &80H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER
;BUT IN EXTERNAL CHARATER GENERATOR MODE ALL CHARACTER CODE i.e FROM 00H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER
;MODESET REQUIRED ONLY ONE COMMAND BYTE
;THE HIGHER NIBBLE OF THIS COMMAND BYTE IS FIXED,ONLY THE BITS OF LOWER NIBBLE DECIDES IN WHICH MODE DEVICE WILL BE OPERATED
;BY MODE SET COMMAND FOLLOWING MODES CAN BE SET ;OR MODE(1000X000B)
                                                ;AND MODE(1000X011B)
                                                                                            ;EXOR MODE(1000X001B)
                                                                                                ;TEXT ATTRIBUTE MODE(1000X100B)
                                                                                                ;INTERNAL CHARACTER GENERATOR MODE(100000XXXB)
                                                                                                ;EXTERNAL CHARACTER GENERATOR MODE(10001XXXB)
;IN THE ABOVE ,COMMAND BYTE OF THEIR RESPECTIVE MODE THE  VALUE (EITHER 0 OR 1)OF THE BIT NAMED X DOESNOT AFFECT THE PARTICULAR MODE SET
 
 
                                          MOV    DATACOMMAD,#MODESET                ;COMMAND BYTE FOR  MODE SET
                                          LCALL  WRITECOMMAND                       ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
                                          LCALL  STATUSCHECK                        ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
/////////////////////////////////////DISPLAY MODE SET///////////////////////////////////////////////////////
 
 
                                          
                                          MOV    DATACOMMAD,#DISPLAYMODE            ;COMMAND BYTE FOR DISPLAY MODE
                                          LCALL  WRITECOMMAND                       ;SUBROUTINE CALL FOR COMMAND WRITE FUNTION
                                          LCALL  STATUSCHECK                        ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
/////////////////////////////////OFFSET REGISTER SET////////////////////////////////////////////////////////                                     
 
                      MOV    R2,#8H
                                          MOV    DATACOMMAD,#DATA1                  
                                          LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
                                          MOV    DATACOMMAD,#DATA2
                                          LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
                                          MOV    DATACOMMAD,#OFFSET
                                          LCALL  WRITECOMMAND
                                          LCALL  STATUSCHECK
/////////////////////////////////ADDRESS POINTER SET/////////////////////////////////////////////////////////                                     
                                          MOV    DATACOMMAD,#00H
                      LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
                      MOV    DATACOMMAD,#0f8H
                      LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
                      MOV    DATACOMMAD,#ADDRSPNTR
                      LCALL  WRITECOMMAND
                                          LCALL  STATUSCHECK
////////////////////////////AUTO WRITE/////////////////////////////////////////////////////////////////////                                       
                      MOV    DATACOMMAD,#0B0H
                      LCALL  WRITECOMMAND
                                          LCALL  STATUSCHECK1
/////////////////////////////USER DEFINED DATA//////////////////////////////////////////////////////////////                                      
                      MOV    A,#00000001B
                      CLR    C
X:                    MOV    DATACOMMAD,A
                                          LCALL  WRITEDATA
                                                                                  
                                          LCALL  STATUSCHECK1
                                          RLC    A
                                          DJNZ   R2,X
////////////////////////////AUTO WRITE STOP///////////////////////////////////////////////////////////////////                                    
                                          MOV    DATACOMMAD,#0B2H
                                          LCALL  WRITECOMMAND
                                          LCALL  STATUSCHECK1
                                         ;LCALL  DELAY70MS
//////////////////////////ADDRESS POINTER SET //////////////////////////////////////////////////////////////
;DATA1 AND DATA2 IS SELECTED FROM TEXT HOME ADDRESS 
;I HAVE SELECTED 00H AND 00H SINCE I HAVE TO DISPLAY DATA AT TOP LEFT CORNER
                      MOV    DATACOMMAD,#00H
                                          LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
                                          MOV    DATACOMMAD,#00H
                                          LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
                                          MOV    DATACOMMAD,#ADDRSPNTR
                                          LCALL  WRITECOMMAND
                                          LCALL  STATUSCHECK  
/////////////////////////////CHARACTER CODE TO BE DISPLAYED/////////////////////////////////////////////////////                                          
                                          MOV    DATACOMMAD,#00H
                                          LCALL  WRITEDATA
                                          LCALL  STATUSCHECK
        //////////////////////////DATA WRITE AND ADP NONVARIABLE/////////////////////////////////////////////////                                 
                                          MOV    DATACOMMAD,#0C4H
                                          LCALL  WRITECOMMAND
                                          LCALL  STATUSCHECK
;===============================================================================================================
 
                                         
                                          sjmp $
                                          
                                          
/////////////////////////////////////SUBROUTINES////////////////////////////////////////////////////////////                                      
;=========================DATA WRITE FUNCTION UBROUTINE====================================================                                       
WRITEDATA:            CLR    CD1
                      CLR    WR1
                              SETB   RD1
                                          CLR    CE
                              LCALL  DELAY1
                                          SETB  CE
                              RET
;=========================COMMAND WRITE FUNCTION SUBROUTINE==================================================                                     
WRITECOMMAND:         SETB   CD1
                      CLR    WR1
                                  SETB   RD1
                                          CLR    CE
                                  LCALL  DELAY1
                                          SETB  CE
                                  RET
STATUSCHECK:          SETB   CD1
                                          CLR    RD1
                                          SETB   WR1
                                          CLR    CE
                                          NOP
                                          NOP
                                          MOV   A,DATACOMMAD
X123:                 ANL A,#00000011B
                                          CJNE A,#00000011B,STATUS
                                          SJMP RETURN
STATUS:
                                          SJMP X123
RETURN:               SETB CE
                                          RET
STATUSCHECK1:         SETB   CD1
                                          CLR    RD1
                                          SETB   WR1
                                          CLR    CE
                                          LCALL  DELAY1
X567:                 MOV   A,DATACOMMAD
                                          ANL A,#00001000B
                                          CJNE A,#00001000B,STATUS1
                                          SJMP RETURN1
STATUS1:
                                          SJMP X567
RETURN1:              SETB CE
                                          RET
DELAY1:               NOP
                      NOP
                      NOP
                      NOP                                        
                                          NOP
                                          NOP
                                          RET
DELAY:                NOP
                      NOP
                      RET
DELAY1MS:             MOV    TMOD,#10H
                                          MOV    TH1,#0fcH
                                          MOV    TL1,#66H
                                          SETB   TR1
CHECK1:               JNB    TF1,CHECK1
                                          CLR    TF1
                                          CLR    TR1
                                          RET
DELAY70MS:            MOV    TMOD,#10H
                                          MOV    TH1,#00H
                                          MOV    TL1,#0H
                                          SETB   TR1
CHECK2:               JNB    TF1,CHECK1
                                          CLR    TF1
                                          CLR    TR1
                                          RET
                                          END

 
Last edited by a moderator:

Re: problem in t6963c with 8051

Hi,

Don't post informations piece by piece.
I'll come back when the informations are almost complete.

Klaus
 

Re: problem in t6963c with 8051

GLCD.jpg

sir above is my schematic
i am using keil microvision IDE
 

Re: problem in t6963c with 8051

Codes wrote in assembly are harder to debug, particularly when parameters are not well documented. You added a lot of comments in the procedures, but did not explain the choice of the LCD command arguments. I would recommend you have a look in some implementations in C to check if you have added all steps necessary. I have used T6963c for 8051 and its driver is not difficult, at least in C.
 

Re: problem in t6963c with 8051

Hi,

did you verify it on your own?

Schematic issues:
* missing power supply bulk capacitor
* missing power supply fast ceramic capacitors at each IC VCC pin.

Check XTAL connections and clock settings
Check RST connection

****
Code vs. Schematic:

None of your code port1 declarations does match with your schematic.

Klaus
 

Re: problem in t6963c with 8051

sry sir
for repeating my message
sir since i have used development board and connected glcd externally that's why i have provided only glcd connection with mcu
sry for the declaration of port1 and scematic
sir i am sending the modified code again
Code:
//////////////////SYMBOL DECLARATION///////////////////////////////////////////////////   

	                                                           
	   WR1            BIT  P1.0	
	   RD1            BIT  P1.1
	   CE            BIT  P1.2
       
       CD1             BIT  P1.3	
RESET          BIT  P1.4 		   
	   DATACOMMAD     EQU  P3
	   TXTHMADDRS1    EQU  00H
	   TXTHMADDRS2    EQU  00H
	   TXTHMADDRSCMD  EQU  40H
       GRPHHMADDRS1   EQU  00H
	   GRPHHMADDRS2   EQU  20H
	   GRPHHMADDRSCMD EQU  42H   
	   AREA1	      EQU  1EH
	   AREA2          EQU  00H
	   TXTAREACMD     EQU  41H
	   GRPHAREACMD    EQU  43H
	   MODESET	      EQU  88H
       OFFSETDATA2    EQU  00H
       OFFSETDATA1    EQU  1FH
	   OFFSET         EQU  22H
 	   A_POINTERDATA1 EQU  30H
       A_POINTERDATA2 EQU  31H	
	   ADDRSPNTR      EQU  24H
	   DISPLAYMODE    EQU  94H
;////////////////////////////////////CODE START//////////////////////////////////////////////////////		   
	                  ORG  00H
					  CLR   RESET                            ;INIITIALIZATION OF LCD
					  LCALL DELAY1MS                         ;KEEP THE RESET PIN LOW FOR 1ms
					  SETB  RESET                            ;RELEASE THE RESET PIN 
					  CLR   FS                               ;THE VALUE OF FONT SELECT IS 0(IF FS=1, FONT SIZE IS 6*8;IF FS=0 ,FONT SIZE IS 8*8)
					  LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
					   
/////////////////////////GRAPHIC AND TEXT HOME ADDRESS SET///////////////////////////////////////////////


;THIS COMMAND DEFINES  FROM WHICH MEMORY LOCATION GRAPHIC AND TEXT DATA WILL BE SAVED IN EXTERNAL RAM  
;BOTH GRAPHIC AND TEXT HOME ADDRESS SET HAS TWO DATA BYTE AND A COMMAND BYTE
;FIRST DATA BYTE IS THE UPPER ADDRESS 
;SECOND DATA BYTE IS THE LOWER ADDRESS
;40H IS THE COMMAND BYTE FOR TEXT HOME ADDRESS SET
;42H IS THE COMMAND BYTE FOR GRAPHIC HOME ADDRESS SET
;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED 


;==================================TEXT HOME ADDRESS SET================================================
TXT_HM_ADDRESS_SET:	   MOV   DATACOMMAD,#TXTHMADDRS1          ;FIRST DATABYTE FOR TEXT HOME ADDRESS
					   LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					   LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
					   MOV   DATACOMMAD,#TXTHMADDRS2          ;SECOND DATABYTE FOR TEXT HOME ADDRESS 
					   LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					   LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
				       MOV   DATACOMMAD,#TXTHMADDRSCMD        ;COMMAND BYTE FOR TEXT HOME ADDRESS
					   LCALL WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
					   LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
;==========================GRAPHIC HOME ADDRESS SET======================================================



GRPH_HM_ADDRESS_SET:   MOV   DATACOMMAD,#GRPHHMADDRS1         ;FIRST DATABYTE FOR GRAPHIC HOME ADDRESS
					   LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					   LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
					   MOV   DATACOMMAD,#GRPHHMADDRS2         ;SECOND DATABYTE FOR GRAPHIC HOME ADDRESS
					   LCALL WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION
					   LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT 
					   MOV   DATACOMMAD,#GRPHHMADDRSCMD       ;COMMAND BYTE FOR GRAPHIC HOME ADDRESS
					   LCALL WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
					   LCALL STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					   
///////////////////////////TEXT AND GRAPHIC AREA SET\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;IT DEFINE IN A SINGLE LINE HOW MANY COLUMN WILL BE USED FOR DATA DISPLAY 
;FOR BOTH GRAPHIC AND TEXT AREA SET HAS TWO DATA BYTE AND A COMMAND BYTE
;FIRST DATA BYTE DECIDES AFTER HOW MANY COLUMN NEXT LINE HAS TO BE STARTED 
;LET THE VALUE OF FIRST DATA BYTE IS #1EH,THEN AFTER 32 COLUMNS NEXT LINE WILL BE STARTED
;SECOND DATA BYTE IS ALWAYS 00H
;41H IS THE COMMAND BYTE FOR TEXT AREA SET
;43H IS THE COMMAND BYTE FOR GRAPHIC AREA SET
;BETWEEN EACH BYTE WRITE/READ STATUS HAS TO BE CHECKED 




;==================================TEXT AREA SET======================================================
TEXTAREASET:		  MOV    DATACOMMAD,#AREA1                ;FIRST DATABYTE FOR TEXT AREA
					  LCALL  WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					  LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					  MOV    DATACOMMAD,#AREA2                ;SECOND DATABYTE FOR TEXT AREA
					  LCALL  WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					  LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					  MOV    DATACOMMAD,#TXTAREACMD           ;COMMAND BYTE FOR TEXT AREA
					  LCALL  WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
					  LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
;===========================GRAPHIC AREA SET==============================================================

GRAPHICAREASET:		  MOV    DATACOMMAD,#AREA1                ;FIRST DATABYTE FOR GRAPHIC AREA
					  LCALL  WRITEDATA	                      ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					  LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					  MOV    DATACOMMAD,#AREA2                ;SECOND DATABYTE FOR GRAPHIC AREA
					  LCALL  WRITEDATA                        ;SUBROUTINE CALL FOR DATA WRITE FUNCTION 
					  LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					  MOV    DATACOMMAD,#GRPHAREACMD          ;COMMAND BYTE FOR GRAPHIC AREA
					  LCALL  WRITECOMMAND                     ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
					  LCALL  STATUSCHECK                      ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
////////////////////////////////////////////CURSOR SET/////////////////////////////////////////////////////////////					  
					  
					 ;MOV    DATACOMMAD,#00H
					 ;LCALL  WRITEDATA
					 ;LCALL  STATUSCHECK
					 ;MOV    DATACOMMAD,#00H
					 ;LCALL  WRITEDATA
					 ;LCALL  STATUSCHECK
					 ;MOV    DATACOMMAD,#21H
					 ;LCALL  WRITECOMMAND
					 ;LCALL  STATUSCHECK
					 ;MOV    DATACOMMAD,#0A0H
					 ;LCALL  WRITECOMMAND
					 ;LCALL  STATUSCHECK
					 ;MOV    DATACOMMAD,#92H
                     ;LCALL  WRITECOMMAND
					 ;LCALL  STATUSCHECK
					 ;MOV    DATACOMMAD,#91H
					 ;LCALL  WRITECOMMAND
					 ;LCALL  STATUSCHECK                        ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					 
////////////////////////////////////////MODE SET////////////////////////////////////////////////////////////


;THIS WILL DEFINE HOW A TEXT OR GRAPHIC DATA TO BE DISPLAYED
;IT ALSO DEFINE WHETHER THE CGRAM CAN BE USED IN INTERNAL CHARACTER GENERATOR MODE OR EXTERNAL CHARACTER GENRATOR MODE
;IN INTERNAL CHARACTER GENRATOR MODE CHARACTER CODE 00H TO 7FH ARE DEDICATED FOR BUILT IN CHARCTER &80H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER
;BUT IN EXTERNAL CHARATER GENERATOR MODE ALL CHARACTER CODE i.e FROM 00H TO 0FFH ARE DEDICATED FOR USER DEFINED CHARACTER
;MODESET REQUIRED ONLY ONE COMMAND BYTE
;THE HIGHER NIBBLE OF THIS COMMAND BYTE IS FIXED,ONLY THE BITS OF LOWER NIBBLE DECIDES IN WHICH MODE DEVICE WILL BE OPERATED
;BY MODE SET COMMAND FOLLOWING MODES CAN BE SET ;OR MODE(1000X000B)
                                                ;AND MODE(1000X011B)
											    ;EXOR MODE(1000X001B)
												;TEXT ATTRIBUTE MODE(1000X100B)
												;INTERNAL CHARACTER GENERATOR MODE(100000XXXB)
												;EXTERNAL CHARACTER GENERATOR MODE(10001XXXB)
;IN THE ABOVE ,COMMAND BYTE OF THEIR RESPECTIVE MODE ,THE  VALUE (EITHER 0 OR 1)OF THE BIT NAMED X DOESNOT AFFECT THE PARTICULAR MODE SET


MODE_SET:			  MOV    DATACOMMAD,#MODESET                ;COMMAND BYTE FOR  MODE SET
					  LCALL  WRITECOMMAND                       ;SUBROUTINE CALL FOR COMMAND WRITE FUNCTION
					  LCALL  STATUSCHECK                        ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
					  
/////////////////////////////////////DISPLAY MODE SET///////////////////////////////////////////////////////


;BY THIS COMMAND FOLLOWING THING CAN BE CONTROLLED;DISPLAY ON/OFF(10010000B=ON)
                                                  ;CURSOR ON/OFF(1001XX1XB=ON,1001XX0XB=OFF)
                                                  ;CURSOR BLINK ON/OFF(1001XX11B=ON,1001XX10B=OFF))
												  ;TEXT AND GRAPHIC ON/OFF(100101XX=TXT ON & GRPH OFF,100110XX=TXT OFF & GRPH OFF)
												  ;BOTH TEXT AND GRAPHIC ON(100111XX=BOTH ON)
;AT A  TIME BOTH TEXT AND GRAPHIC CAN BE MADE ON BY THIS COMMAND
;THIS HAS ONLY ONE COMMAND BYTE,NO DATA BYTE
;IN THE ABOVE,  VALUE(0 0R 1)OF  THE BIT NAMED X IN THE COMMAND BYTES DOESNOT AFFECT THEIR RESPECTIVE MODE SET
;


					  
DISP_MODE_SET:		  MOV    DATACOMMAD,#DISPLAYMODE            ;COMMAND BYTE FOR DISPLAY MODE
					  LCALL  WRITECOMMAND                       ;SUBROUTINE CALL FOR COMMAND WRITE FUNTION
					  LCALL  STATUSCHECK                        ;STATUS CHECK(STA0&STA1),WHETHER BUSY OR NOT
/////////////////////////////////OFFSET REGISTER SET////////////////////////////////////////////////////////					 

OFFST_RGSTR_SET:      MOV    R2,#8H
					  MOV    DATACOMMAD,# OFFSETDATA1                  
					  LCALL  WRITEDATA
					  LCALL  STATUSCHECK
					  MOV    DATACOMMAD,#DATA2
					  LCALL  WRITEDATA
					  LCALL  STATUSCHECK
					  MOV    DATACOMMAD,#OFFSETDATA2
					  LCALL  WRITECOMMAND
					  LCALL  STATUSCHECK
/////////////////////////////////ADDRESS POINTER SET/////////////////////////////////////////////////////////					  
					  MOV    A_POINTERDATA1,#00H
					  MOV    DATACOMMAD,A_POINTERDATA1
                      LCALL  WRITEDATA
					  LCALL  STATUSCHECK
                      MOV    A_POINTERDATA1,#0F8H
					  MOV    DATACOMMAD,A_POINTERDATA1
                      LCALL  WRITEDATA
					  LCALL  STATUSCHECK
                      MOV    DATACOMMAD,#ADDRSPNTR
                      LCALL  WRITECOMMAND
					  LCALL  STATUSCHECK
////////////////////////////AUTO WRITE/////////////////////////////////////////////////////////////////////					  
                      MOV    DATACOMMAD,#0B0H
                      LCALL  WRITECOMMAND
					  LCALL  STATUSCHECK1
/////////////////////////////USER DEFINED DATA//////////////////////////////////////////////////////////////					  
                      MOV    A,#00000001B
                      CLR    C
X:                    MOV    DATACOMMAD,A
					  LCALL  WRITEDATA
					  LCALL  STATUSCHECK1
					  RLC    A
					  DJNZ   R2,X
////////////////////////////AUTO WRITE STOP///////////////////////////////////////////////////////////////////					  
					  MOV    DATACOMMAD,#0B2H
					  LCALL  WRITECOMMAND
					  LCALL  STATUSCHECK1
					 ;LCALL  DELAY70MS
//////////////////////////ADDRESS POINTER SET //////////////////////////////////////////////////////////////
                      MOV    DATACOMMAD,#00H
					  LCALL  WRITEDATA
					  LCALL  STATUSCHECK
					  MOV    DATACOMMAD,#00H
					  LCALL  WRITEDATA
					  LCALL  STATUSCHECK
					  MOV    DATACOMMAD,#ADDRSPNTR
					  LCALL  WRITECOMMAND
					  LCALL  STATUSCHECK  
/////////////////////////////CHARACTER CODE TO BE DISPLAYED/////////////////////////////////////////////////////					  
					  MOV    DATACOMMAD,#00H
					  LCALL  WRITEDATA
					  LCALL  STATUSCHECK
//////////////////////////////DATA WRITE AND ADP NONVARIABLE/////////////////////////////////////////////////				  
					  MOV    DATACOMMAD,#0C4H
					  LCALL  WRITECOMMAND
					  LCALL  STATUSCHECK
;===============================================================================================================

					 
					  sjmp $
					  
					  
/////////////////////////////////////SUBROUTINES////////////////////////////////////////////////////////////					  
;=========================DATA WRITE FUNCTION UBROUTINE====================================================					  
WRITEDATA:            CLR    CD1
                      CLR    WR1
		              SETB   RD1
					  CLR    CE
		              LCALL  DELAY1
					  SETB  CE
		              RET
;=========================COMMAND WRITE FUNCTION SUBROUTINE==================================================					  
WRITECOMMAND:         SETB   CD1
                      CLR    WR1
			          SETB   RD1
					  CLR    CE
			          LCALL  DELAY1
					  SETB  CE
			          RET
STATUSCHECK:          SETB   CD1
					  CLR    RD1
					  SETB   WR1
					  CLR    CE
					  NOP
					  NOP
					  MOV   A,DATACOMMAD
X123:                 ANL A,#00000011B
					  CJNE A,#00000011B,STATUS
					  SJMP RETURN
STATUS:
					  SJMP X123
RETURN:               SETB CE
					  RET
STATUSCHECK1:         SETB   CD1
					  CLR    RD1
					  SETB   WR1
					  CLR    CE
					  LCALL  DELAY1
X567:                 MOV   A,DATACOMMAD
					  ANL A,#00001000B
					  CJNE A,#00001000B,STATUS1
					  SJMP RETURN1
STATUS1:
					  SJMP X567
RETURN1:              SETB CE
					  RET
DELAY1:               NOP
                      NOP
                      NOP
                      NOP					 
					  NOP
					  NOP
					  RET
DELAY:                NOP
                      NOP
                      RET
DELAY1MS:             MOV    TMOD,#10H
					  MOV    TH1,#0fcH
					  MOV    TL1,#66H
					  SETB   TR1
CHECK1:               JNB    TF1,CHECK1
					  CLR    TF1
					  CLR    TR1
					  RET
DELAY70MS:            MOV    TMOD,#10H
					  MOV    TH1,#00H
					  MOV    TL1,#0H
					  SETB   TR1
CHECK2:               JNB    TF1,CHECK1
					  CLR    TF1
					  CLR    TR1
					  RET
					  END

- - - Updated - - -

sir please check the code and tell me where i have done the mistake within the code
 
Last edited by a moderator:

Re: problem in t6963c with 8051

hello sir i am using external character mode ( i.e all the 256 byte of character generator area is user defined )during interfacing t6963c ic compatible glcd with mcu

but during the interfacing all the character code i have generated are displaying unwantedly

means if i have created the code for 0,2,1,3,4,5,6,8,9 and i want to display only 2,3,4 on my glcd screen

but it is displaying all the above number i.e 0,1,2,3,4,5,6,7,8,9
 
Last edited by a moderator:

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top