INFORME_PRACTICA_5

download INFORME_PRACTICA_5

of 16

Transcript of INFORME_PRACTICA_5

  • 8/9/2019 INFORME_PRACTICA_5

    1/16

    1

    FACULTAD DE INGENIERAS

    CARRERAELECTRNICA

    SISTEMAS MICROPROCESADOS I

    INFORME PARACTICA N5

    TECLADOS

    INTEGRANTES:

    LUIS HERNADEZ

    JUAN DAVID HERRERA

  • 8/9/2019 INFORME_PRACTICA_5

    2/16

    2

    Prctica N 3

    TEMA: Teclados

    OBJETIVO:

    Utilizar el microcontrolador con teclados matricial y PS2

    Ejercicio N 1:

    Visualizar en un display LCD el valor ingresado por un teclado matricial.

    Algoritmo:

    Entradas:

    y

    Valores ingresados por teclado (puerto C).

    Procesos:

    y Dimensiono la variable a como byte

    y Dimensiono la variable b como String con un array de seis elementosy Configuro los registros internos del LCD

    y Apago el cursor

    y Inicializ el Puerto C para trabajar con el teclado

    y Comparacin while true

    y Lee la variable a

    y La variable a se transforma a String la variable b

    y Se despliega en la posicin indicada la variable b

    Salidas:

    y Escritura en el LCD (Puerto B)

    Cdigo:

    program Teclado1

    dim a as byte

    dim b as string[6]

    main:

    lcd_config(portb,7,6,5,4,portb,0,1,2)

    lcd_cmd(lcd_cursor_off)keypad_init(portc)

    while true

    a=keypad_read

    wordtostr(a,b)

    lcd_out(1,1,b)

    wend

    end.

  • 8/9/2019 INFORME_PRACTICA_5

    3/16

    3

    Di

    d Flujo:

  • 8/9/2019 INFORME_PRACTICA_5

    4/16

    4

    Esqu ti o:

    Foto

    f s:

  • 8/9/2019 INFORME_PRACTICA_5

    5/16

    5

  • 8/9/2019 INFORME_PRACTICA_5

    6/16

    6

    Ejercicio N 2:

    Escribir un programa para realizar las siguientes operaciones: suma, resta, multiplicacin,

    divisin, potencia de tres, raz cuadrada, seno, tangente, logaritmo base 10, de dos nmeros o

    un nmero segn sea el caso. Para escoger la operacin utilizar la operacin case-select

    Operacin: Smbolo para la operacin Nmeros de la operacin

    Suma 1 2

    Resta 2 2

    Multiplicacin 3 2Divisin 4 2

    Log10 5 1

    Algoritmo:

    Entradas:

    y Seleccin de las operaciones por tecladoy Seleccin del valor numrico

    Procesos:

    y Definir variables para las Operaciones.

    y Configuro mi LCD

    y Configuro mi teclado

    y Lee mis datos por teclado

    y Seleccin de opciny Operacin a Realizar Suma, Resta, Multiplicacin, Divisin, Log10

    y Desplegar los datos en el LCDy Repeticin del Programa.

    Salidas:

    y Resultados de la operaciones visualizados en el LCD

  • 8/9/2019 INFORME_PRACTICA_5

    7/16

    7

    Cdigo:

    program calculadora

    dim x1 as byte

    dim l,j as byte

    dim n1,n2,resultado as integer

    dim n1f,n2f,resf as float

    dim op as string[6]

    dim sn1 as String[6]

    dim sn2 as String[6]

    dim sr as String[12]

    dim b as string[6]

    sub procedure leer

    while (n1=0)

    lcd_out(1,1,"valor 1:")n1=keypad_released

    n1f=n1

    intTostr(n1,sn1)

    wend

    lcd_out(1,10,sn1)

    while (n2=0)

    lcd_out(2,1,"valor 2:")

    n2=keypad_released

    n2f=n2

    intTostr(n2,sn2)

    wend

    lcd_out(2,10,sn2)

    delay_ms(1500)

    end sub

    sub procedure d

    while (n1=0)

    lcd_out(1,1,"valor 1:")

    n1=keypad_released

    n1f=n1

    intTostr(n1,sn1)

    wend

    lcd_out(1,10,sn1)

    delay_ms(1500)

    end sub

    sub procedure displayres

    lcd_cmd(lcd_clear)

  • 8/9/2019 INFORME_PRACTICA_5

    8/16

    8

    lcd_out(1,1,sn1)

    lcd_out_cp(op)

    lcd_out_cp(sn2)

    lcd_out_cp("=")

    intTostr(resultado,sr)

    lcd_out(2,1,sr)

    delay_ms(2000)

    lcd_cmd(lcd_clear)

    end sub

    sub procedure displayresf

    lcd_cmd(lcd_clear)

    lcd_out(1,1,sn1)

    lcd_out_cp(op)

    'lcd_out_cp(sn2)

    lcd_out_cp("=")

    floatTostr(resf,sr)lcd_out(2,1,sr)

    delay_ms(3000)

    lcd_cmd(lcd_clear)

    end sub

    sub procedure operaciones

    select case l

    case 1

    lcd_cmd(lcd_clear)

    leer op="+"

    resultado=n1+n2

    displayres

    case 2

    lcd_cmd(lcd_clear)

    leer op="-"

    resultado=n1-n2

    displayres

    case 3

    lcd_cmd(lcd_clear)

    leer op="*"

    resultado=n1*n2displayres

    case 4

    lcd_cmd(lcd_clear)

    leer op="/"

    resultado=n1f/n2f

    displayres

    case 5

  • 8/9/2019 INFORME_PRACTICA_5

    9/16

    9

    lcd_cmd(lcd_clear)

    d op="log10"

    resf=log10(n1f)

    displayresf

    case else

    lcd_cmd(lcd_clear)

    lcd_out(1,1,"No hay operacio-")

    lcd_out(2,1,"nes asignadas")

    delay_ms(1500)

    lcd_cmd(lcd_clear)

    end select

    end sub

    main:

    lcd_config(portb,7,6,5,4,portb,0,1,2)

    lcd_cmd(lcd_cursor_off)

    keypad_init(portc)

    lazo:while (l=0)

    lcd_out(1,1,"Ingrese su")

    lcd_out(2,1,"opcion: ")

    l=keypad_released wordtostr(l,b)

    wend

    lcd_out(2,8,b)

    delay_ms(500)

    operaciones

    n1=0

    n2=0

    l=0

    goto

    lazo

    end.

  • 8/9/2019 INFORME_PRACTICA_5

    10/16

    10

    Di

    d Flujo:

  • 8/9/2019 INFORME_PRACTICA_5

    11/16

    11

    Esqu

    ti o:

    Foto!

    " #f# s:

  • 8/9/2019 INFORME_PRACTICA_5

    12/16

    12

  • 8/9/2019 INFORME_PRACTICA_5

    13/16

    13

    Ejercicio N 3:

    Elaborar un programa para mostrar los caracteres ingresados desde un teclado PS2

    Algoritmo:

    Entradas:

    y Datos ingresados en el teclado PS2

    Procesos:

    y Apaga todas las interrupciones

    y Configura el puerto B

    y Inicializa Teclado PS/2 en PORTC Pin 0 = Data y Pin 1 = Clock

    y Retardo de 100 msy Lazo

    y Si se ha presionado una tecla

    y Espacio en blanco

    y Mueve cursor a la izquierda

    Salidas:

    y Caracteres mostrados en el LCD

    Cdigo:

    program tecgrandeluia16

    dim

    keydata as byte

    special as byte

    down as byte

    txt as string[20]

    main:

    INTCON=0

    lcd_Config(PORTB,7,6,5,4,PORTB,0,1,2)

    Ps2_Config(PORTC, 1, 0)

    delay_ms(100)

    txt=" "

    while true

    if(Ps2_Key_Read(keydata,special,down))0 then

    if((down=1)and (keydata=16))0 then

  • 8/9/2019 INFORME_PRACTICA_5

    14/16

    14

    Lc $ _Cmd(LCD_MOVE_CURSOR_LEFT)

    e % se if ((down=1)and(keydata=13))0 then

    e % se if ((down=1)and(s & ecial=0)and(keydata0))then

    Lcd_Chr_CP(keydata)

    end if

    end if

    end if

    end if

    delay_ms(10)

    wend

    end.

    Di'

    (

    ) ' 0 '

    d1

    flujo:

  • 8/9/2019 INFORME_PRACTICA_5

    15/16

    15

    Foto2

    3 4f4 s:

  • 8/9/2019 INFORME_PRACTICA_5

    16/16

    16

    Conclusiones:

    y Mikrobasic hace muy cmoda la programacin, ya que tiene un lenguaje del programa

    ms entendible, y proporciona acceso muy rpido a la excelente ayuda incluida.

    y El teclado matricial debe ser conectado de forma correcta debido a que si no se lo hace as

    al presionar un botn este no mostrara el dgito presionado sino que mostrara cualquier

    otro, por eso siempre debemos de tener en cuenta como es la conexin de filas y

    columnas en el teclado.

    y El teclado ps2 es muy inteligente ya que el mismo se encarga del rastreo de teclas y de

    transmitirlas rpidamente, ya que las teclas estn asignadas a un cdigo de uno o dos

    bytes para cada una los cuales se transmiten cada vez que pulsamos una tecla.

    Recomendaciones:

    y Tener mikrobasic instalado con el crack respectivo ya que si no se lo tiene saldr un error

    al momento de compilar los programas.

    y Para el programa de la calculadora es necesario tener un pic de mayor memoria que el16F877a.

    y Revisar la configuracin de pines del teclado PS2 antes de realizar la practica.

    Bibliografa:

    y Apuntes tomados en clase.

    y Hojas gua entregadas en Sistemas Microprocesados 1

    y Microcontroladores "PIC": diseo prctico de aplicaciones. Segunda Parte : el PIC12F508 yPIC16F84A : lenguajes Emsamblador, C y PBASIC Microcontroladores"pic": Diseo prcticode aplicaciones, Jos Mara Angulo Usategui, Edicin 4, Editor McGraw-Hill, Interamericana

    de Espaa.