الان بعد تصميم الدائره والجهاز عامه ايا كان باستخدام الريشه التي توصل الجهد الخارجي الي الدائره او عن طريق وضع بطاريه مع الدائره .... الخ .
نبدا في كتابه كود مبدئي .... ولكن قبل كتابه الكود هل سنكتب اي كود وينفع مع اي سرعه للمحرك ؟؟؟ طبعا لا
طيب لازم الاول نحسب سرعه المحرك في الثانيه الواحده وبعد كده نقسم
عدد اللفات علي 1000 الي هيا بتاعه الميلي ثانيه (لأن الثانيه فيها 1000 ميلي ثانيه )
وبعد كده الوقت الي هيطلع لنا ده هوا وقت رسم الصوره في اللفه الواحده
مثال علي كده :-
نفترض ان الموطور بيلف 10 مرات في الثانيه الواحده يبقي 10÷1000 = 100 ميلي ثانيه
يبقي وقت رسم الصوره الواحده هيستغرق 100 ميلي ثانيه
كويس لحد كده ؟!.......... طيب
هنشوف عدد الخطوط الي هنرسمها في اللفه الواحده يعني مثلا :-
لو رسمنا 60 خط في اللفه الواحده هنحتاج اننا نقسمهم علي الوقت الخاص باللفه الواحده علشان نرسم كل خط في توقيت معين يعني نضيئ الليدات بالشكل الي هنحتاجه لوقت معين
مثال علي كده انا عايز اظهر لفظ الجلاله كلمه ( الله ) :-
طبعا احنا هنعمل مصفوفه بالشكل ده :-
كود:
char x01 = 0b11111111;
char x02 = 0b11111111;
char x03 = 0b00000000;
char x04 = 0b00000000;
char x05 = 0b11111111;
char x06 = 0b11111111;
char x07 = 0b00000011;
char x08 = 0b00000011;
char x09 = 0b11111111;
char x10 = 0b11111111;
char x11 = 0b00000011;
char x12 = 0b00000011;
char x13 = 0b01111111;
char x14 = 0b01001000;
char x15 = 0b01001000;
char x16 = 0b01111000;
لحظوا كده المصفوفه من المتغيرات فيها اصفار ووحايد 0,1 وكلنا عارفين ان ال1 هيشغل الليد وال0 هيطفئ الليد ولاحظوا كده احنا كتبنا كلمه الله ازاي
11111111
11111111
00000000
00000000
11111111
11111111
00000011
00000011
11111111
11111111
00000011
00000011
01111111
01001000
01001000
01111000
يعني احنا كده بنرسم الشكل او الكلمه الي هنخرجها مش بنكتب اكواد خالص هههههه
طيب مش احنا كنا قايلين فوق ان احنا هنرسم 60 خط في الثانيه طيب احنا عندنا 16 خط بس
الباقي راحوم فييييييييييييين ؟؟؟؟؟
الباقي من الي هما 44 خط !!
الباقي احنا ممكن نقعد نكتبهم اصفار يعني نطفي الليدات لحد ما اللفه الجديده تبدا وتبدا كلمه الله تترسم تاني !!
لاكن برضوا احنا ممكن ندي امر باطفاء الليدات الفتره دي وهوا ده الكلام المظبوط
طيب الكود ده هيشرح انا اصدي ايه
كود:
char x01 = 0b11111111;
char x02 = 0b11111111;
char x03 = 0b00000000;
char x04 = 0b00000000;
char x05 = 0b11111111;
char x06 = 0b11111111;
char x07 = 0b00000011;
char x08 = 0b00000011;
char x09 = 0b11111111;
char x10 = 0b11111111;
char x11 = 0b00000011;
char x12 = 0b00000011;
char x13 = 0b01111111;
char x14 = 0b01001000;
char x15 = 0b01001000;
char x16 = 0b01111000;
/// المتغيرات الي بتحمل البيانات الي هتظهر علي البروبلير
void main (){
trisd =0;
portd=0;
loop:
portd = x01; delay_us( 1600 );
portd = x02; delay_us( 1600 );
portd = x03; delay_us( 1600 );
portd = x04; delay_us( 1600 );
portd = x05; delay_us( 1600 );
portd = x06; delay_us( 1600 );
portd = x07; delay_us( 1600 );
portd = x08; delay_us( 1600 );
portd = x09; delay_us( 1600 );
portd = x10; delay_us( 1600 );
portd = x11; delay_us( 1600 );
portd = x12; delay_us( 1600 );
portd = x13; delay_us( 1600 );
portd = x14; delay_us( 1600 );
portd = x15; delay_us( 1600 );
portd = x16; delay_us( 1600 );
///
portd = 0; delay_us( 74400 );
goto loop;
///
}
ملاحظه اذا وجدت اخطاء في الكود هذا لانه لم اقم بكتابته داخل برنامج الميكرو سي لعدم وجوده في الوقت الحالي عندي
الكود يعمل علي هذه الدائره :
شرح الكود :-
في البدايه فوق كتبنا المتغيرات الي فيها بيانات الكلمه
بعد كده جعلنا البورت d كخرج عن طريق الامر trisd=0
وجعلنا البورت d لا يخرج داتا عن طريق الامر portd=0
بعد كده عملنا حلقه تكراريه عن طريق وضع عنوان :loop ووضع الجمله goto loop
بعد كده خرجنا البيانات الي هتكتب كلمه الله علي البروبلير ودي اهم جزئيه لاحظ معايا كده
رسمنا اول خط عن طريق الامر
كود:
portd = x01; delay_us( 1600 );
x01 هو ده المتغير الي بيحمل بيانات الخط الاول الي هتظهر علي البروبيلير
ووضعنا وقت انتظار مدته 1600 ميكرو ثانيه يعني 1.6 ميلي ثانيه
طيب ليه الوقت ده ؟؟
الوقت ده هو وقت رسم الصوره الواحده .
مش احنا قولنا ان زمن اللفه الواحده هيكون 100 ميلي ثانيه ( ده لو سرعه الموطور 10 لفات في الثانيه )
وعدد الخطوط الي هنرسمها هتكون 60 خط
اذا زمن رسم الخط الواحد هيكون 100 ÷ 60 = 1.6 ميلي ثانيه ( 1600 ميكرو ثانيه )
وقد قمنا برسم 16 لاظهار الكلمه اذا ما هو الوقت المتبقي لاطفاء الليدات في اللفه الواحده ؟؟؟
الوقت نحسبه كالاتي :-
عدد الخطوط 16 × وقت رسم الخط الواحد 1600 = 25600 ميكرو ثانيه (25.600 ميلي ثانيه ) ده زمن رسم خطوط البيانات
اذا الزمن المتبقي لانهاء اللفه الواحده = زمن اللفه الواحده 100 - زمن الرسم 25.600 = 74.400 ميلي ثانيه (74400 ميكرو ثانيه )
وهو ده وقت اطفاء الليدات لحين انهاء اللفه في الكود :-
كود:
portd = 0; delay_us( 74400 );