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 -