Może ktoś mi pomoże
Mam problem z wyświetleniem wyniku (np.temperatury itd.) na trzech wyświetlaczach LED, problem jest w tym ,że segmenty idą z różnych portów i to już nie wygląda tak prosto.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '*******TRAWIARKA V_1**********
- 'PB.7 - PK_grzanie -otwarcie-1
- 'PB.1 - Motor (PWM) -otwarcie-1
- 'PRZYCISKI Pd.4 - DOWN / Pd.3 - UP /Pd.2 - ZEGAR / Pd.1 - TEMP. / Pd.0 - MOTOR
- 'LED-y Pb.4 - zegar / Pb.3 - temp. / Pb.2 - motor (wyzwalane -1)
- 'WYSWIETLACZ LED wsp.anoda:
- 'Pd.7 - A1 / Pd.6 - A2 / Pd.5 - A3
- 'Pb.0 - a / Pc.5 - b / Pc.0 - c / Pc.2 - d / Pc.3 - e / Pc.4 - f /Pb.5 - g / Pc.1 dp
- $regfile = "m8def.dat"
- $crystal = 8000000
- Config Portb = &B11111111 : Portb = &B00100001
- Config Portc = &B11111111 : Portc = &B01111111
- Config Portd = &B11100000 : Portd = &B11111111
- Config Timer0 = Timer , Prescale = 256
- Enable Timer0 : On Timer0 Prztimer0
- Enable Interrupts
- '****************** ANIMACJA STARTOWA *******************
- Declare Sub Loading 'animacja ladowana do LED w trakcie startu
- Loading
- '********************ZMIENNE******************************
- dim Flaga_4ms as bit,Flaga_100ms as bit,Flaga_1s as bit
- dim Dzielnik As Byte , Dzielnik2 As Byte
- dim Mux as Byte
- Dim M As Byte , S As Byte , H as byte , W as Byte
- Dim wysw as byte , wysw1 as Byte , wysw10 as Byte , wysw100 as Byte
- wysw = 234
- '*****************************petla glowna************************************
- Do
- If Flaga_4ms = 1 Then 'co 4ms
- Flaga_4ms = 0
- gosub wyswietlanie
- end If
- If Flaga_100ms = 1 Then
- Flaga_100ms = 0
- 'gosub wyswietlanie
- end If
- If Flaga_1s = 1 Then
- Flaga_1s = 0
- end If
- Loop
- End
- '***************petla glowna koniec*****************
- '*******przerwanie timer0*****************
- Prztimer0:
- Timer0 = 131 'dla 8MHz
- Flaga_4ms = 1
- Incr Dzielnik
- If Dzielnik = 25 Then '25*4ms = 100ms
- Dzielnik = 0
- Flaga_100ms = 1
- Incr Dzielnik2
- If Dzielnik2 = 10 Then '10*100ms=1s'
- Dzielnik2 = 0
- Flaga_1s = 1
- End If
- End If
- Return
- '**********************************wyswietlanie*********************************
- Wyswietlanie:
- 'A1-PORTD.7 / A2-PORTD.6 / A3-PORTD.5
- 'Pb.0 - a / Pc.5 - b / Pc.0 - c / Pc.2 - d / Pc.3 - e / Pc.4 - f /Pb.5 - g / Pc.1 dp
- Incr Mux
- If Mux = 3 Then Mux = 0
- Select Case Mux
- Case 0: 'minuty
- set portd.5 'A3
- set portc.1 'dp
- ' W = H mod 10
- Wysw = wysw100
- set portc.1 'dp
- reset portd.7 'A1
- Case 1: 'dziesiątki sekund
- set portd.7 'A1
- reset portc.1 'dp
- Wysw = wysw10
- reset portd.6 'A2
- Case 2: 'sekundy
- set portd.6 'A2
- set portc.1 'dp
- Wysw = wysw1
- reset portd.5 'A3
- End Select
- Wysw1 = Wysw mod 10
- Wysw = Wysw / 10
- Wysw10 = Wysw mod 10
- Wysw = Wysw / 10
- Wysw100 = Wysw mod 10
- Wysw1 = lookup (wysw1 , Tabela)
- Wysw10 = lookup (wysw10 , Tabela)
- Wysw100 = lookup (wysw100 , Tabela)
- portb.0 = Wysw.0 'a
- portc.5 = Wysw.1 'b
- portc.0 = Wysw.2 'c
- portc.2 = Wysw.3 'd
- portc.3 = Wysw.4 'e
- portc.4 = Wysw.5 'f
- portb.5 = Wysw.6 'g
- 'portc.1 dp
- Return
- '****************************wyswietlanie koniec********************************
- '*************************** tabela *******************************
- Tabela:
- Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255 , 191
- 'znak: 0 1 2 3 4 5 6 7 8 9 pusty -
- '***************animacje dla LED **********************************
- Sub Loading : 'program animacji startowej
- reset portd.5
- reset portd.6
- reset portd.7
- reset portb.0
- waitms 250
- set portb.0
- reset portc.5
- waitms 250
- set portc.5
- reset portc.0
- waitms 250
- set portc.0
- reset portc.2
- waitms 250
- set portc.2
- reset portc.3
- waitms 250
- set portc.3
- reset portc.4
- waitms 250
- set portc.4
- reset portb.5
- waitms 250
- set portb.5
- reset portc.1
- waitms 250
- Return
- End Sub
pozdrawiam