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

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

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,334
نشاط [ ناصراحمد2 ]
قوة السمعة:93
قديم 22-12-2009, 09:52 PM المشاركة 25   
افتراضي



(الدرس الرابع)



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

بسم الله الرحمن الرحيم

اهلا وسهلا بكم جميعا
اتمنى ان تكونوا استفدتم من ماسبق

__________________NNNNNNNNNN______________________ __________________



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

وحتى تكون المتابعة للمبتدىء ايسر


MMMMMMMMMMMMnasserMMMMMMMMMMMMMM

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

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




ار يو اوك؟؟؟؟؟؟؟؟؟؟؟؟؟؟


فى درسنا السابق ايضا تعلمنا ان مجموعة char او مجموعة المتغيرات هى التى نشاهدة على العين

وتعلمنا ايضا ان هذة المجموعة :
كود:
char x1=0B11111111; char x2=0B11111111; char x3=0B00000110; char x4=0B00001000; char x5=0B00010000; char x6=0B00110000; char x7=0B11111111; char x8=0B11111111;
نستطيع ان نعطيها اسم (مادة العرض ) او (الداتا) او (الشريط السينمائى)


اوك سوف نعطيها الاسم الاخير (الشريط السينمائى )


هذا هو الشريط السينمائى كما تشاهدون وعلية يظهر حرف ال N


char x1=0B11111111;
char x2=0B11111111;
char x3=0B00000110;
char x4=0B00001000;
char x5=0B00010000;
char x6=0B00110000;
char x7=0B11111111;
char x8=0B11111111;

وكما نلاحظ جميعا ان عدد الاسطر8 وعدد مكعب الماتركس 8

وهكذا لا يوجد فرق فى العدد

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



(والحل)

الحل انة يجب علينا ترك مسافة بين عرض الحرف وبين تكرار عرضة

وهذا سوف يكون باضافة سطر فارغ بمعنى انة سوف يكون بالكامل 0


char x9=0B00000000;


هل تلاحظون ان عدد اسطر الماتركس8 وعدد المتغيرات 9

نعم

فسوف تقوم شاشة العرض بعرض ال 8 المسجلين بالترتيب

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

وهكذا سوف يتم العرض بالتتابع

فى تجربتنا نستخدم ال8X8 وبة8 اعمدة ولكننا نريد اليوم
اظهار كلمة كاملة او جملة


هذا بالظبط كما شرحنا

سوف تقوم الشاشة بعرض8 من المجموعة char وعند التقليب سوف ياخذ كل
متغير قيمة ماسبقة

سوف نقوم الان بوضع الكود الجديد ولاحظو التغيرات التى تمت بينهم

طبعا لن نجد اشرف من((( لفظ الجلالة))) لاظهارة على تجاربنا الاولية


واليكم الكود :

كود:
char x1=0b00000000; char x2=0b00000000; char x3=0b11111110; char x4=0b11111110; char x5=0b00000000; //// char x6=0b11111110; char x7=0b11111110; char x8=0b00000110; char x9=0b00000110; char x10=0b11111110; char x11=0b11111110; char x12=0b00000110; char x13=0b00000110; char x14=0b00111110; char x15=0b00101110; char x16=0b00101000; char x17=0b00111000; char x18=0b00000000; //// char x19=0b00000000; char x20=0b00000000; char x21=0b00000000; char n; void main() { TRISB=0; PORTB=0; TRISd=0; PORTd=0; loop: for(n=0;n<100;n++){ PORTd=0B11111110; PORTB=x1; delay_us(300); /////////// PORTd=0B11111101; PORTB=x2; delay_us(300); ///////////// PORTd=0B11111011; PORTB=x3; delay_us(300); //////////// PORTd=0B11110111; PORTB=x4; delay_us(300); /////////// PORTd=0B11101111; PORTB=x5; delay_us(300); /////////////////// PORTd=0B11011111; PORTB=x6; delay_us(300); //////////// PORTd=0B10111111; PORTB=x7; delay_us(300); /////////// PORTd=0B01111111; PORTB=x8; delay_us(300); } x1=x2; x2=x3; x3=x4; x4=x5; x5=x6; x6=x7; x7=x8; x8=x9; x9=x10; x10=x11; x11=x12; x12=x13; x13=x14; x14=x15; x15=x16; x16=x17; x17=x18; x18=x19; x19=x20; x20=x21; x21=x1; goto loop; }
سوف نشاهد جميعا لفظ الجلالة تتحرك من اليسار الى اليمين






وهكذا نتعلم سويا




(((((((((((((ومعلومة اليوم))))))))))))))

اننا نستخدم (الشريط السينمائى )كما نريد حتى لو كان 100سطر
لن يوقفنا غير ذاكرة الميكرو
00000000000000000110000000000001100000000000000000 0000
00000000000000000111100000000001100000000000000000 0000
00000000000000000110011000000001100000000000000000 0000
00000000000000000110000110000001100000000000000000 0000
00000000000000000110000001100001100000000000000000 0000
00000000000000000110000000011001100000000000000000 0000
00000000000000000110000000000111100000000000000000 0000
00000000000000000110000000000001100000000000000000 0000

ويظل وسط الكود كما هو

ان يتم ادراج الداتا واحدة تلو الاخرى



ملحوظة هامة

((لو عكسنا الخرج )) فسوف يتم عكس العرض


عرضنا اليوم كان من اليسار الى اليمين

ولو تم عكس العرض سوف يصبح العرض من اليمين الى اليسار



كود:
PORTd=0B11111110; PORTB=x1; delay_us(300); /////////// PORTd=0B11111101; PORTB=x2; delay_us(300); ///////////// PORTd=0B11111011; PORTB=x3; delay_us(300); //////////// PORTd=0B11110111; PORTB=x4; delay_us(300); /////////// PORTd=0B11101111; PORTB=x5; delay_us(300); /////////////////// PORTd=0B11011111; PORTB=x6; delay_us(300); //////////// PORTd=0B10111111; PORTB=x7; delay_us(300); /////////// PORTd=0B01111111; PORTB=x8; delay_us(300);
وهذا هو العكس الذى اقصدة

كود:
PORTd=0B11111110; PORTB=x8; delay_us(300); /////////// PORTd=0B11111101; PORTB=x7; delay_us(300); ///////////// PORTd=0B11111011; PORTB=x6; delay_us(300); //////////// PORTd=0B11110111; PORTB=x5; delay_us(300); /////////// PORTd=0B11101111; PORTB=x4; delay_us(300); /////////////////// PORTd=0B11011111; PORTB=x3; delay_us(300); //////////// PORTd=0B10111111; PORTB=x2; delay_us(300); /////////// PORTd=0B01111111; PORTB=x1; delay_us(300);
بعدد الاعمدة التى نستخدمها

ويتم اضافة اى شىء الى الشريط السينمائى

على ان يتم ادراج نفس العدد
الى نظام التقليب


واخيرا يجب ان يكون اخر رقم يتم انتقالة ياخذ موقع اول رقم





والا لن يتم العرض الا مرة واحدة


*
*
*


والان وكالمعتاد

اترككم مع اجهزتكم ولا تنسوا ان تقوموا بالتجارب باستمرار





نسيت اليوم رش الماء امام الدكان

نروح نرش المية




اترككم فى رعاية الله
(( فى الدرس القادم ان شاء الله))

سوف نتقدم خطوة للامام

فى عالم الماتركس
ونستخدم
Shift register 74HC164
او مايسمى بمسجل الازاحة

وهذا وظيفتة ان يقوم بوظيفة بورتA فى ميكرو16f84a
وسوف يقوم ايضا بوظيفة D فى ميكرو 16f877a


بمعنى انة سوف تكون وظيفتة قائمة على تناوب الاعمدة


واليكم صورة مسجل الازاحة لكى تتعرفو عليه



وايضا صفحة ال(( data sheet)) الخاصة بة
http://tw.ic-on-line.cn/IOL_74HC164/PdfView/1032173.htm



كان مجننى من قبل ههههههههههههههههه
شاهدو هذا الموضوع حتى تعرفوا كم كانت معاناتى معة

http://www.qariya.com/vb/showthread.php?t=50565












اترككم

فى رعاية الله وامنة



لا الة الا انت سبحانك انى كنت من الظالمين




التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 27-12-2009 الساعة 07:25 PM
اعلانات

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,334
نشاط [ ناصراحمد2 ]
قوة السمعة:93
قديم 22-12-2009, 10:02 PM المشاركة 26   
افتراضي


(الدرس الخامس)


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


بسم الله الرحمن الرحيم

الاخوة الزملاء والزوار والاعضاء

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


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


لحظة شباب نسيت رش الماء ممممممممم


والان بعد رش الماء كالمعتاد نتابع


777777777777777777777777777777777777777777777


اليوم ان شاء الله وكما نوهنا فى درسنا السابق نتحرك خطوة للامام

اعتقد انك مثلى ايضا تتسال

كيف يتم الاستغناء عن 8منافذ تقوم بتبديل الاعمدة واحد تلو الاخر او كما نريد

نستبدل كل هذا العدد ب2 مخرج فقط ؟؟؟؟؟؟؟؟


55555555555555555555555555555555

والرد:

نعم هذا هو مايحدث باستخدام مسجلات الازاحة

وسوف ندرس منها نوعين ان شاء الله
74hc164
74hc595

وسوف نستخدم الاول

لانة اخف من الثانى بالنسبة للمبتدىء مثلى






هذا هو مسجل الازاحة كما نشاهدة جميعا

واليكم بعض المعلومات السريعة عنة

vcc اعتقد معروفة فهى ل 5V طرف التغذية الموجب للاى سى

Gnd الطرف السالب للاى سى 0v


يوجد 8 ارجل باسم Q

وهذة هى مخارج الاى سى


يوجد طرفين باسم A&B


وهذين اسمهم دخول الداتا (data )


وطرف CLK وهذة تسمى النبضات او الساعة


ويوجد طرف اسمة CLR وهذا يعمل نفس عمل الريست او الكلير




مممممممممممممممممممم

مفهوم ولا مو فاهمانين ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

سوف نذهب الان ونتعرف علية اكثر وعملى ان شاء الله


نترك طبعا مداخل التغذية

ويتم توصيل بورتات الخرج الى اطراف الماتركس
بديل مداخل A فيما درسناه سابقا



555555555555555555555555555555555555555555555


بخصوص الطرف CLR

فهذا اذا اخذ سالب فولت فسوف يقوم باعادة تشغيل الاى سى من جديد

ولذلك سوف نعطية طرف
5V مباشرة


ونخلص منة ههههههههههههه

66666666666666666666666666666666666666666666666666 66
يبقى لدينا الان 3 مخارج ان شاء الله

A&B&clk


سوف نستريح ايضا من الطرفين A&B

سوف نصلهم معا بطرف خروج الداتا فى الميكروكونترول

وفى الاغلب الشروحات دائما تكون بورت 1 ....... F1

33333333333333333333333333333333333333333

نذهب الان الى الطرف الاخير CLK

وهو كما ذكرنا هذا للنبضات او الساعة

وسوف نقوم بوصلة الى بورت(0) فى الميكرو


7777777777777777777777777777777777


اعتقد ان ماسبق شرحة لا يحتاج الى صور .....................



_________________________________
__________________________________


سوف نقوم الان وكما تعودنا ان نستخدم الكود السابق

فى نفس التجربة واليكم الكود السابق

كود:
     char x1=0b00000000;
char x2=0b00000000;
char x3=0b11111110;
char x4=0b11111110;
char x5=0b00000000; ////
char x6=0b11111110;
char x7=0b11111110;
char x8=0b00000110;
char x9=0b00000110;
char x10=0b11111110;
char x11=0b11111110;
char x12=0b00000110;
char x13=0b00000110;
char x14=0b00111110;
char x15=0b00101110;
char x16=0b00101000;
char x17=0b00111000;
char x18=0b00000000; ////
char x19=0b00000000;
char x20=0b00000000;
char x21=0b00000000;
  
  
  
  
  
 char n;

 void main()
{
TRISB=0;
 PORTB=0;

 TRISd=0;
 PORTd=0;

loop:

 for(n=0;n<100;n++){


PORTd=0B11111110;
PORTB=x1; delay_us(300);
 ///////////

PORTd=0B11111101;
PORTB=x2; delay_us(300);
/////////////
PORTd=0B11111011;
PORTB=x3; delay_us(300);
////////////
PORTd=0B11110111;
PORTB=x4; delay_us(300);
///////////
PORTd=0B11101111;
PORTB=x5; delay_us(300);

///////////////////

  PORTd=0B11011111;
PORTB=x6; delay_us(300);
////////////
PORTd=0B10111111;
PORTB=x7; delay_us(300);
///////////
PORTd=0B01111111;
PORTB=x8; delay_us(300);


}



x1=x2;
x2=x3;
x3=x4;
x4=x5;
x5=x6;
x6=x7;
x7=x8;
x8=x9;
 x9=x10;
x10=x11;
x11=x12;
x12=x13;
x13=x14;
 x14=x15;
x15=x16;
x16=x17;
x17=x18;
x18=x19;
x19=x20;
x20=x21;
x21=x1;


goto loop;
}









قبل وضع الكود الجديد

سوف نشرح نقطتين مهمين جدا

==========================

لو بحثنا عن كيفية التعامل مع مسجلات الازاحة


فسوف تجد ان كل الردود فقط هذة الكلمات

( اعط الداتا 1 منطقى و0منطقى )

؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟


او هكذا

اعط الداتا 1/0
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

ولن نجد اى توضيحات

فمتى نعطيها منطقى او حتى غير منطقى هههههههههههههههههههه


ماعلينا :









ولتبسي الامور

اقول لكم ببساطة شديدة



مدخلى الداتا وهم A&B والتى اوصلناهم ببورت1 هم الداتا

وماتعنية كلمة داتا هنا
اننا نسمح للمزيح بالعمل او لا نسمح

ولكى نسمح لة بالعمل فسوف نعطى البورت المتصل بهم هذا الامر




porta.f1=1; porta.f1=0;


على ان تكون الداتا متصلة بالبورت رقم 1 >F1

هكذا نكون خلصنا من الخطوة الاولى


ونقوم باعداء هذا الامر

كود:
 porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;


هذا الامر يعنى اننا قمنا بفتح الداتا وفتح النبضة
ثم اغلقنا الداتا واغلقنا النبضة

نحتاج هنا الى تركيز اكثر

قمنا بفتح الداتا مع النبضة فى وقت واحد

ثم اغلقناهم..................................



(لو فتحنا احداهم واغلقناها وفتحنا الاخرى واغلقناها )

لن يحدث اى شىء
بمعنى ان المسجل لن يتحرك


ويجب ان يتم فتح الاثنين فى وقت واحد

ثم غلقهم


V

V

V


لكى يتقدم الاى سى خطوة الى الامام

معنى خطوة للامام

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

وعند اعطائة هذا الامر

سوف تجد ان البورت الاول لمسجل الازاحة اصبح سالب (لونة ازرق)فى بريتوس


_____________________


وهكذا نفهم ان الامر الاول هذا لمجموع الاوامر كلها


والامر الاخير معناه خطوة للامام

اوك؟؟؟؟؟؟؟؟؟؟؟؟؟؟

وان قمنا باعطاء الامر الاخير مرتين متتابعتين مثل هذا

كود:
 porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;
  porta.f0=1;porta.f1=1; porta.f1=0;  porta.f0=0;

سوف نجد ان مسجل الازاحة قد تقدم خطوتين للامام


وان اعطينا الامر 3 مرات سوف يتقد3خطوات وهكذا




طبعا نعلم ان المخارج لمسجل الازاحة هى8 مخارج Q


اذا لو اعطينا الامر 8مرات سوف تجد ان البورت الاخير قد اعطى لون ازرق

بمعنى ان المسجل تحرك 8 خطوات للامام

وهكذا الى ماشاء الله

ومن هذة النقطة نفهم اننا اذا استخدمنا 2 مسجل ازاحة

بمعنى 16 خرج

فسوف نحتاج الى
16 حركة للامام



؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛


نحاول استرجاع ماسبق مع شرب الشاى والذى منة ههههههههههههههه





وهكذا :

قد تعلمنا طريقة من طرق التعامل مع مسجل الازاحة

طبعا يوجد طرق مختصرة كثيرة

انما هذة الطريقة هى للمبتدئين مثلى كما ذكرت من قبل





ار يوووو اوك:



نعود الان الى الماتركسات


كما فهمنا من قبل

انة لاظهار صورة ما او اى شىء ع الماتركس

فاننا نقوم باظهار الداتا

مع طرف سالب
من مخارج بورت A فى الميكروكونترول


وهذا هو مايحدث بالظبط مع الماتركس باستخدام مسجل الازاحة


نظهر الداتا ونذهب بالخطوات الى المكان الذى نريدة

ثم نعطى التوقيت للامرين معا


كمثال


portb=0b10101010

porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;
porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;




اعتقد ان الاغلبية قد فهمت

ان هذا الامر

سوف يضىء العمود رقم 2 من الماتركس

لماذا؟؟؟؟؟؟؟؟؟


لاننا تقدمنا خطوتين الى الامام

ولا ننسى طبعا انة فى بداية الكود نقوم بتفعيل الداتا كما سبق

====================================


الان اليكم الكود الجديد:





كود:
char x1=0b00000000; char x2=0b00000000; char x3=0b11111110; char x4=0b11111110; char x5=0b00000000; //// char x6=0b11111110; char x7=0b11111110; char x8=0b00000110; char x9=0b00000110; char x10=0b11111110; char x11=0b11111110; char x12=0b00000110; char x13=0b00000110; char x14=0b00111110; char x15=0b00101110; char x16=0b00101000; char x17=0b00111000; char x18=0b00000000; //// char x19=0b00000000; char x20=0b00000000; char x21=0b00000000; char n; void main() { TRISB=0; PORTB=0; TRISa=0; PORTa=0; loop: for(n=0;n<100;n++){ porta.f1=1; porta.f1=0;/////////*****/////////// ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x1; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x2; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x3; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x4; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x5; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x6; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x7; delay_us(300); ////////////////////////////////////////////// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=x8; delay_us(300); } x1=x2; x2=x3; x3=x4; x4=x5; x5=x6; x6=x7; x7=x8; x8=x9; x9=x10; x10=x11; x11=x12; x12=x13; x13=x14; x14=x15; x15=x16; x16=x17; x17=x18; x18=x19; x19=x20; x20=x21; x21=x1; goto loop; }
كالمعتاد قم بمقارنة ماتم تغييرة بين الكودين


ننتبة فقط من اننا ابدلنا بورت D ببورت A


واليكم الان صورة كاملة للهاردوير





نلاحظ فى الصورة اننا قمنا بتوصيل

2 مسجل ازاحة

وهذا لكى نتعلم سويا كيفية توصيل الامسجلات بعضها البعض




يتم هذا التوصيل لاى عدد من المسجلات





5555555555555555555555555555555555555555555555







nnnnnnnnnnnnnnnnnnnnnnn

اعتقد ان درس اليوم دسم جدا
رغم انة مابة صور هههههههههه


ولذلك اترككم لتتمعنوا معه براحتكم





ولا تنسوا شرب الشاى والذى منة



قم بالقرائة مرة واتنين وتلاتة

حتى تستوعب





والان اترككم كالمعتاد مع اجهزتكم

:atu::atu:







اللهم لا الة الا انت سبحانك انى كنت من الظالمين

سبحان الله وبحمدة سبحان الله العظيم



التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 27-12-2009 الساعة 09:59 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية king5star
king5star
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
الدولة: Alexandria, Egypt
المشاركات: 240
نشاط [ king5star ]
قوة السمعة:0
قديم 23-12-2009, 10:37 AM المشاركة 27   
افتراضي


تسلم ايدك يا بشمهندس على الشغل الجامد دا


الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,334
نشاط [ ناصراحمد2 ]
قوة السمعة:93
قديم 23-12-2009, 08:44 PM المشاركة 28   
x3


(الدرس السادس)


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




بسم الله الرحمن الرحيم



كيف الحال جميعا؟
اتمنى ان تكونو بخير وعافية وفهم
::::::::::::::::::::::::::::
ركزو جدا على فهم هههههههههههههههههه
"""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""
وهانحن قد وصلنا سويا الى الدرس السادس فى مشوارنا نحو التعامل مع الماتركس led matrix
وقد تعلمنا سويا فى الدروس السابقة

كيف يتم بناء ماتركس كامل بميكرو واحد فقط

وكيف يمكننا ادراج جملة كاملة فى ماتركس مكون من واحد ميكرو
وبعدها انتقلنا الى التعامل مع المزيحات
واخترنا مسجل الازاحة 74hc164
وقمنا بحمد الله بعمل ماتركس متكامل 8x8 فى درسنا الخامس.

(((((((((((((((((((((((((((((((((((((((((((((((((( (((((((((((((((((((((((

اليوم ان شاء الله لن نذهب بعيدا عن ماسبق

ولكننا سوف نتوسع قليلا مع استخدامنا كل ماسبق فى الدرس الخامس
وسوف نستبدل الماتركس 8x8 الى ماتريكس 8x32
فكرت ان نعطى اليوم درسنا فى كيفية اظهار جملة باللغة العربية تتحرك من اليسار الى اليمين
وبعد قليل تظهر جملة باللغة الانجليزية تتحرك طبعا من اليمين الى اليسار
ولكنى تذكرت ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
اننا تعودنا ان لا نقفذ قفزات سريعة فى الموضوع
+++++++++++++++++++++++++++++++++++++++++



اليكم هذة الصورة وهى للتوضيح فقط

لكيفية توصيل الماتركس مع مسجلات الازاحة والميكرو

وبالطبع بعد مانقوم بالتوصيلات كما هو موضح

نقوم بتحديد مربع الماتركس ونختار سهم الالتفاف ونعدل الوضع ونقرب المكعبات الى بعضها البعض

اعتقد ان جميعا يعرف ذلك ؟





((((((((((((((((((((())))))))))))))))))))))))))))) ))))))))))

عموما هذة الصورة قمت بترتيب الماتركسات نسبيا

(معلش الماوس معاكسنى كتير اليوم خخخخخخخخخخخخخ)



عموما بقدر المستطاع

كما نلاحظ فى الصور هنا ان الماتركسات كلها تعطى نفس الشكل



وهو اخر جزء من لفظ الجلالة المتحرك


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

الجزء الاوسط كان عبارة عن 8 خطوات لمسجل الازاحة والخطوة هنا تعنى

خطوة للامام ..............................ياترى فاكرين ولالا


______________________________________



وهكذا دخلنا الى درسنا الجديد دون ان نشعر باى تغيير


نعم

وللتوضيح اكثر


ننتبة جميعا الى الكلمات القادمة


اولا سوف نقوم بتجزئة الكود السابق الى 3 اجزاء



وهى:

الجزء الاول

اعلى الكود

وهو عبارة عن الداتا التى سوف نرسلها (تشاهدها العين على الشاشة)


الجزء الاوسط
وهو مجموعة الاوامر الخاصة بالكود

وفى درسنا رقم (5) قمنا بالتحرك 8 خطوات للامام ....................صح ام لا؟



والجزء الاخير من الكود

قد اعطيناة اسم (التبديل)


ومعناها ان كل متغير يتحرك وياخذ موقع ماقبلة او مابعدة حسب مانرتب لة


55555555555555555555555555555555555555555555555555


اعتقد ان بعضنا قد فهم الان فى اى جزء سوف نعمل اليوم مممممممممممممم



نعم

سوف نعمل فقط فى الجزء الاوسط


لان مشروعنا اليوم هو 8x32 وهذا معناه ان رقم 8 ثابت انما الجديد هو 32

وهو مانتحرك فى خطواتنا تجاهة


وهكذا نفهم اننا لكى نصنع ال 8x32 سوف نحتاج الى 32 خطوة للامام


خخخخخخخخخخخخخخخ



ياترى فاهمانين ولا مو فاهمنين ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟


(((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((

عموما الان لدينا 32 عمود

وبامكاننا ان نزيد من الداتا (العرض)

لكى نصل بة الى 32 او حتى اكثر

وسوف نقوم بكتابة وسط الكود وسوف يتضمن 32 خطوة للامام




قبل ان اضع لكم الكود


قمت بتصوير البرنامج وهو يعمل


واليكم ملف الفيديو مباشرة على اليوتيوب

حتى لا تعانون من الرفع والتحميل ههههههههههههههههه


نلاحظ ان التصوير يتحرك ببطىء اعتقد السبب برنامج التصوير


http://www.youtube.com/watch?v=XKaEDeQ4GEE




والان اليكم الكود



كود:
char d0=0b00000000; char d1=0b00000000; char d2=0b11111110; char d3=0b11111110; char d4=0b00000000; //// char d5=0b11111110; char d6=0b11111110; char d7=0b00000110; char d8=0b00000110; char d9=0b11111110; char d10=0b11111110; char d11=0b00000110; char d12=0b00000110; char d13=0b00111110; char d14=0b00101110; char d15=0b00101000; char d16=0b00011000; char d17=0b00000000; //// char d18=0b00000000; char d19=0b00000000; char d20=0b00000000; ////// char d21=0b11111111; char d22=0b11111111; char d23=0b00000110; char d24=0b00111000; char d25=0b01100000; char d26=0b11111111; char d27=0b11111111; ///// char d28=0b00000000; char d29=0b00000000; char d30=0b00010000; char d31=0b00111000; char d32=0b01111100; char d33=0b11111110; char d34=0b00111000; char d35=0b00111000; //// char d36=0b00111000; char d37=0b00111000; char d38=0b00111000; char d39=0b11111110; char d40=0b11101110; char d41=0b11000110; char d42=0b10000010; char d43=0b10000010; char d44=0b00000000; char d45=0b00000000; char x; void main() { TRISA=0; TRISB=0; portb=0; porta=0; loop: for (x=0;x<32;x++) { porta.f2=1; //////////////////////////////////////// porta.f1=1; porta.f1=0; portb=d45; delay_us(250); //// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d44; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d43; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d42; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d41; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d40; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d39; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d38; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d37; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d36; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d35; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d34; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d33; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d32; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d31; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d30; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d29; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d28; delay_us(250); //// porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d27; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d26; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d25; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d24; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d23; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d22; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d21; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d20; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d19; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d18; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d17; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d16; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d15; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d14; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d13; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; portb=d12; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0; } d0=d1; d1=d2; d2=d3; d3=d4; d4=d5; d5=d6; d6=d7; d7=d8; d8=d9; d9=d10; d10=d11; d11=d12; d12=d13; d13=d14; d14=d15; d15=d16; d16=d17; d17=d18; d18=d19; d19=d20; d20=d21; d21=d22; d22=d23; d23=d24; d24=d25; d25=d26; d26=d27; d27=d28; d28=d29; d29=d30; d30=d31; d31=d32; d32=d33; d33=d34; d34=d35; d35=d36; d36=d37; d37=d38; d38=d39; d39=d40; d40=d41; d41=d42; d42=d43; d43=d44; d44=d45; d45=d0; goto loop; }

معنا فى هذا الكود

تم ادراج داتا تحتوى على 45 عمود

يشمل كلمة ((لفظ الجلالة )) ثم بعدها حرف N ثم سهم


وكل هذا يتحرك من اليسار الى اليمين


ملاحظة


فلنتذكر جميعا


عملية التبديل فى الاتجاهات


ماهى الا مجرد ترتيب اخراج الداتا

فلو كانت اول خطوة = اول سطر من الداتا

فالحركة سوف تكون من اليمين الى اليسار

واذا كانت اول خطوة =اخر سطر من الداتا


فالعكس


اتمنى ان تكون هذة النقطة واضحة

لانها تحتاج الى فهم
وسوف نستخدم الاتنين معا فى دروسنا القادمة ان شاء الله


++++++++++++++++++++++++++++++++++++++++


فلنعود الان الى درس اليوم




لو قارنت بين هذا الكود وماسبق من الاكواد

فلن تجد تغييرا الى فى وسط الكود فقط



ففى الاكواد السابقة كنا نتحرك خطوة للامام ثم نرسل داتا


فكنا نتحرك 8 خطوات

لاننا كنا من قبل نتعامل فى حدود ال8 اعمدة


اما اليوم فلدينا32 عمود


ولذلك لو قمت بالعد للخطوات سوف تجدهم 32 خطوة


وهذة هى الخطوة الاخيرة على سبيل المثال

كود:
portb=d12; delay_us(250); porta.f0=1;porta.f1=1; porta.f1=0; porta.f0=0;

وسوف نجد ايضا ان الديلاى ( delay_us ) او فترة الانتظار اقل من قبل

وهذة فقط لنزيد من سرعة الحركة وليس الا

:hry:

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


هذا بالاضافة الى عدد مرات الاعادة الموجودة فى اسفل كلمة لوووب loop
والموجودة فى امر فور for

اذا ذاد العدد تكون الحركة ابطا والعكس صحيح






؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟



ياترى فية اى حد فاهم حاجة خخخخخخخخخخخخخخخ


ياريت اللى فهم حاجة يفهمنى










===================================


==============================




========================



والان اليكم هذة الصورة لدرسنا اليوم


بعد مشاهدة الصورة سوف نعرف جميعا لماذا قمت بوضع صورة توضيحية فى اعلى الدرس توضح التوصيلات هههههههههههههه









==================





اعتقد ان هذا الدرس يحتاج الى وقت كبير للهضم

ولذلك وكالمعتاد



اذهب لرش الماء لانى ايضا كالمعتاد دائما انساة







وبعد رش الماء



اترككم مع اجهزتكم



ممممممممممم



وانتم تعرفون الباقى هههههههههههه











دمتم فى رعاية الله




سبحان الله وبحمدة سبحان الله العظيم









(انتظرونا)فى الدروس القادمة
فمازال النهر يجرى


التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 03-01-2010 الساعة 09:04 PM

الصورة الرمزية king5star
king5star
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
الدولة: Alexandria, Egypt
المشاركات: 240
نشاط [ king5star ]
قوة السمعة:0
قديم 24-12-2009, 10:35 AM المشاركة 29   
افتراضي شكراً على الأهتمام


شكراً يا بشمهندس على الاهتمام بالموضوع والافادات العالية الذى اضفتها حتى يستفاد منها الجميع انا عملت حرف K ينزل ويطلع زى الى حضرتك عاملة بالضبط بس اضفت فاصل لكى تميز الحرف كامل وحاولت انى اعمل حرف تانى ياحرك بعديهيعنى الاثنثن يدوره فوق بعض بس معرفتش للأسف وانشاء الله اعرفة فى بقية الدروس وهذه صورة للحرف على البروتيوس والبرنامج

صورة من العمل



وهذا هو البرنامج

كود:
char k1=0B11000011;
  char k2=0B11000011;
  char k3=0B11001100;
  char k4=0B11110000;
  char k5=0B11110000;
  char k6=0B11001100;
  char k7=0B11000011;
  char k8=0B11000011;
  char f0=0b00000000;   //// فاصل الحرف
 
   char n;
 
   void main()
 {
 TRISB=0;
  PORTB=0;
 
  TRISd=0;
  PORTd=0;
 
 loop:
 
  for(n=0;n<100;n++){
 
 
 PORTd=0B11111110;
 PORTB=k1; delay_us(300);
 
 PORTd=0B11111101;
 PORTB=k2; delay_us(300);
 
 PORTd=0B11111011;
 PORTB=k3; delay_us(300);
 
 PORTd=0B11110111;
 PORTB=k4; delay_us(300);
 
 PORTd=0B11101111;
 PORTB=k5; delay_us(300);
 
 PORTd=0B11011111;
 PORTB=k6; delay_us(300);
 
 PORTd=0B10111111;
 PORTB=k7; delay_us(300);
 
 PORTd=0B01111111;
 PORTB=k8; delay_us(300);
 
 PORTd=0B11111110;
 PORTB=f0; delay_us(300);
 
 
 }
 
 
 
 k1=k2;
 k2=k3;
 k3=k4;
 k4=k5;
 k5=k6;
 k6=k7;
 k7=k8;
 k8=f0;
 f0=k1;
 
 
 goto loop;
 }


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

وهذه صورة بعد التعديل للشاشتين




وهذا البرنامج

كود:
 char k1=0B11000011;
 char k2=0B11000011;
 char k3=0B11001100;
 char k4=0B11110000;
 char k5=0B11110000;
 char k6=0B11001100;
 char k7=0B11000011;
 char k8=0B11000011;
 char f0=0b00000000;
 char A1=0B01111110;
 char A2=0B11000011;
 char A3=0B11000011;
 char A4=0B11000011;
 char A5=0B11111111;
 char A6=0B11000011;
 char A7=0B11000011;
 char A8=0B11000011;

  char n;

  void main()
{
TRISB=0;
 PORTB=0;

 TRISd=0;
 PORTd=0;

  TRISC=0;
 PORTC=0;

loop:

 for(n=0;n<100;n++){


PORTd=0B11111110;
PORTB=k1; PORTC=A1; delay_us(300);

PORTd=0B11111101;
PORTB=k2; PORTC=A2; delay_us(300);

PORTd=0B11111011;
PORTB=k3; PORTC=A3; delay_us(300);

PORTd=0B11110111;
PORTB=k4; PORTC=A4; delay_us(300);

PORTd=0B11101111;
PORTB=k5; PORTC=A5; delay_us(300);

PORTd=0B11011111;
PORTB=k6; PORTC=A6; delay_us(300);

PORTd=0B10111111;
PORTB=k7; PORTC=A7; delay_us(300);

PORTd=0B01111111;
PORTB=k8; PORTC=A8; delay_us(300);

PORTd=0B11111110;
PORTB=f0; PORTC=F0; delay_us(300);

}



k1=k2;
k2=k3;
k3=k4;
k4=k5;
k5=k6;
k6=k7;
k7=k8;
k8=f0;
f0=K1;


goto loop;
}


التعديل الأخير تم بواسطة : king5star بتاريخ 24-12-2009 الساعة 11:10 AM

يعقوب_86
:: مهندس ::
تاريخ التسجيل: Dec 2009
المشاركات: 11
نشاط [ يعقوب_86 ]
قوة السمعة:0
قديم 24-12-2009, 12:18 PM المشاركة 30   
افتراضي


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

وكل من شارك في اثراء هذا المنتدى

لست صاحب خبرة كبيرة في الالكترونيات فانا طالب هندسة مدنية
واحببت ان اشارك بهذا المشروع الذي هو التحكم في المصفوفة الضوئية
لن اطيل عليكم هذا رابط البرنامج وملف المحاكاة
http://www.4shared.com/file/18021437...8d/matrix.html
و ارجوا من كل من له اقتراح على البرنامج ان يوافينا به
بالنسبة للبرامج انا استعمل برنامج

MikroC Pro for PIC 2009 1.65
وبرنامج المحاكاة
Proteus 7.4 sp3
في النهاية انا اريد ان اجرب التجربة على ارض الواقع و ارجوا من اصحاب الخبرة في المنتدى ان يمدوني بالاسماء التجارية للعناصر المستعملة في التجربة و بعض التعديلات والاحتياطات لاجراء مثل هذه التجارب
في النهاية ارجوا التوفيق للجميع والسلام عليكم.


الصورة الرمزية king5star
king5star
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
الدولة: Alexandria, Egypt
المشاركات: 240
نشاط [ king5star ]
قوة السمعة:0
قديم 24-12-2009, 03:32 PM المشاركة 31   
افتراضي


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

وكل من شارك في اثراء هذا المنتدى

لست صاحب خبرة كبيرة في الالكترونيات فانا طالب هندسة مدنية
واحببت ان اشارك بهذا المشروع الذي هو التحكم في المصفوفة الضوئية
لن اطيل عليكم هذا رابط البرنامج وملف المحاكاة
http://www.4shared.com/file/18021437...8d/matrix.html
و ارجوا من كل من له اقتراح على البرنامج ان يوافينا به
بالنسبة للبرامج انا استعمل برنامج

MikroC Pro for PIC 2009 1.65
وبرنامج المحاكاة
Proteus 7.4 sp3
في النهاية انا اريد ان اجرب التجربة على ارض الواقع و ارجوا من اصحاب الخبرة في المنتدى ان يمدوني بالاسماء التجارية للعناصر المستعملة في التجربة و بعض التعديلات والاحتياطات لاجراء مثل هذه التجارب
في النهاية ارجوا التوفيق للجميع والسلام عليكم.

كود جميل ورائع وبسيط ونرجوا منك تحليله وشرحة تسلم ايدك يا باشا ويا رب اعمل كدا زيك


فوزي سامي
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
المشاركات: 255
نشاط [ فوزي سامي ]
قوة السمعة:0
قديم 24-12-2009, 07:00 PM المشاركة 32   
افتراضي


السلام عليكم
أنا عندي سؤال لو تكرمتم
مشكلتي ليست باليرمجة بل بكيفية صناعة لوحة الليدات هذه. فهل هناك طريقة لصناعتها ؟؟ لأنني بحثت بمحلات القطع الإلكترونية ولم أجد هذه الشاشة !!!!!
فهل من طريقة لصناعتها ؟؟
شكرا لكم

إضافة رد

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

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

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


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

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