Autor Tema: Ejemplitos en C para 16F648A  (Leído 736436 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: RE: Ejemplitos en C para 16F648A
« Respuesta #330 en: 29 de Julio de 2007, 13:22:05 »
Vamos con un ejemplito mas de manejo de lcd!!!esta vez haremos un contador de 0 a 9 y vuelta a empezar pero con un pulsador, es decir cada vez que presionemos el pulsador se mostrara el siguiente digito de nuestro contador hasta llegar a 9 que entonces si volvemos a pulsar el boton volvera a cero y se escuchara un beep del zumbador conectado al pic:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                     27/Agosto/05
//
//   Programa:   Contador 0a9 por LCD con pulsador y buzzer
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.21      Simulador:    Proteus 6.7sp3
//
//   Notas: Se muestra por pantalla de lcd(LM016L) un mensaje de inicio del programa
//         y se espera hasta que pulsemos el boton, entonces se borra pantalla y cada vez
//         que presionemos el boton se ira incrementando en un valor el digito mostrado en
//         la mitad de la fila 1º del lcd hasta llegar a 9 que entonces volvera a 0 y se
//          emitira un beep.
//         Tener en cuenta que hay que poner la directiva NOLVP para que el pin B4 sea de
//         salida.
//            ·tabNum[] -> vector donde se almacenan numeros del contador 0a9
//            ·i -> indice para vector tabNum
//   Conexiones:      B0 -> E           
//               B1 -> RS         
//               B2 -> RW      
//               B4 -> D4       
//               B5 -> D5           
//               B6 -> D6   
//               B7 -> D7
//               B3 -> Buzzer(beep)                   
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#define use_portb_lcd TRUE         //definir portb lcd
#include<lcd.c>                  //libreria manejo lcd
      
///PROGRAMA
void main(void)
{
   char tabNum[10]={"0","1","2","3","4","5","6","7","8","9"},i=0;   //tabla y variable definida
      
   lcd_init();         //inicializa lcd
   printf(lcd_putc,"Presione boton
para contador0a9" );   //muestra mensaje inicio

   do{                     //espera hasta que se pulse boton...
   }while(input(PIN_A0)==1);
   printf(lcd_putc,"f" );      //...para borrar pantalla e iniciar contador
   
   printf(lcd_putc,"
         VsZeNeR"05" );   //auto publicidad en la 2ºfila lcd
   lcd_gotoxy(8,1);                  //vuelve 1ºfila lcd y apunta la mitad de la columna
   
   for( ; ; ){                     //bucle...
      if(!input(PIN_A0)){                  //¿se ha pulsado el boton?
         do{                           //SI -> eliminar...            
         }while(!input(PIN_A0));            //...rebotes del boton
         if(i>9){                     //¿se ha mostrado digito 9?
            i=0;                     //SI -> restaura valor indice(para mostrar digito 0)
            output_high(PIN_B3);         //activa buzzer(beep)
            delay_ms(50);               //tiempo de escucha del beep
            output_low(PIN_B3);            //desactiva buzzer(beep)
            }
         printf(lcd_putc,"%c",tabNum[ i ]);   //muestra por pantalla el numero
         printf(lcd_putc,"" );            //retrasa el cursor una posicion(escribe encima)
         i++;                        //incremento contador indice tabNum
         }         
      }                     //...infinito
}

Ya tenemos nuestro primer contador en lcd!!!<img   src="http://pics.miarroba.com/caretos/wink.gif" alt="Giño" title="Giño" />

Hola, bueno tengo un problemita, aunque el array está definido como tipo char, el compilador CCS v 4.023 me da un error, solo sacando las comillas de los números adentro del array se compila correctamente.
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Ejemplitos en C para 16F648A
« Respuesta #331 en: 29 de Julio de 2007, 14:02:09 »
Ponle simples comilla '0' en lugar de las dobles comilla "0". Las dobles comillas son para strings y las simples para chars. Prueba y dinos algo.  :P

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: RE: Ejemplitos en C para 16F648A
« Respuesta #332 en: 29 de Julio de 2007, 21:57:01 »
Y aqui esta un ejemplito mas!!!esta vez el ejemplo consiste en un teclado y una lcd conectados....decir que para este ejemplo hacen falta las librerias lcd2.c y kbd3x4.c que las podreis encontrar en el post anterior....lcd2.c maneja la lcd pero las lineas de control estan en el porta y las de datos en el b, tambien decir que usamos 8bits de datos, y la kbd3x4.c es para manejar teclados 3x4 y esta conectado al portb conjuntamente al lcd por lo tanto debemos hacer una seleccion dinamica para manejar conjuntamente el lcd y el teclado(de eso se encargan la slibrerias....jeje), bueno el programa consiste en mostrar por lcd la tecla pulsada en el teclado:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                    17/Septiembre/05
//
//   Programa:   LCD y teclado 3x4
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.21      Simulador:    Proteus 6.7sp3
//
//   Notas: Se muestra por lcd la tecla pulsada conectado un 
//         keypad 3x4 al pic. Tener en cuenta que hay que poner la directiva
//         NOLVP para que el pin B4 sea de salida.
//
//   Conexiones:      B0 -> D0 LCD/Columna 1 keypad
//               B1 -> D1 LCD/Columna 2 keypad         
//               B2 -> D2 LCD/Columna 3 keypad      
//               B3 -> D3 LCD       
//               B4 -> D4 LCD/Fila A keypad           
//               B5 -> D5 LCD/Fila B keypad   
//               B6 -> D6 LCD/Fila C keypad
//               B7 -> D7 LCD/Fila D keypad
//               A0 -> RS LCD
//               A1 -> RW LCD
//               A2 -> E  LCD             
//////////////////////////////////////////////////////////////////////////////////
#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#include<kbd3x4.c>               //libreria manejo keypad
#include<lcd2.c>               //libreria manejo lcd 8bits   
#use fast_io(A)
#use fast_io(B)

///PROGRAMA
void main(void)
{
   char c;         //variable donde se almacena tecla pulsada
   
   lcd_init();      //inicializa lcd
   
   lcd_putc("   VsZeNeR"05   
Tecla pulsada:" );   //presentacion
   lcd_gotoxy(15,2);                        //donde se va a mostrar tecla
   
   for( ; ; ){   //bucle...
      do{               //espera hasta...
         c=kbd_getc();   
         }while(c==0);   //...pulsar una tecla
         
      lcd_putc(c);      //muestra tecla pulsada en lcd
      lcd_putc("" );      //retrocede una posicion(escribe encima de la ultima tecla mostrada)
      }      //...infinito
      
 
}

Pues ya sabemos usar lcd y teclado!!!jeje hasta pronto!<img   src="http://pics.miarroba.com/caretos/wink.gif" alt="Giño" title="Giño" />

Que porquería, las librerías no están en ningun lado. LA MEN TA BLE
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: RE: Ejemplitos en C para 16F648A
« Respuesta #333 en: 30 de Julio de 2007, 01:44:16 »
Y aqui esta un ejemplito mas!!!esta vez el ejemplo consiste en un teclado y una lcd conectados....decir que para este ejemplo hacen falta las librerias lcd2.c y kbd3x4.c que las podreis encontrar en el post anterior....lcd2.c maneja la lcd pero las lineas de control estan en el porta y las de datos en el b, tambien decir que usamos 8bits de datos, y la kbd3x4.c es para manejar teclados 3x4 y esta conectado al portb conjuntamente al lcd por lo tanto debemos hacer una seleccion dinamica para manejar conjuntamente el lcd y el teclado(de eso se encargan la slibrerias....jeje), bueno el programa consiste en mostrar por lcd la tecla pulsada en el teclado:

////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                    17/Septiembre/05
//
//   Programa:   LCD y teclado 3x4
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.227
//   Entorno IDE: MPLAB IDE v7.21      Simulador:    Proteus 6.7sp3
//
//   Notas: Se muestra por lcd la tecla pulsada conectado un 
//         keypad 3x4 al pic. Tener en cuenta que hay que poner la directiva
//         NOLVP para que el pin B4 sea de salida.
//
//   Conexiones:      B0 -> D0 LCD/Columna 1 keypad
//               B1 -> D1 LCD/Columna 2 keypad         
//               B2 -> D2 LCD/Columna 3 keypad      
//               B3 -> D3 LCD       
//               B4 -> D4 LCD/Fila A keypad           
//               B5 -> D5 LCD/Fila B keypad   
//               B6 -> D6 LCD/Fila C keypad
//               B7 -> D7 LCD/Fila D keypad
//               A0 -> RS LCD
//               A1 -> RW LCD
//               A2 -> E  LCD             
//////////////////////////////////////////////////////////////////////////////////
#include <16f648a.h>            //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#include<kbd3x4.c>               //libreria manejo keypad
#include<lcd2.c>               //libreria manejo lcd 8bits   
#use fast_io(A)
#use fast_io(B)

///PROGRAMA
void main(void)
{
   char c;         //variable donde se almacena tecla pulsada
   
   lcd_init();      //inicializa lcd
   
   lcd_putc("   VsZeNeR"05   
Tecla pulsada:" );   //presentacion
   lcd_gotoxy(15,2);                        //donde se va a mostrar tecla
   
   for( ; ; ){   //bucle...
      do{               //espera hasta...
         c=kbd_getc();   
         }while(c==0);   //...pulsar una tecla
         
      lcd_putc(c);      //muestra tecla pulsada en lcd
      lcd_putc("" );      //retrocede una posicion(escribe encima de la ultima tecla mostrada)
      }      //...infinito
      
 
}

Pues ya sabemos usar lcd y teclado!!!jeje hasta pronto!<img   src="http://pics.miarroba.com/caretos/wink.gif" alt="Giño" title="Giño" />

Bueno amigo Zenner, todos los ejemplos para simular LCD con otra cosa (teclado, rs232, etc) me tira el error en Proteus 7.1:

NOT BUILT - requires CCSC (pero yo lo compilé antes)


Thanks for ayudarme as soon as posible

Un abrazo
« Última modificación: 30 de Julio de 2007, 01:58:24 por zagoaristides »
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: Ejemplitos en C para 16F648A
« Respuesta #334 en: 30 de Julio de 2007, 01:59:13 »
me sale este mensaje de error a la hora de ejecutar el programa rs232 & keypad.

SIMULATION LOG
==============
Design:   C:\Documents and Settings\Alfonso\Escritorio\vs_rs232&keypad.DSN
Doc. no.: <NONE>
Revision: <NONE>
Author:   <NONE>
Created:  17/09/05
Modified: 17/09/05

Compiling source files...
Processing vs_rs232&keypad.c...
NOT built - requires CCSC
N.B. 3rd party assemblers such as MPASM, ASEM51, ASM11 and AVRASM can be installed using the Proteus SETUP program.

Build FAILED with 1 error(s).



¿SabéIS de que puede ser?

gracias

A MI LO MISMO
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado zagoaristides

  • PIC12
  • **
  • Mensajes: 99
    • deportes de contacto y fitness
Re: Ejemplitos en C para 16F648A
« Respuesta #335 en: 30 de Julio de 2007, 02:07:38 »
Yo tengo el mismo problema, pudiste solucionarlo???
Nadie nació sabiendo...Que genio ese Nadie!!!

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: Ejemplitos en C para 16F648A
« Respuesta #336 en: 30 de Julio de 2007, 08:54:23 »
Prueba esto:
Ve a la pestaña SOURCE del proteus ,cuando lo tengas abierto , con el esquema cargado y listo para simular.
Despliega la pestaña y entra en ADD/REMOVE SOURCE FILES dentro en la pestaña de CODE GENERATION TOOL selecciona NONE y arriba en SOURCE CODE FILENAME que no ponga nada.
Acepta y prueba a simular.
Si haciendo esto funciona el simulador, el error  es que no tienes integrado el CCS con PROTEUS.

Saludos

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: Ejemplitos en C para 16F648A
« Respuesta #337 en: 30 de Julio de 2007, 09:13:21 »
Con respecto a las librerías aquí están, ves como no es tan lamentable la filosofia del foro es compartir y compartir y compartir.
Saludos

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Ejemplitos en C para 16F648A
« Respuesta #338 en: 30 de Julio de 2007, 09:26:41 »
zagoaristides:

Lo que me parece de verdad lamentable es tu comentario despectivo, primero porque no es de buena educación despreciar de esa forma lo que se recibe gratuitamente y después y principal  porque es injusto:  este trabajo ha sido realizado con gran esfuerzo por parte del amigo vszener y otros amigos del foro que desinteresadamente lo ponen a disposición de todo el que acierta a pasar por aquí. y así durante años. Y ciertamente no es una porquería.

Te pongo este post porque sé que la prudencia del amigo vszener le va a impedir contestarte como es debido, pero te ruego que en lo sucesivo pienses en las consecuencias de tus palabras antes de escribirlas.

Muchas gracias.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Ejemplitos en C para 16F648A
« Respuesta #339 en: 30 de Julio de 2007, 09:46:17 »
Cierto, para LA MEN TA BLE, tu actitud zagoaristides.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #340 en: 30 de Julio de 2007, 11:13:16 »
Sin entrar en batallas inecesarias, voy a lo práctico:

1. Que un código no te compile tal cual está en el foro, es normal, ya que antes este post, y todo este foro, estaba alojado en miarroba, al mudarnos de servidor, pues algunos post se modificaros, uno de ellos el de la lcd, aunque si te bajas el archivo, está correctamente escrito, es más, ya a un integrante del foro, en este mismo tema, me preguntó algo similar y le contesté lo que acabo de poner arriba.

2. Todas las librerias como así todos los ejemplitos puestos en este post, están listos para ser descargados desde este mismo post, pero aparte, en el índice del post, está también un enlace a un disco virtual, donde te podrás descargar todos los ejemplitos y todas las librerias.

4. Todos los problemas posibles que te puedas encontrar con estos ejemplitos están respondidas en alguna parte de las 18 páginas que tiene este post, normalmente cerca de la página donde está el ejemplito en sí, que está puesta en el índice del post.

3. Todos los ejemplitos aquí puestos, es simplemente una mera orientación de cómo se puede usar los periféricos del pic en lenguaje C.

Y para concluir, me quedo con una frase de la firma del amigo RedPic: Contra la estupidez los propios dioses luchan en vano


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Ejemplitos en C para 16F648A
« Respuesta #341 en: 30 de Julio de 2007, 19:08:17 »
Te metiste mal Zago querido!!
Estas en uno de los hilos mas leidos del foro, te recomiendo que antes de patear otro hormiguero aqui, antes seas capaz de hacer por los demas solo un decimo de lo que ha hecho en este hilo el amigo Vszener!!

Hay dos formas de componer un lio de estos:
Una es pedir disculpas por el exabrupto...
La segunda es no meterse en estos lios... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Burzredion

  • PIC10
  • *
  • Mensajes: 28
    • Burz n' Bots
Re: Ejemplitos en C para 16F648A
« Respuesta #342 en: 21 de Agosto de 2007, 21:28:26 »
Saludos,

muy bueno el cursillo, yo también empecé a hacer mis pininos gracias a este cursillo y no había tenido oportunidad de agradecer a Vszener por su arduo trabajo.

Pues también quería aprovechar para pedir si pueden subir la librería del teclado matricial 4x4 para Proteus que pues lo he perdido y no lo hallo por ninguna parte.

gracias.
Si lo escuchamos, lo olvidamos; si lo vemos, lo recordamos; si lo hacemos, lo entendemos. (Proverbio)





Saludos desde Lima-Perú

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Ejemplitos en C para 16F648A
« Respuesta #343 en: 22 de Agosto de 2007, 05:21:31 »
Buenas!!! Gracias por haber usado estos ejemplitos.

En el Disco Virtual, que puse el link e el índice, te puedes descargar todo lo que existe en este post.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado jarod03

  • PIC10
  • *
  • Mensajes: 7
Re: Ejemplitos en C para 16F648A
« Respuesta #344 en: 27 de Agosto de 2007, 21:45:38 »
Buen dia para todos los amantes de pic....
Soy nuevo en la programacion de pic en C, todo lo que hecho con pic ha sido en assembler.

quiero hacer un reloj con el ds1307 y ademas conectarle una teclado matricial para poder configurarlo y que la hora se visualice en una pantalla de lcd.

hice una  parte en assembler pero en C no se como arrancar si me pudierana ayudar se los agradeceria