/********************************************************************* * * * Filename: lcd.c * * Date: 23/01/2013 * * Version: 1.0 * * Author: Goran Ljubic * * * ********************************************************************** * * * Architecture: Microchip PIC Enhanced Mid-range Core * * Processor: 16F1827 * * Compiler: MPLAB XC8 v1.12 (Free mode) * * * ********************************************************************** * * * Description: Primer * * * * U primeru je obradeno pisanje na HD447780 kompatibilnom LCD. * * * * * *********************************************************************/ #include #include "hd447780.h" #define _XTAL_FREQ 4000000 // frekvencija na kojoj radi interni oscilator. Neophodno definisati zbog delay() funkcija /****************************************************************************************************************************** * CONFIGURATION WORDS * Watchdog timer is disabled, Internal RC oscillator I/O function on CLKIN pin, MCLR/VPP pin function is digital input, * Program memory code protection is enabled, Brown-out Reset disabled, Power-up timer enabled, * Data memory code protection is enabled, CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin, * Internal/External Switchover mode is disabled, Fail-Safe Clock Monitor is disabled, * 000h to FFFh flash memory write protected, 4x PLL disabled, Stack Overflow or Underflow will not cause a Reset, * High-voltage on MCLR/VPP must be used for programming * * ******************************************************************************************************************************/ __CONFIG(WDTE_OFF & FOSC_INTOSC & MCLRE_OFF & CP_ON & BOREN_OFF & PWRTE_ON & CPD_ON & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF); __CONFIG(WRT_ALL & PLLEN_OFF & STVREN_OFF & LVP_OFF); /****************************** * MAIN PROGRAM * ******************************/ void main(void) { unsigned char i; /****************************** * INITIALISATION * ******************************/ OSCCON = 0b01101010; // 4x PLL is disabled, 4 MHz HF Internal oscillator block ANSELA = 0; // Svi pinovi porta A konfigurisani kao digitalni I/O TRISA = 0b11111111; // Svi pinovi porta A konfigurisani kao ulazni ANSELB = 0; // Svi pinovi porta B konfigurisani kao digitalni I/O TRISB = 0b11111111; // Pinovi RB0-RB4 ulazni, pinovi RB4-RB7 izlazni XLCDInit(); XLCDClear(); XLCDGoto(0,0); XLCDPutROMString("INICIJALIZACIJA "); XLCDGoto(1,0); XLCDPutROMString(" DISPLEJA "); _delay(2000000); // Pauza od približno dve sekunde /****************************** * MAIN LOOP * ******************************/ XLCDClear(); XLCDGoto(0,6); XLCDPutROMString("i = "); while(1) { for(i=0;i<10;i++) { XLCDGoto(0,10); XLCDPut(i + 0x30); // na LCD se šalje ascii karakter _delay(1000000); // Pauza od približno jedne sekunde } } }