- This topic has 4 replies, 2 voices, and was last updated 10 years, 4 months ago by .
Viewing 5 posts - 1 through 5 (of 5 total)
Viewing 5 posts - 1 through 5 (of 5 total)
- You must be logged in to reply to this topic.
|
Microcontroller › PIC › what is wrong with my code , i wanna save the pressed key from Keypad to an array
Hi
im a newbie for microcontroller,
i wrote a simple code to save it to array using mickroc
but the screen always show a wrong number , and protues
//before this line , definin
int i;
int x;
char fromuser[4];
void main()
{
do{
i=0;
kb=keypad_key_press();
fromuser=kb;
i++;
}while(kb!=4) // 4 is mean On/c button,
for(x=0;x<4;x++)
{
lcd_chr(1,x+1,fromuser+48);
}
}
Please i need a help to understand whats wrong
thanks
Hi,
Show us the routine of key detecting function…!!
Nothing sees wrong with above code…!!
Dear Alex ,
the keypad 4×4
count from 7 its Ascii value is 1
button 4 …ascii value 2
button 1 …ascii value 3
button on/c …ascii value 4
button 8 …ascii value 5
button 5…ascii value 6
button 2 …ascii value 7
button 0 …ascii value 8
button 9 …ascii value 9
button 6 …ascii value 10
button 3 …ascii value 11
button = …ascii value 12
button % …ascii value 13
button x…ascii value 14
button – …ascii value 15
button + …ascii value 16
for show the number to screen i convert to ascii by adding 48
or using
inttostr function
after i press 4 button ,
then later the lcd show the number 4000
i dont know whats up
thanks for u help
char keypadPort at PORTd;
// Start LCD module connections
sbit LCD_RS at Rb0_bit;
sbit LCD_EN at Rb1_bit;
sbit LCD_D4 at Rb4_bit;
sbit LCD_D5 at Rb5_bit;
sbit LCD_D6 at Rb6_bit;
sbit LCD_D7 at Rb7_bit;
sbit LCD_RS_Direction at TRISb0_bit;
sbit LCD_EN_Direction at TRISb1_bit;
sbit LCD_D4_Direction at TRISb4_bit;
sbit LCD_D5_Direction at TRISb5_bit;
sbit LCD_D6_Direction at TRISb6_bit;
sbit LCD_D7_Direction at TRISb7_bit;
// End LCD module connections
int x,i;
char fromuser[4];
int kb;
void main()
{
adcon1=7;
lcd_init();
keypad_init();
lcd_out(1,1,”welcome”);
delay_ms(2000);
lcd_cmd(1);
do{
i=0;
kb=keypad_key_press();
fromuser=kb;
i++;
}while(kb!=4);
for(x=0;x<4;x++){lcd_chr(1,x+1,fromuser[x]+48);}
}//end main