Sari la conținut
ELFORUM - Forumul electronistilor

Library, driver pt. LCD HD44780


criss

Postări Recomandate

Buna,

 

Prin acest topic doresc sa 'gasesc' cel mai bun/complet set de drivere pt LCDuri(pot fi alfanumerice sau grafice) bazate pe HD44780. Poate sunt interesati si alti membri ai acestui forum ...

Sunt incepator si am utilizat doar una sg. http://homepage.hispeed.ch/peterfleury/lcdlibrary.zip acesta contine doar un set mic de comezi. Vreau sa gasesc una completa care poate sa fie usor de folosit.Sunt interesat in special pt reproducerea caracterelor speciale gen: sageata(ceva volum sus, jos) ...etc

 

The functions in the library which could be used are -

lcd_init (uint8_t dispAttr)-initialize display and select type of cursor.

lcd_putc(char c) - to print a single charater on current cursor position

lcd_puts(const char* s) - to print a string without auto linefeed.

lcd_gotoxy(uint8_t x, uint8_t y) - xth position on the yth line. X varies from 0 to 15 and y is 0 or 1.

lcd_clrscr() - clears the screen .

lcd_home() – goes to the initial position, i.e. equivalent to lcd_gotoxy(0,0)

lcd_puts_p (const char *progmem_s) - display string from program memory without auto linefeed.

lcd_command (uint8_t cmd)-send LCD controller instruction command.

lcd_data (uint8_t data)-send data byte to LCD controller

 

Ce librari, drivere folositi? eventual sa puneti linkul si sa specificati de ce ati ales.

 

Multumesc

Link spre comentariu
  • Răspunsuri 2
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • criss

    1

  • nooob64

    1

  • godFather89

    1

Top autori în acest subiect

/* * lcd_driver.h * *  Created on: Jul 14, 2010 *      Author: noob64 */int s_contor=0;int s_end = 0;unsigned char s_count=0;#ifndef LCD_DRIVER_H_#define LCD_DRIVER_H_#define RS   AVR32_PIN_PB12#define RW   AVR32_PIN_PB13#define E    AVR32_PIN_PB14#define DB4  AVR32_PIN_PB15#define DB5  AVR32_PIN_PB16#define DB6  AVR32_PIN_PB17#define DB7  AVR32_PIN_PB18#define LCD_BCKL AVR32_PIN_PB19#endif /* LCD_DRIVER_H_ */char lcd_buffer[21];void lcd_putchar(char c,unsigned char x,unsigned char y);//pune caracter la x,yvoid transferthedata (unsigned char data);//transfera datelevoid writecommand(unsigned char data);//scrie comanda la lcdvoid writedata(unsigned char data);//trimite comanda la lcdvoid init_lcd();//initializare lcdvoid write_char(char chr);//trimite caracter la lcd (fara pozitionare, se incrementeaza cursorul)void lcd_setup(unsigned char lcd , unsigned char bkl);//setare lcd on/off , bkl on/offvoid lcd_clear();//clear lcdvoid lcd_gotoxy(unsigned char x ,unsigned char y);//pozitionare cursor la x(coloana), y(linie)void lcd_puts(char *c,unsigned char x,unsigned char y);//pune string la x,yvoid lcd_delay();void scrolling_text(char *text,unsigned char x,unsigned char y,int delay); //afiseaza scrolling textunsigned char vector_init[]={12,0x03,0x03,0x03,0x02,0x02,0x0C,0x00,0x08,0x00,0x01,0x00,0x06};void transferthedata (unsigned char data){   if (data & 0x01)      setbit(DB4);   else if ( ! (data & 0x01) )      clrbit(DB4);   if ( ( data >> 1 ) & 0x01 )      setbit(DB5);   else if ( !(( data >> 1 ) & 0x01) )       clrbit(DB5);   if ( ( data >> 2 ) & 0x01 )      setbit(DB6);   else if ( !(( data >> 2 ) & 0x01) )       clrbit(DB6);   if ( ( data >> 3 ) & 0x01 )      setbit(DB7);   else if ( !(( data >> 3 ) & 0x01) )       clrbit(DB7);}void lcd_delay(){	cpu_delay_us(850,FOSC0_redef);}void writecommand(unsigned char data)   {      clrbit(E);      clrbit(RS);      clrbit(RW);      transferthedata(data);      setbit(E);      lcd_delay();      clrbit(E);      lcd_delay();//10ms   }void writedata(unsigned char data)   {      clrbit(E);      setbit(RS);      clrbit(RW);      transferthedata(data);      setbit(E);      lcd_delay();      clrbit(E);      lcd_delay();   }void init_lcd(){	unsigned char i=0;	delay_ms(30);	for(i=1;i<=vector_init[0];i++)	{		writecommand(vector_init[i]);		delay_ms(5);	}}void write_char(char chr){   writedata(chr >> 4);   writedata(chr);}void lcd_setup(unsigned char lcd , unsigned char bkl){	if(lcd == 1)	{		writecommand(0x00);		writecommand(0x0C); //display on  ; cursor , blink off	}	else	{		writecommand(0x00);		writecommand(0x00);	}	if(bkl == 1)		setbit(LCD_BCKL);	else		clrbit(LCD_BCKL);}void lcd_clear(){	writecommand(0x00);	writecommand(0x01);}void lcd_gotoxy(unsigned char x ,unsigned char y){if(y==2){	writecommand(0x0C); //muta cursorul	writecommand(0x00); //pe linia 2}if(y==1){	writecommand(0x00); //muta cursorul	writecommand(0x02); //pe linia 1}while(x!=0){	writecommand(0x01); //muta cursorul	writecommand(0x04); //in dreapta cu 1x--;}}void lcd_putchar(char c,unsigned char x,unsigned char y){	lcd_gotoxy(x,y);	write_char(c);}void lcd_puts(char *c,unsigned char x,unsigned char y){	unsigned char i;	lcd_gotoxy(x,y);	for(i=0;i<strlen(c);i++)		write_char(c[i]);}void scrolling_text(char *text,unsigned char x,unsigned char y,int delay){unsigned char i;char to_lcd[21];s_count++;if(s_count == delay){s_end = strlen(text);	for(i=0;i<=20;i++)	{		to_lcd[i] = text[i+s_contor];	}	if(s_contor <= s_end-20)		s_contor++;	else s_contor = 0;	lcd_puts(to_lcd,x,y);	s_count =0;}}

Libraria este facuta pentru AVR 32 bit , dar se poate adapta si pentru AVR 8 bit

Functia de scrolling text este facuta asa fel incit sa functioneze doar apelata intr-un ciclu ...

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări