Sari la conținut
ELFORUM - Forumul electronistilor

LCD 2x16 + 16f628a


pspsuceava

Postări Recomandate

  • Răspunsuri 33
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • pspsuceava

    18

  • Ionut Pavel

    6

  • Liviu M

    4

  • Mondan

    3

Top autori în acest subiect

Nu imi dau seama, am refacut toata partea hardware, si am trecut de la XC8 cu MPLAB la mikroc, dar oirucm am de gand sa revin, sa citesc ca lumea specificatiile hd47780, sa vad exact cum trebuie fiecare functie facuta si sa fac o routina de afisare pe display misto si usor de priceput.dar momentan ma bucur de succesul asta.

Link spre comentariu

In documentatia PICC pentru PIC16 exista un exemplu. ATENTIE ! portul de date este PORTB iar pentru RS,EN,R/W au utilizat biti din PORTAFunctioneaza, cu mici modificari datorate faptului la LCD-ul este puturosUite codul#include #include "lcd.h"#define LCD_RS RA3#define LCD_RW RA2#define LCD_EN RA1#define LCD_DATA PORTB#define LCD_STROBE() ((LCD_EN = 1),(LCD_EN=0))void strobe(void){ LCD_EN = 1; __delay_us(40); LCD_EN = 0;}/* write a byte to the LCD in 4 bit mode */void lcd_write(unsigned char c){ __delay_us(40); LCD_DATA = ( ( c >> 4 ) & 0x0F ); // high nibble LCD_STROBE(); LCD_DATA = ( c & 0x0F ); // low nibble LCD_STROBE();}/* * Clear and home the LCD */void lcd_clear(void){ LCD_RS = 0; // write command lcd_write(0x1); __delay_ms(2);}/* write a string of chars to the LCD */void lcd_puts(const char *s){ LCD_RS = 1; // write characters while(*s) lcd_write(*s++);}/* write one character to the LCD */void lcd_putch(char c){ LCD_RS = 1; // write characters lcd_write( c );}/* * Go to the specified position */void lcd_goto(unsigned char pos){ LCD_RS = 0; // write command lcd_write(0x80+pos);} /* initialise the LCD - put into 4 bit mode */void lcd_init(){ char init_value = 0x03; LCD_RS = 0; // write command LCD_EN = 0; LCD_RW = 0; __delay_ms(100); // wait 15mSec after power applied, LCD_DATA = init_value; //LCD_STROBE(); strobe(); __delay_ms(5); //LCD_STROBE(); strobe(); __delay_us(200); //LCD_STROBE(); strobe(); __delay_us(200); LCD_DATA = 0x02; // Four bit mode //LCD_STROBE(); strobe(); lcd_write(0x28); // Set interface length lcd_write(0x0C); // Display On, Cursor Off, Cursor Not Blink lcd_clear(); // Clear screen lcd_write(0x06); // Set entry Mode}M-am ambitionat si am scris cod pentru un singur port, atat datele cat si semnalele de control provin dintr-un singur port

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