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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-02-2013, 11:45 AM المشاركة 1   
افتراضي شرح عرض الحروف والأشكال الثابتة على شاشة عرض مصفوفة الليدات تمهيدا لتحريكها Twitter FaceBook Google+



التجربة رقم 10 : عرض الحروف والأشكال الثابتة على شاشة عرض مصفوفة الليدات :
أ‌- لوحة الشطرنج كمثال لتكوين أشكال على مصفوفة ليدات :






الدائرة الكهربائية:



الفكرة :
الشكل التالى يوضح ملخص للفكرة :



الشكل مكون نقط مضيئة على شكل خمسة أعمدة وسبعة صفوف . يتم تفعيل العامود ( عن طريق العداد 4017 وترانزستور عاكس يصل جهد منخفض إلى جميع كاثودات ليدات العامود ) ثم يتم إدخال بيانات الصفوف ( بتات المنفذ PORTB ) . نتيجة لذلك يجب أن يكون لدينا خمس بايتات 5-bytes لبيانات الصفوف , كل بايت بيانات مخصص لعامود .
ملحوظة :
إعلان مصفوفة أعداد unsigned shortباسمRows_Data بخمسة عناصر [5] بالصيغة :



كود:
unsigned short Rows_Data[5] ={ Rows_Data [0] , …., Rows_Data [4]};


هو إعلان عن حجز خمس بايتات فى الذاكرة لحفظ عناصر المصفوفة . العنصر الأول Rows_Data [0] يمثل بايت بيانات العامود الأول و العنصر الثانى Rows_Data [1] يمثل بايت بيانات العامود الثانى وهكذا حتى العنصر الخامس Rows_Data [4] للعامود الخامس .
لتنفيذ شكل معين عليك معرفة بايت بيانات الليدات (النقط المضيئة) بالسداسى عشر فى كل عامود . بايت بيانات ليد الصف الأول (السفلى) هو " 0x01" وبايت بيانات ليد الصف الثانى (من أسفل) هو "0x02" وبايت بيانات ليد الصف الثالث هو "0x04" وهكذا (01,02, 04, 08, 10, 20, 40) . عند وجود مجموعة من ليدين أو أكثر فى عامود واحد يتم جمع قيمها السداسية عشر معا للحصول على بايت بيانات هذا العامود . على سبيل المثال المجموعة المكونة من الليدان الأول والثانى تعطى بايت بيانات بالقيمة "03" , والمجموعة المكونة من الثلاثة ليدات السفلية تعطى بايت بيانات بالقيمة "01 + 02 + 04 = 07" , والمجموعة المكونة من الأربعة ليدات السفلية تعطى بايت بيانات بالقيمة "08 + 04 + 02 + 01 = 0F" وهكذا .
لذلك يمكن كتابة بيانات شكل لوحة الشطرنج فى شكل مصفوفة كما يلى :

كود:
unsigned short Rows_Data [5] ={0x55,0x2A,0X55,0X2A,0X55};

البرمجة بلغة السى والمترجم ميكروسى برو :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-02-2013, 11:50 AM المشاركة 2   
افتراضي


البرمجة بلغة السى والمترجم ميكروسى برو :
1- تفعيل العامود الأول فقط , عن طريق استدعاء دالة الإعادة void RESET_4017 ثم إخراج بيانات العامود الأول 0x55 على المنفذ PORTB=0x55 . يلى ذلك تأخير طويل للمسح البطىء ( لملاحظة التغيرات) أو تأخير قصير للمسح السريع (لدمج الشكل) . فى النهاية يتم فصل المنفذ PORTB=0 إستعدادا للعامود التالى .
2- فصل العامود الأول وتفعيل العامود الثانى , عن طريق استدعاء دالة التوقيت void CLOCK_4017 ثم إخراج بيانات العامود الثانى 0x2A على المنفذ PORTB=0x2A . يلى ذلك تأخير طويل للمسح البطىء ( لملاحظة التغيرات) أو تأخير قصير للمسح السريع (لدمج الشكل) . فى النهاية يتم فصل المنفذ PORTB=0 إستعدادا للعامود التالى .
3- تكرار الخطوة السابقة مع العامود الثالث والرابع والخامس .
4- ونظرا لتكرار مجموعات تعليمات البرنامج يتم استخدام حلقة for فى تنفيذ البرنامج , مع تمرير عناصر مصفوفة إلى بيانات المنفذ ليكون البرنامج كما يلى :

كود:
//PIC16F628A , Internal clock , 4MHz // "chequer-board," unsigned short column_no; unsigned short Rows_Data [5] ={0x55,0x2A,0X55,0X2A,0X55}; // Functions void Reset_4017(viod){ //Reset counter 4017 PORTA.F1=1; //Reset 4017 : Line HIGH, column 1 on PORTA.F1=0; //then LOW, allow 4017 to clock via clock line } void Clock_4017(void){ //Clock counter 4017 PORTA.F0=1; // Clock 4017 : Line HIGH PORTA.F0=0; //then LOW } //Main function void main (){ //Registers and PORTS Configurations CMCON=0x7; // Turn comparators off and enable pins for I/O functions TRISA=0; // Make all RA lines output TRISB=0; //Make all RB lines output // Endless loop while(1){ //Endless loop START Reset_4017( ); // Reset = Column 1 for(column_no=0; column_no <5; column_no ++){ // Scanning PORTB= Rows_Data [column_no] ; // Delay_ms(1); // Call Delay 1 ms , FAST SCAN PORTB=0; Clock_4017( ); // Clock = New Column } //end of count loop } // endless loop } //END of main







أ‌- عرض حرف "A" غير متحرك :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 10-02-2013, 11:52 AM المشاركة 3   
افتراضي


ب- عرض حرف "A" غير متحرك :






كود:
//Program for PIC16F628A. //Takes data from car_array for "A" //and displays on screen . //Declarations unsigned short column_no; unsigned short int car_array [5]={ 0x3F, 0x48, 0x48, 0x48, 0x3F};//"A" //Functions void Reset_4017(void){ PORTA.F1=1;// Reset 4017 PORTA.F1=0; } void Clk_4017(void){ PORTA.F0=1; // Colck the 4017 for next column PORTA.F0=0; } //Main function void main(){ CMCON=0x7; // Turn comparators off and enable pins for I/O functions TRISA=0; TRISB=0; while(1){ //Endless loop START Reset_4017( ); // Reset = Column 1 for(column_no=0; column_no <5; column_no ++){ PORTB= car_array [column_no] ;// Delay_ms(1); // Call Delay 1 ms PORTB=0; Clk_4017( );// Clock = New Column }//end of for }//endless loop }//END of main






fawzy73
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2008
المشاركات: 93
نشاط [ fawzy73 ]
قوة السمعة:0
قديم 10-02-2013, 05:04 PM المشاركة 4   
افتراضي


اخي ا لعزيز

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

ولكن

اليس من الافضل ان يكون الموضوع واحد ومتسلسل ليكي تضع به كل المعلومات؟

حتي تستطيع المتابعة الكاملة للموضوع حيث انه هام وشيق لي .

وشكرا علي سعت صدرك وعلي محهودك المميز

ونتظر منك المزيد
فوزي


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


اخي ا لعزيز

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

ولكن

اليس من الافضل ان يكون الموضوع واحد ومتسلسل ليكي تضع به كل المعلومات؟

حتي تستطيع المتابعة الكاملة للموضوع حيث انه هام وشيق لي .

وشكرا علي سعت صدرك وعلي محهودك المميز

ونتظر منك المزيد
فوزي
أخى الكريم شكرا جزيلا لك

بارك الله فيك

يتم الإشارة إلى التجارب فى الموضوع الأساسى , وتعتبر المواضيع الفرعية كإعلان عنها للتنويه لمن يهمه الأمر .

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


fawzy73
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2008
المشاركات: 93
نشاط [ fawzy73 ]
قوة السمعة:0
قديم 10-02-2013, 07:18 PM المشاركة 6   
افتراضي


السلام عليكم ورحمة الله

شكرا جزيلا علي الرد

وبارك الله فيك

وفي انتظار المزيد


sofien.j
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2009
الدولة: tunisia
المشاركات: 83
نشاط [ sofien.j ]
قوة السمعة:0
قديم 10-02-2013, 07:59 PM المشاركة 7   
افتراضي


السلام عليكم ورحمة الله


بارك الله فيك

إضافة رد

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

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

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


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

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