Advertisement
Latkoski

posledna

Feb 18th, 2017
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 KB | None | 0 0
  1. sbit LCD_RS at RA4_bit; // porta za komunikacija za LCD e A
  2. sbit LCD_EN at RA5_bit;
  3. sbit LCD_D4 at RA0_bit;
  4. sbit LCD_D5 at RA1_bit;
  5. sbit LCD_D6 at RA2_bit;
  6. sbit LCD_D7 at RA3_bit;
  7. sbit LCD_RS_Direction at TRISA4_bit;
  8. sbit LCD_EN_Direction at TRISA5_bit;
  9. sbit LCD_D4_Direction at TRISA0_bit;
  10. sbit LCD_D5_Direction at TRISA1_bit;
  11. sbit LCD_D6_Direction at TRISA2_bit;
  12. sbit LCD_D7_Direction at TRISA3_bit;
  13. char KeypadPort at PORTD; // porta za komunikacija za Keypad e D
  14. int kp;
  15. int length = 0;
  16. char bukva;
  17. char celosen[3];
  18. int prva_cifra = 0;
  19. int vtora_cifra = 0;
  20. int brojacSaati = 0;
  21. int flagEnter=0;
  22. int suma=0;
  23. int cnt =0;
  24. int moneti=0;
  25. void interrupt()
  26. {
  27. if(TMR0IF_bit == 1)
  28. {
  29. TMR0IF_bit = 0;
  30. TMR0 = 251;
  31. cnt++;
  32. }
  33. }
  34. void main(){
  35. ANSEL = 0x00;
  36. ANSELH = 0x00;
  37. TRISB.B0 = 0xFF; // senzor za detekcija na moneta vo avtomatot (rb0)
  38. TRISB.B1 = 0xFF; // b1,b2,b3 se za detekcija na vidot na monetata (vlezni)
  39. TRISB.B2 = 0xFF;
  40. TRISB.B3 = 0xFF;
  41. INTCON = 0b10100000;
  42. OPTION_REG = 0b10000110;
  43. TMR0 = 251;
  44. // cnt < 274 za 70ms
  45. Lcd_Init();
  46. while(1){
  47. Lcd_Cmd(_LCD_CLEAR);
  48. Lcd_Cmd(_LCD_CURSOR_OFF);
  49. Lcd_Out(1,1,"Vnesi parking ID");
  50. do{
  51. kp = 0;
  52. do
  53. kp = Keypad_Key_Click();
  54. while(!kp);
  55.  
  56. switch (kp)
  57. {
  58. case 1: kp = 49; break; // 1
  59. case 5: kp = 50; break; // 2
  60. case 9: kp = 51; break; // 3
  61. case 13: kp = 52; break; //4
  62. case 2: kp = 53; break;//5
  63. case 6: kp = 54; break;//6
  64. case 10: kp = 55; break;//7
  65. case 14: kp = 56; break;//8
  66. case 3: kp = 57; break;//9
  67. case 7: kp = 48; break; // 3
  68. case 11: kp = 33; brojacSaati++; break;// +
  69. case 15: kp = 34; brojacSaati--; break;// -
  70. case 4: kp = 65; break;//A
  71. case 8: kp = 66; break;//B
  72. case 12: kp = 67; break;//C
  73. case 16: kp = 1; break;//ENTER
  74. }
  75.  
  76. if(kp != 1 && (kp == 65 || kp == 66 || kp == 67) && (kp !=33 && kp !=34) && length == 0){
  77. if(kp == 65){
  78. Lcd_Cmd(_LCD_CLEAR);
  79. Lcd_Cmd(_LCD_CURSOR_OFF);
  80. Lcd_Out(1,1,"A");
  81. length++;
  82. bukva = "A";
  83. }
  84. else if(kp == 66){
  85. Lcd_Cmd(_LCD_CLEAR);
  86. Lcd_Cmd(_LCD_CURSOR_OFF);
  87. Lcd_Out(1,1,"B");
  88. length++;
  89. bukva = "B";
  90. }
  91. else if(kp == 67){
  92. Lcd_Cmd(_LCD_CLEAR);
  93. Lcd_Cmd(_LCD_CURSOR_OFF);
  94. Lcd_Out(1,1,"C");
  95. length++;
  96. bukva = "C";
  97. }
  98. } //prviot vnes da ne e cifra, da ne e enter i da ne e plus ili minus
  99. else if(kp != 16 && (kp !=33 && kp !=34) && length == 1){
  100. if(kp == 49){
  101. prva_cifra = 1;
  102. Lcd_Out(1,2,"1");
  103. length++;
  104. }
  105. else if(kp == 50){
  106. prva_cifra = 2;
  107. Lcd_Out(1,2,"2");
  108. length++;
  109. }
  110. else if(kp == 51){
  111. prva_cifra = 3;
  112. Lcd_Out(1,2,"3");
  113. length++;
  114. }
  115. else if(kp == 52){
  116. prva_cifra = 4;
  117. Lcd_Out(1,2,"4");
  118. length++;
  119. }
  120. else if(kp == 53){
  121. prva_cifra = 5;
  122. Lcd_Out(1,2,"5");
  123. length++;
  124. }
  125. else if(kp == 54){
  126. prva_cifra = 6;
  127. Lcd_Out(1,2,"6");
  128. length++;
  129. }
  130. else if(kp == 55){
  131. prva_cifra = 7;
  132. Lcd_Out(1,2,"7");
  133. length++;
  134. }
  135. else if(kp == 56){
  136. prva_cifra = 8;
  137. Lcd_Out(1,2,"8");
  138. length++;
  139. }
  140. else if(kp == 57){
  141. prva_cifra = 9;
  142. Lcd_Out(1,2,"9");
  143. length++;
  144. }
  145. }
  146. else if(kp != 16 && (kp !=33 && kp !=34) && length == 2){
  147. if(kp == 49){
  148. vtora_cifra = 1;
  149. Lcd_Out(1,3,"1");
  150. length++;
  151. }
  152. else if(kp == 50){
  153. vtora_cifra = 2;
  154. Lcd_Out(1,3,"2");
  155. length++;
  156. }
  157. else if(kp == 51){
  158. vtora_cifra = 3;
  159. Lcd_Out(1,3,"3");
  160. length++;
  161. }
  162. else if(kp == 52){
  163. vtora_cifra = 4;
  164. Lcd_Out(1,3,"4");
  165. length++;
  166. }
  167. else if(kp == 53){
  168. vtora_cifra = 5;
  169. Lcd_Out(1,3,"5");
  170. length++;
  171. }
  172. else if(kp == 54){
  173. vtora_cifra = 6;
  174. Lcd_Out(1,3,"6");
  175. length++;
  176. }
  177. else if(kp == 55){
  178. vtora_cifra = 7;
  179. Lcd_Out(1,3,"7");
  180. length++;
  181. }
  182. else if(kp == 56){
  183. vtora_cifra = 8;
  184. Lcd_Out(1,3,"8");
  185. length++;
  186. }
  187. else if(kp == 57){
  188. vtora_cifra = 9;
  189. Lcd_Out(1,3,"9");
  190. length++;
  191. }
  192.  
  193. }
  194. else if(length == 3 && kp == 1){
  195. celosen[0] = bukva;
  196. IntToStr(prva_cifra,celosen[1]);
  197. IntToStr(vtora_cifra,celosen[2]);
  198. //Lcd_Out(2,1,celosen);
  199.  
  200.  
  201. //vo celosen ja cuvam cela sifra, pr. B32, C23 (to so trebit da go proveram vo EEPROM)
  202. //Lcd_Cmd(_LCD_CLEAR);
  203. //Lcd_Cmd(_LCD_CURSOR_OFF);
  204. //Lcd_Out(1,1,celosen);
  205. //length++;
  206. }
  207. /*else if(kp == 1 && flagEnter == 0 && length == 4){ // za 4tiot test primer Suma 00 den kaj so e
  208. Lcd_Cmd(_LCD_CLEAR);
  209. Lcd_Cmd(_LCD_CURSOR_OFF);
  210. Lcd_Out(1,1,"PARK:");
  211. Lcd_Out(1,5,celosen);
  212. Lcd_Out(1,10,"CAS");
  213. Lcd_Out(1,14,"00");
  214. Lcd_Out(2,1,"Naplati");
  215. Lcd_Out(2,8,"0");
  216. Lcd_Out(2,10,"den");
  217. flagEnter = 1;
  218. } */
  219. else if(kp == 1 && flagEnter == 1){
  220. suma = brojacSaati*15;
  221. if(suma>0){
  222. Lcd_Cmd(_LCD_CLEAR);
  223. Lcd_Cmd(_LCD_CURSOR_OFF);
  224. Lcd_Out(1,1,"PARK:");
  225. Lcd_Out(1,5,celosen);
  226. Lcd_Out(1,10,"CAS");
  227. Lcd_Out(1,14,brojacSaati);
  228. Lcd_Out(2,1,"Naplati");
  229. Lcd_Out(2,8,suma);
  230. Lcd_Out(2,11,"den");
  231. }
  232. flagEnter == 2;
  233. }
  234. else if(kp == 2 && flagEnter == 2){
  235. if(cnt < 274){
  236. if(PORTB.B1 == 1 && PORTB.B2 == 0 && PORTB.B3 == 0)
  237. moneti = 1;
  238. else if(PORTB.B2 == 1 && PORTB.B1 == 0 && PORTB.B3 == 0)
  239. moneti = 2;
  240. else if(PORTB.B1 == 1 && PORTB.B2 == 1 && PORTB.B3 == 0)
  241. moneti = 5;
  242. else if(PORTB.B3 == 1 && PORTB.B1 == 0 && PORTB.B2 == 0)
  243. moneti = 10;
  244. else if(PORTB.B3 == 1 && PORTB.B1 == 1 && PORTB.B2 == 0)
  245. moneti = 20;
  246. else if(PORTB.B2 == 1 && PORTB.B3 == 1 && PORTB.B1 == 0)
  247. moneti = 50;
  248. }
  249. else{
  250. Lcd_Cmd(_LCD_CLEAR);
  251. Lcd_Cmd(_LCD_CURSOR_OFF);
  252. Lcd_Out(1,1,"Zemete tiket: ");
  253. }
  254. }
  255. else {
  256. Lcd_Cmd(_LCD_CLEAR);
  257. Lcd_Cmd(_LCD_CURSOR_OFF);
  258. Lcd_Out(1,1,"GRESHKA");
  259. break;
  260. } //pogresen vnese
  261. }while(1);
  262. }
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement