Buenas.
Me encuentro realizando un proyecto en el que quiero sacar un un numero entero por pantalla e incrementarle y decrementarle cuando pulso un botón u otro.
El problema es que no me saca el número que quiero, sino que si lo pulso una vez sale un 21, luego un 47.... y sólo le incremento en 1.
Necesito ayuda.
El programa ese el siguiente:
Me encuentro realizando un proyecto en el que quiero sacar un un numero entero por pantalla e incrementarle y decrementarle cuando pulso un botón u otro.
El problema es que no me saca el número que quiero, sino que si lo pulso una vez sale un 21, luego un 47.... y sólo le incremento en 1.
Necesito ayuda.
El programa ese el siguiente:
PHP:
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include <string.h>
#define RS_On PORTB|=_BV(PB0)
#define RS_Off PORTB&&=~_BV(PB0)
#define Enable_ON PORTB|=_BV(PB2)
#define Enable_Off PORTB&&=~_BV(PB2)
#define RW_On PORTB|=_BV(PB1)
#define RW_Off PORTB&&=~_BV(PB1)
#define Data PORTD
int i=0;
void Port_init(void){
DDRB=0X07;
DDRD=0XFF;
DDRC=0x00;
PORTB=0X00;
PORTD=0X00;
PORTC=0x00;
}
void LCD_init(void){ //INICIALIZA LA PANTALLA LCD
Data=0x0F;
Enable_ON;
_delay_ms(1000);
Enable_Off;
Data=0x00;
RS_On;
_delay_ms(1000);
}
void writeLcd(char text[15],int tam){
RS_On;
// recorre el vector char hasta tamaño
for(i=0;i<tam;i++){ //asigna en la variable data el caracter que esta en el vector text en la posicion i
Data=text[i];
Enable_ON;
_delay_ms(100);
Enable_Off;
_delay_ms(100);
}
i=0;
Data=0x00;
RS_Off;
}
void ClearLCD(void){ // funcion para limpiar la pantalla
Data=0x01;
Enable_ON;
_delay_ms(100);
Enable_Off;
}
int mostrar(){
int x=0;
while(PINC!=0x04){
if (PINC==0x01)
{
_delay_ms(10);
x=x+1;
}
if(PINC==0x02){
_delay_ms(10);
x=x-1;
}
}
return x;
}
void escribirentero(int numero){
char str[50];
sprintf(str,"%d",numero);
writeLcd(str,2); // Escribe en el LCD
_delay_ms(100);
//ClearLCD();
}
int main(void)
{
Port_init();
LCD_init();
int contador=0;
int numero=0;
while(1)
{
while(contador==0){ //inicializa con la palabra Tiempos
numero=mostrar();
_delay_ms(1000);
escribirentero(numero);
_delay_ms(1000);
ClearLCD();
//contador=contador+1;
}
}
}
Última edición por un moderador: