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

   

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 17-01-2010, 08:29 PM المشاركة 17   
افتراضي



مشكورين يا اخوان على جهودكم الجبارة

هلقيت كيف بدى اخلى هدا الشفت ريجستر يستمر فى عرض البيانات بعد ما يخلص عرض لانو المشكلة بعد ما يعرض الى بدى اياه خلص بثبت عليه بدى اياه يستمر

فى امان الله
السلام عليكم

في حال اردت ان يتم تنفيذ البرنامج عدد معين من المرات فاستخدم الحلقات :

كود:
for(i=0;i<1000;i++)
{
 
ضع البرنامج الذي تريد تنفيذه عددا معينا من المرات وهنا انا افترضت الف مرة
}
اما في حال اردت ان يبقى دائما ينف البرنامج الذي تعطيه اياه فاستخدم :

كود:
for( ; ; )
{
 
هنا ضع البرنامج الذي تريد تنفيذه دائما 
 
}
اتمنى ان يكون هذا قد اجاب على سؤالك...ربنا يوفقك...

واخر دعوانا ان الحمدلله رب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...

اعلانات

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 17-01-2010, 08:38 PM المشاركة 18   
افتراضي المرحلة الاولى : مرحلة مسجل الازاحة..


السلام عليكم

اليوم سنتحدث عن المرحلة الاولى في المتكاملة 74HC595 وهي مرحلة الإزاحة ونوضح مبدأ عملها، فكما قلت ان اول مرحلة هي ادخال الداتا بيت بيت او خانة خانة وبعدها تعطى الى المرحلة التي بعدها..وحتى نفهم مبدأ عملها ننظر الى الصورة التالية:




الان هذا مبدا عمل مسجلات الازاحة متشابه واذا فهمته هنا ستفهم الكثير من دارات الازاحة ويمكن ان تبني عليه في الدارات الرقمية بشكل عام ....


ان البنية الاساسية لمسجلات الازاحة تعتمد على D-Flip Flop او ما يمسى بالقلابات او النطاطات (كلها تسمية لنفس العنصر) .. حيث يعمل هذا العنصر مثل المفتاح الكهربائي اللحظي فانت عندما تضغط على المفتاح الكهربائي في البيت مثلا يصل التيار الكهربائي الى المصباح ويضيء... هنا في القلابات يحدث نفس الشيء حيث تكون الداتا موجودة على الخط (DATA) مثلا وعندما تاتي جبهة صاعدة (كما نرى في الصورة فان هناك رمز التحول من الجهد المنخفض الى الجهد المرتفع ) فانها تعمل عمل المفتاح وتوصل الداتا الموجودة الى خرج القلاب ( سواء كانت الداتا هي واحد او صفر طبعا) .. الان كما نرى فان المسجل يتكون من 8 قلابات متتالية وطرف الساعة موصل الى جميع القلابات وهكذا تصلها نبضة الساعة في نفس الوقت ... ووبالتالي فان الداتا الموجودة على دخل كل قلاب تنتقل الى خرجه (أي الى دخل القلاب التالي وهكذا ) ...اي كل ما يقوم به القلاب هو نقل الداتا من الدخل الى الخرج
( OUTPUT1-OUTPUT8) وذلك عند الجبهة الصاعدة للساعة . ومما يجعل القلاب عنصر اساسي انه حتى لو بقيت نبضة الساعة ثابته او تحولت الى الصفر فان القيمة على الخرج لا تتغير الا عند ورود الجبهة الصاعدة التالية فقط ..

الان على فرض ان لدينا العدد ( HGFEDCBA) ونريد حفظ هذا العدد في المجسل(حيث هذه الرموز بدلا من الواحدات والاصفار) ..فنضع الخانه A على خط الداتا ونعطي جبهة صاعدة على مدخل الساعة .. وبما ان كل القلابات على مدخلها من البداية صفر فان القلاب الاول هو الوحيد الموجود على دخله القيمة A . وبالتالي تنتقل الى خرج القلاب الاول (OUTPUT1) ..الان نستطيع تغيير الداتا (ما دام لا يوجد على مدخل الساعة جبهة صاعدة) فنضع على خط الداتا القيمة B ونعطي جبهة صاعدة على مدخل الساعة وهكذا تنتقل القيمة B من مدخل القلاب الاول الى خرجه (مكان ال A ) وبنفس الوقت تنتقل القيمة A من مدخل القلاب الثاني الى خرجه ..طبعا بما ان باقي القلابات مداخلها اصفار فانها لن تتغير (لان نقل القيمة صفر من المدخل الى الخرج لا يغير شي ) وهكذا تستمر العملية ..نلاحظ انه حتى نستطيع نقل عدد مكون من 8 بيت ]جب وضع قيمة الداتا على خط الداتا 8 مرات ويجب ايضا ان نعطة 8 جبهات صاعدة (اي 8 نبضات ساعة) وهكذا لازاحة 100 خانة فاننا نحتاج الى 100 نبضة ساعة ..

يمكن اضافة طرف يدعى MR ( يكون موصل مع كل من القلابات داخليا) بحيث عن تطبيق جهد معين عليه يقوم بتصفير المخارج (جعل كل المخارج بصفر) وهذا يمكن استخدامه في عدة اشياء مفيدة مثل دائرة فلاشر بسيطة وهكذا...

ملاحظة مفيدة : يمكن وصل مسجلين ازاحة بحيث يكون التوصيل من مخرج المسجل الاول (output8) الى مدخل الداتا على مدخل المسجل الثاني (DATA) وهكذا نحصل على مسجل ازاحة لـ 16 خانة وهكذا يمكن الحصول على العدد الذي نريده من الخانات عن طريق التوصيل على التوالي للمسجلات...

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 17-01-2010, 09:28 PM المشاركة 19   
افتراضي


ربما البعض لم يعرف شيء عن D-FlipFlop لذلك عملت هذا الملف على البروتوس لتوضيح عمل هذه المتكاملة .

http://www.***********/download/21164....flop.rar.html

شكرا جزيلا مهندس فادي . شرح ممتاز


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 17-01-2010, 11:18 PM المشاركة 20   
افتراضي المرحلة الثانية والثالثة في المتكاملة 74HC595 ..


السلام عليكم


اليوم سيكون درسنا مفهوما جدا ..فمعظم الخطوات توضحت في المشاركة السابقة....

الان سنتحدث عم المرحلة الثانية وهي مرحلة الحفظ او التخزين في مسجل التخزين...حيث يمكن الاختفاظ بالخانات على خرج مسجل التخزين (كما قلنا فالقلاب يقوم فقط بنقل الداتا من دخله الى خرجه وبالتالي اذا نقلنا الداتا على الخرج فانها تكون كانها محفوظة حتى تاتي جبهة صاعدة جديدة ... وهذا عادة ما يستخدم في كثير من الدارات لحفظ الاشارات ( ON-OFF) الى حين نحتاج الى تغييرها وهي تدعي في الالكترونيات الماسك (اي يمسك الاشارة على خرجه حتى لو تغير الدخل بعد ذلك) (LATCH)...ويمكن معرفة عمل الدارة بالنظر الى الصورة التالية:



وبالمقارنة نلاحظ ان الاختلاف الرئيسي بين هذه الحالة والحالة السابقة ان ادخال الداتا يتم على شكل تفرعي وليس تسلسلي كما في السابق ..وبما ان مبدا القلابات واحد فيمكن تحديد عمل الدارة كالتالي:

نقوم بتجهيز الخانات التي نريد ان نحفظها في المسجل (على شكل واحدات واصفار) ونضعها على خطوط الداتا (INPUT1-INPUT8) وبعدها نقوم بتطبيق جبهة صاعدة على مدخل الساعة .وهكذا تنتقل الداتا من المداخل الى المخارج خلال جبهة صاعدة واحدة (اي خلال نبضة ساعة واحدة) وبالتالي في حال لدينا الف خانة فانه يتم ترتيبهم على خطوط الداتا وبواسطة نبضة ساعة واحدة تنتقل المعلومات الى المخارج ..طبعا ستبقى المعلومات على المخارج كما هي (ستبقى محفوظة) حتى تاتي الجبهة الصاعدة التالية فتدخل قيم جديدة للداتا وهكذا .. اي ام ملخص عمل الدارة يتلخص بنقل الداتا على المخارج لهذا المسجل والاحتفاظ بها حتى نستعملها وبعدها يمكن تغيير هذه المخارج حسب الحاجة...


وهذا يقودنا الى المرحلة الثالثة ..فاذا كنت اريد ان اخرج الداتا على اطراف المتكاملة بعد فترة زمنية معينة وليس مباشرة فماذا افعل ؟؟؟

هذا ما تقوم به المرحلة الثالثة : حيث فقط تقوم باظهار الداتا على الاطراف الخارجية للدارة المتكاملة او لا تخرجها.. اي يمكن ان تكون الداتا جاهزة على مخارج مسجل التخرين ولكن وقت اخراجها لم يحن بعد ...عندها نستخدم هذه الخاصية في مسحلات التخزين وهي تسمى (3 STATE OUTPUT ) .. وهي تمنع اظهار القيمة على الاطراف الخارجية للمتكاملة الا عند تطبيق اشارة محدد على طرف التحكم ( OE) كما في الصورة:



حيث انه عند تطبيق القيمة صفر فولت على هذا الطرف فان القيمة تظهر على الاطراف الخارجية وفي حال كانت 5 فولت فان القيمة لا تظهر على الاطراف الخارجية...

وقد سميت (3 STATE PITPUT ) لانها ممكن ان تاخذ احدى 3 حالات :

1- اما ان تكون الاشارة الخارجة منها جهد مرتفع (1 منطقي).

2- ان تكون الاشارة الخارجة منها جهد منخفض (صفر منطقي).

3- حالة الممانعة العالية للخرج (وبالتالي لا يصل لا واحد ولا صفر الى الخرج ) ..



هذا هو ملخص مبدا عمل المراحل الداخلية للدارة المتكاملة 74HC595 وان شاء الله سنطرح مثال يوضح كيفية استخدام هذه المعلومات في الجانب العملي ان شاء الله..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 17-01-2010, 11:27 PM المشاركة 21   
افتراضي


ربما البعض لم يعرف شيء عن D-FlipFlop لذلك عملت هذا الملف على البروتوس لتوضيح عمل هذه المتكاملة .

http://www.***********/download/21164....flop.rar.html

شكرا جزيلا مهندس فادي . شرح ممتاز

السلام عليكم

كيفك يا عم حيدر واخبارك ايه ؟؟ جزاك الله خيرا على التوضيح وجعله في ميزان حسناتك يوم القيامة ..لا تحرمنا من مشاركاتك الجميلة جدا .بالتوفيق...

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم..


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 22-01-2010, 08:52 PM المشاركة 22   
افتراضي تطبيق بيك مع ريجستر 74hc595 لعمل فلاشر بسيط


السلام عليكم

اليوم ان شاء الله ستكون اخر مشاركة بسيطة في موضوع الريجستر 74HC595 .. وهو مثال يحدد كيفية استخدام الريجستر في اداء وظيفة محددة ... وسيتم التحكم فيه من خلال بيك 16F84A من اجل الاخراج وبالتالي عمل دارة فلاشر بسيط يستخدم هذا الريجستر...


الان برنامجنا سيكون برنامج فلاشر يستخدم البيك PIC16F84A لاخراج النبضات المطلوبة للتحكم بحيث ان الفترة الزمنية بين اذائة كل ليد هي ثانية واحدة... وارجو ان يكون المثال واضحا..

الان اريد البرنامج ان يقوم بالتالي : يقوم بتفعيل اول طرف في الريسجتر الاول وبعد ثانية واحدة ينتقل للطرف الثاني (ويطفىء الاول) وبعدها ينتقل الى الطرف الثالث ثم الرابع الى ان يصل الى الطرف رقم 16 (يكون الطرف الثامن في الريجستر الثاني) وبعدها يعيد نفس العملية كالتالي:

كود:
 
1000000000000000
0100000000000000
0010000000000000
0001000000000000
0000100000000000
0000010000000000
0000001000000000
0000000100000000
0000000010000000
0000000001000000
0000000000100000
0000000000010000
0000000000001000
0000000000000100
0000000000000010
0000000000000001

وبعدها يعيد العملية من البداية وهكذا....

الان نبدا بتحديد المطلوب من كل مرحلة من المراحل الثلاث السابقة :

1- يجب ان يقوم بوضع الداتا (الجهد واحد منطقي على طرف الداتا DS ) ونعطي نبضة ساعة ليتم ادخالها الى مسجل الازاحة ( SH-CP) .وبما ان المطلوب اخراجها على الاطراف فيجب ان ننقل الداتا اللى مرحلة التخزين...

2-نقوم بحفظ القيمة في مسجل التخزين تحضيرا لاخراجها على الاطراف .. وذلك باعطاء نبضة ساعة للتخزين(ST-CP)

3- نقوم بتفعيل اخراج القيمة الموجودة في مسجل التخزين الى الاطراف وذلك بوضع القيمة (صفر منطقي) على الطرف OE...

وهكذا نكون قد عملنا ازاحة وادخلنا القيمة واحد منطقى الى الريجستر واخرجناها على الاطراف.... الان يجب ان ندخل القيمة صفر بعد الواحد ... وهكذا نقوم بعمل نفس الخطوات السابقة (1-3) مع تغيير ان نقوم بوضع قيمة الداتا بصفر وليس واحد.... حتى نعمل ازاحة لـ16 مرة يجب ان تتنفذ الخطوات السابقة 16 مرة ...بحيث تكون اول مرة الداتا بواحد وبعدها تصبح بصفر(اول مرة تكون الداتا واحد وبعدها 15 مرة تكون الداتا بصفر)..

ملاحظة : بما ان ادخال الداتا Ds الى المسجل واعطاء نبضة ساعة للازاحة (SH-CP) ثم بعدها اعطاء نبضة ساعة لمسجل التخزين ..وبعدها وضع القيمة صفر على الطرف OE لاظهار القيمة على الخرج ياخذ زمن سريع نسبيا (يعني فرضا 100 ميكروثانية) وهذا لا تلاحظه العين فيمكن ان نستغني عن الطرف الواصل من البيك الى (OE) ونوصل OE مباشرة الى الارضي..وهكذا نستغل طرف من اطراف البيك لوظائف اخرى..وهكذا يصبح لدينا الدارة الموصلة في الشكل التالي:





كما نرى في الصورة فقد فان توصيل الاطراف كالتالي:

RA0-----DS

RA1-----SH-CP

RA2-----ST-CP

الان نبدا بكتابة البرنامج :

اول خطوة نضع الداتا تساوي واحد منطقي من خلال RA0 كالتالي:

PORTA.F0=1;

الان نعطي نبضة ساعة للازاحة (جبهة صاعدة) من خلال RA1 كالتالي:

PORTA.F1=0;
PORTA.F1=1;

الان نعطي نبضة ساعة للتخزين (جبهة صاعدة) وسيظهر الخرج مباشرة مع النبضة لاننا وصلنا الطرف OE الى الجهد المنخفض مسبقا وذلك من خلال الطرف RA2 كالتالي:

PORTA.F2=0;
PORTA.F2=1;

والان نعطي التاخير الزمني اللازم وهو مطلوب في السؤال (واحد ثانية ) اي :

DELAY_MS(1000);

هكذا نكون اخرجنا القيمة واحد منطقي على المخرج الاول لمدة ثانية واحدة .الان نقوم بنقل الواحد الى المخرج الثاني وذلك بعملية ازاحة وادخال صفر مكانه .. وهي نفس الخطوات السابقة مع اختلاف بسيط :


اول خطوة نضع الداتا تساوي صفر منطقي(وليس واحد منطقي) من خلال RA0 كالتالي:

PORTA.F0=0;

الان نعطي نبضة ساعة للازاحة (جبهة صاعدة) من خلال RA1 كالتالي:

PORTA.F1=0;
PORTA.F1=1;

الان نعطي نبضة ساعة للتخزين (جبهة صاعدة) وسيظهر الخرج مباشرة مع النبضة لاننا وصلنا الطرف OE الى الجهد المنخفض مسبقا وذلك من خلال الطرف RA2 كالتالي:

PORTA.F2=0;
PORTA.F2=1;

والان نعطي التاخير الزمني اللاذز حتى تلاحظة العين وهو مطلوب في السؤال (واحد ثانية ) اي :

DELAY_MS(1000);


حيث تم اعطاء الداتا القيمة صفر بدلا من القيمة واحد لاخراجها...ولازاحة الواحد منطقي الى المخرج رقم 16 يجب ان ننفذ هذه العملية 15 مرة اخرى (حيث الاولى كانت لاخراج الواحد منطقي ومع ال15 يصبح المجموع 16 ازاحة وهكذا يصل الواحد المنطقي الى المخرج الاخير رقم 16 )

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

كود:
PORTA.F0=1;
 
 
PORTA.F1=0;
PORTA.F1=1;
 
 
PORTA.F2=0;
PORTA.F2=1;
 
 
DELAY_MS(1000);
و 15 مرة لاخراج الصفر ويمكن استخدام الحلقات لاخراجها مثلا حلقة FOR كالتالي:

كود:
 
FOR(I=0;I<15;I++)
{
 
PORTA.F0=0;
 
 
PORTA.F1=0;
PORTA.F1=1;
 
 
PORTA.F2=0;
PORTA.F2=1;
 
 
DELAY_MS(1000);
}
ولا ننس ان نضع البرنامج كله ضمن حلقة لاعادة تنفيذ البرنامج دائما ..

وهكذا يكون البرنامج كاملا مع اعداد المداخل والمخارج والتغيرات له الشكل التالي:

كود:
 
Void main ()
{
Int I;
TRISA=0;
 
Fadi:
PORTA.F0=1;
 
 
PORTA.F1=0;
PORTA.F1=1;
 
 
PORTA.F2=0;
PORTA.F2=1;
 
 
DELAY_MS(1000);
 
FOR(I=0;I<15;I++)
{
 
PORTA.F0=0;
 
 
PORTA.F1=0;
PORTA.F1=1;
 
 
PORTA.F2=0;
PORTA.F2=1;
 
 
DELAY_MS(1000);
}
 
Goto fadi;
 
}
برنامج البروتوس مع مشروع الميكروسي موجود في المرفقات لمن يريد تحميل البرنامج واجراء التعديلات وغيره.. ...

http://arabsh.com/7wu35jwuvfwf.html

وهكذا اصبح البرنامج المطلوب جاهزا ... لوضع اي استفسارات او ملاحظات او اقتراحات فالموضوع مفتوح لذلك...ربنا يوفقكم جميعا لما يحبه ويرضاه ...

واخر دعوانا ان الحمدلله رب العالمين ... وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...


التعديل الأخير تم بواسطة : geniusse01 بتاريخ 22-01-2010 الساعة 09:06 PM

robota
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: الخرطوم_السودان
المشاركات: 895
نشاط [ robota ]
قوة السمعة:
قديم 22-01-2010, 09:37 PM المشاركة 23   
افتراضي


ما شاء الله اسلوبك دائما رائع ومشاركاتك متكاملة وتغطى الموضوع من كل الجوانب والشرح بسيط ويصلح للجميع لك كل الشكر والتقدير .
ببساطة مرجع لل 74HC595 يضاف لل Datasheet
وفقك الله لكل خير


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,134
نشاط [ geniusse01 ]
قوة السمعة:
قديم 22-01-2010, 10:48 PM المشاركة 24   
افتراضي


ما شاء الله اسلوبك دائما رائع ومشاركاتك متكاملة وتغطى الموضوع من كل الجوانب والشرح بسيط ويصلح للجميع لك كل الشكر والتقدير .
ببساطة مرجع لل 74HC595 يضاف لل Datasheet
وفقك الله لكل خير
السلام عليكم

جزاك الله خيرا اخي روبوتا ... هو دا قليل مما عندكم ... يعني شي بسيط نعرفه ونحاول ان نفيد فيه ...ولا يعتبر شيئا يذكر ..ربنا يوفقنا جميعا لما يحبه ويرضاه.....ربنا يسهل امورك وتستمر في مواضيع الرائعة ولا تقطعنا...بالتوفيق..

واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم...



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