السلام عليكم ورحمة الله وبركاته
عندي مسألة بسيطه بس غلبتني بجد وياريت تساعدوني فيها, ألا وهي الكيباد والقيم المأخوذه منها..
البرنامج المطلوب :
-عند الضغط بالكيباد يظهر الرقم الاول ع الشاشة بالسطر الاول
-عند الضغط مره أخرى يظهر الرقم الاخر بعد مسافة من الرقم السابق بالسطر الاول
-تتم عملية الضرب و الناتج من يكون بالسطر الثاني
-تستمر العملية
شرح أكثر :
مثلاً أدخلت 2 ثم أدخلت 5
فــ إن الشاشة ستظر مايلي
رابط الكود مع ملف المحاكاة :.... (إستخدمت بروتوس 8.3)
http://www.4shared.com/rar/ts3HUKMYb...alculator.html
https://www.mediafire.com/?6qr3b1c8vboow2v
كود:
unsigned short kp, cnt, oldstate = 0,num1 , num2;
char txt[6];
//Keypad moudule connection
char keypadPort at PORTC;
//end keypad module connection
// Lcd pinout settings
sbit LCD_RS at Rb1_bit;
sbit LCD_EN at Rb0_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;
// Pin direction
sbit LCD_RS_Direction at TRISb1_bit;
sbit LCD_EN_Direction at TRISb0_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 CONNECTION
void config()
{
Keypad_Init(); // Initialize Keypad
Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
}
void keypad()
{
do
{
kp = 0; // Reset key code variable
// Wait for key to be pressed and released
do
{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 1: kp = 49; break; // 1 // Uncomment this block for keypad4x4
case 2: kp = 50; break; // 2
case 3: kp = 51; break; // 3
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
}
} while (1);
}
void main() {
void config();
Lcd_Out(1, 1, "Nu:"); // Write message text on LCD
Lcd_Out(2, 1, "Total:");
Loop: //main loop
//Get First Number
NO1_Loop:
Lcd_out(1,5,"N1: ");
keypad(); // ??????? ??????? ???????
num1 = kp; //store first number
delay_ms(200); //wait
WordToStr(kp, num1); // Transform counter value to string
Lcd_Out(1, 7, num1); // Display counter value on LCD
delay_ms(200); //wait
//Get Second Number
NO2_Loop:
Lcd_out(1,10,"N2: ");
keypad(); //go to keypad function to get the input
num2 = kp; //store second number
WordToStr(kp, num2); // Transform counter value to string
Lcd_Out(1, 13, num2); // Display counter value on LCD
delay_ms(200); //wait
cnt = num1 + num2;
WordToStr(cnt, txt); // Transform counter value to string
Lcd_Out(2, 10, txt); // Display counter value on LCD
}