Hallo Kann mir jemand auf die sprünge helfen? Ich würde gerne mit einem ATmega8 ein Analoges signal von 0-4V messen und das dann auf 4 7-Segment anzeigen von 0 -1150 ausgeben. Kann mir bitte jemand mit einem CODE beispiel am besten in Assembler helfen damit ich verstehe wie die umwandlung von den 0-4V nach 0-1150 auf den 7-Segment Anzeigen vorsich geht. Ich bedanke mich schon mal für jede kleine Hilfe Michael
hi, ich hab hier ein stück code, allerdings ins C, wo ich allerdings nur zwei 7 segment anzeigen ansteuere. im prinzip ganz simpel. zuerst die eine zahl auf den port wo die eine anzeige dran sind, dann umschalten auf die andere. d.h. jeweils nur eine ist an, aber wenn man schnell genug wechselt ( mehr als 26Hz), dann flackert nix mehr. damit die leuchtkraft erhalten bleibt, muss man natürlich den LED strom erhöhen. mit 4 stück könnte natürlich der led strom zu hoch werden, um ausreichend leuchtkraft zu bekommen. die 7 kathoden ( 14 kathode bei 2 anzeigen, wobei beide anzeigen an den kathoden parallel sind und somit nur ein vorwiderstand dran ist)sind direkt mit vorwiderständen an dem port vom atmel dran. die anode schalte ich über einen PNP transitor um. man muss halt noch ausprobieren, welche hex zahl auf dem port welcher zahl entspricht, was man dann einfach in einem array speichert. man könnte auch latchs verwenden, damit die LEDs immer an sind und man nur die adresse ändert. fals du es so wie ich mit multiplexen versuchen solltest, dann nimmt du 3 die du umschaltet und die 1 am anfang schaltest du einfach nur ein, wenn die benötigt wird. grüsse unsigned char zahlzuport[13]={0x01,0x67,0x14,0x24,0x62,0x28,0x08,0x65,0x00,0x20,0xFF,0 x7E,0x66}; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { if((te<-40)||(te>130)||(nodata==1)) { zehner=11; einser=11; // PORTD.4=0; } else { if(te<0) //negative werte { e=te*(-1); zehner=11; } else e=te; einser=(e%100)%10; //einsterstellen if((e>=10)&&(te>0)) // zehner=(e/10)%10; else if(te<0) if(te<-9) zehner=12; else zehner=11; else zehner=10; } if(PORTD.6==1) { PORTD.5=1; PORTB=zahlzuport[einser]; PORTD.6=0; } else { PORTD.6=1; PORTB=zahlzuport[zehner]; PORTD.5=0; } } PS: die erfahrenen progger mögen mir für diesen code ( einer der ersten versuche überhaupt) verzeichen, fals der nicht so toll sein sollte
Hallo Ich habe hier http://www.mikrocontroller.net/forum/read-4-18926.html etwas gefunden das mit sicherheit das richtige enthält doch ich kann aus dem CODE nicht erkennen wie das funktioniert. http://www.mikrocontroller.net/attachment.php/41680/drehzahl.bas hier ist der CODE in BASCOM kann mir das programm jemad näher erleutern ich habe noch karkeine erfahrung mit programmierung von µC´s. Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.