BlaueLed
15.02.2007, 23:25
Hallo,
ich habe hier einen Code, mit dem ich ein Drehzahlsignal auf einem LCD anzeigen lassen kann. Dieser Code ist für ein 4 Zylinder Motor gedacht. Habe aber einen 6 Zylinder. Ich verstehe den Code nicht richtig. Kann mal bitte jemand drüber sehen und mir vielleicht helfen, den auf nen 6 Zylinder umzuschreiben ?
mfg Kay
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
'+++++++++++++++++++++ ++++++++++++++++++++++
'+++++++++++++++++++++ Drehzahlmesser mit einem ++++++++++++++++++++++
'+++++++++++++++++++++ 16x4 Characterdisplay ++++++++++++++++++++++
'+++++++++++++++++++++ ++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
$regfile = "m16def.dat" 'AT8515 deklaration
$crystal = 16000000 '8,00 MHz Quarz
Dim Impulse As Byte
Dim V As Long
Dim W As Long
Dim W1 As Long
Dim W2 As Long
Dim W3 As Long
Dim Dreh As Long
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising
Config Pind.6 = Input
On Ovf1 Ontvf1
On Icp1 Oncapture
Enable Icp1
Enable Ovf1
Enable Interrupts
Portd.6 = 1
Main: '2930 * 256 = 750 ms
V = 0
W3 = 0
Impulse = 0
Cls
Cursor Off
Print " Drehzahl"
'Lcd "Drehzahl"
'Locate 2 , 1
'Lcd V
'Lcd " rpm "
Tcnt1l = 0 ' Lösche Timer1
Tcnt1h = 0
'--- Hauptprogramm -------------------------------------------------------------
Do
Loop
'--- OnCapture Funktion --------------------------------------------------------
Oncapture: 'Bei 8,00 MHz Quarz
Disable Icp1
Disable Ovf1
W3 = Timer1
Timer1 = 0
W2 = W2 + W3
Incr Impulse
If Impulse = 6 Then '10 Impulse Zählen damit ruhiger Zähler
W1 = W2 * 3472 'Taktzeit bei Presc. 256 + 7,3728 MHz
W = W1 / 60 'wg. der t 34,72 us
V = 600000000 / W 'Dann das ganze durch 100 Teilen
'1 / W2 * 60 wird ersetzt durch
'600000000 erspart das malnehmen mit 6
Dreh = V
Locate 1 , 1
Lcd Dreh
Locate 2 , 1
'Lcd V
'Lcd " rpm "
W = 0
W2 = 0
W3 = 0
V = 0
Impulse = 0
Else
End If
Enable Icp1
Enable Ovf1
Return
Ontvf1: 'Timer1 Überlauf, bei Stillstand.
Disable Icp1 'Zahler auf Null setzen.
Disable Ovf1
V = 0
'Locate 2 , 1
'Lcd V
'Lcd " rpm "
W = 0
W2 = 0
V = 0
Enable Icp1
Enable Ovf1
Timer1 = 0
Return
ich habe hier einen Code, mit dem ich ein Drehzahlsignal auf einem LCD anzeigen lassen kann. Dieser Code ist für ein 4 Zylinder Motor gedacht. Habe aber einen 6 Zylinder. Ich verstehe den Code nicht richtig. Kann mal bitte jemand drüber sehen und mir vielleicht helfen, den auf nen 6 Zylinder umzuschreiben ?
mfg Kay
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
'+++++++++++++++++++++ ++++++++++++++++++++++
'+++++++++++++++++++++ Drehzahlmesser mit einem ++++++++++++++++++++++
'+++++++++++++++++++++ 16x4 Characterdisplay ++++++++++++++++++++++
'+++++++++++++++++++++ ++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
$regfile = "m16def.dat" 'AT8515 deklaration
$crystal = 16000000 '8,00 MHz Quarz
Dim Impulse As Byte
Dim V As Long
Dim W As Long
Dim W1 As Long
Dim W2 As Long
Dim W3 As Long
Dim Dreh As Long
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Timer1 = Timer , Prescale = 256 , Capture Edge = Rising
Config Pind.6 = Input
On Ovf1 Ontvf1
On Icp1 Oncapture
Enable Icp1
Enable Ovf1
Enable Interrupts
Portd.6 = 1
Main: '2930 * 256 = 750 ms
V = 0
W3 = 0
Impulse = 0
Cls
Cursor Off
Print " Drehzahl"
'Lcd "Drehzahl"
'Locate 2 , 1
'Lcd V
'Lcd " rpm "
Tcnt1l = 0 ' Lösche Timer1
Tcnt1h = 0
'--- Hauptprogramm -------------------------------------------------------------
Do
Loop
'--- OnCapture Funktion --------------------------------------------------------
Oncapture: 'Bei 8,00 MHz Quarz
Disable Icp1
Disable Ovf1
W3 = Timer1
Timer1 = 0
W2 = W2 + W3
Incr Impulse
If Impulse = 6 Then '10 Impulse Zählen damit ruhiger Zähler
W1 = W2 * 3472 'Taktzeit bei Presc. 256 + 7,3728 MHz
W = W1 / 60 'wg. der t 34,72 us
V = 600000000 / W 'Dann das ganze durch 100 Teilen
'1 / W2 * 60 wird ersetzt durch
'600000000 erspart das malnehmen mit 6
Dreh = V
Locate 1 , 1
Lcd Dreh
Locate 2 , 1
'Lcd V
'Lcd " rpm "
W = 0
W2 = 0
W3 = 0
V = 0
Impulse = 0
Else
End If
Enable Icp1
Enable Ovf1
Return
Ontvf1: 'Timer1 Überlauf, bei Stillstand.
Disable Icp1 'Zahler auf Null setzen.
Disable Ovf1
V = 0
'Locate 2 , 1
'Lcd V
'Lcd " rpm "
W = 0
W2 = 0
V = 0
Enable Icp1
Enable Ovf1
Timer1 = 0
Return