Lcd Y Teclado Pic 16F877

Páginas: 10 (2310 palabras) Publicado: 5 de diciembre de 2012
list p=16f887 ; list directive to define processor
#include ; processor specific variable definitions

__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V


;declaracion de variables

status equ 0x03

porta equ 0x05
portb equ 0x06
portc equ0x07
portd equ 0x08
porte equ 0x09

trisa equ 0x85
trisb equ 0x86
trisc equ 0x87
trisd equ 0x88
trise equ 0x89

LCD_PORT_Control equ 0x09 ; PORTA para control del LCD
LCD_PORT_Data equ 0x05 ; PORTB para envio de Datos al LCD
LCD_TRIS_Control equ 0x89 ; TRISA
LCD_TRIS_Data equ 0x85 ; TRISB

LCDLinea1 equ 0x80 ; Dirección comienzo línea1
LCDLinea2 equ 0xC0 ; Direccióncomienzo línea2
LCDLinea3 equ 0x94 ; Dirección comienzo línea3
LCDLinea4 equ 0xd4 ; Dirección comienzo línea4
LCDClr equ 0x01 ; Borra pantalla, cursor a Inicio
LCDInicio equ 0x02 ; Cursor a Inicio, DDRAM sin cambios
LCDInc equ 0x06 ; Modo incrementa cursor
LCDDec equ 0x04 ; Modo decrementa cursor
LCDOn equ 0x0C ; Pantalla On
LCDOff equ 0x08 ; Pantalla Off
CursOnequ 0x0E ; Pantalla On, cursor On
CursOff equ 0x0C ; Pantalla On, cursor Off
CursBlink equ 0x0F ; Pantalla On, Cursor parpadeante
CurIzda equ 0x10 ; Mueve cursor a la izquierda
CurDecha equ 0x14 ; Mueve cursor a la derecha
DisIzda equ 0x18 ; Mueve Display a la izquierda
DisDecha equ 0x1C ; Mueve Display a la Derecha
LCDBus_4_2 equ 0x28 ; Bus 4 bits, 2 líneas, 5x7

bandera1equ 0x20 ; registro para guardar valor del teclado.
bandera2 equ 0x21 ; registro para guardar valor del teclado.
bandera3 equ 0x22 ; registro para guardar valor del teclado.
bandera4 equ 0x23 ; registro para guardar valor del teclado.

RS equ 0
RW equ 1
E equ 2
BACK equ 3

D4 equ 0
D5 equ 1
D6 equ 2
D7_BF equ 3

#DEFINE LCD_E LCD_PORT_Control,E
#DEFINELCD_RS LCD_PORT_Control,RS
#DEFINE LCD_RW LCD_PORT_Control,RW

#DEFINE LCD_D4 LCD_PORT_Data,D4
#DEFINE LCD_D5 LCD_PORT_Data,D5
#DEFINE LCD_D6 LCD_PORT_Data,D6
#DEFINE LCD_D7_BF LCD_PORT_Data,D7_BF
#DEFINE LCD_backlight LCD_PORT_Control,BACK ; Control Backligth.-

CBLOCK H'90'
PDel0 ;
PDel1 ; registros para retardos
PDel2 ;
LCD_Dato ; registro interno paraguardar dato de LCD
Loop ; contador interno para el LCD
Loop2 ; contador para el msj
ENDC

;**** Definición de macros ****

LCD_Putc macro Carac
movlw Carac
call LCD_Caracter
bcf status,RP1 ;vuelvo a pasar al banco 0

endm

LCD_Putd macro Coman
movlw Coman
call LCD_Comando
endm

;**********************************************************************
ORG 0x00goto main

main clrf Loop
clrf Loop2
call Demora_5ms ;demora 50ms inicio LCD.
call Demora_5ms
call Demora_5ms
call Demora_5ms
call Demora_5ms
call Demora_5ms
call Demora_5ms
call Demora_5ms
call Demora_5ms
call Demora_5ms

BCF STATUS,RP0 ;Pone a cero el RP0 del STATUS
BCF STATUS,RP1 ;Pone a cero el RP1 del STATUS y selecionamos banco0
BSF STATUS,RP0 ;Pone a 1 el bit RP0 del STATUS , se selecciona el banco 1

MOVLW B'01100000' ;Carga el valor 0X70 en el registro W p config la frec a 4 MHz
MOVWF OSCCON ;Carga lo que hay en W a OSCCON osea que pasa el valor de W hacia OSCCON
BANKSEL ANSEL ;
CLRF ANSEL ;digital I/O pines bajos (0:5)
CLRF ANSELH ;digital I/O pines altos (6:7)

BANKSEL TRISAMOVLW B'11100000' ;Config. de entradas y salidas
MOVWF TRISC
MOVLW B'00000000'
MOVWF TRISD
MOVLW B'00000000'
MOVWF TRISE
BCF STATUS,RP0


call LCD_Config_puertos ; Configuramos Puertos a utilizar por LCD.-
call LCD_Init ; Inicializamos LCD.-

LCD_Putd CursBlink ; Cursor Parpadeante.-

LCD_Putc ' '
LCD_Putc ' '
LCD_Putc 'I' ; Escribimos en LCD.-
LCD_Putc 'N'...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • proyecto cerradura electrica con pic, lcd y teclado en ingles
  • Pic 16F877
  • Practicas Pic 16F877
  • Electronica lcd con pic
  • Pic Utilizacion De Una Lcd
  • Pantalla lcd con pic 16f877a
  • pic 16f877
  • Pic 16F877

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS