Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/02/2010 #181

Avatar de Vegetal Digital

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Proba con un cristal de 4MHz, a mí nunca me andan los lcd con mayor velocidad que esa.
Saludos
13/02/2010 #182

Avatar de Moyano Jonathan

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Vegetal Digital que raro lo que vos decis...yo los he puesto a andar a 48Mhz sin ningún drama usando un PIC182550
14/02/2010 #183


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
entonces que puedo hacer... ya estoy arta... no encuentro el error... plis que alguien me ayude...
14/02/2010 #184

Avatar de george.manson.69

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
magdalena dijo: Ver Mensaje
entonces que puedo hacer... ya estoy arta... no encuentro el error... plis que alguien me ayude...
MM yo no veo que en los #fuses halas puesto el HS para que trabaje con un cristal de 20Mhz, y tambien veo que en los fueses esta el WDT activado, aunque lo desactives en main() mejor desactivalo desde los fuses.

He aqui 3 practicas con labview con pic18f2550 con el protocolo USB modo Bulk Transfer. Espero que sea de utilidad. Y por supuesto el Diagramas y programas para el microcontrolador hecho en C.
Archivos Adjuntos
Tipo de Archivo: pdf Manual Labview&PIC18.pdf (1.009,4 KB (Kilobytes), 352 visitas)
Tipo de Archivo: zip Labview&Bulk.zip (295,6 KB (Kilobytes), 222 visitas)
14/02/2010 #185


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
ok gracias.... estoy revisando lo que me has enviado... yo te aviso despues si me ha servido... si por ahi tienen un codigo de una lcd con rw a tierra y funcionando a 20Mhz y me lo proporcionan se los agradeciria mucho... gracias...

ah y no le he puesto HS porque el clock es externo tiene un cristal de 20Mhz... y esta conectado entre la pata OSC1 Y OSC2
19/02/2010 #186

Avatar de COSMICO

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
george.manson.69.
Recuerdas el favor que te pedi al respecto del pequeño publik .
del curso de mcu..
Me podrias colaborar..???
Gracias amigo..
22/02/2010 #187

Avatar de george.manson.69

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
COSMICO dijo: Ver Mensaje
george.manson.69.
Recuerdas el favor que te pedi al respecto del pequeño publik .
del curso de mcu..
Me podrias colaborar..???
Gracias amigo..
Disculpa por la tardansa aqui esta lo que me pedists sobre el publik
Archivos Adjuntos
Tipo de Archivo: zip Matriz.zip (106,6 KB (Kilobytes), 303 visitas)
22/02/2010 #188

Avatar de COSMICO

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Gracias amigo..
Y disculpa el acoso.Estamos en contacto
23/02/2010 #189


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
george.manson.69 dijo: Ver Mensaje
hola ingdenis1 encontre esta liberia de un teclado 4x4 en google...a ver si te sirve!

Código:
///////////////////////////////////////////////////////////////////////////
////                     KBD_LIB.C by Redraven                         ////
////                                                                   ////
////                     Derived from KBDD.C                           ////
////                  Generic keypad scan driver                       ////
////                                                                   ////
////  kbd_init()   Must be called before any other function.           ////
////                                                                   ////
////  c = kbd_getc(c)  Will return a key value if pressed or /0 if not ////
////                   This function should be called frequently so as ////
////                   not to miss a key press.                        ////
////                                                                   ////
///////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,1997 Custom Computer Services            ////
//// This source code may only be used by licensed users of the CCS C   ////
//// compiler.  This source code may only be distributed to other       ////
//// licensed users of the CCS C compiler.  No other use, reproduction  ////
//// or distribution is permitted without written permission.           ////
//// Derivative programs created using this software in object code     ////
//// form are not restricted in any way.                                ////
////////////////////////////////////////////////////////////////////////////

////////////////// The following defines the keypad layout on port D

// Un-comment the following define to use port B
#define use_portb_kbd TRUE

// Make sure the port used has pull-up resistors (or the LCD) on
// the column pins


#if defined(__PCH__)
#if defined use_portb_kbd
   #byte kbd = 0xF81              // This puts the entire structure
#else
   #byte kbd = 0xF83              // This puts the entire structure
#endif
#else
#if defined use_portb_kbd
   #byte kbd = 6                  // on to port B (at address 6)
#else
   #byte kbd = 8                  // on to port D (at address 8)
#endif
#endif

#if defined use_portb_kbd
   #define set_tris_kbd(x) set_tris_b(x)
#else
   #define set_tris_kbd(x) set_tris_d(x)
#endif

//Keypad connection:   (for example column 0 is B0)

#define COL0 (1 << 0) // PIN_B0
#define COL1 (1 << 1) // PIN_B1
#define COL2 (1 << 2) // PIN_B2
#define COL3 (1 << 3) // PIN_B3

#define ROW0 (1 << 4) // PIN_B4
#define ROW1 (1 << 5) // PIN_B5
#define ROW2 (1 << 6) // PIN_B6
#define ROW3 (1 << 7) // PIN_B7


#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)


#define ALL_PINS (ALL_ROWS|COL0|COL1|COL2|COL3)


// Keypad layout:

char const KEYS[4][4] = {{'1','2','3','A'},
                         {'4','5','6','B'},
                         {'7','8','9','C'},
                         {'*','0','#','D'}};


#define KBD_DEBOUNCE_FACTOR 33    // Set this number to apx n/333 where
                                  // n is the number of times you expect
                                  // to call kbd_getc each second

void kbd_init() {
}

char kbd_getc( ) {
   static byte kbd_call_count;
   static short int kbd_down;
   static char last_key;
   static byte col;

   byte kchar;
   byte row;

   kchar='\0';
   if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
       switch (col) {
         case 0   : set_tris_kbd(ALL_PINS&~COL0);
                    kbd=~COL0&ALL_PINS;
                    break;
         case 1   : set_tris_kbd(ALL_PINS&~COL1);
                    kbd=~COL1&ALL_PINS;
                    break;
         case 2   : set_tris_kbd(ALL_PINS&~COL2);
                    kbd=~COL2&ALL_PINS;
                    break;
         case 3   : set_tris_kbd(ALL_PINS&~COL3);
                    kbd=~COL3&ALL_PINS;
                    break;
       }

       if(kbd_down) {
         if((kbd & (ALL_ROWS))==(ALL_ROWS)) {
           kbd_down=false;
           kchar=last_key;
           last_key='\0';
         }
       } else {
          if((kbd & (ALL_ROWS))!=(ALL_ROWS)) {
             if((kbd & ROW0)==0)
               row=0;
             else if((kbd & ROW1)==0)
               row=1;
             else if((kbd & ROW2)==0)
               row=2;
             else if((kbd & ROW3)==0)
               row=3;
             last_key =KEYS[row][col];
             kbd_down = true;
          } else {
             ++col;
             if(col==4)
               col=0;
          }
       }
      kbd_call_count=0;
   }
  set_tris_kbd(ALL_PINS);
  return(kchar);
}
y este es un ejemplo donde al aplanar una tecla del teclado 4x4 te lo envia a la compu!
(yo no lo hice, por ahi me lo encontre jeje)


Código:
#include <16f876a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use fast_io(b)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include "kbd_lib.c"

void main(){
   char mitecla=0;

   kbd_init();
   printf("\rKeyboard 4x4 monitor\r\r";
   do {
      mitecla=kbd_getc();
      if(mitecla!=0){
         putc(mitecla);
      }
   } while (TRUE);
}
hola george.manson quisiera saber como agregar esa libreria de keypath 4x4 a mi software ccs para asi trabajar mas facilmente podrias explicar el codigo de ejemplo que encontraste
23/02/2010 #190

Avatar de george.manson.69

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
myesid dijo: Ver Mensaje
hola george.manson quisiera saber como agregar esa libreria de keypath 4x4 a mi software ccs para asi trabajar mas facilmente podrias explicar el codigo de ejemplo que encontraste
es facil copia el codigo y pegalo en bloc de notas conla extencion '.c' y grabalo en la carpeta de drivers donde esta ubicado donde esta instado el programa PICC.

y hacer tu programita solo incluye la libreria y listo
25/02/2010 #191


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Hola que tal yo solucione mi problema si alguien necesita el codigo aqui se los dejo... gracias igual por su ayuda...

Código:
#define use_porte_lcd TRUE  //LCD conectado al puerto e

struct lcd_pin_map {                 // This structure is overlayed
   BOOLEAN enable;       //MODIFICADA PARA EASYPIC--------------------
   BOOLEAN rs;      //MODIFICADA PARA EASYPIC--------------------
   BOOLEAN unused;  // on to an I/O port to gain
   BOOLEAN unused1;  // access to the LCD pins.
                    // The bits are allocated from
                    // low order up.  ENABLE will
   int   data : 4;  // be pin B3-------------------------
} lcd;

#byte lcd = 0xF84
#define set_tris_lcd(x) set_tris_e(x)

#define lcd_type 2        // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the 2nd line  

byte const LCD_INIT_STRING[4] =
{
 0x28 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots
 0xf,                    // Display on
 1,                      // Clear display
 6                       // Increment cursor
 }; 
//-------------------------------------

struct lcd_pin_map const LCD_WRITE = {0,0,0,0,0}; // For write mode all pins are out

void lcd_send_nibble(byte nibble)
{
   lcd.data = nibble;
   delay_cycles(1);
   lcd.enable = 1;
   delay_us(2);
   lcd.enable = 0;
}
//-----------------------------------

//----------------------------------------

// Send a byte to the LCD.
void lcd_send_byte(byte address, byte n)
{
      lcd.rs = 0;
      delay_us(3000);
      lcd.rs = address;
      delay_cycles(1);
      lcd.enable = 0;
      lcd_send_nibble(n >> 4);
      lcd_send_nibble(n & 0xf);
}
//---------------------------------------

void lcd_init(void)
{
   BYTE i;
   set_tris_lcd(LCD_WRITE);
   lcd.rs = 0;
   lcd.enable = 0;
   delay_ms(50);
   lcd_send_nibble(2);
   delay_ms(5);
   for(i=0;i<=3;++i)
   {
      lcd_send_byte(0,LCD_INIT_STRING[i]);
      delay_ms(5); 
   }
}
//----------------------------
 
void lcd_gotoxy(byte x, byte y)
{
   byte address;
   if(y != 1)
      address = lcd_line_two;
   else
      address=0;
   address += x-1;
   lcd_send_byte(0, 0x80 | address);
}
//-----------------------------

void lcd_putc(char c)
{
   switch(c)
   {
      case '\f':                //limpia pantalla
         lcd_send_byte(0,1);
         delay_ms(2);
         break;
      case '\n':                //cambio de linea
         lcd_gotoxy(1,2);
         break;
      case '\b':                //retrocede 1 caracter
         lcd_send_byte(0,0x10);
         break;
      default:
         lcd_send_byte(1,c);
         break;
   }
}
//------------------------------

void lcd_setcursor_vb(short visible, short blink) 
{
  lcd_send_byte(0, 0xC|(visible<<1)|blink); 
}
26/02/2010 #192

Avatar de Vegetal Digital

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
magdalena dijo: Ver Mensaje
Hola que tal yo solucione mi problema si alguien necesita el codigo aqui se los dejo... gracias igual por su ayuda...
¿Cuál era el problema?
26/02/2010 #193


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Hola a todos

estoy programando en Ccs un 16f877a y la cosa es que necesito leer los bits del puerto E individualmente, tengo conectadas ahi resistencias y botones y de ahi a la fuente, tengo algo como esto


port_e_pullups(TRUE);
set_tris_E=(0b00000111);
if(bit_test(9,1))
{
// aqui irian las instrucciones en caso de que se este presionando el boton conectado al pin RE0
}
while(true){}
}

se que estoy haciendo algo mal porque no me sale o no se que me falte o que onda

mucho agradecere su ayuda
26/02/2010 #194

Avatar de george.manson.69

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Destripador dijo: Ver Mensaje
Hola a todos

estoy programando en Ccs un 16f877a y la cosa es que necesito leer los bits del puerto E individualmente, tengo conectadas ahi resistencias y botones y de ahi a la fuente, tengo algo como esto


port_e_pullups(TRUE);
set_tris_E=(0b00000111);
if(bit_test(9,1))
{
// aqui irian las instrucciones en caso de que se este presionando el boton conectado al pin RE0
}
while(true){}
}

se que estoy haciendo algo mal porque no me sale o no se que me falte o que onda

mucho agradecere su ayuda
usa la logica de switch case:

por ejemplo

Código:
x=input_a() & 0b00000111; //Tomo solo los tres switches

switch(x){
case 0: //sentencia
case 1: //sentecnia
case ....
case 7: //ya que los tres interruptores toman un valor decimal de 7 cuando estan conectados los tres interruptores

}
26/02/2010 #195

Avatar de Vegetal Digital

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
hay varias formas yo nunca use la instrucción bit_test pero te muestro estas otras alternativas:

Código:
if(INPUT(PIN_E0))
{
//insertar aqui código

}
o definis una variable:

Código:
while(TRUE)
{
pulsador=INPUT(PIN_E0);
if(pulsador==1)
{
//inserte aqui codigo
}
}

o le das un nombre al pin
Código:
#bit BOTON = PORTE.0

if(BOTON)
{
//inserte aquí su codigo
}
La última es la mas cómoda, espero te sirva
26/02/2010 #196

Avatar de COSMICO

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Estaba por sugerirte lo mismo que el amigo
Vegetal Digital, pero creo que ya tienes suficientes ejemplos..
La verdad tampoco uso esta sentencia para leer puertos
Mas bien a nivel de bits, con if, o con la sentencia switch case, como sugiere otro amigo en el foro..
26/02/2010 #197


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
gracias a todos

lo voy a intentar y les aviso como salio
01/03/2010 #198


Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
eeeee

si me salio

muchas gracias a todos!!!!!!!!!!!!!!!!!!
01/03/2010 #199

Avatar de COSMICO

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Me alegra que te saliera todo bien..
08/03/2010 #200

Avatar de Hernan83

Respuesta: Ccs c programas hechos en mplab(Proyecto completo)
Estoy usando un pic 16F877 con un LCD 4X20 en CCS,lo conecto al puerto B en la configuracion de 4 bits,cristal de 4 Mhz con el siguiente codigo:

Código PHP:
#include <16F877.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <LCD420.c>
#define use_portb_lcd TRUE

void main() {
 
 
 
lcd_init();
 
 
lcd_putc("\f Hernan Alberto A. \n");
 
lcd_putc("Ejemplo LCD en CCS C");
 

Ya me estoy volviendo loco!!!:enfadado: y no me funciona,puse este codigo,por lo simple,estoy haciendo las cosas muy simples pero nada! Habre puesto bien los fuses? Solo se me iluminan las lineas 1 y 3. Alguien puede decirme que podra ser?
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.