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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 04:06 PM المشاركة 9   
افتراضي



  • ثم تحديد خصائص الاتصال
  • لتحديد باقى الخواص من القائمة File اختار الخواص Properties




تظهر لك قائمة الخواص أنقر على مفتاح تحديدات Settings




ثم انقر على مفتاح ASCII Setup



واختار (ضع علامة) Echo typed .. ليظهر (يعرض) صدى لما تكتبه محليا علاوة على الاستجابة الخارجية الناتجة من الاتصال .




المنفذ الآخر COM4 ويمثل برنامج المحاكاة (الوحدة الطرفية): ويتم ذلك بتحرير خواص الوحدة الطرفية للتتلائم مع المنفذ COM3 حتى يتم الاتصال بينهما كما فى الشكل :


اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 04:08 PM المشاركة 10   
افتراضي


شغل برنامج المحاكاة وتأكد من تمام الاتصال بكتابة نص على نافذة برنامج HyperTerminal فتظهر لك نتيجة نجاح تحقيق الاتصال كما يلى :


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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 06:38 PM المشاركة 11   
افتراضي تدريب : الاتصال التسلسلى الغير متزامن Asynchronous serial communication


تدريب : الاتصال التسلسلى الغير متزامن Asynchronous serial communication
الوصف :
يمتلك الكثير من الميكروكونترولر PIC أجهزة hardware ارسال واستقبال عامة غير متزامنة USART ضمن بنائها الداخلى والتى تسمح بالاتصال على مدى واسع بالأجهزة التسلسلية كذاكرات الشرائح ووحدات العرض LCD والكومبيوتر الشخصى ..ألخ .
الوحدة (الموديول) USART لها نظامان للعمل :
النظام المتزامن synchronous: يحتاج لنبضات ساعة للتزامن بين المرسل والمستقبل .
النظام الغير متزامن asynchronous : لا يحتاج لنبضات ساعة للتزامن بين المرسل والمستقبل . وهذا النظام هو الأكثر شيوعا لذلك سوف يتم التركيز عليه ونقوم بإنشاء ربط للبيانات التسلسلية بين الميكروكونترولر PIC وبين الكومبيوتر الشخصى .

المعلومات النظرية المطلوبة :
تستخدم الاتصالات التسلسلية فى النظم المبنية على أساس الميكروكونترولر ويرجع ذلك في معظمه إلى ندرة أطراف المداخل / المخارج المتاحة . وبالاضافة الى إمكانية الاتصالات لمسافات طويلة فإن نقل البيانات تسلسليا هو الأكثر بساطة وفعالة من حيث التكلفة لأن توصيلات الأجهزة المطلوبة لربط البيانات يمكن أن تخفض إلى ثلاثة , هى وصلة الإرسال Tx ووصلة الاستقبال Rx والأرضى المشترك Gnd .

هناك نوعان مختلفان من الاتصالات التسلسلية : النوع المتزامن والنوع الغير المتزامن. ويتمثل التحدي الرئيسي في وجود صلة (ربط) للبيانات التسلسلية هو الحفاظ على التزامن بين المرسل والمستقبل .
يستخدم الأسلوب الغير متزامن بروتوكول ذو خانة بدء start bit وخانة إيقاف stop bitللتزامن بين طرفى (نهايتى) الوصلة .
يتم إرسال كل بايت لحرف character byte في إطار يتألف من خانة بدء start bit يليها خانات الحرف character bits يليها (اختياريا) خانة التماثل (التطابق) parity bit ويتم الانتهاء بخانة توقف واحدة أو أكثر stop bits.
لابد من تهيئة (إعداد) كل من المرسل والمستقبل بنفس معدل البيانات وبنفس عدد خانات البيانات وبنفس عدد خانات التوقف.

في حالة الخمول(السكون ) idle condition يكون خرج الارسال فى الحالة المنطقية المرتفعة .عندما يكون المرسل على استعداد لإرسال بايت الحرف فإنه يشير (يعطى إشارة) إلى المستقبل عن طريق سحب خط الارسال للحالة المنخفضة لفترة زمنية واحدة لنبضات الساعة . هذا هو بت (خانة) البدء start bit وهو يخبر المستقبل بأن القادم هو إطار بايت البيانات . يقوم المستقبل بقراءة عدد خانات الحرف المتوقع حسب البروتوكول المعتمد (والذى تم التهيئة له من قبل) حتى يتم سحب الخط إلى المنطق المرتفع بواسطة المرسل (يمثل بت توقف واحد أو أكثر) ويكون هذا هو نهاية الإطار. يتم تكرار العملية برمتها في كل مرة يكون المرسل جاهزا لإرسال بايت لحرف.
ويسمى هذا النوع من الارسال التسلسلى بالغير متوامن لأن المستقبل يقوم بعمل إعادة تزامن لنفسه مع المرسل في كل مرة يتم إرسال البيانات باستخدام بت البداية start bit. ومع ذلك، فإنه داخل كل إطار يكون الطرفين متزامنين .

من ناحية أخرى، فإنه فى الاتصال التسلسلى المتزامن يتم إرسال الحروف فى مجموعات أو كتل blocks مع عدم وجود خانات إطار تحيط بها . تتم مزامنة الارسال والاستقبال بخط منفصل لنبضات الساعة أو في بعض الحالات يتم تضمين إشارة نبضات الساعة مع الحروف المرسلة .
في كلا النوعين من الاتصالات التسلسلية،يعرف معدل البيانات المرسلة والمستقبلة بمعدل البود baud rate ( عدد النبضات فى الثانية ).
على سبيل المثال موديول USART الموجود داخل الميكروكونترولر PIC16F628A يعتمد كلا النوعين من الاتصالات التسلسلية وكنه أكثر ملائمة للطريقة الغير متزامن asynchronous .
فى النظام الغير متزامن يعمل الطرف RB2 كمخرج إرسال TX ويعمل الطرف RB1 كمدخل استقبال RX .
ترسل بايت البيانات كسلسلة نصية مكونة من 10 خانات : خانة البدء start biو 8 خانات بيانات
eight data bits وخانة إيقاف stop bit كمل فى الشكل التالى :





المنفذ التسلسلى بالكومبيوتر الشخصى (والمعروف باسم COM port) يستخدم النظام القياسى RS232-C للاتصال التسلسلى . والذى يحدد خواص الكهربائية والميكانيكية والإشارات والخطوات المتبعة للربط عن طريق الاتصال التسلسلى .
المنطق المرتفع فى RS232-C هو إشارة بجهد فى المدى -3 V to -15V ( عمليا -12V) والمنطق المنخفض يكون فى المدى +3 V to +15 V (عمليا +12V) . أى أنه لا يماثل المستويات المنطقية للميكروكونترولر PIC لأنه فى RS232-C الحالة المرتفعة سالبة والحالة المنطقية المنخفضة موجبة .
الجدول التالى يبين التوصيلات القياسية لنظام RS232-C للسوكيتات 25-pin و9-pin و RJ-45 .
هنا سوف نتناول فقط أقل توصيلات ممكنة بين الميكروكونترولر والكومبيوتر الشخصى باستخدام خطوط الإشارات TX, RX, GND فقط .












سوف نستخدم النظام الغير متزامن لعمل اتصال مع المنفذ التسلسلى بالكومبيوتر الشخصى عن طريق RS232-C .
نظرا لأن الميكروكونترولر PIC16F628A يمتلك بالفعل ضمكن بنائه الداخلى الموديول USART والذى يعتمد النظام الغير متزامن للاتصال التسلسلى لذلك كل ما هو مطلوب وحدة خارجية لإزاحة المستوى لترجمة الإشارات ذات المستوى TTL إلى مستويات النظام RS232-C والعكس بالعكس .
يمكن تحقيق ذلك باستخدام الشريحة MAX232 المصنعة بمعرفة شركة Maxim .تحتاج الشريحة إلى قليل من المكثفات الخارجية لاستخدامها فى عملية مضخات الشحن الداخلية لكى تولد الجهود +12V و -12V المطلوبة للاتصال عن طريق RS232-C .
الطريقة البسيطة لارسال واستقبال بايتات من خلال المنفذ التسلسلى للكومبيوتر الشخصى باستخدام برنامج HyperTerminal الموجود ضمن نظام الوندوز عن طريق :

Start → Menu → Programs → Accessories → Communications→Hyperterminal

حيث يمكنك إنشاء اتصال مع المنفذ التسلسلى (COM1 على سبيل المثال) واختيار معدل البود baud rate وعدد الخانات number of bits وتحديد نوع التطابق parity ..ألخ .
عند إتمام الاتصال فأن أى حرف سوف تكتبه سوف يرسل (ككود أسكى) من خلال المنفذ التسلسلى . الحروف المستقبلة سوف يتم عرضها على الشاشة أيضا .
الدائرة الكهربية :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 06:40 PM المشاركة 12   
افتراضي


الدائرة الكهربية :
تتكون الدائرة من الميكروكونترولر PIC16F628A والشريحة MAX232 والتى تحتاج إلى 4 مكثفات قيمة كل واحد منهم 1 F .
من جانب الكومبيوتر سوف يتم توصيل ثلاثة خطوط فقط (Tx, Rx, Ground) إلى المنفذ التسلسلى COM من خلال سوكيت 9-pin .








البرنامج :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 06:42 PM المشاركة 13   
افتراضي


البرنامج :
سوف نستخدم المترجم MikroC Pro for PIC . هذا المترجم يمدنا بمكتبة باسم UART والتى تعتمد نظام الاتصال التسلسلى الغير متزامن فى النظام المزدوج الكامل full duplex ( الارسال والاستقبال فى نفس الوقت ) . وهذا يؤدى إلى سهولة البرمجة بشكل كبير .
على سبيل المثال إذا رغبت فى تهيئة الموديول UART الموجود بالميكروكونترولر PIC16F628 للبدء بمعدل نبضات قدره 9600 نبضة فى الثانية فقط كل ما تحتاجه هو كتابة الدالة UART1_Init(9600) .
البرنامج التالى يقوم بإنشاء اتصال تسلسلى بالنظام الغير متزامن بين الميكروكونترولر PIC16F628A والكومبيوتر الشخصى .
يقوم الميكروكونترولر بارسال الرسالة ‘Type in a Number’ "أكتب عدد" والتى تعرض فى نافذة برنامج Hyperterminal .
عندما تقوم أى حرف من لوحة المفاتيح سوف يرسل إلى الميكروكونترولر من خلال المنفذ COM .
سوف يقوم الميكروكونترولر بقراءة الحرف ويرسله عائدا إلى الكومبيوتر ومن ثم يعرض مرة أخرى فى نافذة برنامج Hyperterminal .
يجب ضبط برنامج Hyperterminal لهذا البرنامج على :
Bits per second: 9600,
Data Bits: 8,
Parity: None,
Stop bits: 1,
Flow control: None.



البرنامج :

كود:
 
/*
Hardware UART
MCU: PIC16F628A
External 4MHz Crystal, MCLR Enabled, PWRT Enabled, WDT OFF
*/
void newline(){
UART1_Write(13); // Carriage Return
UART1_Write(10); // Line Feed
}
void main() {
unsigned char MyError, Temp;
CMCON = 7;       // Disable Comparators
TRISB = 0b00000010;
UART1_Init(9600);
Delay_ms(100);
UART1_Write_Text("Testing UART! ");
newline();
do {
UART1_Write_Text("Type in a Number: ");
while(!UART1_Data_Ready());
Temp = UART1_Read();
newline();
UART1_Write_Text("You entered: ");
UART1_Write(Temp);
newline();
} while(1);
}  // End main()

التعليق على البرنامج :


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 22-04-2011 الساعة 06:51 PM

الصورة الرمزية king5star
king5star
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
الدولة: Alexandria, Egypt
المشاركات: 238
نشاط [ king5star ]
قوة السمعة:
قديم 22-04-2011, 06:43 PM المشاركة 14   
افتراضي


تسلم ايدك على هذا الشغل الجامد دا وربنا يوفقك دائماً ويذيدك من علمه الذى ليس له حدود .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 06:45 PM المشاركة 15   
افتراضي


التعليق على البرنامج :/* Hardware UARTMCU: PIC16F628AExternal 4MHz Crystal, MCLR Enabled, PWRT Enabled, WDT OFF*/1- الإعلان عن دالة لبدء الطباعة من أول سطر جديد على خطوتين : عودة المؤشر إلى بداية السطر ثم النتقال إلى سطر جديد بغرض تسهيل فهم وقراءة البرنامج .void newline(){ UART1_Write(13); // Carriage Return UART1_Write(10); // Line Feed}2- بداية الدالة الرئيسية void main() {3- الإعلان عن المتغيرات unsigned char MyError, Temp;4- تهيئة منافذ الميكروكونترولر PIC16F628 :· عدم تفعيل موديول المقارنات بغرض جعل جميع الأطراف كمداخل / مخارج رقمية فقط .· تهيئة المنفذ PORTB لكى تعمل جميع أطرافه كمخارج فيما عدا الطرف RB1 فيعمل كمدخل وهو طرف دخل الاستقبال Rx . CMCON = 7; // Disable Comparators TRISB = 0b00000010;5- بدء تهيئة موديول UART1 بمعدل بود 9600 ثم تأخير زمنى 100 ملى ثانية حتى تستقر التهيئة . UART1_Init(9600); Delay_ms(100);6- كتابة (إرسال) سلسلة نصية تنص على Testing UART! ثم استدعاء دالة "سطر جديد " التى تم إنشائها سابقا . UART1_Write_Text("Testing UART! "); newline();7- الدخول إلى حلقة do{…. While….} وتحتوى على :· كتابة ( إرسال ) سلسلة نصية تنص على Type in a Number: "أكتب عدد : " .· اختبار جاهزية UART لقراءة البيانات فإن كانت البيانات جاهزة تعود الدالة UART1_Data_Ready() بواحد وبعد التأثير عليها بمؤثر المعكوس "!" تكون النتيجة بصفر وتصبح عبارة while غير محققة false ويخرج البرنامج من هذه الحلقة لينفد ما بعدها وهو قراءة البايت الجاهز للاستقبال ونسخة وحفظه فى المتغير المسمى Temp ومرة ثانية استدعاء دالة سطر جديد بعد كتابة Type in a Number: . do { UART1_Write_Text("Type in a Number: "); while(!UART1_Data_Ready()); Temp = UART1_Read(); newline();· كتابة (إرسال) السلسلة النصية You entered: "لقد قمت بإدخال : " ويليها كتابة ما تم قراءته (استقباله )وحفظه فى المتغير Temp وهو الرقم الذى أدخلته . مرة أخرى يتم استدعاء دالة سطر جديد UART1_Write_Text("You entered: "); UART1_Write(Temp); newline();· تكرار ما سبق باستخدام حلقة غير منتهية . } while(1);} // End main()

أولا التعامل مع الوحدة الطرفية ببرنامج بروتيس للتأكد من البرنامج مباشرة دون الحاجة إلى المحول MAX232 .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-04-2011, 06:51 PM المشاركة 16   
افتراضي


أولا التعامل مع الوحدة الطرفية ببرنامج بروتيس للتأكد من البرنامج مباشرة دون الحاجة إلى المحول MAX232 .














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