Advertisement
Latkoski

Untitled

Feb 20th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.36 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;
  19. int vtora_cifra;
  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.  
  35. void main(){
  36. ANSEL = 0x00;
  37. ANSELH = 0x00;
  38. TRISB.B0 = 0xFF; // senzor za detekcija na moneta vo avtomatot (rb0)
  39. TRISB.B1 = 0xFF; // b1,b2,b3 se za detekcija na vidot na monetata (vlezni)
  40. TRISB.B2 = 0xFF;
  41. TRISB.B3 = 0xFF;
  42. INTCON = 0b10100000;
  43. OPTION_REG = 0b10000110;
  44. TMR0 = 251;
  45. // cnt < 274 za 70ms
  46. Lcd_Init();
  47. while(1){
  48. Lcd_Cmd(_LCD_CLEAR);
  49. Lcd_Cmd(_LCD_CURSOR_OFF);
  50. Lcd_Out(1,1,"Vnesi parking ID");
  51. do{
  52. kp = 0;
  53. do
  54. kp = Keypad_Key_Click();
  55. while(!kp);
  56.  
  57. switch (kp)
  58. {
  59. case 1: kp = 49; break; // 1
  60. case 5: kp = 50; break; // 2
  61. case 9: kp = 51; break; // 3
  62. case 13: kp = 52; break; //4
  63. case 2: kp = 53; break;//5
  64. case 6: kp = 54; break;//6
  65. case 10: kp = 55; break;//7
  66. case 14: kp = 56; break;//8
  67. case 3: kp = 57; break;//9
  68. case 7: kp = 48; break; // 3
  69. case 11: kp = 33; break;// +
  70. case 15: kp = 34; break;// -
  71. case 4: kp = 65; break;//A
  72. case 8: kp = 66; break;//B
  73. case 12: kp = 67; break;//C
  74. case 16: kp = 1; break;//ENTER
  75. }
  76.  
  77. if(kp != 1 && (kp == 65 || kp == 66 || kp == 67) && (kp !=33 && kp !=34) && length == 0){
  78. if(kp == 65){
  79. Lcd_Cmd(_LCD_CLEAR);
  80. Lcd_Cmd(_LCD_CURSOR_OFF);
  81. Lcd_Out(1,1,"A");
  82. length++;
  83. bukva = "A";
  84. celosen[0]=kp;
  85. }
  86. else if(kp == 66){
  87. Lcd_Cmd(_LCD_CLEAR);
  88. Lcd_Cmd(_LCD_CURSOR_OFF);
  89. Lcd_Out(1,1,"B");
  90. length++;
  91. bukva = "B";
  92. celosen[0]=kp;
  93. }
  94. else if(kp == 67){
  95. Lcd_Cmd(_LCD_CLEAR);
  96. Lcd_Cmd(_LCD_CURSOR_OFF);
  97. Lcd_Out(1,1,"C");
  98. length++;
  99. bukva = "C";
  100. celosen[0]=kp;
  101. }
  102. } //prviot vnes da ne e cifra, da ne e enter i da ne e plus ili minus
  103. else if(kp != 16 && (kp !=33 && kp !=34) && length == 1 && (kp != 65 && kp != 66 && kp != 67)){
  104. if(kp == 49){
  105. Lcd_Out(1,2,"1");
  106. length++;
  107. celosen[1]='1';
  108. }
  109. else if(kp == 50){
  110. prva_cifra = 2;
  111. Lcd_Out(1,2,"2");
  112. length++;
  113. celosen[1]='2';
  114. }
  115. else if(kp == 51){
  116. prva_cifra = 3;
  117. Lcd_Out(1,2,"3");
  118. length++;
  119. celosen[1]='2';
  120. }
  121. else if(kp == 52){
  122. prva_cifra = 4;
  123. Lcd_Out(1,2,"4");
  124. length++;
  125. celosen[1]='4';
  126. }
  127. else if(kp == 53){
  128. prva_cifra = 5;
  129. Lcd_Out(1,2,"5");
  130. length++;
  131. celosen[1]='5';
  132. }
  133. else if(kp == 54){
  134. prva_cifra = 6;
  135. Lcd_Out(1,2,"6");
  136. length++;
  137. celosen[1]='6';
  138. }
  139. else if(kp == 55){
  140. prva_cifra = 7;
  141. Lcd_Out(1,2,"7");
  142. length++;
  143. celosen[1]='7';
  144. }
  145. else if(kp == 56){
  146. prva_cifra = 8;
  147. Lcd_Out(1,2,"8");
  148. celosen[1]='8';
  149. length++;
  150. }
  151. else if(kp == 57){
  152. prva_cifra = 9;
  153. Lcd_Out(1,2,"9");
  154. length++;
  155. celosen[1]='9';
  156. }
  157. }
  158. else if(kp != 16 && (kp !=33 && kp !=34) && length == 2 && (kp != 65 && kp != 66 && kp != 67)){
  159. if(kp == 49){
  160. vtora_cifra = kp-'0';
  161. Lcd_Out(1,3,"1");
  162. length++;
  163. celosen[2]='1';
  164. }
  165. else if(kp == 50){
  166. vtora_cifra = 2;
  167. Lcd_Out(1,3,"2");
  168. length++;
  169. celosen[2]='2';
  170. }
  171. else if(kp == 51){
  172. vtora_cifra = 3;
  173. Lcd_Out(1,3,"3");
  174. length++;
  175. celosen[2]='3';
  176. }
  177. else if(kp == 52){
  178. vtora_cifra = 4;
  179. Lcd_Out(1,3,"4");
  180. length++;
  181. celosen[2]='4';
  182. }
  183. else if(kp == 53){
  184. vtora_cifra = 5;
  185. Lcd_Out(1,3,"5");
  186. length++;
  187. celosen[2]='5';
  188. }
  189. else if(kp == 54){
  190. vtora_cifra = 6;
  191. Lcd_Out(1,3,"6");
  192. length++;
  193. celosen[2]='6';
  194. }
  195. else if(kp == 55){
  196. vtora_cifra = 7;
  197. Lcd_Out(1,3,"7");
  198. length++;
  199. celosen[2]='7';
  200. }
  201. else if(kp == 56){
  202. vtora_cifra = 8;
  203. Lcd_Out(1,3,"8");
  204. length++;
  205. celosen[2]='8';
  206. }
  207. else if(kp == 57){
  208. vtora_cifra = 9;
  209. Lcd_Out(1,3,"9");
  210. length++;
  211. celosen[2]='9';
  212. }
  213. }
  214.  
  215. else if(kp == 33 && flagEnter == 1)
  216. brojacSaati++;
  217.  
  218. else if(kp == 34 && flagEnter == 1 && brojacSaati >= 1)
  219. brojacSaati--;
  220.  
  221. else if(kp == 1 && flagEnter == 0 && length == 3){
  222. Lcd_Cmd(_LCD_CLEAR);
  223. Lcd_Cmd(_LCD_CURSOR_OFF);
  224. Lcd_Out(1,1,"PARK:");
  225. Lcd_Out(1,6,celosen);
  226. Lcd_Out(1,11,"CAS");
  227. Lcd_Out(1,15,"00");
  228. Lcd_Out(2,1,"Naplati");
  229. Lcd_Out(2,9,"0");
  230. Lcd_Out(2,11,"den");
  231. flagEnter = 1;
  232. continue;
  233. }
  234.  
  235.  
  236.  
  237. else if(kp == 1 && flagEnter == 1){
  238. suma = brojacSaati*15;
  239. if(suma > 0){
  240. Lcd_Cmd(_LCD_CLEAR);
  241. Lcd_Cmd(_LCD_CURSOR_OFF);
  242. Lcd_Out(1,1,"PARK:");
  243. Lcd_Out(1,6,celosen);
  244. Lcd_Out(1,11,"CAS");
  245. if(brojacSaati == 1){
  246. Lcd_Out(1,15,"01");
  247. }
  248. else if(brojacSaati == 2){
  249. Lcd_Out(1,15,"02");
  250. }
  251. else if(brojacSaati == 3){
  252. Lcd_Out(1,15,"03");
  253. }
  254. Lcd_Out(2,1,"Naplati");
  255. Lcd_Out(2,9,suma);
  256. Lcd_Out(2,11,"den");
  257. }
  258. flagEnter == 2;
  259. }
  260.  
  261.  
  262.  
  263. else if(kp == 2 && flagEnter == 2){
  264. if(cnt < 274){
  265. if(PORTB.B1 == 1 && PORTB.B2 == 0 && PORTB.B3 == 0)
  266. moneti = 1;
  267. else if(PORTB.B2 == 1 && PORTB.B1 == 0 && PORTB.B3 == 0)
  268. moneti = 2;
  269. else if(PORTB.B1 == 1 && PORTB.B2 == 1 && PORTB.B3 == 0)
  270. moneti = 5;
  271. else if(PORTB.B3 == 1 && PORTB.B1 == 0 && PORTB.B2 == 0)
  272. moneti = 10;
  273. else if(PORTB.B3 == 1 && PORTB.B1 == 1 && PORTB.B2 == 0)
  274. moneti = 20;
  275. else if(PORTB.B2 == 1 && PORTB.B3 == 1 && PORTB.B1 == 0)
  276. moneti = 50;
  277. }
  278. else{
  279. Lcd_Cmd(_LCD_CLEAR);
  280. Lcd_Cmd(_LCD_CURSOR_OFF);
  281. Lcd_Out(1,1,"Zemete tiket: ");
  282. }
  283. }
  284.  
  285. else {
  286. Lcd_Cmd(_LCD_CLEAR);
  287. Lcd_Cmd(_LCD_CURSOR_OFF);
  288. Lcd_Out(1,1,"GRESHKA");
  289. Delay_ms(25);
  290. Lcd_Cmd(_LCD_CLEAR);
  291. Lcd_Cmd(_LCD_CURSOR_OFF);
  292. //Lcd_Out(1,1,"Vnesi parking ID");
  293. length = 0;
  294. flagEnter = 0;
  295. continue;
  296. }
  297. }while(1);
  298. }
  299. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement