Ich habe eine Frage zum Beitrag "Wie sag ich's meinem AVR?" Im Teil 3k) Analog-Digital-Umwandler wird beschrieben wie man den Digitalwert auf einem Port über LED's ausgeben kann. Das funktioniert auch einwandfrei.Ich versuche nun schon Wochenlang den Wert über ein LCD auszugeben,leider ohne Erfolg.Ziel ist es eine Temperatur über einen NTC zu messen,die Temperatur auf einem LCD anzeigen und einen Lüfter in abhängigkeit von der Temperatur zu steuern. Da ich Anfänger bin habe ich keine Ahnung wie ich das machen könnte. Ich würde mich über jede Hilfe freuen Grüße Karl
Was hast die für einen µC, und wo liegt genau das Problem kannst du das Display nicht ansteuern oder ???
Hallo, ich würde erstmal als Temperatursensor den Dallas-One-Wire Chip DS 1820 oder DS18S20 einsetzen, ein Digitales Thermometer, welches man einfach an den I/O-Port anschliesst und auslesen kann, die Werte können dann von Binär in z.B. Dezimal angezeigt werden. (Dieses Bauteil kostenlos bestellen / siehe Beitrag im Forum unter www.AR-Online.de) Bauteil kostet sonst 4,00 EUR bei mit zu bestellen plus Porto 1,53 EUR aber man spart sich viel Arbeit mit dem Auswerten mit z.B. Tabellen. Datenblatt übrigens auch unter www.Ar-Online.de ! Das Auslesen geht z.B. mit FAST-AVR problemlos durch fertige Assistenten, bei FASTAVR (Basic-Compiler) liegt schon ein fertiges Programm mit dem 18S20 bei. Hier mal das Listing : '//////////////////////////////////////////////////////////////// '/// FastAVR Basic Compiler by MICRODESIGN, www.FastAVR.com /// '/// Temperature measurement program, 0.1C res, /// '/// 1820.bas /// '//////////////////////////////////////////////////////////////// $Device= 2313 $Stack = 32 $Clock = 3.6864 $Lcd = PORTD.4, rs=PORTB.4, en=PORTB.5, 16, 4 $1Wire = PORTD.3 $Source= On Dim T As Word Dim d0 As Byte, d1 As Byte, d2 As Byte, d3 As Byte Dim d4 As Byte, d5 As Byte, d6 As Byte, d7 As Byte Dim crc As Byte Declare Sub Read1820() Declare Sub CalcTmp() Lcd "DS1820 T=" Do If 1Wreset Then 1Wwrite &hcc; &h44 WaitMs 250 1Wreset 1Wwrite &hcc; &hbe Read1820() Else Locate 1,10: Lcd "---" End If WaitMs 200 Loop '///////////////////////////////////////////////////// Sub Read1820() 1Wread d0,9 ' read all 9bytes If Crc8(d0,9)=0 Then ' check Crc, if OK CalcTmp() ' calc temp Else Locate 1,10: Lcd "CRC" End If End Sub '///////////////////////////////////////////////////// Sub CalcTmp() ' calc for 0.1C resolution ' T is 10 times greater (integer) If d0.1 Then Decr d0 ' if odd decrement T=(50*d0-25+(100*(d7-d6))/d7)/10 Locate 1,10: Lcd T End Sub Das wars. Prüfe doch erstmal, ob Du das Display in Gang bekommst, zeigt es schon mal Zahlenwerte richtig an, z.B. einen Zähler ? Gibt es Fehlermeldungen usw. ? Gruss A. Arndt
Danke für die schnellen Antworten Ich verwende einen AT90S4433 und als Assembler AVRASM. Ich kann im Display schreiben (auch Sonderzeichen), ich kann auch den umgewandelten Analogwert auf LED's binär ausgeben. Meine Frage, wie kann ich jetzt den Binärwert eines Register's in eine Dezimalzahl umwandeln und am Display ausgeben? Grüße Karl
ich habs so gemacht: binär so lange -100 bis binär <100 ist, subtraktionen zählen und als Hunderterstelle ausgeben. Jetzt binär so lange -10 bis binär <10 ist, subtraktionen zählen und als Zehnerstelle ausgeben. Der Rest ist die Einerstelle.
hey , ich brauche unbedingt hilfe in der sache AD-Umwandler. Verstehe absolut nichts und muss ein referat in drei wochen halten!!! wäre schön wenn mir jmd sagen könnte , was das ist , wozu es verwendet wird und wie man es verwendet. gruß
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.