criss Postat August 19, 2010 Partajează Postat August 19, 2010 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
godFather89 Postat August 23, 2010 Partajează Postat August 23, 2010 poate sunt putin offtopic, dat mai completa si cea mai buna librarie e cea care o scrii tu dupa nevoile tale. Link spre comentariu
nooob64 Postat August 24, 2010 Partajează Postat August 24, 2010 /* * 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
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum