Advertisement
Guest User

Untitled

a guest
May 26th, 2015
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. #include <p24fj128ga010.h>
  2.  
  3. _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF)
  4. _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI)
  5.  
  6. #define LCDDATA 1
  7. #define LCDCMD 0
  8. #define PMDATA PMDIN1
  9. #define SCALE 308L
  10.  
  11.  
  12. void LCDinit(void){
  13. PMCON=0x83BF;
  14. PMMODE=0x3FF;
  15. PMAEN=0x0001;
  16.  
  17. T1CON=0x8030; //inicjalizacja Timer1
  18. TMR1=0; while(TMR1<2000); //32ms
  19.  
  20. PMADDR=LCDCMD;
  21. PMDATA=0b00111000;
  22.  
  23. TMR1=0; while(TMR1<3); //48us
  24.  
  25. PMDATA=0b00001100; //wlacznie wyswietlacza, kursor wylaczony, mruganie wylaczone
  26. TMR1=0; while(TMR1<3); //48us
  27.  
  28. PMDATA=0b00000001; //wyczyszczenie wyswietlacza
  29. TMR1=0; while(TMR1<100); //1,6ms
  30.  
  31. PMDATA=0b00000110; //zwiekszenie kursora bez przesuniecia
  32. TMR1=0; while(TMR1<100);
  33. }//LCDinit
  34.  
  35. char LCDread(int addr){
  36. int dummy;
  37. while(PMMODEbits.BUSY);
  38. PMADDR=addr;
  39. dummy=PMDATA;
  40. while(PMMODEbits.BUSY);
  41. return (PMDATA);
  42. } //LCDread
  43.  
  44. #define LCDbusy() LCDread(LCDCMD) & 0x80
  45. #define LCDaddr() LCDread(LCDCMD) & 0x7F
  46. #define getLCD() LCDread(LCDDATA)
  47.  
  48. void LCDwrite(int addr, char c){
  49. while(LCDbusy());
  50. while(PMMODEbits.BUSY); //czekamy na PMP, az bedzie dostepne
  51. PMADDR=addr;
  52. PMDATA=c;
  53. }//LCDwrite
  54.  
  55. #define putLCD(d) LCDwrite(LCDDATA, (d))
  56. #define LCDcmd(c) LCDwrite(LCDCMD, (c))
  57. #define LCDhome() LCDwrite(LCDCMD, 2)
  58. #define LCDclr() LCDwrite(LCDCMD, 1)
  59. #define LCDreturn() LCDwrite(LCDCMD, 192)
  60.  
  61. void putsLCD(char *s){
  62. while(*s)
  63. putLCD(*s++);
  64. }//putsLCD
  65.  
  66. int main(void){
  67. unsigned long i;
  68.  
  69. LCDinit(); //inicjalizacja wyswietlacza
  70.  
  71. while(1){ //petla nieskonczona
  72.  
  73. for(i=1001L*SCALE;i>0;i--)Nop(); //sekunda przerwy
  74. LCDclr(); //czysczenie zapchanego wyswietlacza
  75. putsLCD("MARIAN SPAWACZ"); //wypis na linii
  76.  
  77. for(i=1001L*SCALE;i>0;i--)Nop(); //sekunda przerwy
  78. LCDclr(); //zapchany wyswietlacz - czyscimy
  79.  
  80. putsLCD("Y"); //pierwsza linia
  81. for(i=1001L*SCALE;i>0;i--)Nop();
  82. LCDclr();
  83. putsLCD("MY"); //pierwsza linia
  84. for(i=1001L*SCALE;i>0;i--)Nop();
  85. LCDclr();
  86. putsLCD("AMY"); //pierwsza linia
  87. for(i=1001L*SCALE;i>0;i--)Nop();
  88. LCDclr();
  89. putsLCD("ZAMY"); //pierwsza linia
  90. for(i=1001L*SCALE;i>0;i--)Nop();
  91. LCDclr();
  92. putsLCD("SZAMY"); //pierwsza linia
  93. for(i=1001L*SCALE;i>0;i--)Nop();
  94. LCDclr();
  95. putsLCD("ASZAMY"); //pierwsza linia
  96. for(i=1001L*SCALE;i>0;i--)Nop();
  97. LCDclr();
  98. putsLCD("RASZAMY"); //pierwsza linia
  99. for(i=1001L*SCALE;i>0;i--)Nop();
  100. LCDclr();
  101. putsLCD("PRASZAMY"); //pierwsza linia
  102. for(i=1001L*SCALE;i>0;i--)Nop();
  103. LCDclr();
  104. putsLCD("APRASZAMY"); //pierwsza linia
  105. for(i=1001L*SCALE;i>0;i--)Nop();
  106. LCDclr();
  107. putsLCD("ZAPRASZAMY"); //pierwsza linia
  108. for(i=1001L*SCALE;i>0;i--)Nop();
  109. LCDclr();
  110. putsLCD(" "); //pierwsza linia
  111. for(i=1001L*SCALE;i>0;i--)Nop();
  112. LCDclr();
  113. putsLCD(" "); //pierwsza linia
  114. for(i=1001L*SCALE;i>0;i--)Nop();
  115. LCDclr();
  116.  
  117.  
  118. LCDreturn(); //skaczemy do drugiej linii
  119. putsLCD("0700 880 774"); //druga linia
  120.  
  121. }//koniec petli niesk.
  122.  
  123. return 0;
  124. }
  125.  
  126. /*
  127.  
  128. putLCD(char) - wstawia jeden znak na wyświetlacz
  129. LCDreturn() - ustawia karetke w drugiej linii
  130. putsLCD(char*) - wyswietla znak po znaku na wyswietlaczu bez zawijania - nie wpisywac wiecej niz 16 znakow
  131. LCDclr() - czysci wyswietlacz
  132. LCDhome() - powrot karetki do pierwszego znaku pierwszej linii
  133. pozostałych f-cji nie dotykać, albo pytać
  134.  
  135. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement