이 튜토리얼에서는 PIC16F877A 마이크로 컨트롤러에있는 EEPROM을 사용하여 데이터를 저장하는 것이 얼마나 쉬운 지 배울 것입니다. 대부분의 실시간 프로젝트에서는 전원이 꺼져 있어도 지워서는 안되는 일부 데이터를 저장해야 할 수 있습니다. 이것은 복잡한 프로세스처럼 들릴 수 있지만 XC8 컴파일러의 도움으로이 작업은 한 줄의 코드를 사용하여 수행 할 수 있습니다. 데이터가 메가 바이트 단위로 큰 경우 SD 카드와 같은 저장 장치를 인터페이스하고 해당 데이터를 저장할 수 있습니다. 그러나 데이터가 작은 경우 이러한 피곤한 프로세스를 피할 수 있습니다. PIC 마이크로 컨트롤러에있는 EEPROM을 사용하여 데이터를 저장하고 언제든지 원하는 때에 검색 할 수 있습니다.
이 PIC EEPROM 튜토리얼 은 우리가 아주 기본적인 레벨에서 시작했던 일련의 PIC 마이크로 컨트롤러 튜토리얼의 일부입니다. 이전 튜토리얼을 배우지 않았다면 지금 살펴 보는 것이 좋습니다.이 튜토리얼에서는 LCD와 PIC 마이크로 컨트롤러의 인터페이스 및 ADC와 PIC 마이크로 컨트롤러 사용에 익숙하다고 가정하기 때문입니다.
PIC16F877A의 EEPROM:
EEPROM은 "Electronically Erasable and Programmable Read Only Memory"의 약자입니다. 이름에서 알 수 있듯이 PIC 마이크로 컨트롤러 내부에있는 메모리로 프로그래밍하여 데이터를 쓰고 읽을 수 있습니다. 여기에 저장된 데이터는 프로그램에서 그렇게 언급 된 경우에만 삭제됩니다. EEPROM에서 사용 가능한 저장 공간의 양은 각 마이크로 컨트롤러에 따라 다릅니다. 세부 정보는 평소와 같이 데이터 시트에 제공됩니다. PIC16F877A의 경우 사용 가능한 공간은 사양 데이터 시트에 언급 된대로 256 바이트입니다. 이제 간단한 실험 설정을 사용하여 이러한 256 바이트를 사용하여 데이터를 읽고 쓰는 방법을 살펴 보겠습니다.
회로도 및 설명:
프로젝트의 회로도는 위에 나와 있습니다. 우리는 저장되고 검색되는 데이터를 시각화하기 위해 LCD를 인터페이스했습니다. 일반 전위차계는 AN4 아날로그 채널에 연결되므로 가변 전압을 공급하면이 가변 전압이 EEPROM에 저장되는 데이터로 사용됩니다. 또한 RB0에서 푸시 버튼을 사용했는데,이 버튼을 누르면 아날로그 채널의 데이터가 EEPROM에 저장됩니다.
이 연결은 브레드 보드에서 만들 수 있습니다. PIC 마이크로 컨트롤러 의 핀아웃은 아래 표에 나와 있습니다.
S.No: |
핀 번호 |
핀 이름 |
연결됨 |
1 |
21 |
RD2 |
LCD의 RS |
2 |
22 |
RD3 |
LCD의 E |
삼 |
27 |
RD4 |
LCD의 D4 |
4 |
28 |
RD5 |
LCD의 D5 |
5 |
29 |
RD6 |
LCD의 D6 |
6 |
30 |
RD7 |
LCD의 D7 |
7 |
33 |
RBO / INT |
누름 단추 |
8 |
7 |
AN4 |
전위차계 |
PIC EEPROM 사용 시뮬레이션:
이 프로젝트에는 Proteus를 사용하여 설계된 시뮬레이션도 포함되며,이를 사용하여 하드웨어없이 프로젝트 작업을 시뮬레이션 할 수 있습니다. 이 시뮬레이션을위한 프로그램은이 튜토리얼의 끝에 제공됩니다. 여기에서 Hex 파일을 사용하여 전체 프로세스를 시뮬레이션 할 수 있습니다.
시뮬레이션 중에 LCD 화면에서 EEPROM에 저장된 현재 ADC 값과 데이터를 시각화 할 수 있습니다. 현재 ADC 값을 EEPROM에 저장하려면 RB0에 연결된 스위치를 누르기 만하면 저장됩니다. 시뮬레이션의 스냅 샷은 아래와 같습니다.
EEPROM 용 프로그래밍 PIC:
이 자습서의 전체 코드는이 자습서의 끝에 제공됩니다. 프로그램에서 ADC 모듈의 값을 읽어야하며 버튼을 누르면 해당 값을 EEPROM에 저장해야합니다. ADC 및 LCD 인터페이스에 대해 이미 배웠으므로 EEPROM에서 데이터를 저장하고 검색하는 코드에 대해 자세히 설명하겠습니다.
데이터 시트에 따르면 "이 장치에는 PIC16F877A의 주소 범위가 0000h에서 1FFFh까지 인 프로그램 플래시의 4 또는 8K 단어가 있습니다." 즉, 각 EEPROM 저장 공간에는 액세스 할 수있는 주소가 있으며 MCU에서 주소는 0000h에서 1FFFh까지 시작됩니다.
특정 EEPROM 주소에 데이터를 저장하려면 아래 줄을 사용하십시오.
eeprom_write (0, adc);
여기서 "adc"는 저장할 데이터가있는 정수 유형의 변수입니다. 그리고“0”은 데이터가 저장되는 EEPROM의 주소입니다. "eeprom_write"구문은 XC8 컴파일러에서 제공하므로 컴파일러에서 레지스터를 자동으로 처리합니다.
EEPROM에 이미 저장된 데이터를 검색하고 변수에 저장하려면 다음 코드 줄을 사용할 수 있습니다.
Sadc = (int) eeprom_read (0);
여기서 "Sadc"는 EEPROM의 데이터가 저장되는 변수입니다. 그리고“0”은 데이터를 검색하는 EEPROM의 주소입니다. "eeprom_read"구문은 XC8 컴파일러에 의해 제공되므로 레지스터는 컴파일러에 의해 자동으로 처리됩니다. EEPROM에 저장된 데이터는 16 진수 형식입니다. 따라서 구문 앞에 (int) 접두사를 붙여서 정수 유형으로 변환합니다.
일:
코드가 어떻게 작동하는지 이해하고 하드웨어를 준비하면 코드를 테스트 할 수 있습니다. 코드를 PIC 마이크로 컨트롤러에 업로드하고 설정에 전원을 공급합니다. 모든 것이 예상대로 작동하면 LCD에 현재 ADC 값이 표시되어야합니다. 이제 버튼을 눌러 ADC 값을 EEPROM에 저장할 수 있습니다. 이제 전체 시스템을 껐다가 다시 켜서 값이 저장되었는지 확인합니다. 전원을 켜면 이전에 저장된 값이 LCD 화면에 표시되어야합니다.
PIC Microcontroller EEPROM 을 사용하기위한이 프로젝트의 전체 작업은 아래 비디오에 나와 있습니다. 튜토리얼을 이해하고 즐기 셨기를 바랍니다. 의심스러운 점이 있으면 아래 댓글 섹션에 작성하거나 포럼에 게시 할 수 있습니다.