استخدام وحدة LCD لعرض بيانات المفتاح الذى تم الضغط عليه باستخدام الربط مع منفذ واحد :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

استخدام وحدة LCD لعرض بيانات المفتاح الذى تم الضغط عليه باستخدام الربط مع منفذ واحد :

مُساهمة من طرف Admin في الأحد مايو 03, 2015 12:26 am

استخدام وحدة LCD لعرض بيانات المفتاح الذى تم الضغط عليه باستخدام الربط مع منفذ واحد :
يتضمن المترجم CCS C مكتبة دوال لتشغيل لوحة مفاتيح 3 X 4 تسمى KBD.C ، تحتوى على المكتبات التالية :

• الدالة kbd_init() :

لتهيئة لوحة المفاتيح ، ويجب وضعها فى الدالة الرئيسية .

• الدالة kbd_getc() : للحصول على بيانات المفتاح الذى تم الضغط عليه وفقا لما هو مذكور بالملف kbd.c ، كما هو مبين بالشكل التالى :



كما هو موضح بالملف kbd.c ، يمكن ربط لوحة المفاتيح مع المنفذ PORTB أو المنفذ PORTD



المنفذ الافتراضى اربط لوحة المفاتيح هو المنفذ PORTD ، ولربطها مع المنفذ PORTB يتم إزالة رمز التعليق “//” من أمام السطر المبين بالشكل التالى ، مع التأكد من المنفذ المستخدم به مقامات رفع (أو وحدة LCD) فى أطراف الأعمدة :



تدريب : استخدام وحدة LCD لعرض بيانات المفتاح الذى تم الضغط عليه باستخدام الربط مع منفذ واحد :
الأدوات المستخدمة فى برنامج المحاكاة ISIS : PIC16F877A , LM016L , KEYPAD-PHONE .




البرنامج :

الكود:


#include <16F877A.h>
#use delay(clock= 4000000)

#define use_portb_kbd TRUE
#define use_portb_lcd TRUE
#include <lcd.c>
#include <kbd.c>
       
void main() {
  char k;
  int  x;
         
  lcd_init();
  kbd_init();
  port_b_pullups(TRUE);

  lcd_putc("\fPreee Key...\n"); // Initially clear screen and print fPreee Key... , then new line
                                   
  while (TRUE) {
      k=kbd_getc(); // get key as character , save in k
      x=k-48;                            //convert character k to numeric value x
      if(k!=0){  // if any key is pressed
       
        if(k=='*') // if k is *
          lcd_putc('\f'); // clear screen
         
        else
          lcd_putc(k);            //  r print character k
          delay_ms(1000);
         
          //after that or both cases
          printf(lcd_putc,"\f Char=%c",k); // clear and print k as character %c
          delay_ms(1000);
         
          printf(lcd_putc,"\f Char=%u",k); //clear and Print k as ASCII value %u
          delay_ms(1000);
         
          printf(lcd_putc,"\f Nume=%u",x); //clear and Print the numerical value of the character
          delay_ms(1000);
         
          lcd_putc("\fPress Key...\n");
      }
  }
}


Admin
Admin

عدد المساهمات : 1003
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى