كود تفعيل العضوية - الابلاغ عن روابط لاتعمل - صيانة التلفزيون - الحاسبة - الأعضاء المتميزين - البرامج و المخططات - بث مباشر للقنوات الفضائية - إذاعة - تردد القنوات - بحث
|
التسجيل | اجعل كافة المشاركات مقروءة |
منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics |
![]() |
|
أدوات الموضوع |
![]() |
#1 |
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() المشاريع المتوسطة : 1- مشروع عداد السرعة "التاكوميتر" Tachometer باستخدام الميكروكونترولر PIC
التاكوميتر هو جهاز لقياس السرعة الدورانية لأى عامود أو قرص . وحدة القياس عادة تكون بعدد اللفات فى الدقيقة الواحدة RPM . سوف يتم إنشاء تاكوميتر بالميكروكونترولر PIC16F877A والعرض على شاشة LCD ، بالإضافة إلى دائرة تحكم عند وصول السرعة الدورانية إلى قيمة محددة سلفا : استعراض النتائج : ![]() ![]() ![]() من خلال برنامج هذا المشروع سوف تتعرف على : 1- كيفية التعامل مع وحدة العرض LCD والمترجم ميكروسى ، من حيث تعريف توصيلات أطراف LCD ، ثم تهيئتها للتشغيل ، وعرض الرسائل . 2- التعرف على استخدام المؤقت TMR0 فى وضع العداد لعد نبضات تطبق خارجيا ، وكيفية تهيئة السجلات المرتبطة به ، وحساب عدد النبضات كل دقيقة . 3- معرفة كيف يتم استخراج القيمة العددية لأرقام خانات عدد مكون من أكثر من رقم (الآحاد ، والعشرات ، ....) ، ثم تحويل هذه الأرقام إلى ما يناظرها من كود أسكى حتى يمكن عرضها على وحدة العرض LCD . البرنامج : كود:
/* Project: Contactless digital tachometer Description: MCU: PIC16F877A 4MHz clock TIMER0 module is used as a 8-bit counter to count external pulses arriving at RA4/T0CKI input Eng.F.ABDELAZIZ */ // Define LCD module connections. sbit LCD_RS at RB2_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB2_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connection definition //unsigned long RPM_Value;// 4 bytes ,0 .. 4294967295 unsigned int RPM_Value;// OR unsigned only , 2 bytes ,0 .. 65535 #define RPM_SWITCH PORTD.B0 #define ON 1 #define OFF 0 char RPM[] = "00000 RPM"; void Display_RPM(unsigned long num){ RPM[0] = num/10000 + 48;//get ONE THOU. number and convert it as ASCII for LCD RPM[1] = (num/1000)%10 + 48;//get THOU. number and convert it as ASCII for LCD RPM[2] = (num/100)%10 + 48;//get HANDS. number and convert it as ASCII for LCD RPM[3] = (num/10)%10 + 48;//get TENS number and convert it as ASCII for LCD RPM[4] = num%10 + 48;//get ONES number and convert it as ASCII for LCD Lcd_Out(2,4,RPM); } void main() { TRISA.B4 = 1; // Inut at RA4/T0CKI PORTA.B4=0; TRISD.B0=0; //RPM Switch Output PORTD.B0=0; OPTION_REG=0b00101000; // Bit5:T0CKI=1 for counter mode, <bit3 =1 Prescaler is assigned to the WDT ,<bit2:bit0> =000 for Prescaler(1:1) , Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // CLEAR display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1,4,"Tachometer"); // Write message1 in 1st row while(1){ /* The counter will be active for 1 sec and the number of pulses arrived during this interval will be recorded, and multiplied by 60 to get the RPM . */ TMR0=0; //start with "0" value Delay_ms(1000); // Wait for 1 sec ,the counter TMR0 will be active for 1 sec, RPM_Value = TMR0*60; Display_RPM(RPM_Value); if(RPM_Value > 600) RPM_SWITCH = ON ; else RPM_SWITCH = OFF; } // Infinite Loop }
__________________
مقالات المهندس فتح الله عبدالعزيز |
![]() |
![]() |
احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 0 اعجاب |
![]() |
|
اعلانات |
![]() |
#2 |
مهندس متواجد
![]() الدولة: Libya
المشاركات: 62
معدل تقييم المستوى: 0
|
![]() مشكور اخي F.Abdelaziz على المجهود الرائع في هذا المنتدي
لدي سؤال عن timr0 الا يوجد امر لتفعيل هذا المؤقت وتصفيره حتى لا يحصل overflow و شكرا |
![]() |
![]() |
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها ) | |||
|
![]() |
#3 | ||
استاذ و مشرف قسم الالكترونيات
المشاركات: 6,894
معدل تقييم المستوى: 332
|
![]() اقتباس:
شكرا جزيلا لك اقتباس:
مع تمنياتى بدوام التوفيق
__________________
مقالات المهندس فتح الله عبدالعزيز |
||
![]() |
![]() |
![]() |
العلامات المرجعية |
أدوات الموضوع | |
|
|