Gefunden für ausgabe ascii hex - Zum Elektronik Forum |
1 - Temperatursensor, weitere Schaltungen über RS232 -- Temperatursensor, weitere Schaltungen über RS232 | |||
| |||
2 - FIFO / Ringbuffer -- FIFO / Ringbuffer | |||
hi,
du kannst die 4 ausgänge einfach an 4 eingänge der mcu hängen, dann warten bis der controllanschluss high ist, (pollen oder per interrupt) und dann den port lesen. dann brauchst du einen zähler, der eben bis 4 zählt oder den port prüft ob das bitmuster für # anliegt und dann abbricht bzw die daten weiterverarbeitet, ich würde die 4 ziffern erstmal in 4 variablen oder array speichern. (alternativ nach jeder ziffer verarbeiten) du brauchst dann eine routine die aus deinen binärdaten hex oder ascii zeichen macht wenn du sie ausgeben willst, ansonsten kannst du sie in bitfeldern speichern und nur bei der ausgabe konvertieren. wenn sie also nur intern verarbeitet werden und nicht gespeichert oder ausgegeben sind bitfelder einfach zu handhaben. da du nur 4 bit brauchst läßt sich das prima in einem 16Bit wort abspeichern. gruss ... | |||
3 - HiFi Verstärkerändnisfragen: Integer-to-Char für LCD und Dallas DS1821 (Temp.Sens.) -- HiFi Verstärkerändnisfragen: Integer-to-Char für LCD und Dallas DS1821 (Temp.Sens.) | |||
Hallo liebe Leute,
ich benutze einen ATmega8535 mit CodevisionAVR und habe ein paar kurze Fragen: 1. Muss ich zwangsläufig meine umständliche Integer-zu-Char-Umwandlung benutzen, um Int-Werte z.B. vom Temperatursensor auf einem LCD auszugeben? Es gibt ja nur String- und Char-Output-Befehle.. Habe nämlich Schwierigkeiten mit meiner Lösung, die ich bei einer einfachen Sekundenanzeige benutzt habe (nur zum Testen), hier kurz das main (Kommentare waren für Azubi-Kollegen): while (1) { sekunden++; //Sekündliche Erhöhung von sekunden um 1 delay_ms(1000); x=1; //Zählvariablen für die Umrechnung von i=0; //Int zu Char (String) werden initialisiert j=0; while(sekunden>=x) //Umrechnung von sekunden (Int) in zeit[] (Char-Array) { zeit[i]=((sekunden/x)%10)+0x30; //Jede einzelne Stelle der Integer-Variable wird mit //Hex-30 addiert, denn laut ASCII-Tabelle liegt | |||
4 - String auslesen und an LCD senden (16F877) -- String auslesen und an LCD senden (16F877) | |||
Hallo an alle,
ab und an programmiere ich auch an PIC herum. Das für mich etwas "Blöde" ist die Zeichenausgabe auf ein LCD-Display. Initialisierung als auch Ausgabe funktionieren einwandfrei! Ist es aber nicht irgendwie möglich, z.B. den String "Kommando: " einfacher auszugeben, als bisher so: movlw 'K' call LcdOut movlw 'o' call LcdOut movlw 'm' call LcdOut movlw 'm' call LcdOut movlw 'm' call LcdOut movlw 'a' call LcdOut movlw 'n' call LcdOut movlw 'd' call LcdOut movlw 'o' call LcdOut movlw ':' call LcdOut movlw ' ' call LcdOut Im Prinzip bracht man doch nur die ASCII-Codes in (String-)Variable zu schreiben und diese auszulesen in einer Schleife? Leider hat nun mal ein PIC keine String-Variablen. Hat da jemand eine kleine Routine für mich zum Testen? Vielen Dank! Gruß Jens ... | |||
5 - Siemens TC35i auslesen und programmieren -- Siemens TC35i auslesen und programmieren | |||
Hallo frosch006,
HTerm ist doch schon mal was. Das kenne ich auch. 1. COM-Port auswählen. Meistens COM1, manche USB->COM-Adapter beginnen bei COM3. 2. Baud auf 19200 stellen. Evtl. auch 9600. 3. Connect Nun kann man im unteren Eingabefeld AT&F eingeben und mit ASend das ganze an das Modem schicken. Nun sollte das Modem im oberen Fenster mit OK antworten. Ggf. auch 2-3x versuchen. Die nun erfolgte Grundeinstellung kann dann mit AT&W gespeichert werden was ebenfalls mit OK vom Modem bestätigt werden muss. In HTerm alle Einstellungen auf "ASC" bzw. Ascii lassen! Wenn das Modem überhaupt nicht antwortet ist irgendwas am Kabel zwischen PC und Modem fehlerhaft. Wenn das soweit geht könntest du zum testen (ohne nachher mit AT&W zu speichern!) die SMS-Ausgabe mit AT+CMGF=1 auf Textausgabe umstellen und dir dann mit AT+CMGL=4 alle gespeicherten SMSen im Modem und auf der SIM-Karte anzeigen lassen. Ggf. einfach vorher eine SMS an die Adresse schicken. Das ganze nennt sich der AT-Kommandosatz den jedes Modem drin hat. Für weitere Informationen kannst du ja mal nach "tc35 at command set" googeln. Wenn das alles geht ist das Modem in jedem Fall in Ordnung. Was vielleicht sein kann ist, das du die Adern... | |||
6 - Von RS485 auf RS232 -- Von RS485 auf RS232 | |||
Ob du auf Klartextausgabe hoffen darfst hängt vom Gerät ab. Da wird der Programmierer zwischen Menschenlesbarkeit, verfügbare Rechenleistung im Gerät und maximal benötigte Übertragungsrate auf dem Bus abgewogen haben.
Alles als ASCII auszugeben kostet eben Rechenaufwand und belegt den Bus. Ich selber bastle gerade an einer Wetterstation wo alle Sensoren auf einem RS485 Bus hängen und der Master ist ein Interface RS485/RS232 das an einem Terminal (Mikrotik Routerboard) hängt. Da habe ich mich auf Menschenlesbare ASCII Ausgabe festgelegt da es mir um ein möglichst einfach zu bedienendes System geht und die Datenmenge relativ gering ist. Ich sehe aber noch ein anderes Problem: Die Leitungen Driver Enable und Receiver Enable wolle richtig angesteuert werden. Bei mir macht das der µC auf dem Interface (Das Routerboard hat leider nur RxD und TxD) aber bei deinem Adapter kann das nur eine oder zwei Steuerleitungen der RS232 Schnittstelle übernehmen und diese Leitungen wollen dann auch von einem Programm befehligt werden. Dafür müsstest du das Protokoll kennen das das fragliche Gerät spricht. So ... genug gelabert. Grüße Simon ... | |||
7 - Bash-Script rel. langam: aus Wertetabelle Differenzwert-Tabelle erzeugen -- Bash-Script rel. langam: aus Wertetabelle Differenzwert-Tabelle erzeugen | |||
Hallo!
Was mir noch, aus aktuellem Anlass, eingefallen ist: viele Programme, die Daten aufbereiten, auswerten oder darstellen sind in der Lage, direkt aus ASCII-Dateien zu lesen. In meinem konkreten Fall waren es ein paar hundert Datenpaare samt Fehlerangaben für Gnuplot. Gnuplot beherrscht zudem die numerische Weiterverarbeitung dieser Eingabedaten, daraus folgt, dass man z.B. Differenzen direkt berechnen lassen kann. Für die Berechnung und die Anzeige schreibe ich ein Gnuplot-Script und mit einem Befehl werden die Daten geholt, verarbeitet, die Koordinatensysteme so gesetzt, wie ich sie haben will, die Ausgabe nach encapsulated postscript umgeleitet und in ein LaTeX-Dokument eingebunden... Eventuell, je nach Datensätzen, noch die Eingabedaten so ändern, dass es reibungslos verläuft. Z.B. wie hier auch geschehen, über ein Shellscript Kommata in Punkte umzuwandeln und entsprechend deutliche Spalten formatieren. Edit: Ja, hat nichts direkt mit dem aktuellen Problem hier zu tun, aber Gnuplot kann echt mehr als nur reine Darstellung. [ Diese Nachricht wurde geändert von: DonComi am 13 Jan 2010 0:44 ]... | |||
8 - welche Programmiersprache? -- welche Programmiersprache? | |||
Offtopic :Moin, Naja, was heißt schon sich "stark unterscheiden"? Einige bereits kodierte Algorithmen laufen bei mir 1:1 portiert sowohl auf einem mini kleinen AVR als auch als Codefragment in einem Linux-Programm. Zufällig brauchte ich zweimal die gleiche Funktionalität. Nur habe ich, wenn ich selbst mit nem sehr alten, langsamen Rechner z.B. ein Programm in C schreibe wesentlich mehr Ressourcen zur Verfügung, was z.B. dazu führt, dass ich viele Bibliotheken einbinden kann (klar, viele davon sicherlich dynamisch, was ja bei AVRs eh nicht geht... ![]() Also, die Umgebung zählt enorm, aber vom "Feeling" ist es kaum ein Unterschied. Man kann halt unter C und Linux ziemlich sorglos mit solch Speicherkillern wie printf und variablen Argumenten umgehen. Auf AVRs bitte zu unterlassen, da wird der gesamte Umfang der formatierten Ausgabe kaum gebraucht, und wenn man es braucht, dann bitte eigene, kleine Funktionen implementieren, ohne Interpretation d... | |||
9 - UART Probleme -- UART Probleme | |||
Es ist halt verdammt viel Code zum lesen und ich wollte nicht jemand qualifiziertes verschrecken ![]() also gut: UART.c Code : #include <avr/io.h> #include <inttypes.h> #include <AVR/io.h> //Definition der Ports #include <string.h> #include <AVR/interrupt.h> #include <AVR/signal.h> #define BAUD 9600UL #define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1) uint8_t buffer; char *UARTText; char UARTzeiche... | |||
10 - Zeitnehmung -- Zeitnehmung | |||
Hallo!
Hallo! Ich möchte eine Zeitmessung mit einer Zwischenzeit bauen, die Ausgabe erfolgt auf einer LCD-Anzeige und das ganze soll natürlich interrupt gesteuert laufen(Timer0). Ich habe einen PIC-Controller 16F84. Nun habe ich folgendes Problem: Ich hätte gerne dass die Zeitanzeige bei 00:0 (sec:zehntel) startet. In meiner bisherigen Interuptroutine habe ich aber bis lang noch mit dem Sekundenzähler zu kämpfen.Bin schon froh dass es ziemlich genau von 0 bis 9 im sekundentakt zählt. Wie funktioniert ein Überlauf? In diesem Programm funktioniert er leider nicht wie gewünscht:-( Meine Interruptrutine schaut so aus: interrupt int_server (void) { int_save_registers if (INTCON.2 == 1) { count++; if (count == 61) { count =0 ; counter++; if (counter == 10) counter =0 ; } byte = 0x0c0; //Wechsel in die nächste Zeile SendCmd (); //Positionsangabe am Display byte = 0x0c5; //An stelle 5 SendCmd (); //Positionsangabe am Display byte = counter+48; //ASCII-Code SendChar (); if(counter == 10) { zehner++; byte = 0x0c5; //Zeile 2;St... | |||
11 - Auf und Abwärtszähler in 5er Schritten -- Auf und Abwärtszähler in 5er Schritten | |||
Hallo,
das müßte der kleinste schaffen , den es gibt: AVR AT90S1200. Die Ausgabe auf das Display erfolgt folgendermaßen: Die Zahl in zwei Ziffern zerlegen, Einer und Zehner. Zu diesem BCD-Wert den ASCII Wert der Zahl Null addierern und als Wert in Display schieben. Optional kann man die Zehner-Stelle auf null prüfen und dort ein Leerzeichen setzen, nennt man unterdrückung von führenden Nullen. Vor jeder Ziffernausgabe muß der Cursor oder auch Schreibposition dem Display erneut mitgeteilt werden, sonst schreibt es der Reihe nach weg. Die Displays haben meist 16 Zeichen pro Zeile, und man kann auch einen kleinen Text mit hinein schreiben. Als Display kann man solche nehmen, die HD44780 kompatibel sind. Gibt es bei Pollin recht günstig. Zum Progsen gibt es z.Bsp. Pony-Prog. Als Prog.-Adaptor findest Du viele Minimallösungen die direkt am Druckerport laufen, im Netz. mfG.... | |||
12 - Initialisierung LCD-display 4-bittig? -- Initialisierung LCD-display 4-bittig? | |||
Hallo, bevor die Tonne gefüllt wird, einfach her damit. !
Der Baustein darauf erwartet alle Daten als 8 bit Wort. Im 4-Bit Betrieb werden nur die Datenleitungen D4 bis D7 benutzt. Ist der Controller erst mal im 4 Bit betrieb, mußt Du alle 8bit Datenwörter in zwei 4 Bit Wörter ( nibbles ) zerlegen, und übertragen. Da viele Steuerbefehle mit 0000 anfangen, ist das erste nibble auch 0000. Dann mußt Du dem Controller mitteilen ,das das Display eingeschaltet ist, ob der Cursor sichtbar und nicht blinkt usw.usw. Das ist die Konfigurations-Sequenz. Und dann fleißig die Nummern der Buchstaben ( ASCII`s ) senden.Hier ein altes Beispiel, leider für Atmel, aber Assembler-programmierer verstehen das auch ohne weitere Erklärung.>> bitmas ist eine Maske 00001111 | |||
13 - DMX-Empfangs-Programm für AVR -- DMX-Empfangs-Programm für AVR | |||
also, bevor ich jetzt tausendmal nachfrage, poste ich doch einfach mal den programmtext, und du kannst dann ja mal das nötige verändern. falls du da die zeit zu hast ![]() $baud = 250000 On Urxc Rx_sub Enable Serial Declare Sub Get_byte '******************************************************************************* Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.6 , Rs = Porta.4 Config Lcd = 16 * 2 Cls Cursor Off '******************************************************************************* Do 'hier soll erstmal nur der wert des eingestellten dmx-kanals in eine varible geschrieben werden! Loop '******************************************************************************* $asm Get_byte: ' das unterprogramm aus dem ASM-Listing ' inc dmx_countL mußt du als inc r22 schreiben ' so wie es in den .def steht ' also die Namen gegen die Register tauschen ' 8515 mit 8MHz .include "8515def.inc" .equ Channels_all = 1 ... |
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! gerechnet auf die letzten 30 Tage haben wir 12 Beiträge im Durchschnitt pro Tag heute wurden bisher 0 Beiträge verfasst 8 Besucher in den letzten 60 Sekunden alle 7.50 Sekunden ein neuer Besucher ---- logout ----su ---- logout ---- |