Calculadora: SERÃO USADAS A TECLAS DO TECLADO MATRICIAL NUMÉRICO DO KIT PICGENIOS
Por: Larissa Pinto • 13/2/2016 • Trabalho acadêmico • 607 Palavras (3 Páginas) • 462 Visualizações
Calculadora
Serão usadas a teclas do teclado matricial numérico do kit PICGenios
O push-botton da 4° linha /1° coluna é o operador de subtração, enquanto o push-botton da 4° linha /3° coluna é o operador de soma.
// Conexoes LCD
sbit LCD_RS at RE2_bit; sbitLCD_RS_Directionat TRISE2_bit;
sbit LCD_EN at RE1_bit; sbitLCD_EN_Directionat TRISE1_bit;
sbit LCD_D4 at RD4_bit; sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5 at RD5_bit; sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6 at RD6_bit; sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7 at RD7_bit; sbit LCD_D7_Direction at TRISD7_bit;
// Conexoes do teclado
// Saidas do PIC:
// RB0 - primeira coluna
// RB1 - segunda coluna
// RB2 - terceira coluna
// Entradas do PIC:
// RD3 - primeira linha
// RD2 - segunda linha
// RD1 - terceira linha
// RD0 - quarta linha
void LCD(char texto[16])//Habilita as 16 colunas do LCD
{
Lcd_Cmd(_LCD_CLEAR); //limpa o Display
delay_ms(100);
Lcd_Out(1,4,texto);
delay_ms(100);
}
intleitura_TM()//leitura do teclado matricial
{
while (1) {
// Lendo o Teclado
portb.rb0 = 0; //habilita primeira coluna do teclado
//Habilitando as linhas
if (portd.rd0 == 0)
return (-1);
elseif (portd.rd1 == 0)
return (7);
elseif (portd.rd2 == 0)
return (4);
elseif (portd.rd3 == 0)
return (1);
portb.rb0 = 1; //desabilita primeira coluna do teclado
portb.rb1 = 0; //habilita segunda coluna do teclado
if (portd.rd0 == 0)
return (0);
elseif (portd.rd1 == 0)
return (8);
elseif (portd.rd2 == 0)
return (5);
elseif (portd.rd3 == 0)
return (2);
portb.rb1 = 1; //desabilita segunda coluna do teclado
portb.rb2 = 0; //habilita terceira coluna do teclado
//Habilitando as linhas
if (portd.rd0 == 0)
return (-2);
elseif (portd.rd1 == 0)
return (9);
elseif (portd.rd2 == 0)
return (6);
elseif (portd.rd3 == 0)
return (3);
portb.rb2 = 1; //desabilita terceira coluna do teclado
}
}
voidmain(){
// inicia as variáveis
// as varaiveis começam com zero por causa de algum lixo de memoria
int a=0; //Primerio numero a ser digitado
int b=0;//SEgundonumero a ser digitado
intop=0;// Operacao a ser feita
int res=0;//Resultado
charch_res[7];
charch_a[7];
charch_b[7];
ADCON1 = 0x0F;
trisd = 0x0F;
portb = 0xFF;
trisb = 0xF8;
Lcd_Init(); //Inicializa o Display
delay_ms(100);
Lcd_Cmd(_LCD_CLEAR); //limpa o Display
delay_ms(100);
Lcd_Cmd(_LCD_CURSOR_OFF); //Desabilita o cursor
delay_ms(100);
while(1)
{
lcd_cmd(_LCD_CLEAR);
lcd_out(1,1,"CALCULADORA: ");
lcd_out(2,1,"a= ");
a=leitura_TM(); // leitura do teclado
...