Thứ Sáu, 25 tháng 12, 2015

BÀI 12 : EEPROM PIC16F877A CCS

Chào các bạn.
Hôm nay mình sẽ hướng dẫn các bạn sử dụng eeprom nội bên trong chip PIC 16F877A.
1. EEPROM
EEPROM được sử dụng với những mục đíc đặc biệt, để lưu trữ dữ liệu có nhớ (không bị mất khi mất điện), hoặc lưu trữ cấu hình cứng (ví dụ lưu trữ cấu hình FPGA). Trong chip PIC16F877A có khả năng lưu trữ 256bytes EEPROM. Trong CCS có hỗ trợ hai hàm đọc và viết dữ liệu EEPROM.
Hàm viết dữ liệu data vào địa chỉ addr:

write_eeprom(addr,data);
hàm đọc dữ liệu ở địa chỉ addr:
read_eeprom(addr);
2. Ví dụ: 
Trong ví dụ sau ta sẽ viết chuỗi kí tự “LAM 3  NGON” vào eeprom sau đó đọc lại chuỗi kí tự đó và hiển thị lên LCD 16x2.
Hàm viết một chuỗi kí tự vào địa chỉ addr.

void eeprom_write_string(unsigned int8 addr,unsigned char*str)
{
  while(*str)
  {
  write_eeprom(addr,*str);
  addr++;
  str++;
  }
}
Hàm đọc len kí tự từ eeprom bắt đầu từ địa chỉ addr.
void eeprom_read_string(unsigned int8 addr, unsigned char* str,unsigned int8 len)
{
  unsigned int8 i;
  for(i=0;i<len;i++)
  {
      str[i]=read_eeprom(addr+i);
  }
  str[len]=0;
}
- Đây là ảnh mô phỏng protues.

eeprom pic16f877a ccs

- Đây là code chương trình.

#include <main.h>
#include <var.h>
#include "lcd.c"
void eeprom_write_string(unsigned int8 addr,unsigned char*str)
{
   while(*str)
   {
   write_eeprom(addr,*str);
   addr++;
   str++;
   }
}
void eeprom_read_string(unsigned int8 addr, unsigned char* str,unsigned int8 len)
{
   unsigned int8 i;
   for(i=0;i<len;i++)
   {
      str[i]=read_eeprom(addr+i);
   }
   str[len]=0;
}
void main()
{  
   unsigned char str[20];
   unsigned char str2[20];
   LCD_Init();
   sprintf(str,"   DEMO EEPROM");
   delay_ms(10);
   LCD_Puts(str);
   delay_ms(1000);
   LCD_Clear();
   sprintf(str," xcvn.blogspot");
   LCD_Gotoxy(0,0);
   LCD_Puts(str);
   sprintf(str," LAM 3 NGON");
   eeprom_write_string(0x04,str);
   while(TRUE)
   {
      eeprom_read_string(0x04,str2,11);
      LCD_Gotoxy(2,1);
      LCD_Puts(str2);
   }

}
- Link download project Click here


EmoticonEmoticon