- المكونات المطلوبة:
- مخطط الرسم البياني:
- باستخدام TIMER 8051 لقياس التردد:
- مؤقت 555 كمصدر تردد:
- شرح العمل والكود:
يتم تعريف التردد على أنه عدد الدورات في الثانية. يمكن تعريفه أيضًا بأنه متبادل لإجمالي الوقت "T". في هذا المشروع ، سنقوم بحساب عدد النبضات التي تدخل في المنفذ 3.5 من 8051 متحكم دقيق وعرضها على شاشة 16 * 2 LCD. لذلك قمنا بقياس تردد الإشارة في المنفذ 3.5 من 8051. هنا استخدمنا شريحة AT89S52 8051 ، ويتم استخدام 555 IC في الوضع Astable لتوليد نبض العينة للتوضيح. لقد قمنا سابقًا ببناء عداد التردد باستخدام Arduino.
المكونات المطلوبة:
- متحكم 8051 (AT89S52)
- شاشة عرض LCD مقاس 16 * 2
- مصدر التردد (555 Timer)
- مقياس فرق الجهد
- توصيل الأسلاك
مخطط الرسم البياني:
باستخدام TIMER 8051 لقياس التردد:
8051 microcontroller عبارة عن متحكم 8 بت يحتوي على 128 بايت من ذاكرة الوصول العشوائي (RAM) ، و 4 K بايت على ذاكرة ROM ذات الرقاقة ، وجهازي توقيت ، ومنفذ تسلسلي واحد وأربعة منافذ 8 بت. 8052 متحكم هو امتداد لميكروكونترولر. لتكوين المنفذ 3.5 كعداد ، يتم تعيين قيم تسجيل TMOD على 0x51. يوضح الشكل أدناه سجل TMOD.
بوابة | ج / ت | م 1 | م 0 | بوابة | ج / ت | م 1 | م 2 |
الموقت 1 | الوقت 0 |
GATE - عند ضبط GATE ، لا يتم تمكين المؤقت أو العداد إلا عندما يكون دبوس INTx مرتفعًا ويتم تعيين دبوس التحكم TRx. عندما يتم مسح GATE ، يتم تمكين المؤقت عندما يتم تعيين بت التحكم TRx.
C / T - عندما يكون C / T = 0 ، يعمل كمؤقت. عندما يكون C / T = 1 ، فإنه يعمل بمثابة عداد.
يشير M1 و M0 إلى وضع التشغيل.
بالنسبة إلى TMOD = 0x51 ، يعمل timer1 كعداد ويعمل في الوضع 1 (16 بت).
يتم استخدام شاشة LCD مقاس 16 * 2 لعرض تردد الإشارة بالهرتز (هرتز). إذا كنت جديدًا على شاشة LCD مقاس 16 × 2 ، فتحقق من المزيد حول دبابيس شاشة LCD مقاس 16 × 2 وأوامرها هنا. تحقق أيضًا من كيفية توصيل واجهة LCD بـ 8051.
مؤقت 555 كمصدر تردد:
يجب أن ينتج مصدر التردد موجات مربعة وأن السعة القصوى تقتصر على 5 فولت ، لأن منافذ متحكم 8051 لا يمكنها التعامل مع جهد أكبر من 5 فولت. و تردد أقصى يتمكن من قياس هو 655.35 كيلو هيرتز بسبب قيود الذاكرة من TH1 وTL1 التسجيل (8bit لكل منهما). في 100 مللي ثانية ، يمكن أن تستوعب TH1 و TL1 ما يصل إلى 65535 عددًا. ومن ثم فإن الحد الأقصى للتردد الذي يمكن قياسه هو 65535 * 10 = 655.35 كيلو هرتز.
في مشروع مقياس التردد 8051 ، أستخدم مؤقت 555 في الوضع المستقر لإنتاج موجات مربعة ذات تردد متغير. يمكن تغيير تردد الإشارة الناتجة عن 555 IC عن طريق ضبط مقياس الجهد كما هو موضح في الفيديو المقدم في نهاية هذا المشروع.
في هذا المشروع ، يحسب Timer1 (T1) عدد النبضات التي تدخل في المنفذ 3.5 من 8051 ميكروكنترولر لمدة 100 مللي ثانية. سيتم تخزين قيم العد في مسجلات TH1 و TL1 على التوالي. لدمج قيم سجل TH1 و TL1 ، يتم استخدام الصيغة أدناه.
النبضات = TH1 * (0x100) + TL1
الآن "النبض" سيكون له عدد من الدورات في 100 مللي ثانية. لكن يتم تعريف تردد الإشارة على أنه عدد الدورات في الثانية. لتحويله إلى تردد ، يتم استخدام الصيغة أدناه.
البقول = البقول * 10
شرح العمل والكود:
يتم تقديم برنامج C الكامل لمقياس التردد هذا في نهاية هذا المشروع. يتم تقسيم الكود إلى أجزاء صغيرة ذات معنى وموضح أدناه.
بالنسبة لواجهة LCD مقاس 16 * 2 مع متحكم 8051 ، يتعين علينا تحديد المسامير التي يتم توصيل شاشة LCD مقاس 16 * 2 بها بمتحكم دقيق 8051. دبوس RS 16 * 2 LCD متصل بـ P2.7 ، دبوس RW 16 * 2 LCD متصل بـ P2.6 و E pin من 16 * 2 LCD متصل بـ P2.5. تتصل دبابيس البيانات بالمنفذ 0 من متحكم 8051.
sbit rs = P2 ^ 7 ؛ sbit rw = P2 ^ 6 ؛ sbit en = P2 ^ 5 ؛
بعد ذلك علينا تحديد بعض الوظائف التي يتم استخدامها في البرنامج. يتم استخدام وظيفة التأخير لإنشاء تأخير زمني محدد. تُستخدم وظيفة Cmdwrt لإرسال أوامر إلى شاشة LCD مقاس 16 * 2. تُستخدم وظيفة datawrt لإرسال البيانات إلى شاشة LCD مقاس 16 * 2.
تأخير باطل (غير موقع int) ؛ cmdwrt باطلة (حرف غير موقعة) ؛ datawrt باطلة (حرف غير موقع) ؛
في هذا الجزء من الكود ، نرسل أوامر إلى شاشة LCD مقاس 16 * 2. أوامر مثل عرض واضح، المؤشر الاضافة، وقوة المؤشر إلى بداية 1 شارع خط يتم إرسالها إلى عرض 16 * 2 شاشات الكريستال السائل واحدا تلو الآخر بعد بعض التأخير الزمني المحدد.
لـ (i = 0 ؛ i <5 ؛ i ++) {cmdwrt (cmd) ؛ تأخير (1) ؛ }
في هذا الجزء من الكود ، يتم تكوين المؤقت 1 باعتباره عدادًا ويتم تعيين وضع التشغيل على الوضع 1.
تم تكوين Timer0 كمؤقت وتم ضبط وضع التشغيل على الوضع 1. يستخدم الموقت 1 لحساب عدد النبضات ويستخدم المؤقت 0 لتوليد تأخير الوقت. يتم تعيين قيم TH1 و TL1 على 0 ، للتأكد من أن العد يبدأ من 0.
TMOD = 0x51 ؛ TL1 = 0 ؛ TH1 = 0 ؛
في هذا الجزء من الكود ، يتم تشغيل المؤقت لمدة 100 مللي ثانية. يتم إنشاء 100 مللي ثانية من التأخير باستخدام وظيفة التأخير. TR1 = 1 لبدء المؤقت و TR1 = 0 لإيقاف المؤقت بعد 100 مللي ثانية.
TR1 = 1 ؛ تأخير (100) ؛ TR1 = 0 ؛
في هذا الجزء من الكود ، يتم دمج قيم العد الموجودة في سجلات TH1 و TL1 ثم يتم ضربها بـ 10 للحصول على العدد الإجمالي للدورات في ثانية واحدة.
النبضات = TH1 * (0x100) + TL1 ؛ البقول = البقول * 10 ؛
في هذا الجزء من الكود ، يتم تحويل قيمة التردد إلى بايت واحد لتسهيل عرضها على شاشة LCD مقاس 16 * 2.
d1 = نبضات٪ 10 ؛ s1 = نبضات٪ 100 ؛ s2 = نبضات٪ 1000 ؛ s3 = نبضات٪ 10000 ؛ s4 = نبضات٪ 100000 ؛ d2 = (s1-d1) / 10 ؛ d3 = (s2-s1) / 100 ؛ d4 = (s3-s2) / 1000 ؛ d5 = (s4-s3) / 10000 ؛ d6 = (نبضات s4) / 100000 ؛
في هذا الجزء من الكود ، يتم تحويل الأرقام الفردية لقيمة التردد إلى تنسيق ASCII ويتم عرضها على شاشة LCD مقاس 16 * 2.
إذا (نبضات> = 100000) datawrt (0x30 + d6) ؛ إذا (نبضات> = 10000) datawrt (0x30 + d5) ؛ إذا (نبضات> = 1000) datawrt (0x30 + d4) ؛ إذا (نبضات> = 100) datawrt (0x30 + d3) ؛ إذا (نبضات> = 10) datawrt (0x30 + d2) ؛ بيانات (0x30 + d1) ؛
في هذا الجزء من الكود ، نرسل أوامر إلى شاشة LCD مقاس 16 * 2. يتم نسخ الأمر إلى المنفذ 0 من متحكم 8051. تم جعل RS منخفضة لكتابة الأمر. تم جعل RW منخفضًا لعملية الكتابة. يتم تطبيق نبضة عالية إلى منخفضة على دبوس التمكين (E) لبدء عملية كتابة الأمر.
cmdwrt باطلة (حرف x بدون إشارة) {P0 = x ؛ ص = 0 ؛ rw = 0 ؛ أون = 1 ؛ تأخير (1) ؛ أون = 0 ؛ }
في هذا الجزء من الكود ، نرسل البيانات إلى شاشة LCD مقاس 16 * 2. يتم نسخ البيانات إلى المنفذ 0 من متحكم 8051. تم جعل RS عالية لكتابة الأوامر. تم جعل RW منخفضًا لعملية الكتابة. يتم تطبيق نبض مرتفع إلى منخفض على دبوس التمكين (E) لبدء عملية كتابة البيانات.
datawrt باطلة (حرف ص غير موقع) {P0 = y ؛ روبية = 1 ؛ rw = 0 ؛ أون = 1 ؛ تأخير (1) ؛ أون = 0 ؛ }
هذه هي الطريقة التي يمكننا بها قياس تردد أي إشارة باستخدام متحكم 8051. تحقق من الكود الكامل والفيديو التجريبي أدناه.