Una biblioteca LCD buon codice

R

RollingEEE

Guest
Salve,
Ho bisogno di alcuni codici LCD per 8051 e microcontrollori AVR in C. Il codice dovrebbe essere molto portatile, e il ritardo dovrebbe essere indipendente dalla frequenza dell'oscillatore a garantire la portabilità.e la biblioteca dovrebbe avere tutte le funzioni standard di C come printf, mette, gotoxy, così come le funzioni aggiuntive come il cursore su...

NB I realmente vogliono fare della biblioteca, così se qualcuno è interessato, possiamo farlo insieme

 
Procione AVRlib C-Language Function Library per Atmel AVR processori.Scritto da Pascal Stang
Scarica AVRlib (con documentazione ed esempi di codice)
<img src="http://www.edaboard.com/images/smiles/icon_arrow.gif" alt="Arrow" border="0" />AVRlib (file zip, 1.5MB, Domenica 29 Ottobre 2006)<img src="http://www.edaboard.com/images/smiles/icon_arrow.gif" alt="Arrow" border="0" />AVRlib (Win32 pacchetto di installazione, 1.5MB, Domenica 29 Ottobre 2006)
 
<img src="http://www.edaboard.com/images/smiles/icon_arrow.gif" alt="Arrow" border="0" />Yet Another 8051-to-Interfaccia LCD
 
questo codice 8051 è buona, ma le porte sono quasi fisse, non flessibile, senza drasticamente modificare il codice.Ho provato a usarlo con S52, 16x04 display LCD, e Raisonace IDE (Ride), ma non ha funzionato
Last edited by RollingEEE il 15 feb 2007 16:52, modificato 1 volta in totale

 
Vuoi collegare la Raisonace 8.051 del codice sorgente del driver LCD?I'll check it

 
Biblioteca esempio utilizzando MicroC

/************************************************* **************************
;
; Questo modulo è presentata qui solo per servire come esempio per
; 8.051 programma di sviluppo.BiPOM Electronics fornisce questo modulo, come è e
, Non garantisce la sua funzionalità o idoneità per un particolare scopo.
; Si prega di e-mail ad eventuali domande e suggerimenti a info (at) bipom.com;
;
; Modulo: LCD.C
;
; Revision: 1.01
;
; Descrizione: routine di interfaccia per la guida di un alfanumerici
; Liquid Crystal Display modulo utilizzando 8.051 dei micro-controllori.
; LCD è guidato da solo 4 linee dati (4-bit)
;
; Questo programma è scritto usando micro-C Compiler da
; Dunfield Development Systems.
;
* /# include <8051io.h>
# include <8051bit.h> / * set Bit / macro chiaro * /
# include <8051reg.h># define P3.5 READ / * READ & WRITE = SET = Reset * /
# define STROBE P3.4 / * DATA STROBE (ENABLE) * /
# define CTRL P3.7 / * BIT DI CONTROLLO (CONTROL = RESET & DATA = SET) * /void InitLCD ();
void WriteCtrl (valore unsigned char);
void writeData (valore unsigned char);
void WriteCommon (valore unsigned char);
void WriteLCD (unsigned char * message);
void CursorHome ();
void CursorSet (pos unsigned char);main ()
(
/ * Inizializza il display LCD come prima cosa * /
InitLCD ();

/ * Scrivere un semplice messaggio al LCD * /
CursorHome ();
WriteLCD ( "Ciao");

/ * Tenere il messaggio per 2 secondi (1 secondo su MINI-MAX/51-C) * /
delay (2000);

/ * Azzerare il display LC * /
CursorHome ();
WriteLCD ( "");

/ * Esempio di scrivere su qualsiasi angolo del display * /
CursorSet (5);
WriteData ( 'x');
WriteData ( 'Y');
WriteData ( 'z');
)/************************************************* **************************
; Funzione: InitLCD
;
; Descrizione: Inizializza il display LCD
;
; Ingressi: nessuno
;
; Returns: niente
;************************************************* *************************/
void InitLCD ()
(
/ * Aspetta un po 'dopo il power-up * /
delay (200);

/ * Inizializza il display LCD a 4-bit * /
WriteCtrl (3);
delay (50);

WriteCtrl (3);
delay (10);

WriteCtrl (3);
delay (10);

WriteCtrl (2);
delay (10);

/ * Funzione Set * /
WriteCtrl (2);
delay (10);

WriteCtrl (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />

;
delay (10);

/ * Display OFF * /
WriteCtrl (0);
delay (10);

WriteCtrl (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />

;
delay (10);

/ * Display ON * /
WriteCtrl (0);
delay (10);

WriteCtrl (0x0F);
delay (10);

/ * Modo di inserimento * /
WriteCtrl (0);
delay (10);

WriteCtrl (6);
delay (10);

/ * Clear Screen * /
WriteCtrl (0);
delay (10);

WriteCtrl (1);
delay (100);

/ * Home Cursor * /
WriteCtrl (0);
delay (10);

WriteCtrl (2);
delay (100);
)void CursorSet (pos unsigned char)
(
WriteCtrl (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Fresco" border="0" />

;
ritardo (1);

WriteCtrl (pos);
ritardo (1);
)

void CursorHome ()
(
/ * Home Cursor * /
WriteCtrl (0);
ritardo (1);

WriteCtrl (2);
ritardo (1);
)

void WriteLCD (unsigned char * messaggio)
(
unsigned char;

for (i = 0; i <20; i )
(
if (! messaggio )
break;

WriteData (message );
)
)

void WriteCtrl (valore unsigned char)
(
clrbit (CTRL);

WriteCommon (value);
)

void writeData (valore unsigned char)
(
setbit (CTRL);

WriteCommon (value>> 4);
WriteCommon (value);
)

void WriteCommon (valore unsigned char)
(
clrbit (READ);

value = valore & 0x0F;

value = value <<2;
valore | = 0xC3;

P1 = valore;

setbit (STROBE);
ritardo (1);
clrbit (STROBE);
setbit (READ);

ritardo (1);
)

saluti

 
budhy ha scritto:

Vuoi collegare la Raisonace 8.051 del codice sorgente del driver LCD?
I'll check it
 

Welcome to EDABoard.com

Sponsor

Back
Top