المشاريع المتوسطة : 1- مشروع عداد السرعة "التاكوميتر" Tachometer باستخدام الميكروكونترولر PIC
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الميكروكونترولر PIC والبرجة بلغة السى والمترجم مسكروسى برو :: الميكروكونترولر PIC والبرمجة بلغة السى والمترجم ميكروسى برو
صفحة 1 من اصل 1
المشاريع المتوسطة : 1- مشروع عداد السرعة "التاكوميتر" Tachometer باستخدام الميكروكونترولر PIC
المشاريع المتوسطة : 1- مشروع عداد السرعة "التاكوميتر" Tachometer باستخدام الميكروكونترولر PIC
التاكوميتر هو جهاز لقياس السرعة الدورانية لأى عامود أو قرص . وحدة القياس عادة تكون بعدد اللفات فى الدقيقة الواحدة RPM .
سوف يتم إنشاء تاكوميتر بالميكروكونترولر PIC16F877A والعرض على شاشة LCD ، بالإضافة إلى دائرة تحكم عند وصول السرعة الدورانية إلى قيمة محددة سلفا :
استعراض النتائج :
من خلال برنامج هذا المشروع سوف تتعرف على :
1- كيفية التعامل مع وحدة العرض LCD والمترجم ميكروسى ، من حيث تعريف توصيلات أطراف LCD ، ثم تهيئتها للتشغيل ، وعرض الرسائل .
2- التعرف على استخدام المؤقت TMR0 فى وضع العداد لعد نبضات تطبق خارجيا ، وكيفية تهيئة السجلات المرتبطة به ، وحساب عدد النبضات كل دقيقة .
3- معرفة كيف يتم استخراج القيمة العددية لأرقام خانات عدد مكون من أكثر من رقم (الآحاد ، والعشرات ، ....) ، ثم تحويل هذه الأرقام إلى ما يناظرها من كود أسكى حتى يمكن عرضها على وحدة العرض LCD .
البرنامج :
التاكوميتر هو جهاز لقياس السرعة الدورانية لأى عامود أو قرص . وحدة القياس عادة تكون بعدد اللفات فى الدقيقة الواحدة 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
}
مواضيع مماثلة
» مشروع عداد تصاعدى 0-99 يستخدم CCS-C-Counter-PIC-EEPROM-Interrupt-7 Segment-7447-
» مراجعة برمجة الميكروكونترولر PIC من خلال مشاريع الميكروكونترولر PIC16F877A مع الدايودات المشعة للضوء والمترجم ميكروسى برو :
» مشروع قفل إلكترونى بسيط باستخدام ذاكرة EEPROM بالميكروكونترولر ولوحة مفاتيح وشاشة LCD :
» مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح :
» مشروع أضواء متلاحقة 8 مخارج متعدد النماذج والسرعات ، بسيط وذهيد ياستخدام الميكروكونترولر PIC16F628A
» مراجعة برمجة الميكروكونترولر PIC من خلال مشاريع الميكروكونترولر PIC16F877A مع الدايودات المشعة للضوء والمترجم ميكروسى برو :
» مشروع قفل إلكترونى بسيط باستخدام ذاكرة EEPROM بالميكروكونترولر ولوحة مفاتيح وشاشة LCD :
» مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح :
» مشروع أضواء متلاحقة 8 مخارج متعدد النماذج والسرعات ، بسيط وذهيد ياستخدام الميكروكونترولر PIC16F628A
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الميكروكونترولر PIC والبرجة بلغة السى والمترجم مسكروسى برو :: الميكروكونترولر PIC والبرمجة بلغة السى والمترجم ميكروسى برو
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى