تطبيق رقم 2 عداد RPM من 0 إلى 999 :
الدائرة الكهربية :
البرنامج :
كود:
;Digital-RPM-Counter-with-16F628A
Device 16F628A
Xtal 4
All_Digital TRUE
Dim COUN As Word ; COUNTER Variable 0 to 999
Dim ONES As Byte ; LSD , DIGIT 0 For ONES 0 to 9
Dim TENS As Byte ; DIGIT 1 For TENS 0 to 9
Dim HUNDREDS As Byte ;MSD , DIGIT 2 For HUNDREDS 0 to 9
Output PORTB ;TRISB = %00000000 output
PORTB = 0 ; Clear PORTB
Input PORTA.0
Symbol Enable_ONES = PORTB.6 ;Enable 4511 for ONES
Symbol Enable_TENS = PORTB.5 ;Enable 4511 For TENS
Symbol Enable_HUNDREDS = PORTB.4 ;Enable 4511 For HUNDREDS
COUN=0 ;Clear COUN
Main:
; Note : Variable = Counter Pin, Period
COUN = Counter PORTA.0,1000 ;Period "1000 ms = 1 sec" time value to calibrate display
COUN = COUN * 60 ;scaling if you need it , to get RPM
COUN = COUN / 1 ;more scaling if you need it
If COUN > 999 Then COUN = 0 ; set to 0 if over count
Display:
;COUN consists of
ONES=COUN Dig 0
TENS=COUN Dig 1
HUNDREDS = COUN Dig 2
PORTB=240 | ONES ; Sens ONES data
; Note : 240 = %11110000 , (|) OR to use bit0 to bit3 for 7 segment
;and make bit4 to bit7 high for enable function
;Enable (LE) 4511 ONES digit by low pulse
Low Enable_ONES : DelayMS 1 : High Enable_ONES : DelayMS 1
PORTB=240 | TENS ; Send TENS data
;Enable (LE) 4511 TENS digit by low pulse
Low Enable_TENS : DelayMS 1 : High Enable_TENS : DelayMS 1
PORTB=240 | HUNDREDS ; Send HUNDREDS data
;Enable (LE) 4511 HUNDREDS digit by low pulse
Low Enable_HUNDREDS : DelayMS 1 : High Enable_HUNDREDS : DelayMS 1
GoTo Main ; Loop again
End
|
السلام عليكم
بارك الله فيك أخى المهندس فتح الله ، وجزاك الله خيرا على مجهوداتك
بالنسبة لهذا المشروع فهو لا يعطى الناتج إلا بعد مرور دقيقة كاملة ثم يعطى قيمة عدد الإدخالات خلال هذه الدقيقة !
لكن هناك مشاريع أخرى تعمل على حساب الزمن بين كل دخل وآخر وبناءا عليه يقوم بعمل قسمة الزمن الكلى للدقيقة حسب دقة القياس أو حسب القيمة القصوى فمثل يمكن قسمة 60 ثانية على الزمن بين كل دخلين ، أو قسمة 60000 ميللى على الزمن بين الدخلين بوحدة الميللى ثانية ويعطى النتيجة ، وهذا كنت أفكر فيه هذه الأيام وهو يختلف عن هذا المشروع ، لكنه سيحتاج استخدام التايمر 0
طبعا كل طريقة من هاتان الطريقتان لها استخدامات حسب الغرض
شكرا لك مهندسنا القدير ،
وفقك الله