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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 02-09-2013, 01:10 PM المشاركة 1   
افتراضي إن عاجلا أو أجلا:إنشاء مداخل ومخارج جديدة بتوسعة المداخل والمخارج الموجودة ولغة Basic Twitter FaceBook Google+



إن عاجلا أو أجلا:إنشاء مداخل ومخارج جديدة بتوسعة المداخل والمخارج الموجودة ولغة Basic مع المترجم Proton :
الغرض :
معرفة طريقة توسعة خطوط الدخل / الخرج ، وهنا سوف يتم أخذ 2 أو 3 خط دخل/خرج من المنفذ PORTB وتوسعتها إلى 8 خطوط خرج outputs ، ثم أخذ 3 أو 4 خطوط دخل/خرج من المنفذ PORTB لإنشاء 8 خطوط دخل inputs .
الاتصال التسلسلىSerial Communication :
سوف يتم استخدام الاتصال التسلسلى لتوسيع خطوط الدخل/الخرج . يوجد الاتصال التسلسلى فى نوعين ، النوع المتزامن والنوع الغير متزامن .
يستخدم الاتصال المتزامن خط الساعة (التوقيت) clock line لتحديد متى تكون المعلومات عن الخط التسلسلى متاحة valid بشكل صحيح ، فى حين أن الاتصال الغير متزامن لا يستخدم خط الساعة ، وبدلا من خط الساعة يتطلب الاتصال الغير متزامن بتات البدء والإنتهاء مع الالتزام الصارم ببروتوكولات توقيت الاتصال التسلسلى لكى تكون ناجحة . سوف نستخدم الاتصال المتزامن مع خط الساعة .

أولا توسيع المخارج :
لإنشاء خطوط خرج ، سوف نستخدم الدائرة المتكاملة 74ls164 وهى محول من تسلسلى إلى متوازى (تفرعى) serial-to-parallel . هذه الشريحة تقرأ (تستقبل) بيانات تسلسلية بحجم 8 بتات 8-bit على أطراف الدخل 1 و 2(A,B) وتخرج البيانات فى شكل 8 خطوط متوازية (QA : QH)كما فى الشكل التالى :



الوصف الوظيفى :
· الشريحة 74LS164 هى مسجل إزاحة 8 بت بثمانى مراحل يتم إطلاقه بحافة نبضة الساعة معإدخال البيانات تسلسليا وإخراجها على التوازى من كل مرحلة من المراحل الثمانية .
· يتم إدخال البيانات بشكل متسلسل من خلال لأحد المدخلين (A أو B) ، أى من هذه المداخل يمكن أن يستخدم كمدخل "تمكين" ، وهو فى الحالة المرتفعة ، لإدخال البيانات من خلال الدخل الآخر.
· يجب توصيل المدخل الغير مستخدم بالجهد المرتفع (الموجب) ، أو يتم توصيل كلا المدخلين معا .
· كل انتقال من الحالة المنخفضة إلى الحالة المرتفعة LOW-to-HIGHعلى مدخل الساعة Clock يزيح البيانات لمكان واحد إلى اليمين والدخول .
· المستوى المنخفض على مدخل إعادة التعيين الرئيسى Master Reset يحجب جميع المدخلات الأخرى، ويمسح clearالمسجل بشكل غير متزامن ، مما يجبر جميع المخارج على الحالة المنخفضة .


أساس النقل التسلسلى للبيانات :
سوف يتم إرسال (نقل) البيانات تسلسليا ،هنا، عن طريق نقل البت ذات القيمة القصوى MSB(bit 7) أولا ( يمكن أرسال البت ذات القيمة الدنيا أولا ) .
الشكل التالى يبين كيفية قراءة البيانات تسلسليا بواسطة الشريحة 74LS164 وإخراج المعلومات على التوازى .
· يتم حفظ الخط B (الطرف 2) عند الحالة المرتفعة high ، وهذا يسمح لك باستخدام الخط A (الطرف 1) لإرسال البيانات تسلسليا جنبا إلى جنب مع نبضة الساعة من الخط CLK (الطرف 8) .
· لاحظ من الشكل السابق ومن جدول الحقيقة ، أن كلا الخطين A,B تحتاج أن تكون مرتفعة H من أجل أن يكون بت الخرج مرتفع . يمكنك تحديد أى من الخط A أو الخط B واستخدام الآخر لإرسال البيانات تسلسليا .
· عند كل انتقال من الحالة المنخفضة إلى الحالة المرتفعة لخط الساعة يتم قبول بت آخر من الخط A وإخراج هذا البت إلى الخرج QA .
· يتم إزاحة كل معلومات البت الموجودة بالفعل على الخطوط من QA إلى QHبت واحد إلى اليسار. بعد ثمانية انتقالات يتم عرض العدد الجديد بحجم 8 بت على خطوط من QA إلى QHللشريحة 74LS164 .
· فى الشكل السابق يتم إرسال العدد الثنائى 10000000 ( العدد العشرى 128) . لقد تم اختيار هذا العدد بحيث يمكنك بسهولة معرفة كيف يتم إزاحة البت ذات القيمة القصوى bit 7 خلال الخطوط من QA إلى QH .
تدريب :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 02-09-2013, 01:15 PM المشاركة 2   
افتراضي


تدريب :
الدائرة الكهربية والنتائج :
البرنامج بالطريقة التقليدية :

كود:
'Slow Serial program for visual testing interface Device = 16F628A Xtal 4 All_Digital true 'Initialize variable Var1 Dim Var1 As Byte 'Initialize port(s) TRISB = 0 'Set port B as output port start: Var1 = 128 '%10000000 GoSub serial DelayMS 1000 Var1 = 255 '%11111111 GoSub serial DelayMS 1000 Var1 = 0 '%00000000 GoSub serial DelayMS 1000 GoTo start serial: PORTB.0 = Var1.7 'Bring pin 0 high or low, depending upon bit Var1.7 (MSB) PulsOut PORTB.1,1 'Bring CLK line high, then low , PORT.Pin , Period x 10 usec at 4MHz DelayMS 100 'Optional delay-remove from program PORTB.0 = Var1.6 'Same as above PulsOut PORTB.1,1 DelayMS 100 PORTB.0 = Var1.5 PulsOut PORTB.1,1 DelayMS 100 PORTB.0 = Var1.4 PulsOut PORTB.1,1 DelayMS 100 PORTB.0 = Var1.3 PulsOut PORTB.1,1 DelayMS 100 PORTB.0 = Var1.2 PulsOut PORTB.1,1 DelayMS 100 PORTB.0 = Var1.1 PulsOut PORTB.1,1 DelayMS 100 PORTB.0 = Var1.0 PulsOut PORTB.1,1 DelayMS 100 Return
البرنامج المعدل باستخدام الأمر SHOut :

كود:
Output-extention-74164-Shout-command Device = 16F628A Xtal 4 All_Digital true 'Initialize variable Var1 Dim Var1 As Byte Symbol DTA = PORTB.0 Symbol CLK = PORTB.1 'Initialize port(s) TRISB = 0 'Set port B as output port start: Var1 = 128 '%10000000 GoSub serial DelayMS 1000 Var1 = 255 '%11111111 GoSub serial DelayMS 1000 Var1 = 0 '%00000000 GoSub serial DelayMS 1000 GoTo start serial: SHOut DTA, CLK, MsbFirst, [Var1] Return
استخدام الماسك 74373 :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 02-09-2013, 01:18 PM المشاركة 3   
افتراضي


استخدام الماسك 74373 :
عند استخدام الشريحة 74LS164 ، يوجد عيب خطير وهو أنه أثناء إزاحة البت bit 7 من خلال خطوط الخرج QA إلى QHفإنها تظهر على المخارج واحد تلو الآخر مما قد يتسبب فى ظهور نتائج غير صحيحة والتى قد يتسبب عنها فوضى فى الدوائر الرقمية . يمكن التغلب على هذه المشكلة بإضافة الدائرة المتكاملة 74LS373 (ماسك بيانات ثمانى octal latch) .
يتم وضع الماسك الثمانى بين</SPAN></SPAN> خرج الدائرة المتكاملة 74LS164 والليدات ، والتى تمثل الدائرة الرقمية الخاصة بك ، كما فى الشكل التالى :




فى الدائرة المتكاملة 73LS373 :
· يتم ربط طرف تمكين الخرج Output Enable (الطرف 1) بالأرضى ، فعال فى الحالة المنخفضة ، واستخدام طرف تمكين الماسك Latch Enable (الطرف 11) للتحكم فى البيانات خلال الشريحة 74LS373 .
· ويتم وضع البيانات على مداخل البيانات (D0, D1 ... D7) .
· عندما تريد إظهار البيانات على المخارج (Q0, Q1 ... Q7) يتم رفع حالة طرف تمكين المقاطعة لحظيا .
· يقوم البرنامج بإدخال البيانات تسلسليا إلى الشريحة 74LS164 ، وتظهر البيانات خطوط الخرج المتوازية ، مع حدوث إزاحة البيانات فى مداخل الشريحة 74LS373 . عندما يتم اكتمال إزاحة البت ويتقر العدد الثنائى (بعد ثمانى إزاحات) ، يتم رفع طرف تمكين الماسك (الطرف 11) والذة يسمح بتدفق البيانات من أطراف الدخل إلى أطراف الخرج . بعد ذلك يتم خفض طرف تمكين الماسك تاركا البيانات المتوازية ممسوكة . وهكذا لا تتأثر ليدات الخرج أثناء إزاحة البيانات .

البرنامج :
كود:
'Output-extention-74164-74373-latch Device = 16F628A Xtal 4 All_Digital true 'Initialize variable Var1 Dim Var1 As Byte Symbol DTA = PORTB.0 Symbol CLK = PORTB.1 Symbol LATCH = PORTB.2 'Initialize port(s) TRISB = 0 'Set port B as output port start: Var1 = 128 '%10000000 GoSub serial DelayMS 1000 Var1 = 255 '%11111111 GoSub serial DelayMS 1000 Var1 = 0 '%00000000 GoSub serial DelayMS 1000 GoTo start serial: SHOut DTA, CLK, MsbFirst, [Var1] PulsOut LATCH,1 Return

استخدام الدائرة المتكاملة 74LS595 كبديل عن 74LS164 و 74LS373 معا :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 02-09-2013, 01:20 PM المشاركة 4   
افتراضي


استخدام الدائرة المتكاملة 74LS595 كبديل عن 74LS164 و 74LS373 معا :
الدائرة المتكاملة 74LS595 :
الوصف العام :
· الدائرة المتكاملة 74LS595 هى 8 مراحل لمسجلات إزاحة تسلسلية مع مسجل تخزين وخرج ثلاثى الحالة . المسجلات لها ساعات منفصلة (ساعة لمسجل الإزاحة وساعة لمسجل التخزين) .
· يتم إزاحة البيانات عند الانتقال الموجب لدخل ساعة مسجل الإزاحة SH_CP .
· يتم نقل البيانات بكل مسجل إلى مسجل التخزين عند الانتقال الموجب لمدخل ساعة مسجل التخزين ST_CP .
· مسجل الإزاحة له مدخل للبيانات التسلسلية DS ومخرج تسلسلى قياسى Q7S من أجل العمل على التتابع لأكثر من دائرة متكاملة .
· كما يتوفر أيضا مدخل لإعادة التعيين الرئيسى MR (فعال فى الحالة المنخفضة) لجميع المراحل الثمانية لمسجل الإزاحة .
· تظهر البيانات الموجودة بمسجل التخزين على الخرج فقط عندما يكون مدخل "تمكين الخرج" OE فى الحالة المنخفضة (فعال فى الحالة المنخفضة) .


البرنامج :


كود:
'Output-extention-74595-shift-latch Device = 16F628A Xtal 4 All_Digital true 'Initialize variable Var1 Dim Var1 As Byte Symbol DTA = PORTB.0 Symbol CLK = PORTB.1 Symbol LATCH = PORTB.2 'Initialize port(s) TRISB = 0 'Set port B as output port start: Var1 = 128 '%10000000 GoSub serial DelayMS 1000 Var1 = 255 '%11111111 GoSub serial DelayMS 1000 Var1 = 0 '%00000000 GoSub serial DelayMS 1000 GoTo start serial: SHOut DTA, CLK, MsbFirst, [Var1] PulsOut LATCH,1 Return


ثانيا : توسيع المداخل :


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


ثانيا : توسيع المداخل :
ثم يتم توسيع أربع خطوط دخل/خرج للميكروكونترولر لكى تعمل كثمانى خطوط دخل (بالإضافة إلى توسعة 2 خط دخل / خرج لتعمل كثمانى خطوط خرج ) .
لتنفيذ ذلك ، سوف نستخدم شريحة الدائرة المتكاملة 74LS165 ( محول من متوازى إلى تسلسلى) .
وصف عمل الدائرة المتكاملة 74165 :






الدائرة المتكاملة 74165 هى مسجل إزاحة تسلسلى بحجم 8 بتات ، تقوم بإزاحة البيانات فى الاتجاه من QA فى اتجاه QH عندما يتم توقيتها . الدخل المتوازى يصل إلى كل مرحلة عن طريق 8 مداخل منفصلة والتى يتم تمكينها عن طريق المستوى المنخفض على الدخل shift/load (SH/LD) .
· يتم التوقيت من خلال بوابة NOR بمدخلين ، بما يسمح باستخدام أحد المدخلين فى منع التوقيت
clock-inhibit .
· حفظ أى من مدخلى التوقيت فى الحالة المرتفعة يمنع التوقيت ، وحفط أى من مدخلى التوقيت فى الحالة المنخفضة مع وجود الطرف SH/LD فى الحالة المرتفعة يمكن الطرف الآخر من التوقيت .
· طرف منع التوقيت Clock inhibit (CLK INH) يجب أن يتغير إلى المستوى المرتفع فقط أثناء وجود الطرف CLK فى الحالة المرتفعة .
· يتم منع التحميل المتوازى طالما أن الطرف SH/LD فى الحالة المرتفعة .
· يتم تحميل البيانات الموجودة على المداخل المتوازية مباشرة إلى المسجلات أثناء وجود الطرف SH/LD فى الحالة المنخفضة ، بغض النظر عن حالة كل من المداخل CLK, CLK INH serial (SER) .



شرح مخطط التوقيت :
1- تطبق نبضات الساعة على الطرف CLK .
2- طرف منع التوقيت CLK INH يكون فى الحالة المرتفعة (فعال) فيؤدى إلى منع التوقيت بنبضات الساعة .
3- طرف الدخل التسلسلى SI غير مستخدم لذلك يتم توصيله بالأرضى .
4- عندما تتغير حالة الطرف SH/LD من الحالة المرتفعة ( يكون الأزاحة SH هى الفعالة) إلى الحالة المنخفضة ( حالة التحميل هى الحالة الفعالة) يتم تحميل البيانات الموجودة على أطراف الدخل المتوازى ( A:H) إلى سجلات الإزاحة الداخلية بغض النظر عن حالة المداخل الأخرى .
5- بعد تحول حالة الطرف SH/LD إلى الحالة المرتفعة ( الإزاحة فعالة) وتحول حالة الطرف
CLK INH إلى الحالة المنخفضة (غير فعال) ، عندئذ يسمح لنبضات الساعة المطبقة على الطرف CLK بتوقيت نبضات الخرج تسلسليا بدءا من الخرج H إلى الخرج A .

مبدأ العمل :


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


مبدأ العمل :
· يتم وضع المعلومات المتوازية فى شكل 8 بتات على خطوط المداخل الثمانية (A : H) للشريحة 74LS165 .
· ثم يتم وضع خط التحميل /الأزاحة shift/load (الطرف 1) عند الحالة المنخفضة لحظيا لتحميل المعلومات المتوازية إلى سجلات الشريحة .
· بعد ذلك يتم تحويل وضع خط منع الساعة (الطرف 15) من الحالة المرتفعة إلى الحالة المنخفضة ، للسماح للمعلومات بالخروج التسلسلى من الطرف QH (الطرف 9) بالتزامن مع نبضات الساعة التى تطبق على طرف دخل الساعة CLK (الطرف 2) . لاحظ توفر إشارة تسلسلية معكوسة من على الطرف 7 .
لاختبارعمل الشريحة يتم إنشاء دائرة كهربية وبرنامج لإدخال عدد ثنائى بحجم 8 بتات إلى الشريحة 74LS165 مع استخدام مفاتيح ومقاومات كما فى الشكل التالى :

العدد الثنائى الذى يتم إنشاؤه بالمفاتيح والمقاومات سوف يتم إزاحته تسلسليا ليخرج من الشريحة 74LS165 وتحميله إلى المتغير Var1 . بعد ذلك يتم إرسال العدد الموجود بالمتغير Var1 تسلسليا إلى الشريحة 74LS164 ويخرج منها فى شكل 8 بتات متوازية للعرض بالليدات .

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


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 02-09-2013, 01:57 PM المشاركة 7   
افتراضي


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

كود:
' Serial I/O Interface-74164-74165 Device = 16F628A Xtal 4 All_Digital true 'Initialize Ports(s) TRISB = %00000100 Dim Var1 As Byte Low PORTB.5 'Set CLK low High PORTB.4 'Bring CLK inhibit high , actice High PORTB.3 'Bring shift/load high , load deactive start: GoSub serial_in 'Get number from 74LS165 GoSub serial_out 'Send it out on 74LS164 Pause 1000 'Wait so I can see it GoTo start 'Do it again 'Serial In Routine serial_in: PulsOut PORTB.3,1 'Bring shift/load down momentarily , toggel from high to low for 1x 10usec then toggle to low again Low PORTB.4 'Bring CLK inhibit low , enable clock Var1.7 = PORTB.2 'Read RB2 input and Load bit into Var1 ,begin from MSB PulsOut PORTB.5,1 'Bring CLK pin high, then low' , Clock for next pulse Var1.6 = PORTB.2 'Load Bit into Var1 , SO bit 6 PulsOut PORTB.5,1 Var1.5 = PORTB.2 PulsOut PORTB.5,1 Var1.4 = PORTB.2 PulsOut PORTB.5,1 Var1.3 = PORTB.2 PulsOut PORTB.5,1 Var1.2 = PORTB.2 PulsOut PORTB.5,1 Var1.1 = PORTB.2 PulsOut PORTB.5,1 Var1.0 = PORTB.2 High PORTB.4 'Bring CLK inhibit high Return 'Serial Out Routine serial_out: PORTB.0 = Var1.7 'Bring pin 0 high or low, depending upon bit Var1.7 (MSB) PulsOut PORTB.1,1 'Bring CLK line high, then low , PORT.Pin , Period x 10 usec at 4MHz PORTB.0 = Var1.6 'Same as above PulsOut PORTB.1,1 PORTB.0 = Var1.5 PulsOut PORTB.1,1 PORTB.0 = Var1.4 PulsOut PORTB.1,1 PORTB.0 = Var1.3 PulsOut PORTB.1,1 PORTB.0 = Var1.2 PulsOut PORTB.1,1 PORTB.0 = Var1.1 PulsOut PORTB.1,1 PORTB.0 = Var1.0 PulsOut PORTB.1,1 Return

البرنامج المعدل مع استخدام الأمر SHOut والأمر SHIn :


كود:
' Serial I/O Interface-74164-74165-mod Device = 16F628A Xtal 4 All_Digital true 'Initialize Ports(s) TRISB = %00000100 Dim Var1 As Byte Symbol DTA_out = PORTB.0 Symbol CLK_out = PORTB.1 Symbol DTA_in = PORTB.2 Symbol CLK_in = PORTB.5 Low PORTB.5 'Set CLK low High PORTB.4 'Bring CLK inhibit high , actice High PORTB.3 'Bring shift/load high , load deactive start: GoSub serial_in 'Get number from 74LS165 GoSub serial_out 'Send it out on 74LS164 Pause 1000 'Wait so I can see it GoTo start 'Do it again 'Serial In Routine serial_in: PulsOut PORTB.3,1 'Bring shift/load down momentarily Low PORTB.4 'Bring CLK inhibit low , enable clock SHIn DTA_in, CLK_in, MsbPre, [Var1] ' Shift in msb-first, pre-clock High PORTB.4 'Bring CLK inhibit high Return 'Serial Out Routine serial_out: SHOut DTA_out, CLK_out, MsbFirst, [Var1] Return






الصورة الرمزية Omar Mekkawy
Omar Mekkawy
:: مهندس متميز ::
تاريخ التسجيل: Aug 2011
الدولة: مصر
المشاركات: 1,523
نشاط [ Omar Mekkawy ]
قوة السمعة:0
قديم 02-09-2013, 09:04 PM المشاركة 8   
افتراضي


سلام عليكم

( ماشاء الله ) والله مجهود جبار

جزاك الله كل خير يا أستاذي

هل من الممكن ان استخدم (SN74LS06N) كبديل وجدته لدي

وإن أمكن عمل درس عن ال Keypad لاني استخدمتها وبتظهر لدي أخطاء بها
وإن امكن عرض كل الأزرار المضغوطة بسطر واحد بالشاشة

يعطيك العافية أستاذي


إضافة رد

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

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

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


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

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