; Title "LCD test." ; list P = 16F877 ; include "P16f877.inc" __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF ; ; -------------------- ; USER RAM DEFINITIONS ; -------------------- ; CBLOCK 0x20 ; MessPt DisData DelayL DelayM DelayH Temp ; ENDC lcdRW equ 2h ; RB2 = LCD RW pin lcdRS equ 4h ; RB4 = LCD RS pin lcdE equ 5h ; RB5 = LCD E pin ; PORTD USED FOR LCD DATA PINS RB0 - RB7 = D0 - D7 ; ; --------------------- ; YOUR CODE BEGINS HERE ; --------------------- ; org 0x0000 clrf PORTA clrf PORTD clrf PORTC clrf PORTD clrf PORTE bsf STATUS,RP0 ; RAM Page 1 clrf TRISA clrf TRISB clrf TRISC clrf TRISD clrf TRISE ; ; ------------------------- ; SET ANALOG/DIGITAL INPUTS ; ------------------------- ; movlw b'00000110' ; = all digital movwf ADCON1 bcf STATUS,RP0 movlw 20h ; 25mS powerup delay @ 4MHz movwf DelayH ; data sheet says 15mS clrf DelayL PUPD decfsz DelayL goto PUPD decfsz DelayH goto PUPD call Control ; initialize display ; ; ----------------------------------------------------- ; DISPLAY THE MESSAGE WHEN THE BUTTON ON RA3 IS PRESSED ; ----------------------------------------------------- ; MnLoop clrf MessPt movlw 0x80 ; line 1 call LCDins Loop1 call TheText xorlw 0h btfsc STATUS,Z goto DoLine2 call LCDout incf MessPt goto Loop1 DoLine2 incf MessPt movlw 0xC0 ; line 2 call LCDins Loop2 call TheText xorlw 0h btfsc STATUS,Z goto DoDelay call LCDout incf MessPt goto Loop2 DoDelay call BigDel ; wait goto MnLoop ; ; ------------------------ ; LCD INITIALIZATION CODES ; ------------------------ ; TheText movlw High($) movwf PCLATH movf MessPt,W addwf PCL DT " HELLO FROM", 0h DT " THE PIC 16F873", 0h ; ; ----------------- ; SEND CONTROL DATA ; ----------------- ; According to the data sheet, a delay of 4mS minimum must occur ; between each control data byte being sent. ; Control movlw 38h ; (128) display initialisation call LCDins ; output to display movlw 38h ; page 45 of the data sheet call LCDins ; output to display movlw 38h ; two line call LCDins ; output to display movlw .6 ; increment display call LCDins ; output to display movlw 0ch ; display = on, cursor = off call LCDins ; output to display movlw .1 ; clear display call LCDins ; output to display return ; ; ----------------------------- ; OUTPUT 1 DATA BYTE TO DISPLAY ; ----------------------------- ; LCDout movf DisData,w movwf PORTD bsf PORTB,lcdRS ; (4) Write data to display call Clock bsf PORTB,lcdE ; (5) enable call Clock bcf PORTB,lcdE ; (5) call Clock bcf PORTB,lcdRS ; (5) bcf STATUS,RP0 ; ram page 0 return ; ; ------------------------------------ ; OUTPUT 1 INSTRUCTION BYTE TO DISPLAY ; ------------------------------------ ; LCDins movf DisData,w movwf PORTD bcf PORTB,lcdRS ; (4) Write instruction to display call Clock bsf PORTB,lcdE ; (5) enable call Clock bcf PORTB,lcdE ; (5) call Clock clrf DelayL movlw 8h ; about 6mS delay @ 4MHz movwf DelayH ctlp1 decfsz DelayL goto ctlp1 decfsz DelayH goto ctlp1 return ; ; ----------------------------- ; CLOCKING DELAY - 200uS @ 4MHz ; ----------------------------- ; Clock movlw 40h movwf DelayL kdloop decfsz DelayL goto kdloop return ; ; -------------------------------- ; ABOUT A HALF SECOND DELAY @ 4MHz ; -------------------------------- ; BigDel clrf DelayL clrf DelayM movlw 5h movwf DelayH BDloop decfsz DelayL goto BDloop decfsz DelayM goto BDloop decfsz DelayH goto BDloop return test movlw 8h movwf DelayH ctlp2 decfsz DelayL goto ctlp2 decfsz DelayH goto ctlp2 return ; ; ----------------------- ; BOOT CODE START ADDRESS ; ----------------------- ; DO NOT PLACE ANY CODE PAST THIS POINT ; org 0x0F00 ; ; end
file: /Techref/microchip/16F877/tlcd.asm, 4KB, , updated: 2001/2/1 11:45, local time: 2024/10/31 18:30,
18.226.172.214:LOG IN ©2024 PLEASE DON'T RIP! THIS SITE CLOSES OCT 28, 2024 SO LONG AND THANKS FOR ALL THE FISH!
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://linistepper.com/techref/microchip/16F877/tlcd.asm"> microchip 16F877 tlcd</A> |
Did you find what you needed? |