LM016L LCD Display e Saat ve Tarih Yazdırma Uygulaması

LM016L Lcd display e timer ile hesaplanan saat ve tarih yazdırma uygulaması

ADC ile LM035 sensör kullanılarak sıcaklık ölçme uygulaması

LM035 sıcaklık sensörü ve ADC yardımıyla ortam sıcaklığını LCD display e yazdırma ugulaması

PortD ye Bağlı Ledleri Binary Olarak Artıran - Azaltan Uygulama

PortB deki 4 tane butondan herhangi birine basınca PortD de bağlı olan ledleri binary olarak artıran, PortC deki 4 tane butondan herhangi birine basınca PortD deki ledleri binary olarak azaltan uygulama

LM016L LCD Display ile Metin Kaydırma Uygulaması

P16F877/P16F877A mikroişlemci ile LM016L LCD displayin üst satırına isim alt satırına soyisim yazdırılarak sürekli olarak sağa sola kaydırma uygulaması

P16F877A İle Timer Kullanarak Led Yakma

P16f877A ile timer kullanılarak PortC deki ledleri 500ms de bir , PortD deki ledleri 1000ms de bir binary olarak artıran assembly dili ile yazılmış uygulama

7-Segment Display e Dakika ve Saniye Yazdırma

P16F877A mikroişlemci ile assembly dilinde yazılmış 7 segment displaye timer kullanılarak dakika ve saniye yazdırma

P16F877A / PIC16F877A Mikroişlemci ile RB0 Kesmesi Örneği

P16F877A / PIC16F877A Mikroişlemci kullanılarak PortD deki 8 adet led binary olarak artarken PortB nin RB0 ucundan gelen kesme ile PortC deki ledi yakan assembly dili ile yazılmış uygulama. Kesmeden sonra ise program normal akışına devam etmektedir.

P16F877A / PIC16F877A Mikroişlemci İle 7 Segment Display Kullanılarak Asembly Dili İle Yazılmış Sayıcı

P16F877A / PIC16F877A Mikroişlemci kullanılarak Assembly dili ile yazılmış 7 Segment Displaye 1 den 9 a kadar sayıların yazdırılması

P16F877A / PIC16F877A Mikroişlemci İle 5x7 Dot Matrix Display e Karakter Yazdırma

Sütun pinlerinin Portb ye , satır pinlerinin PortC ye bağlı olduğu 5x7 Dot Matrix Display e ; sütun değerlerinin lookup tablosundan alınarak , satır değerlerinin RLF komutuyla kaydırılarak karakter yazdırılan PIC16F877A mikroişlemci ile assembly dili ile yazılmış örnek uygulama.

PIC16F877A Mikroişlemci İle Buton Kullanılarak Assembly Dili İle Yazılmış 0-9 Arası Binary Sayıcı

PortA ya bağlı iki tane butondan RA0 pinindeki butona basınca PortB nin içeriğini birer birer 9 a kadar artıran (9 olunca tekrar 0 dan başlayarak artan), RA1 pinindeki butona basınca PortB nin içeriğini 0 olana kadar birer birer azaltan (0 olduğunda tekrar 9 dan itibaren azaltmaya devam eden) ,PIC16F877A mikroişlemci kullanılarak assebmly dili ile yazılmış butona bastıkça 0-9 arası binary olarak sayan 4 bitlik sayıcı uygulaması örneğidir.

PIC16F877A Mikroişlemci İle Tuş Takımı (Keypad) Kullanılarak Assembly dili LCD ye Karakter Yazdırma

4x4 lük tuş takımının A,B,C,D pinlerinin PortB nin sırasıyla 0-1-2-3 pinlerine bağlanarak ve tuş takımının 1,2,3,4 pinlerinin de PortB nin sırasıyla 4-5-6-7 pinlerine bağlanarak oluşturulmuş uygulamadır. Uygulamada Keypad ten alınan karakterlerin yazdırılması için 2x16 LCD display(LM016L) kullanılmıştır. Tuş takımının 1-2-3-4 nolu pinlerine herhangibir tuşa basılmadığında logjik 0 gitmesi için herbir pin 10K lık direnç ile gnd ye bağlanmıştır.

Ledlerin Binary Düzende Sayması

PortA,0 a bağlı butona basılmadığında PortB ye bağlı ledlerin ileri yönde sayması başlangıç değerimiz 0 olduğu için 0 dan başlayıp ileri yöne binary düzende sayar (00000000 00000001 00000010 .... 11111111) PortA,0 a bağlı butona basıldığında PortB ye bağlı ledlerin geriye doğru sayması. program başlangıcında butona basılı olmadığı için ileri yöne sayar butona basıldığında son değeri 1-1 azalır. programımız da timer modülü kullanılmadan iç içe döngü ile gecikme sağlanmıştır. 1mhz osilator hızında çalıştırmanız tavsiye edilir yada 3.bir döngü ile gecikme süresini arttırıp istediğiniz osilator hızını verebilirsiniz. iç içe 3 döngünün nasıl yazılacağıyla ilgili fikriniz yoksa bir önceki çalışmama bakabilirsiniz.

Her Buton Tetiklenmesinde PortB nin içeriğinin 1 Artması

Ra4 e bağlı buton tetiklemesiyle PortB nin içeriğinin 1 artması ve bu değerin Ledlerle gösterilmesi. Program tamamen buton tetiklemesi ile çalışıyor (pul-down) konumunda PortB yi 1 arttırıyor, basılı konumda beklediği sürece boş döngüde tekrar ediyor ne zaman pul-up konumuna gelirse en baştan döngüye girerek tekrar tetikleme bekliyor. Gecikme Kullanmadığım için Osilator hızınızı 1-4-8 Mhz değerlerinden birini seçerek uygulamayı inceleyebilirsiniz.

7 Segment Sayac (LookupTable Kullanarak) 0-9 arası sayma

Program içeriğinde sizin düzenlemenize bağlı olarak 2 farklı şekilde çalışmaktadır. 1.Çalışma şekli her buton tetiklemesinde 1-1 değerin artması bu kısımda gecikmeye ihtiyaç duyulmaz. 2.Çalışma şekli buton tetiklenmesinde gecikmeye giderek 1-1 değerin artması bu kısımda gecikmeye ihtiyaç duyar. Assembly kod içerisinde yaptığım açıklamalar ile 3 satırı yorum satırından çıkarıp normal kod satırına getirerek iki farklı durumu inceleyebilirsiniz. Not: Katot Display Kullandım osilator hızı olarak gecikme ile çalışacaksınız 1Mhz yada 4mhz tercih ediniz

Timer0 ile Kesme Oluşturup Led Yakmak

Tmr0 Kesmesini kullanarak 125 Mili saniye ... 16 Saniye Arasında kesme oluşturabileceğimiz kod örneği. kod içerisinde yaptığım açıklamaları ve yönlendirmeleri dikkate alarak option_reg üzerinden yapacağınız değişikliklerle 125 mili saniye 250 mili saniye ... 1 saniye 2 saniye... 16 saniye gibi farklı değerlerde kesmeler üretip bağlı led üzerinde değişiklikleri gözlemleye bileceksiniz.

2x7 Segment Displayde 0-99 Arasında Sayma

Veri girişi PortB ye Seçme Girişi PortA ya Bağlı uygulamada 0-99 arasında Saydırma işlemini yapıyoruz. aynı anda iki segment in nasıl kontrol edildiğini de açıklamaya çalıştım. gecikme kullanılarak yapılmıştır. 4Mhz osilator hızıyla çalışmanızı tavsiye ederim

7 Segment te 1 Saniye ve 0,4 Saniye Aralıklarla Sayan Sayaç

2x7 segment üzerinde 4mhz osilator hızında kullandığım tek Tmr0 kesmesi ve ortak gecikme hesabıyla 1 saniye ve 0.4 saniye aralıklarla sayan Tmr0 örneği. Tmr0 hesaplaması ve konfigürasyon ayarlarını da kod içerisinde detaylı olarak açıklamaya çalıştım.

Timer1 Gecikmesini Kullanarak Farklı Değerlerde Kesmeler Oluşturmak

Tmr1 Gecikmesini kullanarak kesme içerisine girdiğimizde kullandığımız döngümüz ve Tmr1 in 16 bitlik scala sının verdiği imkanla Tmr0 dan çok daha esnek çalışabilme imkanını buluyoruz. çok küçük değerleri de (Nano Saniye Mikro Saniye) çok büyük değerleri de (Mili Saniye Saniye Dakika) hesaplama imkanımız oluyor. kod içerisinde yaptığım açıklamalar ve Tmr1 hesaplaması sayesinde istediğiniz değerleri hesaplaya bileceksiniz. 500 Nano Saniye ... 67 Saniye Arasındaki Değerleri hesaplamak için 8Mhz kristal ile çalışmanızı tavsiye ederim

Buton Tetiklemesiyle Çalışan Timer1 Uygulaması

Ra1 ve Ra4 e bağlı 2 buton üzerinden yapılan tetiklemeler ile D portuna bağlı olan ledleri sırasıyla yakıp söndüren uygulama Ra1 e 5 kere basıldığında D0-D1 portuna Bağlı ledleri 3 er saniye Aralıkla yakıp Söndüren Ra4 e 10 kere basıldığında D2-D3 portuna Bağlı ledleri 1 er saniye Aralıkla yakıp Söndüren uygulama. Timer 1 üzerinden 4 Mhz osilator ile ayarlamalar yapılmıştır Hangi Butonun kaç kere tetikleme yapacağını verdiğim açıklamalar ile ihtiyacınıza göre düzenleyebilir yine aynı şekilde verdiğim açıklamalar ile zaman aralığını da istediğiniz gibi düzenleyebilirsiniz.

Adc ile Lm035 dan Sıcaklığı Ölçüp Belirlediğimiz Hedef sıcaklığa kadar Klima Motoru Çalıştırma

Daha Önce Yapılmış olan 2 ayrı uygulamadan yararlanarak geliştirdiğim uygulama Sitede Var olan (ADC ile LM035 sensör kullanılarak sıcaklık ölçme uygulaması ve LCD Displaye Tersten Metin Yazdırma) uygulamalarından yararlanarak geliştirdiğim bu uygulamada; Bizim elimizde var olan A portuna bağlı Analog olarak sıcaklık ölçen Lm35 sensörünün ölçtüğü sıcaklık değerini ADC ile lcd de gösterip belirlediğimiz hedef sıcaklık ile arasında fark varsa RD4 üzerindeki Ledi Yakacaktır (Led motorun çalıştığını gösteren sembolik bir olay) hedef sıcaklık ve ölçülen sıcaklık eşitlendiğinde Led Sönecektir (Motor duracaktır) yeniden bir fark oluşursa led tekrar yanacaktır

Timer Ve Buton ile sayıcı (LM016 lcd kullanarak)

Timer1 kullanılarak lcd nin üst satırında, buton kullanarak ise lcdnin altında ki satırda sayan sayıcı