Autor Tema: problemas en mensajes en lcd pic18f2550  (Leído 1060 veces)

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

Desconectado alejos123

  • PIC10
  • *
  • Mensajes: 1
problemas en mensajes en lcd pic18f2550
« en: 19 de Noviembre de 2016, 21:24:25 »
Muy buenas tardes a todos!
tengo ya algunos dias con dolor de cabeza por no poder poner los valores en pantallla lcd de un encoder incremental decremental,
no soy un experto programando y la verdad no encuentro alguna manera de hacer que este proyecto funcione, alguien tendra
idea del eror que estoy cometiendo? o que es lo que puede fallar?
 se que el programa funciona, porque lo he probado con leds, pero al momento de colocarle los codigos para lcd
deja de trabajar y no me despliega absolutamente nada.
espero alguien me pueda ayudar! :o :o :o :o

anexo el codigo

#include <P18F2550.h>   //processor specific variable definitions
#include <delays.h>
#include <xlcd.h>
#pragma config  PLLDIV = 4           //Divide by 4 (16 MHz oscillator input)
#pragma config CPUDIV = OSC1_PLL2   //[Primary Oscillator Src: /1][96 MHz PLL Src: /2]
#pragma config USBDIV = 2           //USB clock source comes from the 96 MHz PLL divided by 2
#pragma config FOSC = HS            //HS oscillator (HS)
#pragma config FCMEN = OFF          //Fail-Safe Clock Monitor disabled
#pragma config IESO = OFF           //Oscillator Switchover mode disabled
#pragma config PWRT = OFF           //PWRT disabled
#pragma config BOR = OFF            //Brown-out Reset disabled in hardware and software
#pragma config BORV = 0             //Maximum setting
#pragma config VREGEN = OFF        //USB voltage regulator disabled
#pragma config WDT = OFF            //WDT disabled (control is placed on the SWDTEN bit)
#pragma config WDTPS = 32768       // 1:32768
#pragma config CCP2MX = ON         // CCP2 input/output is multiplexed with RC1
#pragma config PBADEN = OFF        //PORTB<4:0> pins are configured as digital I/O on Reset
#pragma config LPT1OSC = OFF       //Timer1 configured for higher power operation
#pragma config MCLRE = ON          //MCLR pin enabled; RE3 input pin disabled
#pragma config STVREN = ON         //Stack full/underflow will cause Reset
#pragma config LVP = OFF           //Single-Supply ICSP disabled
#pragma config XINST = OFF          //Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
#pragma config DEBUG = OFF         //Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins

#pragma config CP0 = OFF //PROTECCION DE CODIGO
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF //PROTECCION DE ESCRITURA
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
#pragma config WRTC = OFF
#pragma config WRTB = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF //PROTECCION DE TABLA DE LECTURA
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF



void DelayFor18TCY(void)
{ Delay100TCYx(20);
return;
}

void DelayPORXLCD(void)
{ Delay10KTCYx(10);
return;
}

void DelayXLCD(void)
{ Delay10KTCYx(5);
return;
}
char palabra[] = "Pardos";
char palabra1[] = "ALEXIS";
int a=0;
int b;
char enc;  // Se almacenará el valor actual de RA0 y RA1, hasta la siguiente comparación.
char aux;  // Se almacenará el valor anterior de RA0 y RA1, hasta la siguiente comparación.
unsigned char ILIM;//incrementa o decrementa mi corriente maxima


void main(void)
{
TRISA= 0b11111111;
TRISB= 0b00000000;
ADCON1 = 0X0F; 
CMCON = 0X07;

Delay10KTCYx(200);
OpenXLCD(FOUR_BIT & LINES_5X7);
while (BusyXLCD());
WriteCmdXLCD(0x0E);
while (BusyXLCD());
WriteCmdXLCD(0x28);
while (BusyXLCD());
WriteCmdXLCD(0x06);
while (BusyXLCD());
WriteCmdXLCD(0x02);
while (BusyXLCD());
WriteCmdXLCD(0x01);
Delay10KTCYx(5);


while(1)
{

//--------AQUI SE LEE EL ENCODER -----------------------------------//
aux=enc;               // Igualamos 'AUX' y 'ENC' para luego comparar cuando cambie 'ENC'.
enc=PORTA & 3;         // Aislamos RA0 y RA1 como un número de 2 bits y se carga en la variable 'ENC'.
         
if ((aux==2)&&(enc==3))// Si en la comparación hay flanco de subida,
{
 
ILIM++;               // entonces incrementar una unidad el valor de X.
WriteCmdXLCD(0b10000101);
while (BusyXLCD());
putsXLCD("Vuelta ILIM");
return;       
}
         
if ((aux==3)&&(enc==2))// Si en la comparación hay flanco de bajada,

ILIM--;
WriteCmdXLCD(0b10000101);
while (BusyXLCD());
putsXLCD("Vuelta ILIM2");
return;                // entonces decrementar una unidad el valor de X.
}
        //--------------------SE DEJO DE LEER EL ENCODER---------//

}

 
}



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:problemas en mensajes en lcd pic18f2550
« Respuesta #1 en: 20 de Noviembre de 2016, 02:20:39 »
Nunca use la libreria xlcd Asi que en eso no te puedo ayudar.

Pero lo unico que estoy notando son las cantidad de return sin sentido que tenes En los Delayxxxxx.
Y luego lo peor de todo son los return dentro del main.. lo cual no deberias tener ninguno ahi.