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 ile Toplama İşlemi

P16F877A mikroişlemci kullanılarak PortB deki butonlardan basılı olanlardan gelen lojik 1 ler ile PortC deki butonlardan gelen lojik 1 ler binary olarak toplanıp sonuc PortD deki ledlerde yine binary olarak gösterilmektedir.

P16F877A / PIC16F877A Mikroişlemci ile LCD Displaye Tersten Metin Yazdırma

P16F877A / PIC16F877A Mikroişlemci ile assembly dilinde yazılmış LM016L LCD displaye tersten metin yazdırma uygulaması

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 Kullanılarak USART ile Terminale Veri Gönderme

P16F877A / PIC16F877A mikroişlemci kullanılarak USART (Universal Synchronous/Asynchronous Receiver/Transmitter) ile PortC nin TX (RC6) pinine bağlı olan terminale veri göndermek için assembly dili ile yazılmış uygulama

P16F877A / PIC16F877A ile Butona Basınca Ledi Sağa Sola Kaydırma Uygulaması

PortB nin 0. ve 1. Portuna bağlı iki tane butondan sağdakine basınca PortC nin içeriğini sağa kaydıran , soldaki butona basınca sola kaydıran P16F877A / P16F877A mikroişlemci kullanılarak assembly dili ile yazılmış uygulama

P16F877A / PIC16F877A ile Buton Basılı Kaldığı Sürece Sürekli Olarak Kayan Led Örneği

PortB ye bağlı iki butondan birisine basınca PortC deki ledi aşağı doğru buton lojik 0 olana kadar sürekli olarak kaydıran, diğer butona basınca PortC deki ledi yukarı doğru sürekli olarak kaydıran P16F877A / PIC16F877A mikroişlemci ile assembly dilinde yazılmış örnek uygulama.

P16F877A / PIC16F877A Mikroişlemci ile 3 ve 3 ün Katlarında Ledi 1 Kez Yakıp Söndürme

PortB nin 0. pinine bağlı olan butona 3 ve 3 ün katları sayısınca bastıkça PortC de bağlı olan ledi 1 kez yakıp-söndüren P16F877A / PIC16F877A mikroişlemci ile assembly dilinde yazılmış uygulama örneği

P16F877A / PIC16F877A Mikroişlemci ile Timer0 Örneği

Timer0 kullanılarak prescaler oranı 1/4 olan ve clock frekansı 4 MHz olan P16F877A / PIC16F877A mikroişlemci ile assembly dili ile yazılmış PortB ye bağlı olan ledi belli aralıklarla yakıp söndüren uygulama örneği

PIC16F877A Mikroişlemci İle 7 Segment 4 Digitli Display Kullanılarak 0 ile 9999 Arası Sayıcı (Assembly)

P16F877A / PIC16F877A mikroişlemci kullanılarak Assembly dili ile yazılmış PortD ye bağlı olan 7 segment display , seçme uçlarının ise PortA dan kontrol edildiği 0 ile 9999 arası sayıları timer0 kullanılarak 7 segment 4 digitli displaye yazdırma uygulaması.

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.

Ra4 e Bağlı Buton Tetikleme Durumuna Bağlı (Sağa/Sola) Led Kaydırma

RRF ve RLF komutlarını basit düzeyde işlediğim bu örnekte Ra4 e bağladığım buton üzerinden gelen tetikleme ile Sağa yada Sola Led kaydırma mantığını anlatmaya çalıştım. Programı gözle görülebilir bir şekilde izlenmesi için 1mhz osilatörde çalıştırmanızı tavsiye ederim. Assembly kodlarının yanlarına bıraktığım açıklamalarda sizler için faydalı olacaktır

Toplama Mantığı Ve Bu Mantıkla Led Kaydırma (50Hz Osilator)

Led Yakmak için o ledin set olması gerekmektedir. Peki Led kaydırmak için RRF RLF komutları dışında toplama yöntemiyle de led kaydırma yapılacağını düşündünüz mü hiç ? Örneğin 0000 0001 değeri ile sıfırıncı led yanar, 0000 0010 değeri ile birinci led yanar, 0000 0100 değeri ile ikinci led yanar, yani sola led kaydırmak bir nevi sayıyı 2 ile çarpmak yani kendisi ile toplamaktır. Bu örneğim de hem basit düzeyde toplama işleminin nasıl yapıldığını hemde 8 led içinden istediğiniz lede kadar nasıl kaydırma yapabileceğinizi göreceksiniz. Hiçbir Gecikme Kullanmadığım için program Osilator Hızlarını iyice düşürüyoruz ben örneğimde 50Hz olarak ayarladım

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

2x7 Segment Displayde istediğimiz 2 Basamaklı Sayıyı Yazma

Yaptığım Kod örneği yine sizlerin düzenleme yapabileceği şekilde açıklamalar bırakarak programın alt yapısını oluşturdum. Ben bu örneğimde 7 segment displayde 23 sayısını yazdım ve nasıl yapıldığını sizlere anlatmaya çalıştım. Kod içerisinde 0-9 arası lookup table ı bıraktığım için sizler working değerlerini değiştirerek istediğiniz 2 basamaklı sayıyı 7 segment display de gösterebileceksiniz.

5x7 Dot Matris Uzerinde E harfi Yazmak

PortB üzerinden Satır Bilgisni , PortC üzerinden Sutun Bilgisini girdiğimiz 5x7 dot Matris ekranda E harfinin nasıl yazılacağını anlatmaya çalıştım

5X7 dot matris üzerinde Emoji Yapmak

pic üzerine 2 adet 5x7 dot matris bağlayarak Sütunları PortB üzerinden, Satırları PortC üzerinden Kontrol ederek kalp emojisi oluşturmaya ve her satırında ledlerin nasıl yanması gerektiğini anlatmaya çalıştım. Program çalıştığı süre boyunca kalp emojisini gösterecektir. Osilator Çalışma Hızı Olarak 4mhz tercih ederseniz daha pürüzsüz bir görüntü alacaksanız.

7 Segment Displaye Error Yazdırma

PortB üzerinden Yanacak Ledlerin Bilgisi PortC üzerinden Seçim Bitleri ayarlanan uygulamada 6 lı 7 Segment üzerinde Error Yazdırma örneği

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