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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/16/05 18:13
Read: times


 
#85050 - LCD & SERIAL Problem
hey guys,
I'm supposed to create a device which writes caracter on an LCD. The caracters come in trough serial.
I 'stole' the complete LCD routine from the tutorials
when I attach the board without the LCD the controller echo's the text back to the PC as supposed.
If I connect the LCD all of my serial echo is lost and on the LCD the first two caraters show a fast flashing cursor.

Does anyone have any idea why this happens?
I think the software gets stuck somewhere in teh LCD delay but since it came from the tutorials I don't know what went wrong

Hope someone has any idea

Thanx
jeroen

PS normally the LCD routines are packed in a .H file and add with #include LCD.H just like 8051.H

; serial communication
;set serial receive for 19200/8/n/1

#include 8051.H

         .org 0000H
	ajmp	Main
; LCD Routine

DATA	.equ	080H		;P0
DB0	.equ	080H		;P0.0
DB1	.equ	081H		;P0.1
DB2	.equ	082H		;P0.2
DB3	.equ	083H		;P0.3
DB4	.equ	084H		;P0.4
DB5	.equ	085H		;P0.5
DB6	.equ	086H		;P0.6
DB7	.equ	087H		;P0.7
RS	.equ	0A2H		;P2.2
RW	.equ	0A1H		;P2.1
EN	.equ	0A0H		;P2.0

INIT_LCD
	mov	R0,	#00H
	SETB	EN
	CLR	RS
	MOV	DATA,#38h
	CLR	EN
	LCALL	WAIT_LCD
	SETB	EN
	CLR	RS
	MOV	DATA,#0Eh
	CLR	EN
	LCALL	WAIT_LCD
	SETB	EN
	CLR	RS
	MOV	DATA,#06h
	CLR	EN
	LCALL	WAIT_LCD

WRITE_LCD
	SETB	EN
	SETB	RS
	MOV	DATA,A
	CLR	EN
	LCALL	WAIT_LCD
	RET

CLEAR_LCD
	SETB	EN
	CLR	RS
	MOV	DATA,#01h
	CLR	EN
	LCALL	WAIT_LCD
	RET

WAIT_LCD:
	SETB	EN		;Start LCD command
	CLR	RS		;It's a command
	SETB	RW		;It's a read command
	MOV	DATA,#0FFh	;Set all pins to FF initially
	MOV	A,DATA		;Read the return value
	JB	ACC.7,WAIT_LCD	;If bit 7 high, LCD still busy
	CLR	EN		;Finish the command
	CLR	RW		;Turn off RW for future commands
	RET


	.org 0100H

Main	acall	Init		; initialise
run	acall	REC		; call RECeive
	acall	SND
	sjmp	run
	.end


Init	acall	INIT_LCD
	mov	TMOD,	#20h 	; Timer 1 in Auto-reload mode 
	mov 	IE,	#00h 	; reset intterupts
	mov 	PCON,	#80h	; set SMOD for 19200 baud
	mov	SCON,	#50h	; serial mode 1, REN=1
	mov	TH1,	#253	; load T1 for 19200 baud
	setb	TR1		; start timer
	ret			; return


REC	jnb	RI,	$	; Wait for the 8051 to set the RI flag
	mov	A,	SBUF	; Read the character from the serial port
	clr	RI		; set for next character
	ret			; return

SEND	clr	TI		; Be sure the bit is initially clear
	mov	SBUF,	A	; send character
	jnb	TI,	$	; Pause until the TI bit is set. 
	ret			; return


SND	acall	SEND
	acall	WRITE_LCD
	ret




List of 7 messages in thread
TopicAuthorDate
LCD & SERIAL Problem            01/01/70 00:00      
   Missing RET            01/01/70 00:00      
   More probs            01/01/70 00:00      
   Xtra Info            01/01/70 00:00      
      Testing?            01/01/70 00:00      
   Obvious, but necessary question.            01/01/70 00:00      
   too much conflict            01/01/70 00:00      

Back to Subject List