Dag Allemaal,
Kan me iemand helpen met het aansturen van 7 segment display (2 van 7) samen met 2 LED's m.b.v. een PIC16F54 ? Ik wil namelijk de volgende doen:
Als alles ok is, brandt de groene led en de teller doet niets. Nu zijn er bepaalde gevallen die kunnen voorkomen:
- RA1 verandert constant van hoog naar laag en omgekeerd. Als RA1 laag wordt dan moet een teller beginnen aftellen tot 20ms. Indien deze teller 20ms bereikt, moet het getal op de 7 segment display verhoogd worden en de rode led branden (door RA0 laag te zetten).
- Als de teller 20ms niet bereikt doordat RA1 terug hoog is geworden, gebeurt er niets en is alles ok.
- De 7 segment display kan gereset worden door RA3 langer dan 2 seconden laag te houden.
- RA2 verandert ook constant van hoog naar laag en omgekeerd. Als RA2 laag blijft langer dan 20 ms dan moet de rode led branden en het getal op de 7 segment display wordt NIET verhoogd.
- Als RA2 binnen 20 ms terug hoog wordt, moet er niets gebeuren.
De 7 segment display wordt door middel van multiplexing aangestuurd. De pin RB7 zorgt ervoor dat er snel tussen de twee getallen geschakeld wordt.
Het is belangrijk dat de teller begint af te tellen bij de overgangen van hoog naar laag. Er moet dus niet geteld worden als het signaal altijd laag blijft.
Hier is een deel van de pseudo code:
-----------------------------------
Inputs: RA1, RA2, RA3
Outputs: RA0, RB0…RB7
RA0 == hoog //groene led is aan
If RA0 == hoog & RA1 == laag
Teller telt tot 20 ms.
If Teller == 20 ms,
Then Verhoog_Getal();
RA0 == laag //rode led is aan
end
end
Verhoog_Getal(){ // methode om het getal op de 7 segment display te verhogen
...}
En hier is een schema dat ik heb getekend:

Voor het programmeren van PIC gebruik ik MPLAB X IDE v3.00. Ik had al geprobeerd in assembler te programmeren, maar ik snap er helemaal niets van
. Dus, wat er overblijft is C...
Kan me iemand helpen met het aansturen van 7 segment display (2 van 7) samen met 2 LED's m.b.v. een PIC16F54 ? Ik wil namelijk de volgende doen:
Als alles ok is, brandt de groene led en de teller doet niets. Nu zijn er bepaalde gevallen die kunnen voorkomen:
- RA1 verandert constant van hoog naar laag en omgekeerd. Als RA1 laag wordt dan moet een teller beginnen aftellen tot 20ms. Indien deze teller 20ms bereikt, moet het getal op de 7 segment display verhoogd worden en de rode led branden (door RA0 laag te zetten).
- Als de teller 20ms niet bereikt doordat RA1 terug hoog is geworden, gebeurt er niets en is alles ok.
- De 7 segment display kan gereset worden door RA3 langer dan 2 seconden laag te houden.
- RA2 verandert ook constant van hoog naar laag en omgekeerd. Als RA2 laag blijft langer dan 20 ms dan moet de rode led branden en het getal op de 7 segment display wordt NIET verhoogd.
- Als RA2 binnen 20 ms terug hoog wordt, moet er niets gebeuren.
De 7 segment display wordt door middel van multiplexing aangestuurd. De pin RB7 zorgt ervoor dat er snel tussen de twee getallen geschakeld wordt.
Het is belangrijk dat de teller begint af te tellen bij de overgangen van hoog naar laag. Er moet dus niet geteld worden als het signaal altijd laag blijft.
Hier is een deel van de pseudo code:
-----------------------------------
Inputs: RA1, RA2, RA3
Outputs: RA0, RB0…RB7
RA0 == hoog //groene led is aan
If RA0 == hoog & RA1 == laag
Teller telt tot 20 ms.
If Teller == 20 ms,
Then Verhoog_Getal();
RA0 == laag //rode led is aan
end
end
Verhoog_Getal(){ // methode om het getal op de 7 segment display te verhogen
...}
En hier is een schema dat ik heb getekend:

Voor het programmeren van PIC gebruik ik MPLAB X IDE v3.00. Ik had al geprobeerd in assembler te programmeren, maar ik snap er helemaal niets van
