viernes, 24 de agosto de 2012
MATERIAL:
1-LCD 16x2.
LCD (pantalla de cristal líquido) es un módulo de visualización electrónica para una amplia gama de aplicaciones.Una pantalla LCD de 16x2 significa que puede mostrar 16 caracteres por línea y hay 2 líneas de este tipo. En esta pantalla cada carácter se muestra en la matriz de píxeles 5x7. Esta pantalla LCD tiene dos registros, a saber, el mando y datos.
El registro de comando almacena las instrucciones dadas al mando LCD. Un comando es una instrucción dada a LCD para realizar una tarea predefinida como inicializarla, despejando su pantalla, ajuste la posición del cursor, el control de la pantalla, etc El registro de datos almacena los datos que se muestran en la pantalla LCD. Los datos son el valor ASCII del carácter a visualizar en la pantalla LCD.
El registro de comando almacena las instrucciones dadas al mando LCD. Un comando es una instrucción dada a LCD para realizar una tarea predefinida como inicializarla, despejando su pantalla, ajuste la posición del cursor, el control de la pantalla, etc El registro de datos almacena los datos que se muestran en la pantalla LCD. Los datos son el valor ASCII del carácter a visualizar en la pantalla LCD.
Pin No
|
Function
|
Name
|
1
|
Ground (0V)
|
Ground
|
2
|
Supply voltage; 5V (4.7V – 5.3V)
|
Vcc
|
3
|
Contrast adjustment; through a variable resistor
|
VEE
|
4
|
Selects command register when low; and data register when high
|
Register Select
|
5
|
Low to write to the register; High to read from the register
|
Read/write
|
6
|
Sends data to data pins when a high to low pulse is given
|
Enable
|
7
|
8-bit data pins
|
DB0
|
8
|
DB1
| |
9
|
DB2
| |
10
|
DB3
| |
11
|
DB4
| |
12
|
DB5
| |
13
|
DB6
| |
14
|
DB7
| |
15
|
Backlight VCC (5V)
|
Led+
|
16
|
Backlight Ground (0V)
|
Led-
|
1-PIC 16f84A.
1-Cristal 4MHz.
2-Capacitores cerámicos 22pF.
Circuito en proteus:
Se programo el PIC en .asm con MPLAB IDE.
PROGRAMA ASM:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LIST p=16F84A
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCINCLUDE <P16F84A.INC>
STATUS EQU 0X03
PORTA EQU 0X05
PORTB EQU 0X06
TRISA EQU 0X85
TRISB EQU 0X86
LCD_LINEA1 EQU 80
LCD_LINEA2 EQU 0C0
LCD_CLR EQU 01
LCD_CASA EQU 02
LCD_INC EQU 06
LCD_DEC EQU 04
LCD_ON EQU 0C
LCD_OFF EQU 08
CURSOR_ON EQU 0E
CURSOR_OFF EQU 0C
CURSOR_PARP EQU 0F
LCD_IZDA EQU 18
LCD_DECHA EQU 1C
CURSOR_IZDA EQU 10
CURSOR_DECHA EQU 14
LCD_FUNCIÓN EQU 38
LCD_CGRAM EQU 40
CBLOCK 0x0D
ENDC
ORG 00
INICIO
bsf STATUS,RP0
movlw b'00011000'
movwf TRISA
clrf TRISB
bcf STATUS,RP0
clrf PORTA
clrf PORTB
movlw LCD_FUNCIÓN
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_FUNCIÓN
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_FUNCIÓN
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_CLR
call LCD_COMANDO
movlw LCD_INC
call LCD_COMANDO
movlw LCD_ON
call LCD_COMANDO
movlw 80
call LCD_COMANDO
ver
movlw 80
call LCD_COMANDO
movlw 'B'
call LCD_CARACTER
movlw 'L'
call LCD_CARACTER
movlw 'O'
call LCD_CARACTER
movlw 'G'
calL LCD_CARACTER
movlw ' '
calL LCD_CARACTER
movlw 'R'
call LCD_CARACTER
movlw 'O'
call LCD_CARACTER
movlw 'B'
call LCD_CARACTER
movlw 'O'
calL LCD_CARACTER
movlw 'T'
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw 'R'
call LCD_CARACTER
movlw 'H'
call LCD_CARACTER
movlw 0C0
call LCD_COMANDO
movlw 'E'
call LCD_CARACTER
movlw 'L'
call LCD_CARACTER
movlw 'E'
call LCD_CARACTER
movlw 'C'
calL LCD_CARACTER
movlw 'T'
calL LCD_CARACTER
movlw 'R'
call LCD_CARACTER
movlw 'O'
call LCD_CARACTER
movlw 'N'
calL LCD_CARACTER
movlw 'I'
calL LCD_CARACTER
movlw 'C'
call LCD_CARACTER
movlw 'A'
call LCD_CARACTER
sleep
subrutinas
CBLOCK
CONTA1
CONTA2
GUARDA_CARÁCTER
ENDC
PAUSA_5ms
movlw 7
movwf CONTA2
clrf CONTA1
RETRASO1
decfsz CONTA1,1
goto RETRASO1
decfsz CONTA2,1
goto RETRASO1
return
LCD_COMANDO
clrf PORTA
movwf PORTB
call LCD_CHEQUEA
goto LCD_HABILITA
LCD_CARACTER
clrf PORTA
call LCD_CARÁCTER_ESPECIAL
movwf PORTB
call LCD_CHEQUEA
bsf PORTA,0
goto LCD_HABILITA
LCD_CARÁCTER_ESPECIAL
movwf GUARDA_CARÁCTER
sublw 'ñ'
btfss STATUS,Z
goto LCD_EÑE_MAYÚSCULA
movlw b'11101110'
movwf GUARDA_CARÁCTER
goto LCD_FIN_CARACTER_ESP
LCD_EÑE_MAYÚSCULA
movfw GUARDA_CARÁCTER
sublw 'Ñ'
btfss STATUS,Z
goto LCD_GRADO
movlw b'11101110'
movwf GUARDA_CARÁCTER
goto LCD_FIN_CARACTER_ESP
LCD_GRADO
movfw GUARDA_CARÁCTER
sublw 'º'
btfss STATUS,Z
goto LCD_FIN_CARACTER_ESP
movlw b'11011111'
movwf GUARDA_CARÁCTER
LCD_FIN_CARACTER_ESP
movfw GUARDA_CARÁCTER
return
LCD_CHEQUEA
bsf STATUS,RP0
movlw 0FF
movwf TRISB
bcf STATUS,RP0
bcf PORTA,0
bsf PORTA,1
BUCLE
bsf PORTA,2
movf PORTB,0
bcf PORTA,2
addlw 84
btfsc STATUS,C
goto BUCLE
bsf STATUS,RP0
clrf TRISB
bcf STATUS,RP0
bcf PORTA,1
return
LCD_HABILITA
bsf PORTA,2
nop
bcf PORTA,2
return
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SIMULACION EN PROTEUS:
PCB:
Vista real del PCB.
DESCARGA SIMULACION, PCB, HEX:
Etiquetas:
lenguje asm,
practicas simuladas,
proyectos
Suscribirse a:
Enviar comentarios (Atom)
11 comentarios:
hola estoy aprendiendo a poner un mensaje y estoy usando tu fuente, de verdad no se programar mucho, y logre poner un mensaje en la pantalla de 16x2 pero no me da el 1er caracter ni en la linea 1 ni la 2 solo me da 15 caracteres, como puedo hacer, estoy dandome duro con tu codifo y por cierto mil gracias
aca te dejo un ejemplo donde se pueden ver los 16 caracteres o al cambiar ver
https://rapidshare.com/files/3115026797/lcd%208.rar
movlw 81
call LCD_COMANDO por
movlw 80
call LCD_COMANDO
y en la segunda linea
movlw 0C1 por
movlw 0C0
con esto te aprecera el primer caracter
hola! tengo q armar un proyecto final con el pic16f84a y me cuesta mucho programar. Sera q me pueden pasar algun correo asi les explico detalladamente ?
mi correo es robotrh23@gmail.com, se programar poco en asm, si te puedo a yudar seria en C
Hola sabes que debo hacer un proyecto con el Pic 16f84A y una pantalla LCD de 16x2 no se si me puedes ayudar con el programa y saber que puedo hacer, de ante mano gracias :)
el proyecto es en lenguaje ensamblador o se puede realizar en lenguaje C ya que es mucho mas sencillo, yo hice algo muy sencillo cuando estaba en la universidad, puse una ldr y cuando se oscurecia se ponia en la LCD que era de noche, cuando habia luz ponia en la LCD que era de dia y ademas cuando era de noche se activaba un relevador y este a su vez prendia un foco de 127 volts no se si te podria servir aunque esta en lenguaje C. Si quieres aprender C, en el blog estoy subiendo tutoriales para el compilador CCS apenas voy por el segundo checalos y avisame si el proyecto que te mensione te sirve
.
Ya quedo si lo hace, el problema que tengo es que he tratado de borrar eso y reescribir otra cosa en un cierto tiempo y no queda, me podrías ayudar?
Hola, estoy aprendiendo a usar el pic16f84a, me gustaría saber como sirven los comandos, si me pudieras informas, te dejo mi correo: aabigail94@hotmail.com
Gracias
Alguien puede ayudarme con el programa de la cerradura electronica con el pic16f84a pero que tenga opcion de cambiar clave usando MPLAB.
Saludos!!
como le puedo hacer para que el mensaje se recorra de derecha a izquierda ?
Buenas !!! Este pic me servirá? :
Necesito controlar un motor paso a paso , de manera tal que con un teclado ya sea de calculadora pueda ingresar un valor donde pueda ordenarle al motor que de "n" numero de vueltas (0-9999) y el número se represente en forma creciente o decreciente en una pantalla LCD o en siete segmentos ! Alguna idea ?
Publicar un comentario