قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

Abmarhon
:: مهندس ::
تاريخ التسجيل: Apr 2015
المشاركات: 35
نشاط [ Abmarhon ]
قوة السمعة:0
قديم 30-10-2015, 06:25 PM المشاركة 1   
افتراضي Mikro C PIC & LCD_Keypad Help Twitter FaceBook Google+



السلام عليكم

عاوز أدخل رقمين عالكيباد بحيث أنهما يظهران عالشاشة بالعمود الاول منفصلان بمسافة
وحاصل جمعهما التوتال بالسطر الثاني وتستمر العملية لكل الارقام المدخلة


مثلا أدخلت 1 سيظهر الناتج =1
بعد ذلك أدخلت 2 سيظهر الناتج =3

كيف أعمل هذا ؟

كود:
     unsigned short kp, cnt,M, oldstate = 0;
     int a,b;
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 main() {
  cnt = 0;                                 // Reset counter
  Keypad_Init();                           // Initialize Keypad
 // ANSEL  = 0;                            // Configure AN pins as digital I/O
  //ANSELH = 0;
  Lcd_Init();                              // Initialize LCD
  Lcd_Cmd(_LCD_CLEAR);                     // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);                // Cursor off

  Lcd_Out(1, 1, "Number:");                 // Write message text on LCD
  Lcd_Out(2, 1, "Total:");

  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  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 = 32; break; // *
      case 14: kp = 48; break; // 0
      case 15: kp = 35; break; // #

    }

    if (kp = oldstate) {                  // Pressed key differs from previous
      cnt = 1;
      //M=0   ;
      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, "  ");              //erase
      // Lcd_Out(2, 13, "  ");
      }
     // M=kp*kp  ; Lcd_Chr(2, 13, M);
    WordToStr(cnt, txt);               // Transform counter value to string
    Lcd_Out(2, 10, txt);              // Display counter value on LCD
  } while (1);
}

اعلانات

eabueida
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2007
المشاركات: 171
نشاط [ eabueida ]
قوة السمعة:0
قديم 15-11-2015, 08:36 AM المشاركة 2   
افتراضي


وعليكم السلام

أخي بالنسبة للرقم الأول والثاني كم عدد الخانات او الأرقام
ثانيا: للإنتقال من الرقم الأول الى الثاني ما هو الأسلوب هل بالضغط على # مثالا

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

Abmarhon
:: مهندس ::
تاريخ التسجيل: Apr 2015
المشاركات: 35
نشاط [ Abmarhon ]
قوة السمعة:0
قديم 15-11-2015, 11:04 AM المشاركة 3   
افتراضي


وعليكم السلام

أخي بالنسبة للرقم الأول والثاني كم عدد الخانات او الأرقام
ثانيا: للإنتقال من الرقم الأول الى الثاني ما هو الأسلوب هل بالضغط على # مثالا
خانه واحده فقط .. كيف احدد الخانات ؟

الانتقال تلقائي بدون # ويفصل الرقمين بمسافه
مثال

1 2
2
------------------
2 2
4
---------------
3 5
15
------------------
6 6
36

وهكذا

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 06:50 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025