Page 826 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 826

다.  RFID태그  값  비교  및  LCD출력  프로그램

            1) 프로그램 설명
              RFID모듈이  ARM프로세서에게  태그의  값을  USART2를  이용해  전달하고,  일치하는  주민정보

            를  LCD에  출력하는  프로그램이다.  USART2_  IRQ_Handler  라는  함수는  수신인터럽트함수라고
            할  수  있다.  먼저  배열을  각각  선언해  지정된  태그의  값을  등록한다.  (tag1,  tag2,  tag3)
            rifd_tag라는  배열은  인식된  태그의  값을  저장하는  배열이다.  태그  값은  총  8개의  글자로  이루
            어져  있는데,  이  값이  한  번에  들어오는  것이  아니라  순차적으로  한  글자씩  들어온다.  예를  들

            어  태그의  값이  ‘ABCDEFGH’라고  한다면,  A가  수신되었을  때  IRQHandler에  들어오고  B가  수
            신되었을  때도,  C,D,E,F,G,H가  수신됐을  때도  IRQHandler에  들어오게  된다.  최종적으로  태그
            를  인식시키면  총  8번  IRQHandler에  들어오게  되는  것이다.  따라서  들어올  때마다  i라는  변수

            를  증가시켜  rfid_tag의  i번째  원소에  수신된  값을  하나씩  저장시킨다.  그리고  i가  7이  됐을  때,
            즉  태그의  값이  모두  저장됐을  때,  인식된  태그의  값을  등록된  태그의  값과  비교하여  일치하
            면  주민정보를  LCD에  출력한다.

              void USART2_IRQHandler(void) //수신인터럽트  함수
              {
                      u16 j=0;
                      if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
                      {
                          rfid_tag[i]=USART2->DR;     //태그값  저장
                          if(i==7)                            //태그값  저장  완료시  비교
                          {
                                 /* tag1값과  rfid_tag값  비교  후  일치하면  LCD에  글자  출력  */
                                if(rfid_tag[0]==tag1[0]){
                                        for(j=0;j<8;j++){
                                                 if(rfid_tag[j]==tag1[j]) k++;
                                                 if(k==8){
                                                     GLCD_displayStringLn(Line5, "     101-1004");
                                                      GLCD_displayStringLn(Line8, "       START");
                                                 }
                                         }
                                  }
                                 /* tag2값과  rfid_tag값  비교  후  일치하면  LCD에  글자  출력  */
                                  if(rfid_tag[0]==tag2[0]){
                                         for(j=0;j<8;j++){
                                                  if(rfid_tag[j]==tag2[j]) k++;
                                                  if(k==8){
                                                      GLCD_displayStringLn(Line5, "     101-1702");
                                                      GLCD_displayStringLn(Line8, "       START");
                                                  }



                                                         -  819  -
   821   822   823   824   825   826   827   828   829   830   831