/* * File: lcd16x2.h * Author: elektronikawsrode inspirowany ksiażką "Mikrokontrolery PIC w praktycznych zastosowaniach" Pawła Borkowskiego */ #define _XTAL_FREQ 18000000 // rezonator jest na 18 MHz void Wyslij_do_LCD(unsigned char bajt) { //ustawienie EN EN_LCD = 1; //wysłanie 4 najstarszych bitów danych if(bajt & 0x80) DB7_LCD = 1; else DB7_LCD = 0; if(bajt & 0x40) DB6_LCD = 1; else DB6_LCD = 0; if(bajt & 0x20) DB5_LCD = 1; else DB5_LCD = 0; if(bajt & 0x10) DB4_LCD = 1; else DB4_LCD = 0; //zaczekaj 1 ?s __delay_us(1); //potwierdzenie wysłania danych (opadającym zboczem EN) EN_LCD = 0; //zaczekaj 1 ?s __delay_us(1); //ustawienie EN EN_LCD = 1; //wysłanie 4 najmłodszych bitów danych if(bajt & 0x08) DB7_LCD = 1; else DB7_LCD = 0; if(bajt & 0x04) DB6_LCD = 1; else DB6_LCD = 0; if(bajt & 0x02) DB5_LCD = 1; else DB5_LCD = 0; if(bajt & 0x01) DB4_LCD = 1; else DB4_LCD = 0; //zaczekaj 1 ?s __delay_us(1); //potwierdzenie wysłania danych (opadającym zboczem EN) EN_LCD = 0; //zaczekaj 37 ?s __delay_us(37); } void CzyscLCD() { RS_LCD = 0; Wyslij_do_LCD(1); RS_LCD = 1; //czekaj 1.64 ms __delay_us(1640); } void WyswietlLCD(char *napis, unsigned char ile) { for (unsigned int k = 0; k