question
-
- mikroElektronika team
- Posts: 265
- Joined: 25 Nov 2008 09:09
-
- mikroElektronika team
- Posts: 265
- Joined: 25 Nov 2008 09:09
-
- mikroElektronika team
- Posts: 265
- Joined: 25 Nov 2008 09:09
Re: question
Hi
Few days ago I've got my Easy8051 v6.
I wrote a small program which is sum and miltiply numbers in mikroC.
Now I'd like to use not just the 4X4 key but the menu keypad too.
I found it that i have to use the port 3 for the menu keypad but nothing else and I didn't find functions like keypad_key_pressed, etc.
I'd like to find the way to move the cursor and use enter and cancel buttons with the menu keypad.
Pls Help me or/and send an example
Thx
Few days ago I've got my Easy8051 v6.
I wrote a small program which is sum and miltiply numbers in mikroC.
Now I'd like to use not just the 4X4 key but the menu keypad too.
I found it that i have to use the port 3 for the menu keypad but nothing else and I didn't find functions like keypad_key_pressed, etc.
I'd like to find the way to move the cursor and use enter and cancel buttons with the menu keypad.
Pls Help me or/and send an example
Thx
- tihomir.losic
- mikroElektronika team
- Posts: 2138
- Joined: 02 Dec 2009 14:16
- Location: Serbia
- Contact:
Re: question
Hello,
please, try this code (mikroC PRO for 8051, AT89S8253):
Also, you need to pull-up PORT0.
Place all switches on P0 ON, and place jumper J1 on UPPER position.
Best regards,
Losic Tihomir
please, try this code (mikroC PRO for 8051, AT89S8253):
Code: Select all
unsigned short kp, cnt, oldstate = 0;
char txt[6];
// Keypad module connections
char keypadPort at P0;
// End Keypad module connections
// Lcd module connections
sbit LCD_RS at P2_0_bit;
sbit LCD_EN at P2_1_bit;
sbit LCD_D4 at P2_2_bit;
sbit LCD_D5 at P2_3_bit;
sbit LCD_D6 at P2_4_bit;
sbit LCD_D7 at P2_5_bit;
// End Lcd module connections
void main() {
cnt = 0; // Reset counter
Keypad_Init(); // Initialize Keypad
Lcd_Init(); // Initialize Lcd
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1, 1, "Key :"); // Write message text on Lcd
Lcd_Out(2, 1, "Times:");
do {
kp = 0; // Reset key code variable
// Wait for key to be pressed and released
do
// kp = Keypad_Key_Press(); // Store key code in kp variable
kp = Keypad_Key_Click(); // Store key code in kp variable
while (!kp);
// Prepare value for output, transform key to it's ASCII value
switch (kp) {
//case 10: kp = 42; break; // '*' // Uncomment this block for keypad4x3
//case 11: kp = 48; break; // '0'
//case 12: kp = 35; break; // '#'
//default: kp += 48;
case 1: kp = 49; break; // 1 // Uncomment this block for keypad4x4
case 2: kp = 50; break; // 2
case 3: kp = 51; break; // 3
case 4: kp = 65; break; // A
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 8: kp = 66; break; // B
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 12: kp = 67; break; // C
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D
}
if (kp != oldstate) { // Pressed key differs from previous
cnt = 1;
oldstate = kp;
}
else { // Pressed key is same as previous
cnt++;
}
Lcd_Chr(1, 10, kp); // Print key ASCII value on Lcd
if (cnt == 255) { // If counter varialble overflow
cnt = 0;
Lcd_Out(2, 10, " ");
}
WordToStr(cnt, txt); // Transform counter value to string
Lcd_Out(2, 10, txt); // Display counter value on Lcd
} while (1);
}
Place all switches on P0 ON, and place jumper J1 on UPPER position.
Best regards,
Losic Tihomir
mikroElektronika [Support team]
Re: question
Hello
Thx I made it, but i have another problem.
I can move the cursor, but when a button pressed for example 1, or A, on the keyboard, the cursor always goes back to the start position(first row) on the lcd. Is there any function which is gives me back the current position of the cursor?
Bye
Thx I made it, but i have another problem.
I can move the cursor, but when a button pressed for example 1, or A, on the keyboard, the cursor always goes back to the start position(first row) on the lcd. Is there any function which is gives me back the current position of the cursor?
Bye
- ranko.rankovic
- Posts: 433
- Joined: 11 Jun 2010 09:22
Re: question
Hello adam1234,
Please consider Help file for more info about LCD library and our examples within compiler.
Best regards
Please consider Help file for more info about LCD library and our examples within compiler.
Best regards
Ranko Rankovic
mikroElektronika [Support Department]
mikroElektronika [Support Department]