Gefunden für lcd ascii - Zum Elektronik Forum





1 - serielles Kommunikationsproblem -- serielles Kommunikationsproblem




Ersatzteile bestellen
  Heute habe ich auch einmal eine Frage.

Ich habe dieses LCD-Modul, das ich ansteuern möchte. Eine Suche brachte mich zu diesem Thread über einen 320x240 Pixel LCD-Controller im Textmodus. (Diese Seite lädt bei mir seeehr langsam. Aber bitte erst einmal weiter lesen! )
Der Controller arbeitet mit dem ATmega8 und wurde in Assembler programmiert. Das habe ich für Mikrocontroller noch nie getan, aber die Umstellung auf den im Programm schon vorhandenen Zeichensatz mit 10 Pixeln Höhe und auf 200 Pixelzeilen (20 Zeichenzeilen) war ja noch einfach.
Ich war schon mal begeistert, als ich danach schon etwas auf dem Bildschirm erkennen konnte. Allerdings hat dieses LCD 640 x 200 Pixel im Hochformat (sehr seltsam!), so daß nur die Hälfte der Bildschirmbreite mit lauter magersüchtigen Zeichen ausgenutzt wurde. Mit viel Versuch und noch mehr Irrtum ist es mir aber gelungen, das Programm so zu ergänzen, daß jetzt (neu definierte) Ze...
2 - 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 ...








3 - ASCII Coder/Encoder IC gesucht -- ASCII Coder/Encoder IC gesucht
ASCII ist weit mehr als nur Buchstaben.
Das heißt, du möchtest an 7 Leitungen binär bestimmte Signale anlegen und auf einem Display soll dann der entsprechende Buchstabe bzw. das entsprechende Zeichen erscheinen? Ich glaube fast nicht, dass es dazu ein fertiges IC gibt, zumal die Darstellung nicht so simpel ist, wie auf einer 7-Segment-Anzeige. Die (für mich) einfachste Lösung wäre ein µC und ein kleines LCD-Display, aber dazu müsste der µC programmiert werden. ...
4 - Stand-alone Tastatur - machbar??? -- Stand-alone Tastatur - machbar???
Prinzipiell geht das so: Tastendruck -> Tastatur sendet sog. "Scancode" über den PS/2-Bus, der µC übersetzt das in ein ASCII-Zeichen und speichert es ab.

C++ ist schonmal nicht schlecht, für AVRs gibt es einen freien C-Compiler. Da gibts auch bestimmt schon fertige Librarys für das Tastaturprotokoll und das SD-Karteninterface samt FAT32-Dateisystem.


Zitat : arbeite ich mich gerne in neues ein, aber ich fürchte, dass das für den Anfang ein bischen komplex ist, oder? Aller anfang ist schwer Aber je nach dem wie talentiert du bist hast du das schnell begriffen.


Zitat : Stimmt es, dass man zum programmie...
5 - Grafisches Display ansteuern -- Grafisches Display ansteuern
Hallo!

Hab mich selbst mal mit einem 128*64 LCD am 8031 beschäftigt, damals in Assembler. Auf dem Display sind 2 Controller, rechte und Linke Hälfte. Habe zuerst Routinen für Punktansteuerung entwickelt (Umschaltung zwischen den Controllern damit Pixel fortlaufend ansprechbar), darauf aufbauend für Linien, Recktecke leer und gefüllt,...
Zum Initialisieren, Löschen, Scrollen habe ich die Controller parallel beschrieben, das Auslesen, sofern nötig, muß natürlich einzeln erfolgen.

Es war kein Zeichensatz im Display vorhanden, den hab ich im Speicher Abgelegt wo die Umsetung von ASCII-Zeichen in Pixel erfolgte, welche mit zuerstgenannten Routinen direkt in den Displayspeicher geschrieben wurden. Extra Framebuffer im Controller war nicht sinnvoll, wegen einigen geänderten Pixel immer den ganzen Displayinhalt zu schreiben wäre zu langsam gewesen.

Hier mal was aus meiner Linksammlung:

LCD-Projekte
LCD Info

mfg lötfix



[ Diese Nachricht wurde geändert von: Lötfix am &n...
6 - Energiemessgerät über PC auslesen ?!? -- Energiemessgerät über PC auslesen ?!?

Zitat : , also sollten die Werte ja irgendwie in digitaler Form im Gerät vorliegen. Sicher, aber wenn die Daten "nach draussen" kommen, liegen sie nur in der Form "Segmentmultiplex für LCD Ansteuerung" vor.

Es gibt einen Chip, der dieses Format in serielle ASCII-Daten wandeln kann und über einen Optokoppler an den PC schickt, nur leider ist der nicht einzeln zu kaufen. Er steckt in den Metex-Multimetern mit RS-232-Schnittstelle ...
...
7 - 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...
8 - LED-Matrix 8x64 ansteuern -- LED-Matrix 8x64 ansteuern
Das ist garnicht so einfach in den alten Datenbüchern noch etwas zu finden, aber die heutigen LCD-Controller müssten auch soetwas enthalten.
Hier http://hw.cz/pdf/elatec_lcd_family.pdf z.B. ist soetwas auf der vorletzten Seite abgebildet, allerdings nur als 5x7 Matrix.

Ein alter Trick um Speicherplatz zu sparen ist es ein Tag-Bit mitabzuspeichern.
Für eine 5x7 Zeichenmatrix z.B. brauchst du ja nur 7 Bit eines Bytes.
Das 8.Bit muss man aber nicht wegwerfen, sondern man kann es verwenden, den Controller anzuweisen die übrigen sieben Bits zwei oder drei Scans tiefer auszugeben. Auf diese Art sehen auch Unterlängen einer 5x7 Matrix vernünftig aus.


Ansonsten laufen die Teile als "ASCII Character Generator" herum (Es gibt auch andere, z.B. für das japanische Kata Kana).

Ausserdem ist im Grafikchip eines jeden PC soetwas versteckt, aber ich weiß leider nicht wie man diesen ROM vom Computer her auslesen kann.
Auch im Betriebssysten selbst und diversen Programmen sind solche Zeichengeneratoren abgespeichert.

Kannst ja mal den Gockel ein bischen befragen.
9 - Probleme bei LCD-Ansteuerung -- Probleme bei LCD-Ansteuerung
Moin,

Wie sollen wir denn den Fehler finden, wenn wir den Originalkode nicht haben?

Du musst keine Verzögerung, wie von Jorn vorgeschlagen, reinbauen, wenn du das Busyflag testest. Das tust du, ob du es richtig machst, kann ich dir nicht beantworten, da ich keinen PIC-Assembler verstehe, oder nur rudimentär.
Sollte das Testen des Busyflags allerdings nicht klappen, dann ist Jornbytes Einwand allerdings berechtigt.

Tabelle? Werden denn die richtigen Zeichen im ROM korrekt addressiert? Wann ist der String zuende? Nullterminiert? Oder bekannte Länge? Wenn er nicht nullterminiert ist, dann wird fleißig jeder weitere Datensalat aus dem Flash oder RAM gelesen und als Datenbyte ins Displayram kopiert. Nullterminiert bedeutet aber auch, dass du selbst überprüfen musst, ob das gelesene Zeichen ungleich NULL (0) ist! Sind die Zeichen unter den ASCII-Zeichen 0x0-0x7, dann wird der Inhalt des Character Generator RAMs aufs Display abgebildet. Das Ganze geht so schnell, dass du vermutlich kaum die ersten paar korrekten Zeichen des Strings sehen kannst, bevor sie mit Datensalat überschrieben werden. Ist dann noch ein Fehler in der LCD-Routine, was ich wie gesagt nicht herausfinden kann, dann ist es klar, dass das nich...
10 - Mikrokontrollerprint spinnt!! Grund: unbekannt -- Mikrokontrollerprint spinnt!! Grund: unbekannt
Hallo Rambodischien,

hab in der Empfangsroutine noch ein mögliches Problem gesehen:
Wenn cEmpfangen nicht mit Nullen initialisiert ist, werden mit
jedem Schritt zuviele Zeichen nach sEmpfangen angehängt. Denn es
fehlt bei cEmpfangen die Stringendekennung.

Entweder Du machst so:

cEmpfangen[z]=UDR;
cEmpfangen[z+1]=0; // hier aufpassen, dass das Array immer gross genug ist
strcat(sEmpfangen,cEmpfangen);

oder machst vor der for Schleife ein
memset(cEmpfangen,0x00,sizeof(cEmpfangen));

Zu dem Sonderzeichen ans Display:
Wenn das so ein Standard-HD44780-Typ ist, werden mit Ascii-Code 00-0F
CGRAM-Zeichen aktiviert. Das sind user-definierte Zeichen, die der
User ( nämlich Du ) wahrscheinlich nicht definiert hat. Von daher
wird dann irgendwelcher Bitmüll angezeigt.
Am besten du ersetzt nicht darstellbare Zeichen in der LCD-Anzeige
durch einen Punkt und/oder hinterlegst Sonderzeichen für 0x0A und 0x0D.

Gruß
Stefan
...
11 - Datenübertragung zwischen C-Control M-Unit und Atmega 8 -- Datenübertragung zwischen C-Control M-Unit und Atmega 8
Also ich hab zwar auch nie bascom programmiert, aber ich hab ne c-control hier rumliegen, die Staub ansetzt ^^
Ich hab jetz beim Einlesen in die Materie also einen ähnlich unbefangenen Blick auf die Dinge wie tvgucker.

Als allererstes möchte ich dich auf die seite
http://avrhelp.mcselec.com/bascom-avr.html
verweisen, falls du die noch nicht kennst.


Beim sende Programm scheint mir so weit alles in Ordnung zu sein,

Beim Programm das die Daten auf dem LCD anzeigt ist mir Spontan folgendes ins Auge gesprungen.

Du Definierst die Eingabevariable A als "String", Benutzt jedoch zum Lesen vom Port das commando "Inputbin", Das liest so viele Bytes wie es braucht vom Port, In dem Fall meines Erachtens nach die Länge des Strings, die bei deiner Definition Aber 0 ist.
Ich würde da auf jeden Fall als erstes mal den Datentyp der Variable auf Byte ändern, weil du dann sicher sein kannst, dass er nur versucht 1 Byte vom Port zu lesen.

Gibt es eigentlich einen bestimmten Grund warum du "inputbin" benutzt und nicht "Input" ? Meines Erachtens nach ist ...
12 - C: Variable wird unerklärlicherweise gelöscht.... -- C: Variable wird unerklärlicherweise gelöscht....
Hallihallo zusammen,

ich arbeite gerade an meinem ersten grösseren Projekt mit C.
Es gilt ein Nokia 3310 LCD anzusteuern.
Die Ansteuerung klappt wunderbar, nur hab ich ein Problem mit der Programmierung.

Es geht um folgendes.

Jede Sekunde wird vom Timer1 ein Output Compare A Interrupt ausgelöst. In der Interruptroutine wird eine Variable ("Sekunde") hochgezählt. Dieser neue Sekunden-Wert soll dann auf dem LCD erscheinen.

Dazu muss das LCD zuerst gelöscht werden.
Dazu werden zwei verschachtelte For-Schleifen durchlaufen.

Nun kommts. Sobald die erste Schleife den Wert "6" annimmt, springt der Wert von "Sekunde" völlig zusammenhangslos auf 0 zurück. (Im AVR Studio Simulator eruiert und durch Realität bestätigt.).

Mein Wert wird auf dem LCD also nicht hochgezählt, sondern bleibt immer 0...

Hier die Codeschnipsel:

Initialisierung der Variable:

Code :
13 - Nokia-3310-Display und PWM-Steuerung (fertiges AVR-Assembler-Projekt) -- Nokia-3310-Display und PWM-Steuerung (fertiges AVR-Assembler-Projekt)
Hallo,
Da ich keines der im Internet auffindbaren Programme vernünftig zum laufen bekam (um meine Displays zu testen) habe ich mir ein eigenes, recht umfangreiches Programm zur Ansteuerung eines Nokia3310-Displays geschrieben.

Das Programm ist bisher nur auf Text ausgelegt, Grafiken sind aber leicht "nachzurüsten".
Die ASCII-Zeichentabelle ist von http://www.microsyl.com/ übernommen und überarbeitet (Buchstaben haben jetzt eine Leerspalte mit im Gepäck)
Da ich das ganze dann auch irgendwie anwenden wollte, und ein Kumpel grade dabei war mich über Motorsteuerungen auszuquetschen habe ich eben ne PWM-Steuerung um den Code gebastelt.
Das Ergebnis gibt es im Anhang.
Bei mir ist das Programm in verschiedene .asm-Dateien untergliedert, die dann am Schluss per "include" ins Hauptprogramm eingebunden werden, für den Upload hab ich jetzt alles zuammengepackt.
Der Grund warum ich das hier poste ist einfach der, dass ich das LCD-Programm wohl nicht sonderlich häufig nutzen werde, und es schade um die Mühe fände, wenn es bei mir in irgendeinem Ordner vergammelt...

Bei Interesse gibt es auch noch nen Schaltplan vom Prototy...
14 - C-Control Unit M2.0 GET geht nicht -- C-Control Unit M2.0 GET geht nicht
Hi Leute,

Ich versuche gerade Daten über den COM port zu meiner C-Control zu senden aber irgendwie scheint der befehl GEt nicht zu reagiren. Ich programmiere mit basicpp und die software version meiner c-control ist OS V2.05.

Ich sende mit meinem Rechner den String "ASCII Zeichen 50 + ASCII Zeichen 13" also Chr(50)+Chr(13) der Programmcode für die C-Control sieht so aus:

define light port[16]
light = off
lcd.init

define data as Byte

#loop

if RXD then
get data
end if

lcd.pos 1,1
lcd.print data
lcd.print " "

goto loop

data ist nach dem senden 255 und der befehl RXD bleibt immer TRUE.
Mit Input funktioniert es aber. Ich sende mit meinem Rechner den String "50"+Chr(13)der Programmcode für die C-Control sieht so aus:

define light port[16]
light = off
lcd.init

define data as Byte

#loop

if RXD then
input data
end if

lcd.pos 1,1
lcd.print data
lcd.print " "

goto loop

data erhält den Wert 50 und RXD wird wieder False.
Was mache ich bei der Get version falsch? .


[ Diese Nachr...
15 - 433 mHz USB Funk LCD -- 433 mHz USB Funk LCD
hallo,
was für ein LCD willst du denn nehmen? wenns diese intelligenten mit controller sind (nicht grafisch), dann wird das ganze relativ einfach. die ansteuerung der zeichen vom display ist meist dem ASCII code sehr ähnlich, oder sogar gleich.
ich würde die zeichen einfach direkt per RS232 und ASCII übertragen. zusätzlich wirst du noch ein paar befehle brauchen für "neue zeile, lösche display, u.s.w."

mfg wulf ...
16 - RS232 Schnittstelle autom. umschalten, oder doppelt verwenden? -- RS232 Schnittstelle autom. umschalten, oder doppelt verwenden?
Hallo
Ich habe eine Photovoltaikanlage, an der ein Datenlogger angeschlossen ist. An diesem Datenlogger ist ein RS232 Ausgang der ASCII Daten an meinen PC überträgt, wo diese Daten dann in Exceltabellen abgelegt werden. Außerdem werden díese Daten noch in einem Softwareprogramm aufgearbeitet damit eine visuelle Darstellung im Internet möglich ist.
Nun kann man aber diesen RS232 Ausgang auch für ein LCD Display nutzen, um evt. im Wohnraum sich die aktuellen Werte anzeigen zu lassen.
Aber ich kann die RS232 nur einmal nutzen, entweder für den PC oder für die Anzeige.
Ist es nun möglich eine Umschaltung zu bauen das in einem Zeitzyklus die Schnittstelle einmal für den PC und einmal für das Diplay geschlatet wird.? Oder kann man doch diese Daten zweimal nutzen.
Da ich in der Elektronik Anfänger bin, wäre ich für gute Antwort dankbar.
Gruss
Günter
...
17 - 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...
18 - 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
19 - 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 . den teil für das lcd hab ich schon grösstenteils entfernt, weil der ja dann im bascom-text drin stehen soll.



$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 ...

Nicht gefunden ? Eventuell gibt es im Elektroforum Transistornet.de für Lcd Ascii eine Antwort
Im transitornet gefunden: Lcd Ascii


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 7 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 192519499   Heute : 18217    Gestern : 10744    Online : 739        7.8.2026    20:23
12 Besucher in den letzten 60 Sekunden        alle 5.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ----
xcvb ycvb
0.0376310348511