Vistas de página en total

jueves, 6 de octubre de 2011

Visualizador LCD

  • Consumo = 7,5 mW
  • Caracteres ASCII, Kanji (japonés)
  • 2 x 16 ( 2 lineas de 16 caracteres)
  • Posibilidad de conectar de dos maneras de ocho bits y de cuatro bits.

       1)   Alimentacion (3 pines) GND, VLC (contraste al dispositivo) VCC= 5 V
       2)    Backlight (2 pines: Anodo y Catodo) posibilidad de ver de noche o con baja luminosidad el display. Es el liquido que posee entre las placas.
       3)    Bus de datos (8 pines) circulan los comandos (Es como una orden que uno le indica) y caracteres que queramos visualizar.
       4)    Control (3 pines).

                               Modos de funcionamiento
  • Modo comando: Cuando RS está en "0" el LCD esta en modo comando, es decir, el bus de datos toma comandos y no caracteres. Este modo es el más lento 1,64ms. Primero RS=0 y después se escribe el comando.
  • Modo Busy Flag: Si el bit 7 de datos se pone en "1" le dice al microcontrolador que está ocupado. La ventaja de R/W a masa es que te podés ahorrar un pin del integrado.
  • Modo carácter: R/W tiene que ser "0" y RS en "1" (40us). A continuación mostraremos el esquema del LCD conectado mediante 4 bits:


Proyecto Comunicación Serie

Proyecto de Laboratorio: Comunicación Serie

Funcionamiento:

o     Al conectar la placa se muestra un mensaje de bienvenida en el LCD, durante 5 segundos:


              
                CUBA 2011
                   COMUNICACIÓN SERIE

o 
  •       Luego envia el mismo mensaje a la PC.
  •     Espera recibir un comando desde la PC.
  •     Si recibe un 0, envia el valor  analógico presente en AN0 (entre el 0 analógico y 1023).
  •     Si recibe un 1, envia el estado de la entrada digital DIG1 (un 2 de la DIG2, un 3 de la DIG3, etc.)
  •     Si recibe una A,  cambia el estado de la salida LED0.
  •     Si recibe una B, cambia el estado de la salida LED1, etc.
  •     El LCD debe mostrar el estado de las entradas analógicas y digitales.

miércoles, 14 de septiembre de 2011

Hola Mundo en LCD 16x2

A continuación mostramos el programa de ASM para hacer que aparezcan las palabras "Hola Mundo" en un LCD de 16x2 (16 caracteres y 2 lineas):

Principal
    call    LCD_Inicializa
    call    Retardo_1ms
    movlw    'H'
    call    LCD_Caracter
    movlw    'o'
    call     LCD_Caracter
    movlw     'l'
    call     LCD_Caracter
    movlw     'a'
    call     LCD_Caracter
    movlw    ' '
    call    LCD_Caracter
    movlw    'M'
    call     LCD_Caracter
    movlw     'u'
    call     LCD_Caracter
    movlw     'n'
    call     LCD_Caracter
    movlw     'd'
    call     LCD_Caracter
    movlw     'o'
    call     LCD_Caracter

    goto    $

include <LCD_4BIT.inc>
include <RETARDOS.inc>

;====================================================================
    END

sábado, 3 de septiembre de 2011

Actividad 4 - Amplificadores Operacionales (1° Parte)

Esta actividad está compuesta por 2 partes:

1° Parte: Amplificador Inversor:

Primero tuvimos que hacer el siguiente circuito en el protoboard:



Así es como nos quedo el circuito ya armado:



miércoles, 24 de agosto de 2011

Ejercicios del Capítulo 9

Descargas:
ASM:
- Indexado_02.asm
- Ejercicios Cap. 9.DSN (Para probarlo en Proteus)

C:
-Indexado_02.c
-Indexado_02.h

En ASM:

;====================================================================
; Nombre del archivo: Indexado_02.asm
;====================================================================
; Descripción:
;
; Controla el nivel de un depósito de líquido. Utiliza (entre
; paréntesis las líneas del microcontrolador a la que se han
; conectado):
;
; * Tres sondas detectoras: SV, Sonda de Vacío (RA0); SLL, Sonda de
; LLenado (RA1); SR, Sonda de Rebose (RA2).
; * Dos bombas de agua: B1 (RB5), B2 (RB6).
; * Cinco indicadores: Vacio (RB0), Llenandose (RB1), Lleno (RB2),
; Rebose (RB3), Alarma (RB4).
;
; Su funcionamiento:
;
; * Cuando ninguna de las sondas está mojada se entiende que el
; depósito está vacío y se accionarán las dos bombas. El indicador
; "Vacio" se iluminará .
; * Cuando el nivel del líquido toque la sonda de vacío "SV" seguirá
; llenándose el depósito con las dos bombas. El indicador
; "Llenandose" se ilumina.
; * Cuando el nivel del líquido toca la sonda de llenado "SLL", para
; la bomba B2, quedando B1 activada en modo mantenimiento. El
; indicador "Lleno" se ilumina.
; * Si el nivel del líquido moja la sonda de rebose "SR" se apaga
; también la bomba B1, quedando las dos bombas fuera de servicio.
; El indicador "Rebose" se enciende.
; * Cuando se produce un fallo o mal funcionamiento en las sondas de
; entrada (por ejemplo que se active la sonda de rebose y no active
; la de vacío) se paran las dos bombas. El indicador "Alarma" se
; ilumina.
;====================================================================
; Descripción del Hardware:
;
; 1 --------------16
; SR -> |RA2 °|_| RA1| <- SLL
; |RA3 RA0| <- SV
; |RA4 OSC2| XTAL
; R10 K a Vdd |/MCLROSC1| XTAL
; GND |VSS VDD| 5V
; Vacío <- |RB0 RB7|
; Llenandose <- |RB1 RB6| -> Bomba2
; Lleno <- |RB2 RB5| -> Bomba1
; Rebose <- |RB3 RB4| -> Alarma
; 9 --------------10
;
; Frecuencia del oscilador externo: 4MHz (XT)
;====================================================================
; Autores: Kevin Garro y Jorge Palacio
; Fecha: 28/08/11 Versión:0.1
;====================================================================
LIST p=PIC16F84A
INCLUDE
__CONFIG _WDT_OFF & _PWRTE_ON & _CP_OFF & _XT_OSC
ERRORLEVEL -302
;====================================================================
; Definiciones y Equivalencias
;====================================================================
#DEFINE BANK0 bcf STATUS,RP0 ; Cambio al banco 0
#DEFINE BANK1 bsf STATUS,RP0 ; Cambio al banco 1
;====================================================================
; Declaración de Variables
;====================================================================
CBLOCK 0x0C
ENDC
;====================================================================
; Vectores
;====================================================================
ORG 0x000 ; Vector de Reset
clrw
goto Main
;====================================================================
; Servicio de Interrupción
;====================================================================
ORG 0x004 ; Vector de Interrupción
retfie
;====================================================================
Main
;====================================================================
BANK1
movlw b'11111'
movwf TRISA ;todo el PORTA como entrada
clrf TRISB ;todo el PORTB como salida
BANK0
;====================================================================
; Programa principal
;====================================================================

INICIO
movf PORTA,W
andlw b'111'
addwf PCL,F
goto VACIO
goto LLENANDOSE
goto ALARMA_1
goto LLENO
goto ALARMA_2
goto ALARMA_3
goto ALARMA_4
goto REBOSE

VACIO
movlw b'01100001'
goto SALIDA

LLENANDOSE
movlw b'01100010'
goto SALIDA

ALARMA_1
movlw b'00010000'
goto SALIDA

LLENO
movlw b'00100100'
goto SALIDA

ALARMA_2
movlw b'00010000'
goto SALIDA

ALARMA_3
movlw b'00010000'
goto SALIDA

ALARMA_4
movlw b'00010000'
goto SALIDA

REBOSE
movlw b'00001000'

SALIDA
movwf PORTB
goto INICIO

;====================================================================
END





En C:


#include

void main(){

while(1){

switch(input_a()){

case 0:
output_b(0b01100001);
break;
case 1:
output_b(0b01100010);
break;
case 2:
output_b(0b00010000);
break;
case 3:
output_b(0b00100100);
break;
case 4:
output_b(0b00010000);
break;
case 5:
output_b(0b00010000);
break;
case 6:
output_b(0b00010000);
break;
case 7:
output_b(0b00001000);
break;

}

}

}