Eğitim Şart

Taşı delen suyun şiddeti değil sürekliliğidir!…

Pic16F628 İle 1602 LCD Ekran Kullanımı: Hello World!

Yine Hex dosyasını bulduğum bir proje ile Pic16F628A mikrodenetleyicisi ile LCD ekran kullanımını anlatmaya çalıştım. Pic programlanmanın Arduino’dan daha zor olduğunu daha önce söylemiştim zaten. Burada amaç bu mikrodenetleyicilere ilgi duyan arkadaşlara kaynak yaratabilmek. Bu projenin kodu ve aynı zamanda proteus üzerindeki çizimi ve simülasyonu da var. İlgilenen arkadaşlar için linkini de aşağıda vereceğim. Buradan hareketle bir sonraki projede aynı ekranı kullanıp bir saat yapabilmek. ayrıca K150 programlayıcının kullanımını da pekiştirmek istiyorum. Bu projeyi araştırırken kullanılan kristal osilatör ile de problem yaşadım. İlginçtir ki yine bu işlemcinin kullanıldığı bir kristal osilatör frekans sayıcı devresi buldum. Onu da yapıp burada yayınlamaya çalışacağım.

Bu mikrodenetleyiciye genel bir bakışla 18 bacaklı bu denetleyicinin 4 MHz osilatöre sahip olduğu, 128 byte eeproma sahip olduğu, 2 karşılaştırıcı, iki tane 8-bit zamanlayıcısı, 3kB program hafızası olduğu, 2-5 volt arası çalıştığını söyleyebiliriz. İki port olarak toplam 16 adet giriş/çıkış olarak kullanılabilen bacakları var (aslında 15, çünkü RA5 sadece giriş olarak kullanılabiliyor). Ayrıca bir bacağın birden fazla işlem için kullanılması, az bacağa rağmen çok işlev sağlıyor. Örneğin sadece giriş olarak kullanılan RA5 aynı zamanda Reset pini. Aşağıda üretici ola microchip firmasının kendi data sheet’inden veriler verilmiştir.

pic16f628_bacak

PIC16F628A Bacak Tanımlamaları:
Fonksiyon :                 Açıklama:
RA0                          Giriş/Çıkış
AN0                          Analog karşılaştırıcı giriş

RA1                          Giriş/Çıkış
AN1                         Analog karşılaştırıcı girişi
RA2                          Giriş/Çıkış
AN2                         Analog karşılaştırıcı girişi
VREF                       VREF çıkışı
RA3                          Giriş/Çıkış
AN3                         Analog karşılaştırıcı girişi
CMP1                       Karşılaştırıcı 1 çıkışı
RA4                          Giriş/Çıkış
T0CKI                      Saat 0 girişi
CMP2                       Karşılaştırıcı 2 çıkışı
RA5                          Giriş
MCLR                      Reset girişi

VPP                          programlama voltaj girişi
RA6                          Giriş/Çıkış
OSC2                        Kristal osilatör çıkışı
CLKOUT                  Saat çıkışı

RA7                          Giriş/Çıkış
OSC1                        Kristal osilatör girişi
CLKIN                      Saat girişi
RB0                          Giriş/Çıkış
INT ST                     Harici kesme girişi
RB1                          Giriş/Çıkış
RX                            USART alıcı
DT                            Senkron veri giriş/çıkış
RB2                          Giriş/Çıkış
TX                            USART verici
CK                            Senkron saat giriş/çıkış
RB3                         Giriş/Çıkış
CCP1                       Yakala/karşılaştır/PWM giriş/çıkış
RB4                         Giriş/Çıkış
PGM                       Düşük voltaj programlama
RB5                         Giriş/Çıkış
RB6                         Giriş/Çıkış
T1OSO                    Zamanlayıcı1 osilatör çıkışı
T1CKI                     Zamanlayıcı1 saat girişi
PGC                        Programlama saat girişi
RB7                        Giriş/Çıkış
T1OSI                     Zamanlayıcı1 osilatör girişi
PGD                       ICSP veri giriş/çıkışı
VSS                        GND- negatif besleme
VDD                      Vcc- pozitif besleme

(Not: B portu girişler programlama ile pull up direnci eklenebilen girişlerdir)

Yukarıdaki bilgilerin tamamı orijinal üretici sayfasındandır. İsteyen bu özellikleri ve daha fazlasını bu data sheet’de bulabilir.

Önce kodu çipe yüklemeliyiz! Hemen K150 programlayıcıyı bilgisayarın usb girişine bağlayıp aygıt yöneticisinden portu kontrol ediyoruz.

aygit_yon.png

COM4 üzerinde USB’den seri’ye dönüştürücü göründü. Peki daha önceki gibi yine uygunsuz alet falan gibi bir şeyler deseydi? Geçen sefer bahsettim ama yine tekrarlıyorum.Yapılacak şey: bu alet üzerinde sağ tıklayıp aşağıdaki adımları takip edelim. Önce “Sürücüyü güncelleştir”surucu_gunc

Alttaki “Sürücü yazılımı için bilgisayarımı tara” seçiliyor.

bilgisayari_tara

Altta bulunan “Bilgisayarımdaki kullanılabilir sürücülerin listesinden…” seçeneği;

ben_seceyim

 

Çıkan iki sürücüden de üstte bulunan eski tarihli olanı seçip yükle diyoruz.eski_olan

Artık aygıt yöneticisinde “USB-Seri Dönüştürücü” görülebiliyor. Bunu test etmek için, program dosyası olan TS8900-K150 klasöründen “CheckChipVersiyon…exe”dosyası tıklanıyor.checkcip.png

Uygun portu seçip “check” ettiğimizde aleti görmeliyiz.

checkcip_ok.png

Sonra aynı klasörden “DIYpack25ep” klasörünü açıp,  “microbrn.exe” tıklanıp program açılıp “File” menüsünden portu (burada COM4) kontrol ediyoruz. Sağ alttan çipi ’16F628A’  olarak ayarladıktan sonra yine “File” menüsünden “Load” diyerek hex dosyasını yüklüyoruz.

load.png

En son işlem “Program” tuşuna basmak. Ve kodumuz 16F628A üzerine yüklendi. Artık devremiz kurulup çalıştırılabilir.

Devremizin şeması da oldukça sade. Sadece 15-16. bacaklar arasına 20MHz bir kristal ile birlikte, her iki bacağı da 15-30pF arası bir kondansatör ile gnd hattına bağlıyoruz. Potansiyometre ekran kontrastı için.Diğer bağlantılar 628A ile LCD ekran arasında ve aşağıdaki gibi:

pic16f628_lcd

Hex dosyası:

:10000000502F00308A000408840A820700344834E4
:1000100065346C346C346F34203457346F3472343C
:080020006C3464342134003417
:100EA0008301522FAB27572701306327562F01307C
:100EB00070270D30F400FB30F300F30B5D2FF40BC3
:100EC0005D2F622F0800F3007308840001200038B2
:100ED000031908007308840001208227F30A642F95
:100EE000F2000F3083120313861086057208F03962
:100EF000860494270F30831203138605720EF0398F
:100F00008604942FF2000F30831203138614860593
:100F10007208F039860494270F3083120313860574
:100F2000720EF0398604942F04300614F1003D301F
:100F3000F000F00B992FF10B992F9E2F04308312A4
:100F400003130610F1003D30F000F00BA52FF10B5C
:100F5000A52FAA2F08000230F9278316F927F500DC
:100F60000430F400BA30F300F30BB42FF40BB42FB9
:100F7000F50BB42F64000F30F32794272730F400CB
:100F8000F530F300F30BC22FF40BC22F0F30F32711
:100F90009427D630F300CC2FCD2FF30BCB2F64004A
:100FA0000F30F32794270D30F400FB30F300F30BE0
:100FB000D72FF40BD72FDC2F0F30831203138605A6
:100FC000861694270D30F400FB30F300F30BE62F68
:100FD000F40BE62FEB2F283070270C3070270130F0
:100FE00070270630702F8312031386053030860475
:100FF00008000610861006128612061386130800D3
:02400E0062FF4F
:00000001FF

Daha önce söylediğim gibi yukardakileri bir wordpad dosyasına yapıştırıp, uzantısını hex olarak değiştirdiğinizde kullanılmaya hazır.

Aşağıdaki linkte bu projenin orijinal haline, kodlarına, hex dosyasına ve proteus simülasyonuna ulaşabilirsiniz. Bu çalışmayı yayınladıkları için kendilerine teşekkür ediyoruz.

Hoşça kalın….

 

Kaynaklar:

https://www.microchip.com/wwwproducts/en/PIC16F628A

http://saeedsolutions.blogspot.com/2014/02/pic16f628a-lcd-interfacing-code-in-4bit.html

%d blogcu bunu beğendi: