Sei sulla pagina 1di 13

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

Practica 1 Contador Hexadecimal.


Material.

MSP430 (Texas Instruments)


Protoboard
Conectores hembra/macho MSP
2 displays 7 segmentos

Descripcin.
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 botn del MSP que se
encuentra en el Pin 3 del Puerto 1.

Resolucin.
Para poder imprimir los nmeros usando los dos dgitos, es necesario
hacer uso de los pines de los dos puertos, es decir, un puerto distinto
para cada display. El cdigo quedo de la siguiente manera:

Practica 2 Teclado Matricial.


Material

MSP430 (Texas Instruments)


Protoboard
Conectores hembra/macho MSP
Display 7 segemntos
Teclado Matricial 4x4

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

Resolucin.
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 reset
WDTCTL = 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 comparacin y ver cual tecla es la que se
esta presionando esto lo haremos mediante corrimientos.
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 presin de
botn, y dentro de este chequeo mediante el if, posteriormente
realizamos un switch con la variable salida, para verificar cual es el
botn dentro del rengln 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;
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;
}
}
}

Practica 3 Delays con teclado matricial 4x4


Material

MSP430 (Texas Instruments)


Protoboard
Conectores hembra/macho MSP
Display 7 segemntos
Teclado Matricial 4x4

Descripcin.
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 librera, 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.

Resolucin.
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 bsicamente 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){//Mtodo de retardo
TACCR0=Tiempo;//Asignamos un cronmeto que igualamos al tiempo
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 travs 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){
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;
}
}
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){
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

Descripcin.
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 centgrados.

Resolucin.
#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(;;)
{
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);

}
}

Conclusiones.
Pablo Elias Villagran Martinez.
Para trabajar con el MSP es importante, tener conocimiento acerca de
sus registros, adems de su configuracin, se pueden hacer demasiadas
cosas utilizando dicha herramienta, es importante adems 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 botn ubicado en
el puerto 1. Pero dichos puertos deben ser configurados acorde a lo que
ocupamos, es decir, debemos asignar cuales pines sern nuestras
entradas (0s) y cuales nuestras salidas (1s). Por otro lado al realizar
estas practicas finalmente en lo personal eh logrado entender un poco
ms 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, adems de tomar en
cuenta elementos tales como el botn que tiene el msp, si es que lo
vamos a emplear, etc.

Potrebbero piacerti anche