keypad reader

Discussion in 'Programmer's Corner' started by eessoo, Feb 11, 2012.

Thread Status:
Not open for further replies.
  1. eessoo

    Thread Starter New Member

    Jan 29, 2012
    23
    0
    i need some help with this program
    if i input 13.3 on the screen and give output 10?
    it should give the same output as the input
    i wanna take the input from the lcd and do some calculation to it
    i'm using pic16f877a
    mikroc pro forpic
    the input in the lcd is in char
    so i take each digit and add it the equation

    for example if the user enter (127)

    (output=(output*10)+input)
    ( kp = kp * 10 + kp1)
    0 = 0 * 10 + 1 >>kp=1
    1 = 1 * 10 + 2 >> kp = 12
    12 = 12*10 + 7 >> kp=127
    u get it?! :D

    ( kp=kp1/10+kp)<<< this only works if u add (.) to your number

    Code ( (Unknown Language)):
    1.  
    2. int key=0;
    3. float x;
    4. int h=10;
    5. char txt[15];
    6. float kpt=0;
    7.  
    8.  int keypad(int key)
    9.  {
    10.            switch (key)
    11.              {case 9:
    12.              key=49;
    13.              break;
    14.               case 10:
    15.               key=50;
    16.              break;
    17.               case 11:
    18.               key=51;
    19.              break;
    20.               case 5:
    21.               key=52;
    22.              break;
    23.               case 6:
    24.               key=53;
    25.              break;
    26.               case 7:
    27.               key=54;
    28.              break;
    29.               case 1:
    30.               key=55;
    31.              break;
    32.               case 2:
    33.               key=56;
    34.              break;
    35.               case 3:
    36.               key=57;
    37.              break;
    38.              case 13:
    39.              key=13;
    40.              break;
    41.               case 14:
    42.               key=48;
    43.               break;
    44.               case 15:
    45.               key=46;
    46.               }
    47.               return (key);
    48.  }
    49. char keypadPort at PORTD;
    50. // Lcd pinout settings
    51. sbit LCD_RS at RB4_bit;
    52. sbit LCD_EN at RB5_bit;
    53. sbit LCD_D7 at RB3_bit;
    54. sbit LCD_D6 at RB2_bit;
    55. sbit LCD_D5 at RB1_bit;
    56. sbit LCD_D4 at RB0_bit;
    57.  
    58. // Pin direction
    59. sbit LCD_RS_Direction at TRISB4_bit;
    60. sbit LCD_EN_Direction at TRISB5_bit;
    61. sbit LCD_D7_Direction at TRISB3_bit;
    62. sbit LCD_D6_Direction at TRISB2_bit;
    63. sbit LCD_D5_Direction at TRISB1_bit;
    64. sbit LCD_D4_Direction at TRISB0_bit;
    65.  
    66.  
    67. void main() {
    68.  
    69.  Keypad_Init();
    70.  lcd_init();
    71.  while(1)
    72.  {
    73.          do
    74.          key=keypad_key_click();
    75.          while(!key);
    76.                            key=keypad(key);
    77.                         if(key==13)
    78.                               {
    79.                               lcd_cmd(_lcd_clear);
    80.                               break;
    81.                               }
    82.  
    83.                         else if(key==46)
    84.                          {
    85.                                         while(1)
    86.                                         {lcd_chr_cp(key);
    87.                                           do
    88.                                          key=keypad_key_click();
    89.                                          while(!key);
    90.                                           key=keypad(key);
    91.                                           [COLOR="DarkOrange"]kpt=((key-48)/10)+kpt;[/COLOR]
    92.  
    93.                                                          if(key==13)
    94.                                                          {lcd_cmd(_lcd_clear);
    95.                                                          goto[COLOR="Red"] finaly[/COLOR];}
    96.  
    97.                                          }
    98.                                         break;
    99.                          }
    100.                         else if(key!=13)
    101.                          {lcd_chr_cp(key);
    102.                          [COLOR="DarkOrange"] kpt=kpt*10+(key-48[/COLOR]);}
    103. }
    104. [COLOR="red"]finaly:[/COLOR]
    105. floattostr(kpt,txt);
    106. Lcd_Out_CP(txt);
    107. }
    108.  
     
    Last edited: Feb 11, 2012
  2. t06afre

    AAC Fanatic!

    May 11, 2009
    5,939
    1,222
  3. hgmjr

    Moderator

    Jan 28, 2005
    9,030
    214
    This does seem to be a double posting.

    Duplicate posts can only result in confusion.

    hgmjr
     
Loading...
Thread Status:
Not open for further replies.