Practicas msp430 ITM Lenguajes de Interfaz

15
Lenguajes de Interfaz. Reporte de las Practicas: “Contador Hexadecimal ” “Teclado Matricial” “Delays con teclado matricial” “Sensor de Temperatura” Equipo : Edgar Gaona Zavala Juan Diego Barrera Romero Pablo Elias Villagran Martinez David Rodriguez Ibarra

description

En este documento se encuentran algunas practicas hechas con el msp de Texas instruments.

Transcript of Practicas msp430 ITM Lenguajes de Interfaz

Page 1: Practicas msp430 ITM Lenguajes de Interfaz

Lenguajes de Interfaz.

Reporte de las Practicas:“Contador Hexadecimal ”

“Teclado Matricial”“Delays con teclado matricial”

“Sensor de Temperatura”

Equipo :

Edgar Gaona ZavalaJuan Diego Barrera Romero

Pablo Elias Villagran MartinezDavid Rodriguez Ibarra

Page 2: Practicas msp430 ITM Lenguajes de Interfaz

Practica 1 “Contador Hexadecimal”.

Material. MSP430 (Texas Instruments) Protoboard Conectores hembra/macho MSP 2 displays 7 segmentos

Descripción.

El objetivo de esta practica es implementar un contador hexadecimal de 0-FF, el cual será mostrado en los dos displays de 7 segmentos. Dicho contador se incrementara al presionar el botón del MSP que se encuentra en el Pin 3 del Puerto 1.

Resolución.

Para poder imprimir los números usando los dos dígitos, es necesario hacer uso de los pines de los dos puertos, es decir, un puerto distinto para cada display. El código quedo de la siguiente manera:

Page 3: Practicas msp430 ITM Lenguajes de Interfaz

Practica 2 “Teclado Matricial”.

Material MSP430 (Texas Instruments) Protoboard Conectores hembra/macho MSP Display 7 segemntos Teclado Matricial 4x4

Descripción.El objetivo de esta practica es implementar un teclado, mediante el cual al hacer presión a alguna de las teclas, esta debe proyectarse en el display de 7 segmentos.

Resolución.

En esta practica al igual que en la anterior hacemos uso de los pines del puerto 1 y 2, el puerto uno lo usamos para el display, mientras que el puerto 2 lo usamos para el teclado.

#include "msp430.h"#include <msp430g2553.h>

void main( void ){ // Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD; //watchdog P1DIR=0xF7; //declaramos nuestras salidas para el display P1SEL=0; P1SEL2=0; P1REN=0X08; P1OUT=0x00;

P2DIR=0x0F;//declaramos las entradas y salidas siendo 4 entradas y 4 salidas P2SEL=0; P2SEL2=0; P2REN=0XF0;// activamos las resistencias para las entradas P2OUT=0;//Declaramos una variable llamada salida la cual enviara voltaje en los renglones para poder hacer la comparación y ver cual tecla es la que se esta presionando esto lo haremos mediante corrimientos.

Page 4: Practicas msp430 ITM Lenguajes de Interfaz

unsigned char salida=0x08;int bandera=0;while(1){P2OUT=0;P2OUT=salida;if((0x08 & P1IN)==0){ P1OUT = 0xF7;//Checamos para cada uno de los renglones mediante la presión de botón, y dentro de este chequeo mediante el if, posteriormente realizamos un switch con la variable salida, para verificar cual es el botón dentro del renglón que se esta presionando y posteriormente desplegar el numero presionado en el display, ubicado en el pueto 1. } if(0x10 & P2IN){ switch(salida){ case 0x8: P1OUT = 0xD8; break; case 0x4: P1OUT = 0x6B; break; case 0x2: P1OUT = 0x6C; break; case 0x1: P1OUT = 0x6F; } } if(0x20 & P2IN){ switch(salida){ case 0x8: P1OUT = 0x09; break; case 0x4: P1OUT = 0x08; break; case 0x2: P1OUT = 0x38; break; case 0x1: P1OUT = 0x8A; } } if(0x80 & P2IN){ switch(salida){ case 0x8: P1OUT = 0x98;

Page 5: Practicas msp430 ITM Lenguajes de Interfaz

break; case 0x4: P1OUT = 0x68; break; case 0x2: P1OUT = 0x18; break; case 0x1: P1OUT = 0x2A; }} if(0x40 & P2IN){ switch(salida){ case 0x8: P1OUT = 0x0E; break; case 0x4: P1OUT = 0x99; break; case 0x2: P1OUT = 0x1C; break; case 0x1: P1OUT = 0x48; } } //hacemos los corrimientos desde el bit 3 hasta que se el bit 0 donde al llegar ahí nuevamente reiniciamos nuestra variable salida a 0x08 para que inicie nuevamente en el bit 3. if(salida == 0x00){ salida = 0x08; }else{ salida >>= 1; } } }

Page 6: Practicas msp430 ITM Lenguajes de Interfaz

Practica 3 “Delays con teclado matricial 4x4”

Material MSP430 (Texas Instruments) Protoboard Conectores hembra/macho MSP Display 7 segemntos Teclado Matricial 4x4

Descripción.

En esta practica lo que hicimos fue reutilizando el circuito empleado en la practica anterior, haremos uso de los delays pero, no de los ya prefabricados por la librería, implementaremos uno nosotros. El objetivo de la practica es que nuevamente se despliegue en el display el numero presionado en el teclado, la única diferencia es que este deberá parpadear de acuerdo al delay que le mandaremos su periodo de repeticiones mediante el teclado de igual manera, solo que este entrara en modalidad de escucha del delay al presionar la tecla “*” en el teclado matricial, se deberá detectar la siguiente tecla presionada como índice para el delay, al nuevamente presionar la tecla “*” el display comenzara a parpadear de acuerdo a la frecuencia que nosotros le indiquemos mediante el teclado, únicamente usaremos las teclas del 1 al 9 para la frecuencia de parpadeo. Normalmente si el programa no esta en escucha al nosotros presionar una tecla esta deberá reflejar el numero en el display.

Resolución. En esta practica al igual que en la anterior hacemos uso de los pines del puerto 1 y 2, el puerto uno lo usamos para el display, mientras que el puerto 2 lo usamos para el teclado. Y básicamente es lo mismo, únicamente cambia que al presionar la tecla * se pone en modo espera de la frecuencia con que parpadeara el display.

#include "msp430.h"#include <msp430g2553.h>unsigned char led=0x09,ledd=0x09;void Delay_1ms(unsigned long Tiempo);void imprime(){ //P1OUT = 0; P1OUT = led;}void Delay(unsigned int Tiempo){//Método de retardo TACCR0=Tiempo;//Asignamos un cronómeto que igualamos al tiempo

Page 7: Practicas msp430 ITM Lenguajes de Interfaz

while(TACTL&0x01==0){//Cuando el TACTL termine el conteo el TACCR0 prenderá el bit 0 en el TACTL reset(); } TACTL&=~0x01;//volvemos a poner en 0 el bit que se prendio en TACCR0}void Delay_1ms(unsigned long Tiempo){ for(int x=0;x<Tiempo;x++){//A través de un for se ejecutará el retardo las veces necesarias Delay(1000);//se manda un retardo de 1ms }}void main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //watchdog P1DIR=0xF7; P1SEL=0; P1SEL2=0; P1REN=0X08; P1OUT=0x00; P2DIR=0x0F; P2SEL=0; P2SEL2=0; P2REN=0XF0; P2OUT=0; DCOCTL=0xB4;//Igualamos a Velocidad que contine la frecuencia BCSCTL1=0x86; TACTL=0x0210;//Encendemos el timer TACTL|=0x00;//Configuramos los bits que se asignan el divisor a 1,2,4 u 8 unsigned char salida=0x08; int on=0,lee=0,ms=0; while(1){ P2OUT=0; P2OUT=salida; if((0x08 & P1IN)==0){ P1OUT = 0xF7; //P1OUT = led; Delay_1ms(15000); //P1OUT = 0x6B; P1OUT = led; Delay_1ms(15000); } if(0x10 & P2IN){

Page 8: Practicas msp430 ITM Lenguajes de Interfaz

switch(salida){ case 0x8: //* switch(on){ case 0: on=1; break; case 1: ms=lee*1000; on=2; break; case 2: on=0; } Delay_1ms(5000); break; case 0x4: //7 led = 0x6B; lee = 7; break; case 0x2: //4 led = 0x6C; lee = 4; break; case 0x1: //1 led = 0x6F; lee = 1; } } if(0x20 & P2IN){ switch(salida){ case 0x8: //0 led = 0x09; break; case 0x4: //8 led = 0x08; lee = 8; break; case 0x2: led = 0x38; //5 lee = 5; break; case 0x1: led = 0x8A; //2 lee = 2; } }

Page 9: Practicas msp430 ITM Lenguajes de Interfaz

if(0x80 & P2IN){ switch(salida){ case 0x8: //# led = 0x98; break; case 0x4: //9 led = 0x68; lee = 9; break; case 0x2: //6 led = 0x18; lee = 6; break; case 0x1: //3 led = 0x2A; lee = 3; } } if(0x40 & P2IN){ switch(salida){ case 0x8: //d led = 0x0E; break; case 0x4: //c led = 0x99; break; case 0x2: //b led = 0x1C; break; case 0x1: //a led = 0x48; } } imprime(); if(on==2){ P1OUT = 0xF7; Delay_1ms(ms); P1OUT = led; Delay_1ms(ms); //on=0; } if(salida == 0x00){

Page 10: Practicas msp430 ITM Lenguajes de Interfaz

salida = 0x08; }else{ salida >>= 1;}} }

Practica 4 “Sensor de Temperatura”.

Material MSP430 (Texas Instruments) Protoboard Conectores hembra/macho MSP 2 Display 7 segemntos Sensor de temperatura LM35

Descripción.

Para esta practica se nos pidió implementar un sensor de temperatura, LM35 y por el cual obtener lecturas de la temperatura y el resultado de dicha temperatura interpretarlo en 2 displays indicando el valor de la misma en grados centígrados.

Resolución.

#include <msp430g2553.h>#include "msp430.h" float memoria; int entero, unidades,decenas;int main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; ADC10CTL0 = 0x0010; ADC10CTL1= 0x3000; ADC10AE0 = 0x08; ADC10MEM; P1DIR = 0xF7; P1OUT = 0x00; P2DIR=0xF7; P2SEL=0; P2SEL2=0; P2OUT=0x00;

for(;;)

Page 11: Practicas msp430 ITM Lenguajes de Interfaz

{ ADC10CTL0|= (BIT0 | BIT1); while(ADC10CTL1 == 1); ADC10MEM;//LEE EL REGISTRO DE MEMORIA memoria = ADC10MEM; ADC10CTL0 &=~ (BIT0 | BIT1);//APAGA EL ADC //resultado=((ADC10MEM*3.3*100)/1023); entero=(int)(memoria/3); unidades=(int)(entero%10); decenas = (int)(entero/10); __delay_cycles(1000); switch(decenas) //switch para encender los segmentos del display dependiendo del valor de num { case 0: P1OUT= 0x09; break; case 1: P1OUT= 0x6F; break; case 2: P1OUT= 0x8A; break; case 3: P1OUT= 0x2A; break; case 4: P1OUT= 0x6C; break; case 5: P1OUT= 0x38; break; case 6: P1OUT= 0x18; break; case 7: P1OUT= 0x6B; break; case 8: P1OUT= 0x08; break; case 9: P1OUT= 0x68; break; } switch(unidades){ //aplicamos el switch a las unidades para encender el display con este valor case 0: P2OUT= 0x09; break; case 1: P2OUT= 0x6F; break; case 2: P2OUT= 0x8A; break; case 3: P2OUT= 0x2A; break; case 4: P2OUT= 0x6C; break; case 5: P2OUT= 0x38; break; case 6: P2OUT= 0x18; break; case 7: P2OUT= 0x6B; break; case 8: P2OUT= 0x08; break; case 9: P2OUT= 0x68; break; } __delay_cycles(1000000); }}

Page 12: Practicas msp430 ITM Lenguajes de Interfaz

Conclusiones.

Pablo Elias Villagran Martinez.

Para trabajar con el MSP es importante, tener conocimiento acerca de sus registros, además de su configuración, se pueden hacer demasiadas cosas utilizando dicha herramienta, es importante además tener en cuenta que se puede hacer uso de sus dos puertos y que cada uno de ellos tiene 8 pines, y de los cuales el msp ya trae integrados algunas cosas que no son útiles tales como algunos leds, y un botón ubicado en el puerto 1. Pero dichos puertos deben ser configurados acorde a lo que ocupamos, es decir, debemos asignar cuales pines serán nuestras entradas (0’s) y cuales nuestras salidas (1’s). Por otro lado al realizar estas practicas finalmente en lo personal eh logrado entender un poco más acerca de lo anteriormente mencionado, pues a mi se me dificultaba demasiado entender todo esto. Y que para poder codificar, primero debes tomar en cuenta como conectaras todos tus elementos que emplearas en cada una de las practicas, además de tomar en cuenta elementos tales como el botón que tiene el msp, si es que lo vamos a emplear, etc.