Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <p24fj128ga010.h>
- _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
- _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
- #define LCDDATA 1
- #define LCDCMD 0
- #define PMDATA PMDIN1
- #define SCALE 308L
- void LCDinit(void){
- PMCON=0x83BF;
- PMMODE=0x3FF;
- PMAEN=0x0001;
- T1CON=0x8030; //inicjalizacja Timer1
- TMR1=0; while(TMR1<2000); //32ms
- PMADDR=LCDCMD;
- PMDATA=0b00111000;
- TMR1=0; while(TMR1<3); //48us
- PMDATA=0b00001100; //wlacznie wyswietlacza, kursor wylaczony, mruganie wylaczone
- TMR1=0; while(TMR1<3); //48us
- PMDATA=0b00000001; //wyczyszczenie wyswietlacza
- TMR1=0; while(TMR1<100); //1,6ms
- PMDATA=0b00000110; //zwiekszenie kursora bez przesuniecia
- TMR1=0; while(TMR1<100);
- }//LCDinit
- char LCDread(int addr){
- int dummy;
- while(PMMODEbits.BUSY);
- PMADDR=addr;
- dummy=PMDATA;
- while(PMMODEbits.BUSY);
- return (PMDATA);
- } //LCDread
- #define LCDbusy() LCDread(LCDCMD) & 0x80
- #define LCDaddr() LCDread(LCDCMD) & 0x7F
- #define getLCD() LCDread(LCDDATA)
- void LCDwrite(int addr, char c){
- while(LCDbusy());
- while(PMMODEbits.BUSY); //czekamy na PMP, az bedzie dostepne
- PMADDR=addr;
- PMDATA=c;
- }//LCDwrite
- #define putLCD(d) LCDwrite(LCDDATA, (d))
- #define LCDcmd(c) LCDwrite(LCDCMD, (c))
- #define LCDhome() LCDwrite(LCDCMD, 2)
- #define LCDclr() LCDwrite(LCDCMD, 1)
- #define LCDreturn() LCDwrite(LCDCMD, 192)
- void putsLCD(char *s){
- while(*s)
- putLCD(*s++);
- }//putsLCD
- int main(void){
- unsigned long i;
- LCDinit(); //inicjalizacja wyswietlacza
- while(1){ //petla nieskonczona
- for(i=1001L*SCALE;i>0;i--)Nop(); //sekunda przerwy
- LCDclr(); //czysczenie zapchanego wyswietlacza
- putsLCD("MARIAN SPAWACZ"); //wypis na linii
- for(i=1001L*SCALE;i>0;i--)Nop(); //sekunda przerwy
- LCDclr(); //zapchany wyswietlacz - czyscimy
- putsLCD("Y"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("MY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("AMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("ZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("SZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("ASZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("RASZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("PRASZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("APRASZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD("ZAPRASZAMY"); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD(" "); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- putsLCD(" "); //pierwsza linia
- for(i=1001L*SCALE;i>0;i--)Nop();
- LCDclr();
- LCDreturn(); //skaczemy do drugiej linii
- putsLCD("0700 880 774"); //druga linia
- }//koniec petli niesk.
- return 0;
- }
- /*
- putLCD(char) - wstawia jeden znak na wyświetlacz
- LCDreturn() - ustawia karetke w drugiej linii
- putsLCD(char*) - wyswietla znak po znaku na wyswietlaczu bez zawijania - nie wpisywac wiecej niz 16 znakow
- LCDclr() - czysci wyswietlacz
- LCDhome() - powrot karetki do pierwszego znaku pierwszej linii
- pozostałych f-cji nie dotykać, albo pytać
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement