Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
04/21/08 21:50
Modified:
  04/21/08 21:51

Read: times


 
#153788 - Hantronix LCD 4 bit mode
a friend ran out of the LCDs he uses (discontinued) and he bought some Hantronix.

I just can't get them to initialize (the manual states how, but it does not work.

http://www.hantronix.com/down/char-comm.pdf

signal paths are verified.

Erik

here is the initializer (the original code is a mess, some may have permeated)
;/////////////////////////////////////////////////////////////////////

;	initialize hantronix display in 4 bit mode

haninit:	push	acc
	push	RB06
	mov	r6,#200	;"wait 15ms or more"
HIinwt:	lcall	loop100us
	djnz	r6,HIinwt
	anl	p1,#001h  ; clr dRS - clr dR_W 	- clr dENB  command - write - ready to strobe
	orl   p1,#00110000b   	; Function Set 8 bit              
         	lcall hancmd							;3
	mov	r6,#50	;"wait 4.1ms or more"
HIwt01:	lcall	loop100us
	djnz	r6,HIwt01
	anl	p1,#00fh
         	orl  	p1,#00110000b   	;function set 8 bit (2x)
         	lcall hancmd						 	;3
	mov	r6,#5	;"wait 100us or more"
HIwt02:	lcall	loop100us
	djnz	r6,HIwt02
	anl	p1,#00fh
         	orl  	p1,#00110000b   	;function set 8 bit (2x)
         	lcall hancmd						 	;3
	anl	p1,#00fh
         	orl  	p1,#00100000b   	;function set 8 bit (2x)	 
         	lcall hancmd						 	;2
	anl	p1,#00fh
         	orl  	p1,#00100000b   	;function set 8 bit (2x)	 
         	lcall hancmd						 	;2 -
	anl	p1,#00fh
         	orl  	p1,#10000000b   	;function set 8 bit (2x)	 
         	lcall hancmd						 	;8
	anl	p1,#00fh
         	orl  	p1,#00000000b   	;function set 8 bit (2x)
         	lcall hancmd							;0 - 
	anl	p1,#00fh
         	orl  	p1,#10000000b   	;function set 8 bit (2x)
         	lcall hancmd							;8
	anl	p1,#00fh
         	orl  	p1,#00000000b   	;function set 8 bit (2x)
         	lcall hancmd						  	;0 -
	anl	p1,#00fh
         	orl  	p1,#00010000b   	;function set 8 bit (2x)
         	lcall hancmd							;1
	anl	p1,#00fh
         	orl  	p1,#00000000b   	;function set 8 bit (2x)
         	lcall hancmd						  	;0
	anl	p1,#00fh
         	orl  	p1,#01000000b   	;function set 8 bit (2x)
         	lcall hancmd							;4
	pop	RB06
	pop	acc 
	ret


;////////////////////////////////////////////////////////////////////
;
;	han2cmd	feed full byte command to hantronix module
;	han2dat	feed full byte data to hantronix module
;
;	 data must be in acc (first nibble left)

han2cmd:	push	acc
	anl	a,#0f0h
	mov	p1,a
	call	hancmd
	pop	acc
	push	acc
	swap	a
	anl	a,#0f0h
	mov	p1,a
	call	hancmd
	pop	acc
	ret

han2dat:	push	acc
	anl	a,#0f0h
	mov	p1,a
	call	handat
	pop	acc
	push	acc
	swap	a
	anl	a,#0f0h
	mov	p1,a
	call	handat
	pop	acc
	ret

;////////////////////////////////////////////////////////////////////
;
;	hancmd	feed command to hantronix module
;	handat	feed data to hantronix module
;
;	 data must be preloadedd into p1

hancmd:	clr 	dRS 	; RS low for a command byte.	   		  
	sjmp 	HDcomm							   		  

handat:	
setb 	dRS 	; RS high for a data byte.	   		  
HDcomm:	clr 	dR_W 	; R/w low for a write mode
	nop								   						    
	nop								   						    
	nop								   						    
	setb	dENB							      					    
	nop								   						    
	nop								   						    
	nop								   						    
	clr 	dENB 	;enable pulse				   	   					    
	nop								   						    
	nop								   						    
	nop								   						    
; Check Busy							   				    
	orl 	p1,#0f0h 	;configure data bits on port1 for input 						    
	setb 	dR_W 	;set RW to read			   		   				    
	clr 	dRS 	;set RS to command			   		   				    
HDbsylp: 	
	nop								   						    
	nop								   						    
	nop								   						    
	setb	dENB 	;generate enable pulse		   			   			    
	nop								   						    
	nop								   						    
	nop								   						    
	mov 	a,p1							      					    
	clr 	dENB							      					    
	nop								   					    
	anl 	a,#80h 	;check bit#7 busy flag		   			   			    
	jnz 	HDbsylp	;keep waiting until busy flag clears
; must check twice				   	    
HDbsylp2: 	
	nop								   						    
	nop								   						    
	nop								   						    
	setb	dENB 	;generate enable pulse		   			   			    
	nop								   						    
	nop								   						    
	nop								   						    
	mov 	a,p1							      					    
	clr 	dENB							      					    
	nop								   					    
	anl 	a,#80h 	;check bit#7 busy flag		   			   			    
	jnz 	HDbsylp2	;keep waiting until busy flag clears
	clr 	dR_W 	;return to write mode							   	    
	ret


List of 7 messages in thread
TopicAuthorDate
Hantronix LCD 4 bit mode            01/01/70 00:00      
   Busy bit checking            01/01/70 00:00      
   Nibble Mode...            01/01/70 00:00      
   appreciate all            01/01/70 00:00      
   your datasheet is compatable with HD44780            01/01/70 00:00      
   No busy flag until the end of software init            01/01/70 00:00      
      the code 'runs'            01/01/70 00:00      

Back to Subject List