nokia 3310 lcd interface with at89c51

Download Nokia 3310 LCD Interface With AT89C51

If you can't read please download the document

Upload: debarjun-roy

Post on 24-Oct-2015

23 views

Category:

Documents


7 download

DESCRIPTION

Example shows how to interface Nokia 3310 LCD with AT89C51/AT89S51 mcu. These MCUs doesn't have SPI interface. So every bit of data is transmitted by a repeating loop. 3310 LCD works with PCD8544 display driver with pixel resolution of 48x84 pixel. The program is in assembly language...

TRANSCRIPT

AT89C51 PROGRAM CODE;Program for Nokia 3310 LCD PCD8544 48x84 pixelSCK BIT P1.7SDIN BIT P1.6D_C BIT P1.5SCE BIT P1.4RES BIT P1.3ORG 0000HAJMP MAINORG 0030HMAIN: MOV SP,#60HMOV P1,#00HCLR CCALL RESETCALL LCD_INITHERE: CALL CLEAR_RAMMOV DPTR,#MESSAGECALL LCD_STRINGCALL DELAYSCALL CLEAR_RAMMOV DPTR,#IMAGECALL DISPLAYCALL DELAYSAJMP HEREDELAYS: ;1s DELAYMOV R5,#10D1:CALL DELAYDJNZ R5,D1RETDELAY: ;100ms DELAYSETB PSW.4MOV R7,#200HDH:MOV R6,#100HD:NOPNOPNOPDJNZ R6,HDDJNZ R7,HDHCLR PSW.4RETRESET: ; RESETSETB SCESETB RESCLR RESCALL DELAYSETB RESRETLCD_INIT: ;INITALIZE LCDMOV DPTR,#LCDCODE1CALL LCD_INCALL CLEAR_RAMMOV R1,#00H ;YMOV R2,#00H ;XCALL CURSORRETLCD_IN: MOV A,#00HMOV R6,#00HLOOP3:INC R6MOVC A,@A+DPTRCJNE A,#2FH,NEXT3RETNEXT3:CALL LCD_COMMOV A,R6AJMP LOOP3DISPLAY: ;DISPLAY IMAGEMOV R7,#06HDO:PUSH DPLPUSH DPHMOV R6,#84BACK:MOV A,#00HMOVC A,@A+DPTRCALL ROTATECALL LCD_DATACALL IN_DPDJNZ R6,BACKPOP DPHPOP DPLINC DPTRDJNZ R7,DORETIN_DP:MOV R5,#06HGO1:INC DPTRDJNZ R5,GO1RETROTATE:CLR CMOV R3,#8HROT:RLC AMOV 53H,APUSH 53HMOV A,R1RRC AMOV R1,APOP 53HMOV A,53HDJNZ R3,ROTMOV A,R1RETLCD_COM: ;ROUTINE TO SEND LCD COMMANDCLR D_CCLR SCENOPCALL CLOCK_DATASETB SCENOPRETLCD_DATA: ;ROUTINE TO SEND LCD DATASETB D_CCLR SCENOPCALL CLOCK_DATANOPSETB SCERETCLOCK_DATA: ;ROUTINE FOR SPICLR CMOV R5,#08HERE1:CLR SCK ;low on serial clockRLC A ;rotate left, with MSB of ACC to carryMOV SDIN,C ;write bit value in carry to serial data inSETB SCK ;high in serial clockDJNZ R5,HERE1 ;decrement r5 by 1 (1 bit transfered out of 8 bits)RET ;repeat until full 8 bit is writtenCURSOR: ;SET DISPLAY CURSORMOV A,R1 ;Y POINTERANL A,#07HORL A,#40HCALL LCD_COMMOV A,R2 ;X POINTERANL A,#7FHORL A,#80HCALL LCD_COMRETCLEAR_RAM: ;CLEAR RAMMOV R1,#00HMOV R2,#00HCALL CURSORCLR CMOV R6,#06LOOP:MOV R7,#84LOOP1:MOV A,#00HCALL LCD_DATADJNZ R7,LOOP1DJNZ R6,LOOPRETLCD_STRING: ;ROUTINE TO DISPLAY MESSAGEMOV A,#0HMOV 50H,#0HNEXT:INC 50HMOVC A,@A+DPTRCJNE A,#2FH,NEXT1RETNEXT1:CALL TABLE_PTRMOV A,#00HCALL LCD_DATAMOV A,50HAJMP NEXTTABLE_PTR:PUSH DPLPUSH DPHMOV DPTR,#TABLEMOV B,#05HMUL ABSUBB A,#0A0HJNC HERE2DEC BHERE2:MOV R4,ACJNE R4,#00H,L1AJMP L3L1: INC DPTRDJNZ R4,L1L3: CLR CMOV R4,BCJNE R4,#00H,L2AJMP L4L2: INC DPHDJNZ R4,L2L4:MOV R6,#00HMOV A,#00HNEXT2:INC R6MOVC A,@A+DPTRCALL LCD_DATAMOV A,R6CJNE R6,#05H,NEXT2POP DPHPOP DPLRETLCDCODE1:DB 21HDB 90HDB 07HDB 13HDB 20HDB 09HDB 08HDB 0CHDB 2FHMESSAGE:DB " GOOD DAY !/" ;Max. character 14 per messageTABLE: ;HEX ARRAY TO DISPLAY CHARACTERS DB 000H,000H,000H,000H,000H, ; 20 spaceDB 000H,000H,05fH,000H,000H, ; 21 !DB 000H,007H,000H,007H,000H, ; 22 "DB 014H,07fH,014H,07fH,014H, ; 23 #DB 024H,02aH,07fH,02aH,012H, ; 24 $DB 023H,013H,008H,064H,062H, ; 25 %DB 036H,049H,055H,022H,050H, ; 26 &DB 000H,005H,003H,000H,000H, ; 27 'DB 000H,01cH,022H,041H,000H, ; 28 (DB 000H,041H,022H,01cH,000H, ; 29 )DB 014H,008H,03eH,008H,014H, ; 2a *DB 008H,008H,03eH,008H,008H, ; 2b +DB 000H,050H,030H,000H,000H, ; 2c ,DB 008H,008H,008H,008H,008H, ; 2d -DB 000H,060H,060H,000H,000H, ; 2e .DB 020H,010H,008H,004H,002H, ; 2f /DB 03eH,051H,049H,045H,03eH, ; 30 0DB 000H,042H,07fH,040H,000H, ; 31 1DB 042H,061H,051H,049H,046H, ; 32 2DB 021H,041H,045H,04bH,031H, ; 33 3DB 018H,014H,012H,07fH,010H, ; 34 4DB 027H,045H,045H,045H,039H, ; 35 5DB 03cH,04aH,049H,049H,030H, ; 36 6DB 001H,071H,009H,005H,003H, ; 37 7DB 036H,049H,049H,049H,036H, ; 38 8DB 006H,049H,049H,029H,01eH, ; 39 9DB 000H,036H,036H,000H,000H, ; 3a :DB 000H,056H,036H,000H,000H, ; 3b ;DB 008H,014H,022H,041H,000H, ; 3c DB 002H,001H,051H,009H,006H, ; 3f ?DB 032H,049H,079H,041H,03eH, ; 40 @DB 07eH,011H,011H,011H,07eH, ; 41 ADB 07fH,049H,049H,049H,036H, ; 42 BDB 03eH,041H,041H,041H,022H, ; 43 CDB 07fH,041H,041H,022H,01cH, ; 44 DDB 07fH,049H,049H,049H,041H, ; 45 EDB 07fH,009H,009H,009H,001H, ; 46 FDB 03eH,041H,049H,049H,07aH, ; 47 GDB 07fH,008H,008H,008H,07fH, ; 48 HDB 000H,041H,07fH,041H,000H, ; 49 IDB 020H,040H,041H,03fH,001H, ; 4a JDB 07fH,008H,014H,022H,041H, ; 4b KDB 07fH,040H,040H,040H,040H, ; 4c LDB 07fH,002H,00cH,002H,07fH, ; 4d MDB 07fH,004H,008H,010H,07fH, ; 4e NDB 03eH,041H,041H,041H,03eH, ; 4f ODB 07fH,009H,009H,009H,006H, ; 50 PDB 03eH,041H,051H,021H,05eH, ; 51 QDB 07fH,009H,019H,029H,046H, ; 52 RDB 046H,049H,049H,049H,031H, ; 53 SDB 001H,001H,07fH,001H,001H, ; 54 TDB 03fH,040H,040H,040H,03fH, ; 55 UDB 01fH,020H,040H,020H,01fH, ; 56 VDB 03fH,040H,038H,040H,03fH, ; 57 WDB 063H,014H,008H,014H,063H, ; 58 XDB 007H,008H,070H,008H,007H, ; 59 YDB 061H,051H,049H,045H,043H, ; 5a ZDB 000H,07fH,041H,041H,000H, ; 5b [DB 002H,004H,008H,010H,020H, ; 5c Yen Currency SignDB 000H,041H,041H,07fH,000H, ; 5d ]DB 004H,002H,001H,002H,004H, ; 5e ^DB 040H,040H,040H,040H,040H, ; 5f _DB 000H,001H,002H,004H,000H, ; 60 `DB 020H,054H,054H,054H,078H, ; 61 aDB 07fH,048H,044H,044H,038H, ; 62 bDB 038H,044H,044H,044H,020H, ; 63 cDB 038H,044H,044H,048H,07fH, ; 64 dDB 038H,054H,054H,054H,018H, ; 65 eDB 008H,07eH,009H,001H,002H, ; 66 fDB 00cH,052H,052H,052H,03eH, ; 67 gDB 07fH,008H,004H,004H,078H, ; 68 hDB 000H,044H,07dH,040H,000H, ; 69 iDB 020H,040H,044H,03dH,000H, ; 6a jDB 07fH,010H,028H,044H,000H, ; 6b kDB 000H,041H,07fH,040H,000H, ; 6c lDB 07cH,004H,018H,004H,078H, ; 6d mDB 07cH,008H,004H,004H,078H, ; 6e nDB 038H,044H,044H,044H,038H, ; 6f oDB 07cH,014H,014H,014H,008H, ; 70 pDB 008H,014H,014H,018H,07cH, ; 71 qDB 07cH,008H,004H,004H,008H, ; 72 rDB 048H,054H,054H,054H,020H, ; 73 sDB 004H,03fH,044H,040H,020H, ; 74 tDB 03cH,040H,040H,020H,07cH, ; 75 uDB 01cH,020H,040H,020H,01cH, ; 76 vDB 03cH,040H,030H,040H,03cH, ; 77 wDB 044H,028H,010H,028H,044H, ; 78 xDB 00cH,050H,050H,050H,03cH, ; 79 yDB 044H,064H,054H,04cH,044H, ; 7a zDB 000H,008H,036H,041H,000H, ; 7b DB 010H,008H,008H,010H,008H, ; 7e Right Arrow ->DB 078H,046H,041H,046H,078H ; 7f Left Arrow