Vous êtes sur la page 1sur 10

ESCUELA SUPERIOR POLITCNICA DEL

LITORAL

FIEC


Laboratorio de Microcontroladores


Prctica

Nombre de la Prctica
Alumno/a

Nombre del estudiante


Paralelo: # (Acadmico)
Grupo: # (Segn el puesto de trabajo)


Fecha de presentacin:
Da mes ao


2011 2 TRMINO




NOTA IMPORTANTE: En la escritura de su reporte utilice la fuente
ARIAL 12

1.- Enunciado del proyecto

// Se describe en forma general lo que hace el programa sin
describir el cdigo.

Este programa muestra el nombre del estudiante en una LCD y un men en
una terminal virtual, adems pide que en la LCD que muestren los goles
marcados y quien gan. Si se desea comenzar de nuevo el programa se debe
presionar el botn de reset, esto lo lleva al men inicial.

Adems se realiza comunicacin va serial del micro al computador una vez
que se empieza el programa.


2.- Diagrama de Bloques

// Se muestra grficamente las entradas y salidas del proyecto
de tal forma que sea entendible para todos como funciona el
proyecto.









3.- Diagrama de Flujo funcional del Programa principal y de las
subrutinas

Programa Principal:

//Se explica el flujo del programa principal mediante bloques
de accin y bloques de pregunta para as indicar como est
funcionando el programa.

CLICK
TECLADO
CUENTA
Y DESPLAZA EN LA LCD
LA POSICION EN LA QUE
SE MUESTRAN LOS
NUMEROS
PRESS
DIV(/)
MUESTRA CUANTOS
DIGITOS HAN SIDO
INGRESADOS Y LOS
MUESTRA EN LA LCD Y
VIRTUAL TERMINAL
REST
0
1
1
1
0
0
INICIO



Subrutinas:

//Se describen las subrutinas llamadas por el programa
principal como rutinas de retardo, conteo o rutinas creadas por
el mismo programador.

SI MARCA 3
PUNTOS
INCREMENTA EN 3 EL
EQUIPO 1 O 2
SI MARCA 2
PUNTOS
INCREMENTA EN 2 EL
EQUIPO 1 O 2
REST
0
1
1
1
0
0
INICIO
SUBRUTINA






4.- Descripcin del algoritmo o estrategia utilizada.

//Se describe detalladamente la forma en que se ha
desarrollado el programa y que se encuentra reflejada en el
diagrama de flujo.

1. Se inicializan la LCD el teclado y la comunicacin USART con una
velocidad de 9600 baudios, esto es importante para poder usar las
funciones de las libreras disponibles..

2. Preguntamos si quiere iniciar el proceso del tablero electrnico
presionando la tecla on, luego se va a la subrutina llamada bsquet...

3. Ejecuta la funcin bsquet incrementado unas variables de tipo
contador, pero este incremento depender del puntaje de tiro que puede
ser 3, 2, 1, esto se lo hace preguntando en el teclado los valores de 4,
5,6 para equipo 1 y 7, 8,9 para el equipo 2.

En todos los programas descritos previamente se utilizar un reloj de 4MHz.

5.- Listado del programa fuente en lenguaje ensamblador con
comentarios en las lneas de cdigo que considere
fundamentales

//Se coloca el cdigo del programa funcional.

unsigned short kp=0,i,cnt2=0,cnt=0,sel=0,ini=0;
char txt[8];
char txt2[8];

// Keypad module connections
char keypadPort at PORTD;
// End Keypad module connections

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;

// End LCD module connections
void Move_Delay() { // Function used for text moving
Delay_ms(200); // You can change the moving speed here
}

void basquet(unsigned short kp){

if (kp == 52){
cnt=cnt+3;
}
if (kp == 53){
cnt=cnt+2;
}
if (kp == 54){
cnt=cnt+1;
}
Lcd_Out(1, 4, "Equi1");
if (cnt == 255) {
cnt = 0;
}

WordToStr(cnt, txt);
Lcd_Out(2, 1, txt);


if (kp == 55) { // Pressed key differs from previous
cnt2=cnt2+3;
}

if (kp == 56) { // Pressed key differs from previous
cnt2=cnt2+2;
}

if (kp == 57) { // Pressed key differs from previous
cnt2=cnt2+1;
}
Lcd_Out(1, 9, "Equi2");
if (cnt2 == 255) { // If counter varialble overflow
cnt2 = 0;
}

WordToStr(cnt2, txt2); // Transform counter value to string
Lcd_Out(2, 6, txt2); // Display counter value on Lcd
}


void main() {

ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;

UART1_Init(9600); // Initialize USART module
UART1_Write_Text("\n\rPrograma Marcador Electronico:\n\r\n\rBasquet");

Keypad_Init(); // Initialize Keypad
Lcd_Init(); // Initialize Lcd

Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1, 1, "ANA JIMENEZ G3 P6 2011");
Lcd_Out(2, 1, " PRESS ON");
for(i=0; i<15; i++) {
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}

for(i=0; i<15; i++) {
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}


do {
kp = 0; // Reset key code variable

// Wait for key to be pressed and released
do
//kp = Keypad_Key_Press(); // Store key code in kp variable
kp = Keypad_Key_Click(); // Store key code in kp variable
while (!kp);
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);


// Prepare value for output, transform key to it's ASCII value
switch (kp) {
//case 10: kp = 42; break; // '*' // Uncomment this block for keypad4x3
//case 11: kp = 48; break; // '0'
//case 12: kp = 35; break; // '#'
//default: kp += 48;

case 1: kp = 55; break; // 7 // Uncomment this block for keypad4x4
case 2: kp = 56; break; // 8
case 3: kp = 57; break; // 9
case 4: kp = 65; break; // A
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 8: kp = 66; break; // B
case 9: kp = 49; break; // 1
case 10: kp = 50; break; // 2
case 11: kp = 51; break; // 3
case 12: kp = 67; break; // C
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D

}

if(kp==42){
ini=1;
}
if(ini==1)
basquet(kp);

} while (kp!=35);

Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);

if(cnt>cnt2){
Lcd_Out(2, 1, "Gano J1");
}
if(cnt2>cnt){
Lcd_Out(2, 1, "Gano J2");
}
if(cnt2==cnt){
Lcd_Out(2, 1, "EMPATE");
}

}



























6.- Copia impresa del circuito armado en PROTEUS para la
simulacin en el momento de su ejecucin

//Se debe mostrar como esta funcionando el proyecto pero de
forma dinmica como se muestra:







7.- Conclusiones

//Se debe de tener como mnimo 5 lneas completas por cada
conclusin, sin errores ortogrficos ya que esto trae una
penalidad en su informe. Se debe hablar sobre los puntos u
objetivos logrados durante la prctica.

Se logr aprender de forma clara cada una de las sentencias que se usan
en lenguaje C y sus diferentes formas de uso, lo cual me permiti realizar el
proyecto de forma secuencial y entendible para cualquiera de mis
compaeros en este curso, sin importar las veces que se usen estas
funciones lo importante es saber si solucionan el problema que se nos
presenta en cada lnea de programacin.

Se hizo uso de las libreras de LCD, UART y teclado para la realizacin de
este proyecto ya que se deban cumplir varias funciones al mismo tiempo,
por un lado se preguntaba por la botonera y por otro se iba o diriga a una
funcin que permita sostener el marcador de bsquet. Con esto se aprendi
a combinar funciones para un mejor entendimiento del proceso de
programacin con microcontroladores.

Se puede concluir como punto final que cuando se usa este tipo de
programas con lenguaje C se debe de tener cuidado de seguir un orden
bien estructurado. En el presente trabajo se orden la ejecucin de
funciones en tal forma que el funcionamiento se lo pueda ir probando por
partes. Cuando se usan varias funciones estas deben de ejecutarse y luego
tener valores de retorno al programa principal.

















8.- Recomendaciones

//Se debe de tener como mnimo 3 lneas completas por cada
conclusin, no errores ortogrficos ya que esto trae una
penalidad en su informe. Se debe hablar de los problemas que
se tuvo durante la prctica.


Se recomienda no confiar en un totalmente en los resultados que se
obtienen con el simulador de PROTEUS, hay que tener siempre en cuenta
que una cosa es simulacin y otra muy diferente es la vida real en la que
aparecen muchas sorpresas.

No es recomendable corregir el programa sin tener una ltima copia del
mismo ya que un cambio podra provocar problemas e impedir la
compilacin y ahogarse en un vaso con agua. El orden es el mejo aliado
para evitarse problemas futuros.


Reducir el nmero de lneas es bueno para un mejor uso en la memoria del
PIC y evitar el desperdicio de la misma, adems se evita redundancias que
podran confundir a otro programador que quiera comprender el informe del
proyecto.

Vous aimerez peut-être aussi