;LCD screen test ;written by yoruk for Instructables.com $INCLUDE (at89s52.inc) ; header file ; symbols .equ RS , P1.2 .equ EN , P1.0 ;Lcd module pinout, from left to right, connector on the top ;1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ;pin 1 : GND ;pin 2 : VCC 5v ;pin 3 : contrast, middle pin of the potentiometer ;pin 4 : p1.2 (RS) ;pin 5 : p1.1 (RW, connected to GND here) ;pin 6 : p1.0 (E) ;pin 7 : p2.0 (D0) ;pin 8 : p2.1 (D1) ;pin 9 : p2.2 (D2) ;pin 10 : p2.3 (D3) ;pin 11 : p2.4 (D4) ;pin 12 : p2.5 (D5) ;pin 13 : p2.6 (D6) ;pin 14 : p2.7 (D7) ;pin 15 : Backlight power supply ;pin 16 : Backlight gnd ORG 0000h CALL lcd_initialize CALL lcd_clr MOV ACC,#81h ;Location from where Data is to be displayed CALL lcd_command MOV ACC,#20h ;display a space CALL lcd_datadisplay MOV ACC,#20h CALL lcd_datadisplay MOV ACC,#20h CALL lcd_datadisplay MOV ACC,#20h CALL lcd_datadisplay MOV ACC,#20h CALL lcd_datadisplay MOV ACC,#'H' CALL lcd_datadisplay MOV ACC,#'i' CALL lcd_datadisplay MOV ACC, #0c0h ;moves to the second line CALL lcd_command MOV ACC,#'I' CALL lcd_datadisplay MOV ACC,#'n' CALL lcd_datadisplay MOV ACC,#'s' CALL lcd_datadisplay MOV ACC,#'t' CALL lcd_datadisplay MOV ACC,#'r' CALL lcd_datadisplay MOV ACC,#'u' CALL lcd_datadisplay MOV ACC,#'c' CALL lcd_datadisplay MOV ACC,#'t' CALL lcd_datadisplay MOV ACC,#'a' CALL lcd_datadisplay MOV ACC,#'b' CALL lcd_datadisplay MOV ACC,#'l' CALL lcd_datadisplay MOV ACC,#'e' CALL lcd_datadisplay MOV ACC,#'s' CALL lcd_datadisplay MOV ACC,#20h ;display a space CALL lcd_datadisplay MOV ACC,#'!' CALL lcd_datadisplay MOV ACC,#20h ;display a space CALL lcd_datadisplay stop: ajmp stop lcd_datadisplay: SETB RS ;Telling the LCD that the data which is being send is to be displayed MOV P2,ACC ;Character to be displayed is in Acc, mais dans P2 SETB EN CLR EN ;High to Low pulse on EN to latch the data CALL DELAY ;Delay so that LCD finishes its internal operations ret lcd_command: CLR RS ;Telling the LCD that the data which is being send is a command MOV P2,ACC ;Character to be displayed is in Acc, mais dans P2 SETB EN CLR EN ;High to Low pulse on EN to latch the data CALL DELAY ;Delay so that LCD finishes its internal operations ret lcd_initialize: CLR P1.1 MOV ACC,#38h CALL lcd_command MOV ACC,#0Eh CALL lcd_command MOV ACC,#06h CALL lcd_command ret lcd_clr: MOV ACC,#01h CALL lcd_command ret DELAY: HERE2: MOV R4,#255 HERE: DJNZ R4,HERE RET end