المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : ماتركس عداد لتظهر الارقام من الصفر الى التسعة بتقنية المسح الضوئ


القلم الدامي
08-18-2009, 07:16 PM
بسم الله الرحمن الرحيم





دارة ماتريكس لإظهار الأرقام من 1 الى9

مكونات الدارة :
1) معالج صغري : PIC16F84Aوهو المسؤل عن عملية الإظهار على الماتريكس والمسح الترددي للماتريكس
2) مفكك ترميز 74138 من BCD إلى النظام العشري ويقوم بانتقاء حال الخرج حسب حالة الدخل
3) وحدة تغذية تتكون من ومنظم جهد 5 فولت ودارة تقويم موجة كاملة ومحول جهد ومكثف تصفية
4) LEDS مجموعة من الثنائيات الضوئية وعددها 35 ثنائي لون أحمر
5) لوحة فيبر منحس

شرح عن المعالج الصغري


http://www.dbaasco.com/up/im-1/dbaasco77678caaec.gif





يتكون المعالج الصغري من بوابتين أساسيتين وهما RB & RA وكما نلاحظ أن البوابة RB مؤلفة من ثمانية (مخارج / مداخل) وكما البوابة RA مؤلفة من خمسة (مداخل / مخارج ) يعمل المتحكم على تردد 4MHZ عند وصل المذبذب على المدخلين OSC1/OSC2 عند وصل هزاز بسرعة 4MHZ فتكون سرعة المتحكم 1MHZ وأكبر هزاز يمكن أن يوصل للمتحكم هو 20MHZ أي يعمل المعالج على تردد 5MHZ أي ينفذ 5 مليون عملية حسابية في الثانية الواحدة. القطب MCLR لجعل المعالج بحالة عمل يوصل إلى VCC أما أذا أردنا أن نصفر المعالج ونعيد البدء من جديد فنوصل القطب ذاته إلى خط الأرض يتكون المعالج من الداخل من نوعين من الذواكر RAM ,ROM تستخدم الذاكرة RAM لحفظ البيانات المؤقتة أثناء المعالجة أما الذاكرة ROM تستخدم لحفظ البرنامج أثناء عملية البرمجة وهي لا تفقد المعلومات أبدا القطب 5 هو السالب والقطب 14 هو الموجب


شرح عن مفكك الترميز74138



http://www.dbaasco.com/up/im-1/dbaasco6c1b476e5c.gif


لمعرفة عمل المفكك الترميز أنظر إلى الجدول


http://www.dbaasco.com/up/im-1/dbaasco43587c6b14.gif


ملاحظة هامة لا يعمل المفكك الأ إذا وصل G1 إلى VCC و G2,G3 إلى السالب
القطب 8 هو قطب السالب و القطب 16 هو قطب الموجب
آلية عمل الدارة


http://www.dbaasco.com/up/im-1/dbaasco1457a525ff.gif

كما نلاحظ من تركيب المجموعات الضوئية أنه في كل سطر جميع الأقطاب الموجبة وصلت إلى خرج المعالج عن طريق مقاومة وأن في كل عامود من المجموعات الضوئية وصلت إلى مفكك ترميز. لكي يضيء العامود الأول كله يجب أن يكون خرج المعالج من RB0 إلى RB6 مساوي للواحد منطقي و أن يوصل للعامود خط أرض عن طريق المفكك حسب الجدول لذا يجب أن تكون البوابة RA تساوي الصفر منطقي وعندما يستقبل المفكك 0 على المداخل A,B,C على الترتيب سوف يتفعل المخرج Y0 ويصبح مساوي للصفر أي في هذه الحالة نكون قد وصلنا العامود بالأرض وقلنا سابقا أن البوابة RB تساوي الواحد منطقي أي سوف بتأمين جهد موجب للعامود من المتحكم وجهد سالب من المفكك عن طريق البوابة RA الموصولة مع المفكك إذاُ سوف يضيء العامود فرضا لو أننا أردنا أن نضيء العامود الأخير رقم 5 ببساطة سوف نرسل إلى مداخل مفكك الترميز رقم 5 بالنظام الثنائي وسوف يضيء العامود الخامس من اليمين
كيف نقوم بعملية الإظهار الأرقام ولا نستطيع في كل مرة أن نضيء سوى عامود واحد؟
انظر إلى الرقم واحدة وهو يعمل
العامود رقم أربعة/ العامود رقم ثلاثة/ العامود رقم اثنان/ العامود رقم واحد / العامود رقم صفر
http://www.dbaasco.com/up/im-1/dbaasco3ad8b24c62.gif




أولا نقوم بأضائة العامود رقم صفر حسب الشكل أي نرسل من المتحكم عبر المنفذ RB القيمة الرقمية (0100001) ومن ثم نرسل القيمة (000) إلى مداخل المفكك عبر المنفذ RA وبتالي سوف يضيء العامود رقم صفر حسب الرسم الموجود
ثانيا نقوم بأضائة العامود رقم واحد حسب الشكل أي نرسل من المتحكم عبر المنفذ RB القيمة الرقمية (1000001) ومن ثم نرسل القيمة (001) إلى مداخل المفكك عبر المنفذ RA وبتالي سوف يضيء العامود رقم واحد حسب الرسم الموجود وينطفئ العامود رقم صفر
ثالثا نقوم بأضائة العامود رقم اثنان حسب الشكل أي نرسل من المتحكم عبر المنفذ RB القيمة الرقمية (1111111) ومن ثم نرسل القيمة (010) إلى مداخل المفكك عبر المنفذ RA وبتالي سوف يضيء العامود رقم اثنان حسب الرسم الموجود وينطفئ العامود رقم وصفر واحد.. رابعا نقوم بأضائة العامود رقم ثلاثة حسب الشكل أي نرسل من المتحكم عبر المنفذ RB القيمة


الرقمية (0000001) ومن ثم نرسل القيمة (011) إلى مداخل المفكك عبر المنفذ RA وبتالي سوف يضيء العامود رقم ثلاثة حسب الرسم الموجود وينطفئ العامود رقم وصفر واحد واثنان
خامسا نقوم بأضائة العامود رقم أربعة حسب الشكل أي نرسل من المتحكم عبر المنفذ RB القيمة الرقمية (0000001) ومن ثم نرسل القيمة (100) إلى مداخل المفكك عبر المنفذ RA وبتالي سوف يضيء العامود رقم أربعة حسب الرسم الموجود وينطفئ العامود رقم وصفر واحد واثنان وثلاثة

عملية المسح الترددي
وهي أعادة البارامترات الخمس السابقات أكثر من 100 مرة في الثانية لكي نخدع البصر(طبعا في البرنامج تعاد حوالي 10000 ( مرة وعلى السرعة الكبيرة لن يظهر عامود لوحده مفعلا أو مضاء أمام عين الناظر بل سوف يظهر الرقم كله مضيء دفعة واحدة لكن فعليا وعمليا لا يضيء سوى عامود واحد فقط في كل مرة أما من أجل الأرقام المتبقين فبنفس الطريقة نظهر الأرقام بعملية الخدع البصري أو المسح الترددي

http://www.dbaasco.com/up/im-1/dbaascoe787389cf0.gif


شرح اوامر البرنامج بلغة السي بلس بلس
#include<16f84.h> تضمين المعالج في الداريف المناسبة له في محرر البرنامج
#use delay (clock =4000000) تضمين هزاز كرستالي 4 ميغا هرتز
#fuses xt ,nowdt,protect تضمين استخدام مهتز خارجي متوسط التردد بدون موقت كلب الحارسة مع حماية البرنامج من الاختراق
byte porta=5# تضمين البوابة a
byte portb=6# تضمين البوابة b

io_set()
{
set_tris_a(0x08); جعل البوابة مخارج ماعدا الطرف رقم 2 هو دخل
set_tris_b(0x00); جعل البوابة كلها مخارج لتوصل الى مداخل الماتركس
طبعا اذا كان المخل يساوي 0x00 يعني كله خرج
واذا كان المنفذ يساوي 0x0f يعني نصف خرج ونصف دخ
}
Int a=0; تعريف متغير نوع انتجر وهو يساوي الصفر
نفتح بداية البرنامج بالمين بتابع المين
Main()
{
Io_set (); نطلب هذا التابع ليقوم بتهئة المنافذ حسب المكتوب في جسم التابع
While(1) ندخل في حلقة تكرارية لاتنتهي ابدا
{
لكي نظهر الرقم واحد اولا يجب ان ندخل في حلقة لانهائية كبرى من حلاقات for وفي داخل هذة الحلقة هناك حلقة اخرى عن طريق تنفيذ هزه الحلقة سوف يظهر صفر واحد وعند الانتهاء من تنفيد الحلقة الصغرة سوف ينتقل الى الحلقة الكبرة الانهائية ليختبر الشرط هل الكبسة مكبوسة لاانتقال الى عرض الرقم الثاني ام لا اذا كانت مكبوسة انتقل الى اللافتة رقم واحد
ليظهر الرقم واحد واذا كانت غير مكبوسة سوف يعود لتنفيذ الحلقة الصغرى ليظهر من جديد الرقم الحالي هو صفر
وهذه البلوك على الشكل التالي

http://www.dbaasco.com/up/im-1/dbaasco349f9f97d3.gif



شرح اوامر الحلقة الصغرى

For (a=0;a<=100;a++)

A=0يعني ان شرط بدء الحلقة هو صفر
a<=100يعني انتهاء الحلقة عند بلغها الرقم 100
طيب سؤال وكيف تبلغ الرقم 100 تكون في الحالىة البدائية صفر ثم تنزل الى ما بين قوسين حلقة فور لتنفذ الاوامر ثم تنتهي لتعود الى البداية ثم تصبح قيمة a تساوي 2 ثم نعود لتنفذ ما بداخل الحلقة من جديد ثم تعود لنقطية البداية لتبصح قيمة a تساوي 3 وهكذا الى ان نصبح القمية 100 عندها سوف تنكسر حلقة فور ونخرج من خارج حلقة فور هي شرح عن الحلقة الصغرة
شرح ما بداخل الحلقة الصغرة
portb=0x3e; اجعل البورت بي يساوي 3eبنظام السداسي عشري
porta=0; اجعل البورت a يساوي صفر "تاهيل العامود رقم صفر راجع جدول البينات للمتكاملة المستخدمة
delay_ms(4); اجراء تأخير زمني صغير لماذا لكي نجعل العامود المفعل مضيء لمدة كبيرة بقيمة 4 ميلي ثانية
porta=7; الغاء تفعيل العامود رقم صفر
الاربع سطور التي تلي نفس الشرح السابق ولكن تغير معنا امرين هما
في السطر الاول تتغير القمية حسب مواقع اللدات المارد تشغيلها وتغير معنا امر وهو تفعيل العمود رقم 1
وكذالك الامر بالنسبة للسطور الباقية
شرط الخروج من الحلقة الكبرى
if (bit_test(*5,3)==0)goto leabel1;
انا اقول افحص الطرف رقم 2 اذا كان يساوي الصفر ادهب الى العنوان leabel 1 واذا كان لا يساوي الصفر تابع تنفيذ البرنامج يعني للخروج من الحلقة الكبرى يجب ان ينكسر الشرط
طبعا بعد شروط الاختبار يجب ان تاخر بقيمة على الاقل 10 ميلي ثانية لكب يستطيع المعالج رؤية الكبسة مضغوطة مرة واحدة والا على سرعة المعالج سوف يراها مكبوسة اكثر من مرة ويمكن ان ينقل مباشرة الى الرقم 7 فرضا جرب احذف التعليمة ولاحظ الفرق
عمل البرنامج بشكل عام
دخول للحلقة الاولى الكبرى الغير منتهية <<< دخول الى الحلقة الصغرى الثانية "عرض رقم صفر" >>>> خروج من الحلقة الصغرة الثانية اختبار الشرط الجواب نعم اهب الى عنوان اخر الجواب لا عيد الكرة من جديد فرضا كان الجواب نعم
دخول للحلقة الثانية الكبرى الغير منتهية عند العنوان leabel 1<<<< دخول الى الحلقة الصغرة الثانية "عرض رقم واحد ">>> خروج من الحلقة الصغرى الثانية اختبر الشرط الجواب نعم اذهب leabel 2 الجواب لا عيد الكرة من جديد اي ظل في مكانك اعرض رقم واحد فرضا كان الجواب نعم
دخول للحلقة الثانية الكبرى الغير منتهية عند العنوان leabel 2<<<< دخول الى الحلقة الصغرة الثانية "عرض رقم 2 ">>> خروج من الحلقة الصغرى الثانية اختبر الشرط الجواب نعم اذهب leabel 3 الجواب لا عيد الكرة من جديد اي ظل في مكانك اعرض رقم 2
عند العنوان liable 9
اذا تحقق الشرط بداخل الحلقة سوف يعود من جديد الى عرض الرقم صفر
طبعا يوجد سؤال ما عي الغاية من الحلقة الصغرة وما الفائدة من تكرار البيانات 100 مرة وما هو سبب جعل الحلقة الكبرى لا نهائية اي ليش لها شرط بداية ولا شرط توقف اتمنى من الاخوة القراء ان يجيبو على الاسئلة لارى هل كان شرحي للمشروع واضحا ام مبهما

رابط تحميل المشروع
http://www.mediafire.com/download.php?1zhdnjctbze

geniusse01
08-18-2009, 11:04 PM
السلام عليكم

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

mohandsyasser
08-19-2009, 11:51 AM
بسم الله ما الله مشروع ممتاز و شرح لا يصر الا من عملاق مثلك

القلم الدامي
08-19-2009, 12:09 PM
مشكور رد حلو وجميل من اخ اصيل ونبيل
انا جاهز لائي سؤال بخص الدارة

mohandsyasser
08-19-2009, 04:11 PM
اتمنى ان تكون هناك مكتبة من المشاريع الالكترونية الكاملة و يكون هذا المشروع احد افرادها و اهم شئ ان يتم عمل محاكاة باستخدام برنامج بروتس لان الكثيرين لا يستطيعون تنفيذ الدائرة عمليا كذلك تصميم اللوحة المطبوعة لها و كاننا نريد ان نخرج بمشروع نهائى للسوق ...

القلم الدامي
08-19-2009, 04:29 PM
بسم الله الرحمن الرحيم
المشروح مجرب على البروتوس معك ملف المشروع وملف الهكس وملف السي
طيب اش رايك نطور هي الدارة عندك اقتراح او فكرة

ابو نادر
08-19-2009, 06:17 PM
السلام عليكم ورحمة الله

المهندس مصطفى

ذالك التلميذ الذي تفوق على استاذه

ماشا الله عليك درس يوحى بمستقبل واعد لمقدمه

القلم الدامي
08-19-2009, 11:39 PM
رد اصيل من اخ اصيل مشكورررررر على مروررررررك

ابو ادم
08-25-2009, 07:05 PM
الف شكر على هذا المشروع واتمنى وجود مشاريع مما ثلة والاكثر منها

زكي شاكر
09-08-2009, 09:19 AM
ما شاء الله اخي العزيز ..
موضوع رائع وشرح دقيق. ممايسهل المهمة على المبرمج كيفما كانت لغة البرمجة .
جازاك الله خيرا على هذا العمل الرائع وعلى مجهودك الطيب
في نشر وشرح العلوم الالكترونية باللغة العربية..

qasem kafawin
09-15-2009, 08:40 PM
شرح ممتاز جزيل الشكر يااستاذ

zoro239
10-22-2009, 09:35 PM
ممكن اخي اعاده شرح نقطة كما تلاحظ
وطريقة الوصل بين المفكك والمعالج والدايودات الضوئية

ومن نقطة اخرى
نحن عملنا ذلك من ناحية الارقام لكن لو اردنا ان نجعل كتابة تظهر على الليدات
فعملية الرسم ستكون مرة متعبة فهل هناك طريقة اسهل من ذلك

مع شكري لك واحترامي الشديد لجهدك

metwally.mustafa
04-17-2010, 10:05 PM
جزاكم الله خيرا

أبو عاصم
02-07-2012, 01:47 PM
مجهود متمر أن شاء الله الحمد لله و الشكر لله اللهم زدنا علم و عمل و الحمد لله رب العالمين

TOQA
11-21-2012, 10:27 PM
جزاك الله كل خير اخي القلم الدامي ..شرح اكثر من رائع وتفصيل جميل... جعل الله ذلك في ميزان حسناتك يوم القيامة...ربنا يوفقك :bore:

anwar041
05-19-2013, 05:18 AM
بارك اللة فيك

أشرف عبد الشافى
08-16-2013, 12:44 AM
شرح اكثر من رائع بارك اللة فيك

luonluon818
08-16-2013, 05:58 AM
شكرا لك

musta
03-05-2016, 10:37 PM
شكرا