Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
sportlicher Ehrgeiz varanlasste mich zu versuchen mit dem BASCOM-AVR SPIOUT Kommando die 4 X 7 Segmentanzeige mit nur noch zwei Adern anzusteuern. Vom ATtiny45 aus sind jetzt nur Dout und Clock notwendig:
Config SPI = Soft , Dout = PORTB.0 , Clock = PORTB.2
Ohne Slave Select werden benötigte Steuersignale für Schieberegister und Ziffernweiterschaltug per HW aus dem SPI Takt gewonnen. Dabei gelang es mir durch viel Fummelei einen stabilen Zustand beim Stromeinschalten herzustellen.
Schaltbild im Anhang
Die Schwierigkeit, die es zu überwinden galt, war der 4017 in der Mitte des Schaltbildes, der oft irgendwelche Zustände nach Einschalten hatte und dann Segmente und Ziffern durcheinanderwarf. Ohne aufwendige Resetschaltung haben dann die beiden 100k Widerstände an MR und CP1 geholfen. Wie stabil das auf Dauer ist unterliegt jetzt einer Langzeitstudie :-)
Natürlich ist der HW Aufwand unverantwortbar und jetzt auch noch überproportional zu der eingesparten Ader gestiegen :-b Die Experimente sind jedoch sehr aufschlußreich.
Gruß
Searcher
Asynchron gemultiplexte 4 X 7 Segment Speicheranzeige mit 74xx595 für 2 Ader SW-SPI
Hallo,
ich hatte da noch ein paar Chips rumliegen und wie immer zu wenig Pins an meinem ATtiny45. Wie der Vorgänger wird diese Anzeige auch nur mit 2 Ader in SW-SPI angesteuert.
Bei dieser neuen Version ist es aber nicht mehr notwendig die einzelnen Ziffern vom µC aus zu multiplexen. Die einmalige Ausgabe aller 4 Ziffern wird in den kaskadierten Schieberegistern gespeichert und durch einen externen Takt zb von einem 555, an die Siebensegmentanzeige ausgegeben.
Die Inverter sorgen dafür, daß durch inaktiv schalten von Output Enable am 595 alle Ausgänge hochohmig werden, bis auf die, die gerade zur Segmentansteuerung gebraucht werden.
Jetzt brauch ich nur per SPI entsprechende Daten dann auszugeben, wenn sie wirklich anfallen und kann dadurch Recourcen zum Multiplexen einsparen.
Na gut, sowas könnte man sicher auch einfach haben. Für mich war und ist es eine schöne Übung. Konnte bisher nur 2 Ziffern realisieren, da mir noch zwei 595er fehlen.
Code:
VCC .-----------------.
+ | .---------)-. irgendein
| .------------)-------)---. | | Takt
o------)------------)-----. | .-)-----)-)-------<
| | | | | | | | | | |
Seg A | === | o_o_o_o_o_o_o_o
D1.->|--o-- Q0-------------------------------)--. GND | | 4017 |
| |B __ | | | |1_ _ _ _ _ _ _ |
|->|--)-- Q1---------------o------o|1 |o---o | | o o o o o o o o
| | Q2-------------o-)------o| |o---)--o ---------)--. | | | | | | | |
| Q3-----------o-)-)------o| |o---)--)------' /| | | | | | |
| Q4---------o-)-)-)------o| |o---)--)------o--O< |---)--)------. | | |
| Q5-------o-)-)-)-)------o| |o---)--)------' \| | | | | | |
| Q6-----o-)-)-)-)-)------o| |o---)--)----. Inverter| | | | | | SPI data
| | | | | | | -o| |o---o | | | '------)-)-)-----)-------<
Seg A| | | | | | | o--o|__|o---)--)--. | | | | | |
D2 ->|-o | | | | | | | 595 | | | | | | | | | SPI clock
| | | | | | | | __ | | | o-----------)---------)-)-)-----)-------<
D3 ->|-o | | | | | o---)--o|1 |o---o | | | | | | | |
| | | | | o-)---)--o| |o---)--o | | | | | | |
D4 ->|-' | | | o-)-)---)--o| |o---)--)--' | /| | | | | |
| | o-)-)-)---)--o| |o---)--)----)-o--O< |---)---------)-. | |
| o-)-)-)-)---)--o| |o---)--)----)-' \| | | | | |
4 X 7 Seg o-)-)-)-)-)---)--o| |o---)--)----o | | | | |
mit gem. Anode | | | | | | | -o| |o---o | | | | | | |
| | | | | | o--o|__|o---)--)--. | | | | | |
| | | | | | | 595 | | | | | | | | |
| | | | | | | __ | | | | | | | | |
| | | | | o---)--o|1 |o---| | | | | | | | |
| | | | o-)---)--o| |o---)--o | | | | | | |
| | | o-)-)---)--o| |o---)--)--' | /| | | | | |
| | o-)-)-)---)--o| |o---)--)----)-o--O< |---. | | | |
| o-)-)-)-)---)--o| |o---)--)----)-' \| | | | | |
o-)-)-)-)-)---)--o| |o---)--)----o | | | | |
| | | | | | | -o| |o---' | | | | | | |
| | | | | | o--o|__|o------)--. | | | | | |
| | | | | | | 595 | | | | | | | |
| | | | | === | | | | | | | ===
| | | | GND | | | /| | | | | GND
| | | | | | .--O< |---)---------)-)-.
| | | | | \| | | | |
eventuell Q6 Q0 | | | | | |
Treiber | | | |
/| Digit 1 | | | |
--< |-------------------------------------------------------------)---------' | |
\| D2 -------------------------------------------------------)-----------' |
D3 ---------------------------------------------------------- |
D4 --------------------------------------------------------------------------'
Pin Belegung
74HC595N HEF4017B
__ __
Q1 -o|1 |o- VCC Q5 -o|1 |o- VCC
Q2 -o| |o- Q0 Q1 -o| |o- MR
Q3 -o| |o- Ds Q0 -o| |o- CP0
Q4 -o| |o- OE (low aktiv) Q2 -o| |o- CP1 (low aktiv)
Q5 -o| |o- STcp Q6 -o| |o- Q5-9 (low aktiv)
Q6 -o| |o- SHcp . Q7 -o| |o- Q9
Q7 -o| |o- MR (low aktiv Q3 -o| |o- Q4
GND -o|__|o- Q7' GND -o|__|o- Q8
PS Frisch vom Basteltisch weiß ich noch nicht ob es versteckte Fehler gibt. Bis jetzt funktioniert es perfekt. (Hoffe natürlich auch, das ich die ASCII Art fehlerfrei hinbekommen habe :-)
Gruß
Searcher