0% found this document useful (0 votes)
28 views

Cpe-342 Msi

This document describes an assembly language program that interfaces an LCD display with an 8051 microcontroller. The program initializes the LCD, clears it, and then displays the string "CUI LAB # 8 FA17-BCE-005" on the first row. It then displays "Asad Rehan" on the second row. The assembly language code defines macros for LCD commands and data display and includes subroutines for sending commands and characters to the LCD.

Uploaded by

ASAD REHAN
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views

Cpe-342 Msi

This document describes an assembly language program that interfaces an LCD display with an 8051 microcontroller. The program initializes the LCD, clears it, and then displays the string "CUI LAB # 8 FA17-BCE-005" on the first row. It then displays "Asad Rehan" on the second row. The assembly language code defines macros for LCD commands and data display and includes subroutines for sending commands and characters to the LCD.

Uploaded by

ASAD REHAN
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

CPE-342 MSI

LAB # 8

To interface a HD44780 controller-based 16x2 Liquid Crystal Display


(LCD) with 8051 MCU using Assembly Language programming

Name Asad Rehan

Registration No# FA17-BCE-005

Batch FA17-BCE-A

Instructor’s Name Sir Usman Rafique


Objectives :
• To explain the interfacing of ADC0804 with the AT89C51 MCU using PROTEUS.
• To interface an Analogue to Digital Converter (ADC) with 8051 MCU using Assembly
Language programming
Lab Tasks:
TASK 2:

Write a complete assembly language program to displays a character


Code:
ORG 0000H
LJMP MAIN
RS EQU P3.3 ;P3.3 IS REG. SELECT
RW EQU P3.4 ;P3.4 IS READ/WRITE
EN EQU P3.5 ;P3.5 IS ENABLE
LCD EQU P1 ;PORT1 IS LCD DATA PORT
ORG 0030H
MAIN:
; MOV DPTR,#NAME ;LOAD STRING'S BASE ADDRESS
MOV A,#38H ;LCD IS 2 LINE
ACALL COMM
ACALL DELAY
MOV A,#01H ;CLEAR LCD
ACALL COMM
ACALL DELAY
MOV A,#0CH ;TURN CURSOR OFF
ACALL COMM
ACALL DELAY
MOV A,#06H ;CURSOR AUTO-RIGHT MOVE
ACALL COMM
ACALL DELAY
MOV A,#0C0H ;ROW 1, COL 0 TO START
ACALL COMM
ACALL DELAY
MOV A,#0FH;ROW 0, COL 1 TO START
ACALL COMM
ACALL DELAY
MOV A,#'%' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
; MOV A,#1EH ;ROW 0, COL 1 TO START
; ACALL DISPLAY
; ACALL DELAY
;LCD COMMAND SUBROUTINE
COMM:
MOV LCD,A ;SEND ACC. DATA ON LCD PORT
CLR RS ;SELECT COMMAND REG.
CLR RW ;WRITE MODE
SETB EN ;EN IS HIGH
ACALL DELAY ;REMAIN EN HIGH
CLR EN ;H->L TRANSITION
RET
DISPLAY:
MOV LCD,A ;SEND ACC. DATA ON LCD PORT
SETB RS ;SELECT COMMAND REG.
CLR RW ;WRITE MODE
SETB EN ;EN IS HIGH
ACALL DELAY ;REMAIN EN HIGH
CLR EN ;H->L TRANSITION RET
;DELAY TO COMPLETE THE PROCESSING OF LCD INSTRUCTION
DELAY:
MOV R3,#05
LOOP1: MOV R4,#255
LOOP2: DJNZ R4,LOOP2
DJNZ R3,LOOP1
RET
END
Proteus

TASK 3:
Code:
ORG 0000H
LJMP MAIN
RS EQU P3.3 ;P3.3 IS REG. SELECT
RW EQU P3.4 ;P3.4 IS READ/WRITE
EN EQU P3.5 ;P3.5 IS ENABLE
LCD EQU P1 ;PORT1 IS LCD DATA PORT
ORG 0030H
MAIN:
; MOV DPTR,#NAME ;LOAD STRING'S BASE ADDRESS
MOV A,#38H ;LCD IS 2 LINE
ACALL COMM
ACALL DELAY
MOV A,#01H ;CLEAR LCD
ACALL COMM
ACALL DELAY
MOV A,#0CH ;TURN CURSOR OFF
ACALL COMM
ACALL DELAY
MOV A,#06H ;CURSOR AUTO-RIGHT MOVE
ACALL COMM
ACALL DELAY
MOV A,#80H ;ROW 0, COL 0 TO START
ACALL COMM
ACALL DELAY
MOV A,#0FH;ROW 0, COL 1 TO START
ACALL COMM
ACALL DELAY
MOV A,#'C' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'U' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'I' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#' ' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'L' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'A' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'H' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'O' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'R' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'E' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#0C0H ;ROW 0, COL 0 TO START
ACALL COMM
ACALL DELAY
MOV A,#0FH;ROW 0, COL 1 TO START
ACALL COMM
ACALL DELAY
MOV A,#'F' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'A' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'1' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY

MOV A,#'7' ;ROW 0, COL 1 TO START


ACALL DISPLAY
ACALL DELAY
MOV A,#'-' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'B' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'C' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'E' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'-' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'0' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'0' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
MOV A,#'3' ;ROW 0, COL 1 TO START
ACALL DISPLAY
ACALL DELAY
; MOV A,#1EH ;ROW 0, COL 1 TO START
; ACALL DISPLAY
; ACALL DELAY
;LCD COMMAND SUBROUTINE
COMM:
MOV LCD,A ;SEND ACC. DATA ON LCD PORT
CLR RS ;SELECT COMMAND REG.
CLR RW ;WRITE MODE
SETB EN ;EN IS HIGH
ACALL DELAY ;REMAIN EN HIGH
CLR EN ;H->L TRANSITION RET

DISPLAY:
MOV LCD,A ;SEND ACC. DATA ON LCD PORT
SETB RS ;SELECT COMMAND REG.
CLR RW ;WRITE MODE
SETB EN ;EN IS HIGH
ACALL DELAY ;REMAIN EN HIGH
CLR EN ;H->L TRANSITION
RET
;DELAY TO COMPLETE THE PROCESSING OF LCD INSTRUCTION
DELAY:
MOV R3,#05
LOOP1: MOV R4,#255
LOOP2: DJNZ R4,LOOP2
DJNZ R3,LOOP1
RET
END
Proteus:

Conclusion:
This lab experiment proved to be crucially helpful in understanding basic concepts of different
scenarios related to this specific microcontroller and so with the help of proteus and different simulation
softwares, this purpose was achieved.

You might also like