3rmcTnUdr
3rmcTnUdr 3rmcTnUdr
حيث أن املتغري Data هو متغري ال تزيد قيمته عن 8 بت إذ أن هذه الدالة مصممة على هذا األساس، وسيتبني يف مشروع هذا الفصل كيفية إرسال بيانات حجمها أكرب من 8 بت ... الدالة الثالثة وهي دالة تستخدم الستقبال البيانات اليت تأتى إليه من اجلهاز اآلخر، حيث تستخدم لقراءة حرف واحد بالشكل التالي: Uart1_Read( ); وحيث هذه الدالة ترجع حرف فالبد من ختصيصها ملتغري – وليكن مثال من النوع احلريف – يتم ختزين فيه ما ترجعه هذه الدالة. وهنا ملحوظة البد من ذكرها وهي أنه عندما يقوم اجلهاز األول بإرسال بايت للجهاز الثاني فإن هذا البايت يتم ختزينه يف Buffer إىل أن يتم قراءته، وبالتالي لضمان وجود داتا يف ال Buffer قبل دالة القراءة البد من اختبار وجود حرف يف ال Buffer بعملية القراءة من األساس وهذا يتم من خالل الكود اآلتي: أوال قبل عملية القراءة وإن مل يكن به داتا ال نقوم • ملحوظات كتابة الدالة كاآلتي وميكنك جتربة ذلك بنفسك ... Uart1_Read() أو كاآلتي UART1_Read() • صحيحاً توجد أيضا دوال أخرى مينك االطالع عليها ومنها على سبيل املثال دالة تستخدم إلرسال مجلة كاملة مثل: Uart1_Write_Text(“Engineer”); 1 نالحظ أيضا يف كل الدوال السابقة وجود الرقم وهذا معناه انه ميكن أن يكون هناك دوال ملحق بها الرقم 4 أيضا إذا كان امليكرو الذي نتعامل معه حيتوي على موديولني يتعامالن مع ال • ... Serial Interface 421 ميكروبيديا - موسوعة امليكروكنرتولر elgammalelectronics.com
مشروع تطبيقي حيتوي املشروع على اثنني من امليكروكنرتولر، األول سيقوم بقراءة قيمة مقاومة )باعتبارها سينسور مثال( ويقوم بإرسال هذه القيمة إىل امليكرو الثاني، ويقوم امليكرو الثاني بالتحكم يف سرعة موتور على أساس القيمة اليت استلمها من امليكرو األول ... قبل البدء يف املشروع قد يتبادر إىل الذهن سؤال وهو: ملاذا استخدمنا اثنني ميكروكنرتولر يف حني أن استخدام واحد فقط يغين؟؟ ... وهو فعال سؤال منطقي وسنجد إجابته يف نهاية املشروع ... امليكرو األول سيقوم بقراءة املقاومة املتغرية – وبالتالي حنتاج موديول ال – ADC Interface ثم يقوم بإرساهلا إىل امليكرو الثاني وبالتالي سنحتاج ال إىل ال initialization اآلتيتني داخل الدالة الرئيسية: Serial Interface ومن ذلك سنستخدم داليت ADC_Init(); UART1_Init(9600); وعندئذ سيكون الربنامج الذي سينفذه امليكرو األول املرسل (Transmitter) كاآلتي: أن وهو برنامج سهل وبسيط لكن به سؤال يقول: ملاذا قمنا بقسمة القيمة على ... 2 واإلجابة تتلخص يف ال ADC يقرأ القيمة يف 11 بت وبالتالي أقصى قيمة ميكنه قراءتها هي ،1142 uart1_write ترسل واحد بايت فقط أي 8 ولكن الدالة بت فقط يف كل مرة وأقصى قيمة هلذه ال بت 8 بالنظام الثنائي هي 499، وبالتالي ال ميكننا قراءة القيمة من ال ADC ثم إرساهلا مباشرة، وبالتالي الفصل الثاني عشر: االتصال التسلسلي 424 elgammalelectronics.com
- Page 211 and 212: ADC Interface 11 سبق وأشرن
- Page 213 and 214: 11 وهكذا إىل آخر باق
- Page 215 and 216: ADC_Init(); الدالة األوى
- Page 217 and 218: ولكن قبل اخلوض يف ه
- Page 219 and 220: ولكي نفهم الربنامج
- Page 221 and 222: 412 ميكروبيديا - موسو
- Page 223 and 224: وفيما يلي صورة عن ق
- Page 225 and 226: ∴ R 2 = 1000 × V 1 5 − V 1 Ω
- Page 227 and 228: 419 ميكروبيديا - موسو
- Page 229 and 230: وهنا يف اهلاردوير ق
- Page 231 and 232: 412 ميكروبيديا - موسو
- Page 233 and 234: ملحوظة: يلزم عند ا
- Page 235 and 236: بالنظر إىل هذه الدا
- Page 237 and 238: ورمبا الحظت من الشر
- Page 239 and 240: وبالطبع ميكن تعديل
- Page 241 and 242: ولكي نفهم الدوال عل
- Page 243 and 244: 16 ورمبا الحظ أيضا أ
- Page 245 and 246: وبناء على قيمة اجله
- Page 247 and 248: بالطبع سيكون ذلك بد
- Page 249 and 250: األرقام L293B أو L293D أ
- Page 251 and 252: اهلاردوير توصيل ام
- Page 253: املشروع كامالً elga
- Page 256 and 257: االتصال التسلسلي Ser
- Page 258 and 259: فتظهر لك النافذة اآ
- Page 262 and 263: كانت القسمة على 2 حي
- Page 264 and 265: ملحوظة: فيما سبق ق
- Page 266 and 267: دوائر إلكرتونية ذك
- Page 268 and 269: على ويكفي أن نعرف ا
- Page 270 and 271: 491 ميكروبيديا - موسو
- Page 272: املراجع ... كتاب احر
مشروع تطبيقي<br />
حيتوي املشروع على اثنني من امليكروكنرتولر، األول سيقوم بقراءة قيمة مقاومة )باعتبارها<br />
سينسور مثال( ويقوم بإرسال هذه القيمة إىل امليكرو الثاني، ويقوم امليكرو الثاني بالتحكم يف<br />
سرعة موتور على أساس القيمة اليت استلمها من امليكرو األول ...<br />
قبل البدء يف املشروع قد يتبادر إىل الذهن سؤال وهو: ملاذا استخدمنا اثنني ميكروكنرتولر يف<br />
حني أن استخدام واحد فقط يغين؟؟ ... وهو فعال سؤال منطقي وسنجد إجابته يف نهاية املشروع ...<br />
امليكرو األول<br />
سيقوم بقراءة املقاومة املتغرية – وبالتالي حنتاج موديول ال – ADC Interface ثم يقوم بإرساهلا إىل<br />
امليكرو<br />
الثاني<br />
وبالتالي<br />
سنحتاج<br />
ال إىل<br />
ال initialization اآلتيتني داخل الدالة الرئيسية:<br />
Serial Interface<br />
ومن ذلك<br />
سنستخدم داليت<br />
ADC_Init();<br />
UART1_Init(9600);<br />
وعندئذ سيكون الربنامج الذي سينفذه امليكرو األول املرسل (Transmitter) كاآلتي:<br />
أن<br />
وهو برنامج سهل وبسيط لكن به سؤال يقول: ملاذا قمنا بقسمة القيمة على ... 2 واإلجابة تتلخص يف<br />
ال ADC<br />
يقرأ القيمة يف<br />
11<br />
بت وبالتالي أقصى قيمة ميكنه قراءتها هي<br />
،1142<br />
uart1_write<br />
ترسل<br />
واحد بايت فقط أي<br />
8<br />
ولكن الدالة<br />
بت فقط يف كل مرة وأقصى قيمة هلذه ال<br />
بت 8<br />
بالنظام الثنائي هي 499، وبالتالي ال ميكننا قراءة القيمة من ال ADC ثم إرساهلا مباشرة، وبالتالي<br />
الفصل الثاني عشر: االتصال التسلسلي 424<br />
elgammalelectronics.com