- PIC16F877A'da EEPROM:
- Devre Şeması ve Açıklaması:
- PIC EEPROM Kullanmanın Simülasyonu:
- EEPROM için PIC programlama:
- Çalışma:
Bu eğitimde , PIC16F877A Mikrodenetleyicide bulunan EEPROM'u kullanarak verileri kaydetmenin ne kadar kolay olduğunu öğreneceğiz. Çoğu gerçek zamanlı projede, güç kapatıldığında bile silinmemesi gereken bazı verileri kaydetmemiz gerekebilir. Bu karmaşık bir süreç gibi görünebilir, ancak XC8 Derleyicisinin yardımıyla bu görev sadece tek bir kod satırı kullanılarak yapılabilir. Veriler Mega bayt cinsinden büyükse, bir SD kart gibi bir depolama cihazıyla arayüz oluşturabilir ve bu verileri üzerlerinde depolayabiliriz. Ancak veriler küçükse bu yorucu süreçlerden kaçınabiliriz, verilerimizi kaydetmek ve istediğimiz zaman almak için PIC Mikrodenetleyicide bulunan EEPROM'u kullanabiliriz.
Bu PIC EEPROM öğreticisi, çok temel bir seviyeden başladığımız bir dizi PIC Mikroişlemci Öğreticilerinin bir parçasıdır. Önceki eğitimleri öğrenmediyseniz, şimdi onlara bir göz atmanız daha iyi olacaktır, çünkü bu eğitimde LCD'yi PIC Mikrodenetleyici ile Arayüz ve ADC'yi PIC Mikroişlemci ile Kullanmaya aşina olduğunuz varsayılmaktadır.
PIC16F877A'da EEPROM:
EEPROM "Elektronik Olarak Silinebilir ve Programlanabilir Salt Okunur Bellek" anlamına gelir. Adından da anlaşılacağı gibi, PIC Mikrodenetleyicinin içinde mevcut olan ve bunu yapmak için programlayarak verileri yazabileceğimiz / okuyabileceğimiz bir bellek. Burada kaydedilen veriler, yalnızca programda böyle yapıldığı belirtilirse silinecektir. EEPROM'da mevcut olan depolama alanı miktarı her mikro denetleyiciye göre değişir; ayrıntılar her zamanki gibi Veri Sayfasında verilecektir. PIC16F877A için bizim durumumuzda kullanılabilir alan, teknik özellik veri sayfasında belirtildiği gibi 256 bayttır. Şimdi bu 256 baytı basit bir deneysel kurulum kullanarak verileri okumak / yazmak için nasıl kullanabileceğimizi görelim.
Devre Şeması ve Açıklaması:
Proje için devre şeması yukarıda gösterilmiştir. Kaydedilen ve alınan verileri görselleştirmek için bir LCD arayüz oluşturduk. AN4 Analog kanalına normal bir potansiyometre bağlanır, bu nedenle değişken voltajla beslenir, bu değişken voltaj EEPROM'a kaydedilecek veri olarak kullanılacaktır. Ayrıca RB0'da bir basma düğmesi kullandık, bu düğmeye basıldığında Analog kanaldan gelen veriler EEPROM'a kaydedilecektir.
Bu bağlantı bir devre tahtası üzerinde yapılabilir. PIC Mikrodenetleyici pinouts aşağıdaki tabloda gösterilmiştir.
S.No: |
PIN numarası |
Pin Adı |
Bağlı |
1 |
21 |
RD2 |
LCD RS |
2 |
22 |
RD3 |
E / LCD |
3 |
27 |
RD4 |
D4 / LCD |
4 |
28 |
RD5 |
D5 / LCD |
5 |
29 |
RD6 |
D6 / LCD |
6 |
30 |
RD7 |
D7 / LCD |
7 |
33 |
RBO / INT |
Butona basınız |
8 |
7 |
AN4 |
Potansiyometre |
PIC EEPROM Kullanmanın Simülasyonu:
Bu proje aynı zamanda, herhangi bir donanım olmadan projenin çalışmasını simüle edebileceğimiz Proteus kullanılarak tasarlanmış bir Simülasyonu da içermektedir. Bu simülasyon için program bu eğitimin sonunda verilmiştir. Buradan Hex dosyasını kolayca kullanabilir ve tüm süreci simüle edebilirsiniz.
Simülasyon sırasında Mevcut ADC değerini ve EEPROM'da kayıtlı verileri LCD ekranda görselleştirebilirsiniz. Mevcut ADC değerini EEPROM'a kaydetmek için sadece RB0'a bağlı anahtara basın ve kaydedilecektir. Simülasyonun anlık görüntüsü aşağıda gösterilmektedir.
EEPROM için PIC programlama:
Bu öğreticinin tam kodu, bu eğitimin sonunda verilmiştir. Programımızda ADC modülünden Değerleri okumalıyız ve bir butona basıldığında bu değeri EEPROM'umuza kaydetmeliyiz. ADC'ler ve LCD arabirimi hakkında zaten bilgi sahibi olduğumuz için, verileri EEPROM'dan kaydetmek ve almak için kodu daha ayrıntılı olarak açıklayacağım.
Veri Sayfasına göre “Bu cihazlar, PIC16F877A için 0000h ile 1FFFh arasında değişen bir adres aralığı ile 4 veya 8K Flash program kelimesine sahiptir”. Bu, her EEPROM depolama alanının erişilebileceği bir adrese sahip olduğu ve MCU'muzda adresin 0000h ile 1FFFh arasında başladığı anlamına gelir.
Bir veriyi belirli bir EEPROM adresinin içine kaydetmek için aşağıdaki satırı kullanmanız yeterlidir.
eeprom_write (0, adc);
Burada "adc", kaydedilecek verilerin bulunduğu tamsayı türünde bir değişkendir. Ve "0", verilerimizin kaydedildiği EEPROM'un adresidir. "Eeprom_write" sözdizimi XC8 derleyicimiz tarafından sağlanır, bu nedenle yazmaçlar otomatik olarak derleyici tarafından dikkate alınacaktır.
Halihazırda EEPROM'da depolanan bir veriyi almak ve bir değişkene kaydetmek için aşağıdaki kod satırı kullanılabilir.
Sadc = (int) eeprom_read (0);
Burada "Sadc", EEPROM'dan gelen verilerin kaydedileceği değişkendir. Ve "0", verileri aldığımız EEPROM'un adresidir. "Eeprom_read" sözdizimi XC8 derleyicimiz tarafından sağlanır, bu nedenle yazmaçlar otomatik olarak derleyici tarafından dikkate alınacaktır. EEPROM'a kaydedilen veriler onaltılık tipte olacaktır. Bu nedenle, sözdiziminden önce a (int) önekini koyarak onları tam sayı türüne dönüştürürüz.
Çalışma:
Kodun nasıl çalıştığını anladığımızda ve donanımı hazırladığımızda kodu test edebiliriz. Kodu PIC Mikrodenetleyicinize yükleyin ve kurulumu güçlendirin. Her şey beklendiği gibi çalışıyorsa, LCD'de görüntülenen mevcut ADC değerlerini görmelisiniz. Artık ADC değerini EEPROM'a kaydetmek için düğmeye basabilirsiniz. Şimdi tüm sistemi kapatıp tekrar açarak değerin kaydedilip kaydedilmediğini kontrol edersiniz. Açıldığında, LCD ekranda önceden kaydedilen değeri görmeniz gerekir.
PIC Mikrodenetleyici EEPROM'u kullanmak için bu projenin tam çalışması aşağıdaki videoda gösterilmektedir. Umarım öğreticiyi anladınız ve yapmaktan keyif aldınız. Herhangi bir şüpheniz varsa aşağıdaki yorum bölümüne yazabilir veya forumlarımızda yayınlayabilirsiniz.