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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 15-06-2011, 02:09 PM المشاركة 1   
افتراضي برنامج إظهار أرقام المفاتيح على 7 SEGMENT يصلح لمشروع اكتشاف حريق 8 خط وتطبيقات هامة Twitter FaceBook Google+



برنامج إظهار أرقام المفاتيح على 7 SEGMENT يصلح لمشروع اكتشاف حريق 8 خط وتطبيقات هامة أخرى بالسى والفلوكود :

أولا : لغة السى :

1- التعليقات وأعلان (تعريف) المتغيرات والدوال :

أ‌- إعلان متغير نوع int باسم result .
ب‌- إعلان دالة لإعداد وتهيئة الميكروكونترولر للبدء حتى تكون كجزء مستقل مما يسهل قراءة وفهم البرنامج الرئيسى .
ت‌- إعلان دالة مسح المفاتيح وتسجيل حالتها .
ث‌- إعلان دالة عرض الرقم المناظر للمفتاح على وحدة العرض 7 SEGMENT .




كود:
//experiment purpose: familiar how to judge key pressed

كود:
//when no key pressed LED display FF
//have a key pressed LED display the number of the pressing key //hardware request: SW S1 ON ,S6 ON ,S5 5-6 bits ON, //the others bits OFF,the other SW OFF int result; void init(); //I/O PORT initialize function declare void scan(); //key scan function declare void display(int x); //display function declare //------------------------------------------------



اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 15-06-2011, 02:11 PM المشاركة 2   
افتراضي


2- الدالة الرئيسية :
· حلقة تكرار غير منهية while(1){…….} .
· فى البداية يجب استدعاء دالة التهيئة init(); .
· ثم استدعاء دالة المسح scan(); وحفظ رقم المفتاح فى المتغير result .
· وأخيرا استدعاء دالة العرض مع التخصيص للمتغير result الموجود به رقم المفتاح من الخطوة السابقة .






كود:
//------------------------------------------------

كود:
//main program
void main() { while(1) //dead circle { init(); //call initialize function scan(); //call key scan function display(result); //call display result function } } //------------------------------------------------


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

امل ميمو
:: مهندس متميز ::
تاريخ التسجيل: Mar 2007
المشاركات: 473
نشاط [ امل ميمو ]
قوة السمعة:0
قديم 15-06-2011, 02:16 PM المشاركة 3   
افتراضي


شكرا لك اخي على هدا المشروع واحلى شئ ان الكود بالسئ
بس انا لسه مبتدئ يعني ايه علان متغير اوإعلان دالة واسف لتفاهة السؤال


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 15-06-2011, 02:17 PM المشاركة 4   
افتراضي


1- روتينات الدوال :
أ‌- دالة التهيئة




كود:
//initialize program

كود:
void init()
{ ADCON1=0X07; //set A PORT general I/O PORT TRISA =0X0F; //A PORT high 2 bits OUTPUT,low 4 bits INPUT TRISB=0X0F; //B PORT low 5 bits INPUT TRISD=0X00; //D PORT OUTPUT PORTA=0XFF; PORTD=0XFF; //close all display } //------------------------------------------------


ب‌- دالة المسح :






كود:
//------------------------------------------------
كود:
//Scan
void scan() { result=0x8; //initialize key scan result if(PORTA.B0==0) // judge if a0 press result=0x0; //yes£¬the scan result is 0 if(PORTA.B1==0) // judge if a1 press result=0x1; //yes£¬the scan result is 1 if(PORTA.B2==0) // judge if a2 press result=0x2; if(PORTA.B3==0) // judge if a3 press result=0x3; if(PORTB.B0==0) //judge if B0 press result=0x4; if(PORTB.B1==0) //judge if B1 press result=0x5; if(PORTB.B2==0) //judge if B2 press result=0x6; if(PORTB.B3==0) //judge if B3 press result=0x7; }


ت‌- دالة العرض :





كود:
//display result program
كود:
void display(int x)
{ switch(x) //different x,different deal { case 0x0: PORTD=0X88;PORTA=0X2F;Delay_ms(1);PORTD=0XC0;PORTA=0X1F;Delay_ms(1);break; //A0 case 0x1: PORTD=0X88;PORTA=0X2F;Delay_ms(1);PORTD=0XF9;PORTA=0X1F;Delay_ms(1);break; //A1 case 0x2: PORTD=0X88;PORTA=0X2F;Delay_ms(1);PORTD=0XA4;PORTA=0X1F;Delay_ms(1);break; //A2 case 0x3: PORTD=0X88;PORTA=0X2F;Delay_ms(1);PORTD=0XB0;PORTA=0X1F;Delay_ms(1);break; //A3 case 0x4: PORTD=0X83;PORTA=0X2F;Delay_ms(1);PORTD=0XC0;PORTA=0X1F;Delay_ms(1);break; //B0 case 0x5: PORTD=0X83;PORTA=0X2F;Delay_ms(1);PORTD=0XF9;PORTA=0X1F;Delay_ms(1);break; //B1 case 0x6: PORTD=0X83;PORTA=0X2F;Delay_ms(1);PORTD=0XA4;PORTA=0X1F;Delay_ms(1);break; //B2 case 0x7: PORTD=0X83;PORTA=0X2F;Delay_ms(1);PORTD=0XB0;PORTA=0X1F;Delay_ms(1);break; //B3 case 0x8: PORTD=0X8E;PORTA=0X2F;Delay_ms(1);PORTD=0X8E;PORTA=0X1F;Delay_ms(1);break; //no key press } }



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 15-06-2011, 03:00 PM المشاركة 5   
افتراضي


النتائج على لوحة المعمل QL200 :















الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 15-06-2011, 03:05 PM المشاركة 6   
افتراضي


شكرا لك اخي على هدا المشروع واحلى شئ ان الكود بالسئ
بس انا لسه مبتدئ يعني ايه علان متغير اوإعلان دالة واسف لتفاهة السؤال
أخى الكريم

شكرا جزيلا لك

بارك الله فيك

لن استطيع أن أوفى الإجابة حقها فى أسطر .

برجاء مراجعة مواضيع الأخ الفاضل المهندس أحمد سمير ومواضيعى ومواضيع جميع الأخوة عن طريق خاصية البحث فى المنتدى فسوف تجد إجابة وافية تعينك على البدء الصحيح أن شاء الله .

مع تمنياتى بدوام التوفيق


eslam201033
:: عضو ::
تاريخ التسجيل: Nov 2010
المشاركات: 559
نشاط [ eslam201033 ]
قوة السمعة:0
قديم 15-06-2011, 05:23 PM المشاركة 7   
افتراضي


شكرا جزيلا و جزاك الله كل خير


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 15-06-2011, 07:57 PM المشاركة 8   
افتراضي


شكرا جزيلا و جزاك الله كل خير

أخى الكريم

شكرا جزيلا لك

بارك الله فيك

مع تمنياتى بدوام التوفيق

إضافة رد

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

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

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


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

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