Buenos dias, es que estoy tratando de hacer la lectura de un teclado matricial y mostrar el valor en pantalla, por medio de un Atmega16, y pues lo estoy programando en Codevison que me parece mas sencilo, lo simulo en proteus y funciona bn, pero a la hora de quemarlo en el microprocesador , voy hacer la prueba y no me inicia la LCD (esta es de 2*16), no c si sera que me hace falta poner alguna rutina, pues el programa trae unas librerias (alcd,alcd_ks0073, LCD, LCD4X40, LCDSTK), y no c como mas hacerle..AYUDAAAAAAAAAAAAAAAA....Gracias.....
Aca esta el código...
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Declare your global variables here
typedef unsigned char byte;
unsigned char scan_key(void)
{
while(1){
PORTB=0X80;
if (PINB.0)return 13; //Digito A
if (PINB.1)return 8; //Digito B
if (PINB.2)return 9; //Digito C
if (PINB.3)return 10; //Digito D
PORTB=0X40;
if (PINB.0)return 7; //Digito 3
if (PINB.1)return 0; //Digito 4
if (PINB.2)return 6; //Digito 9
if (PINB.3)return 11; //Digito #
PORTB=0X20;
if (PINB.0)return 4; //Digito 2
if (PINB.1)return 2; //Digito 5
if (PINB.2)return 3; //Digito 8
if (PINB.3)return 12; //Digito 0
PORTB=0X10;
if (PINB.0)return 1; //Digito 1
if (PINB.1)return 5; //Digito 6
if (PINB.2)return 14; //Digito 7
if (PINB.3)return 15; //Digito *
};
delay_ms(20);
}
void main(void)
{
unsigned char i;
PORTB=0x00;
DDRB=0xF0; //lee teclado
lcd_init(32);
lcd_gotoxy(0,0);
lcd_puts("Conversor AC-AC");
while(1){
i=scan_key();
switch(i){
case 0:
lcd_gotoxy(1,1);
lcd_puts("4");
break;
case 1:
lcd_gotoxy(1,1);
lcd_puts("1");
break;
case 2:
lcd_gotoxy(1,1);
lcd_puts("5");
break;
case 3:
lcd_gotoxy(1,1);
lcd_puts("8");
break;
case 4:
lcd_gotoxy(1,1);
lcd_puts("2");
break;
case 5:
lcd_gotoxy(1,1);
lcd_puts("6");
break;
case 6:
lcd_gotoxy(1,1);
lcd_puts("9");
break;
case 7:
lcd_gotoxy(1,1);
lcd_puts("3");
break;
case 8:
lcd_gotoxy(1,1);
lcd_puts("B");
break;
case 9:
lcd_gotoxy(1,1);
lcd_puts("C");
break;
case 10:
lcd_gotoxy(1,1);
lcd_puts("D");
break;
case 11:
lcd_gotoxy(1,1);
lcd_puts("#");
break;
case 12:
lcd_gotoxy(1,1);
lcd_puts("0");
break;
case 13:
lcd_gotoxy(1,1);
lcd_puts("A");
break;
case 14:
lcd_gotoxy(1,1);
lcd_puts("7");
break;
case 15:
lcd_gotoxy(1,1);
lcd_puts("*");
break;
default:
break;
};
}
};