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

   

الصورة الرمزية #MAAM#
#MAAM#
:: عضو ذهبي ::
تاريخ التسجيل: Jun 2008
الدولة: EGYPT
المشاركات: 529
نشاط [ #MAAM# ]
قوة السمعة:
قديم 06-02-2012, 04:52 PM المشاركة 9   
افتراضي



كيف يمكنني عمل تاخير في سرعه اظهار الرقم
انا جربت الدائرة وعملت لكن هناك سرعه كبيرة في اظهرا العدد

وانا اريد مثلا ان يظهر العدد لمده ثانية ثم العدد الذي بعده وهكذا فكيف يمكنني ذلك .
كمثال نفس المثال المستخدم
المهندس فهد وضع تأخير بسيط وهو الامر
كود:
Delay_Ms ( 100 ) ;
ممكن تغير 100 إلى 200 أو أكثر كما تريد ........... والزمن هنا محسوب بالميللي ثانية يعني لو إنت عاوز 0.5 ثانية مثلا تبقى
[code]
كود:
Delay_Ms ( 500 ) ;
وهكذا ...........

اعلانات

zoro238
:: مهندس جيد ::
تاريخ التسجيل: Apr 2006
المشاركات: 290
نشاط [ zoro238 ]
قوة السمعة:
قديم 12-02-2012, 02:35 PM المشاركة 10   
افتراضي


أساس برمجة مسجل الإزاحة 74HCH164

الدائرة الكهربية :



كود البرنامج والتعليق عليه :

كود:
/* إستخدام مسجل الإزاحة 74164 فى إنشاء عداد ثنائى من الصفر حتى 255 يحتاج هذا المسجل إلى خطين فقط لتفيذ تحويل البينات التسلسلية إلى تفرعية */ // تعريف الخطين بأسماء متعارف عليها لتسهيل فهم البرنامج وسوف نستخدم موجه التعريف # Define Data_pin PORTB.B0 // يستخدم هذا الطرف لإرسال البيانات التسلسلية من الميكروكونترولر إلى مسجل الإزاحة # Define Clock_pin PORTB.B1 // يستخدم هذا الطرف لتوصيل نبضات الساعة من الميكروكونترولر إلى مسجل الإزاحة // تسهيلا للعمل نعرف الدالة التى تقوم بإجراء الإرسال التسلسلى //sipo_out اسم الدالة //dat بارامتر أو دليل الدالة الذى من خلاله يتم تمرير البيانات
void sipo_out ( unsigned char dat ) { unsigned char value = 0 ; //تعريف متغير يحتفظ بالقيمة بعد الإزاحة unsigned char shift = 0 ; //ومتغير كعداد لبيان مقدار إزاحة البيانات
for ( shift = 0 ; shift < 8 ; shift ++ ) // إنشاء حلقة تكرار 8 مرات كل مرة تختص ببت من البتات الثمانية للعدد أو الحرف { // فى كل تكرار يتم تنفيذ ما يلى value = dat >> shift ; // إزاحة بينات العدد أو الحرف جهة اليمين بمقدار ترتيب التكرار وحفظ النتيجة فى متغير القيمة
if ( value & 1 ) // للتعامل مع بت واحدة فقط تتم عملية و المنطقية مع الواحد وتسمى بعملية القناع إو الإخفاء { Data_pin = 1 ; // إن كان الناتج صوب يكون بت البيانات بواحد ومن ثم يتم رفع حالة خط البيانات }
else // وإن لم تكن صواب { Data_pin = 0 ; // يتم خفض حالة خط البيانات }
Clock_pin = 1 ; // ثم رفع حالة خط الساعة Clock_pin = 0 ; // وخفضه للسماح بإخراج البيانات [/Bر كبارامتر أو دليل للدالة لتمريره أى تنفيذه وفقا لكود هذه الدالة السابق كتابته بأعلى [/SIZE] Delay_Ms ( 100 ) ; // تأخير زمنى بسيط } // نهاية حلقة التكرار التى تتكرر من الصفر إلى 255 }while(1); // تكرار عملية إضاءة كل الليدات ثم أضاءة الليدات حسب عداد ثنائى من الصفر وحتى 255 } // نهاية الدالة الرئيسية
الاستاذ القدير

نحن هنا نعمل اخراج قيمة للداتا dat .
وهي عبارة عن 8 بت

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

فكيف يمكنني ذلك ..

انا غيرت في قيمة shift لكن الداتا الخارجية لاتساوي القيمة المفترضة

يعني لو اختر ت shif 0 to 2 فتخرج البتات الرابع والسادس رغم انة المفروض ان يخرج البت الاول والثاني فقط ...

الرجاء المساعده


التعديل الأخير تم بواسطة : zoro238 بتاريخ 12-02-2012 الساعة 02:46 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

khamed tabet
:: مهندس متميز ::
تاريخ التسجيل: Jul 2010
المشاركات: 311
نشاط [ khamed tabet ]
قوة السمعة:
قديم 12-09-2012, 01:23 PM المشاركة 11   
افتراضي


F.Abdelaziz شكرا لك يامهندسنا الغالي
لقد طبقت الموضوع لاكن طرأت مشكلة وهي
مشكلة الارتدادات في الليدات
ثانيا قمت باضافة مسجل اضافي مع التركيب الصحيح
قمت بوصل clock
في كلا المسجلين
و الداتا من الطرف 13 للمسجل الاول الى مدخل الداتا للمسجل الثاني
بقية البرمجة فتعقدة الامور ووضعت الحلقة التكرارية shift بـ16 حلقة
لكن ظهرت بعض المشاكل في اليدات ؟



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