8535 er Atmel Adc auslesen / 8x12 Leds multiplexen

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2024  08:49:37      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
8535 er Atmel Adc auslesen / 8x12 Leds multiplexen

    







BID = 88865

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  
 

  


Hallöchen

habe vor den ADC auszulesen und dann den Wert
auf einen Ledbalken auszugeben
( Vu Mmeter ) klappt auch schon ganz gut !

nur bis jetzt hab ich es ja nur auf einen Ledbalken
( 12 leds ) gebracht


wie erweitere ich das im Multiplexverfahren
so dass ich 8 ports durchschalte zu je 12 led s
mit 8 verschiedenen AD Wandler Eingängen schalten kann ?

anbei mein bisheriger code
sind da statt 12 16 leds ...hab da mal was ausproiert ...
und die Prozedur " Schalten gilt natürlich für den Zzweck auch nicht .."



#include
#include
#define ADC_VREF_TYPE 0x40
#define DEF_ADC_MASK 0x07


inline unsigned int start_adc(unsigned char adc_input)
{
ADMUX=(adc_input & DEF_ADC_MASK)|ADC_VREF_TYPE;
ADCSRA|=0x40;
}

inline unsigned int read_adc(unsigned char adc_input)
{
while ((ADCSRA & 0x10)==0);
ADCSRA |= 0x10;
start_adc(adc_input);
return ADCW;
}

inline void Ausgabe(unsigned int Wert)
{

if (Wert>=114)
{
PORTB.5=0;
PORTB.6=0;
}
else if (Wert>=102)
{
PORTB.5=1;
PORTB.6=0;
}
else
{
PORTB.5=1;
PORTB.6=1;
}

if (Wert>=286)
PORTD = 0x00;
else if (Wert>=256)
PORTD = 0x80;
else if (Wert>=229)
PORTD = 0xC0;
else if (Wert>=204)
PORTD = 0xE0;
else if (Wert>=178)
PORTD = 0xF0;
else if (Wert>=163)
PORTD = 0xF8;
else if (Wert>=142)
PORTD = 0xFC;
else if (Wert>=128)
PORTD = 0xFE;
else
PORTD = 0xFF;

if (Wert>=721)
PORTC = 0x00;
else if (Wert>=644)
PORTC = 0x80;
else if (Wert>=572)
PORTC = 0xC0;
else if (Wert>=511)
PORTC = 0xE0;
else if (Wert>=455)
PORTC = 0xF0;
else if (Wert>=403)
PORTC = 0xF8;
else if (Wert>=363)
PORTC = 0xFC;
else if (Wert>=321)
PORTC = 0xFE;
else
PORTC = 0xFF;
}

inline void Schalten(void)
{
unsigned char Kanalnummer;
for (Kanalnummer = 0; Kanalnummer < 64; Kanalnummer++)
{
PORTB = (Kanalnummer) | (PORTB & 0x60);
Ausgabe(read_adc(0));
}

}

void main(void)
{

DDRB=0xFF;
DDRC=0xFF;
DDRD=0xFF;
ACSR=0x80;

ADMUX=ADC_VREF_TYPE;
ADCSRA=0x88;
SFIOR&=0xEF;

start_adc(0);

while (1)
{
Schalten();
};
}

BID = 89548

MatthiasAsselborn

Stammposter


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 411
Wohnort: Altenstadt
Zur Homepage von MatthiasAsselborn ICQ Status  

 

  

weis denn keiner um rat ?


BID = 89763

lynx

Gerade angekommen


Beiträge: 10
ICQ Status  

tut mir leid, ich programmier nur in assembler, von C hab ich nicht ganz so die peilung

prinzipiell würd ich das so machen:
eine schleife in der die A/D gewandelten Werte nacheinander zyklisch ausgelesen werden (und dann in ein "schnittstellenregister" gespeichert werden, welches dann auf den leds angezeigt wird)


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 182401765   Heute : 1540    Gestern : 7426    Online : 389        26.11.2024    8:49
10 Besucher in den letzten 60 Sekunden        alle 6.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0187151432037