![]() |
|
![]() |
PIC İle LCD UygulamalarıDigital Dünya & Elektrik & Elektronik forumlarındaki PIC İle LCD Uygulamaları konusunu görüntülemektesiniz. PIC İle LCD Uygulamaları Artık cep telefonlarıyla, dijital saatlerle ve göstergeli her türlü eşyayla hayatımızın bir parçası olan LCD (Lquid Crystal Display - Sıvı Kristal Gösterge) ekranları kullanarak birşeyler yapmak ... |
![]() |
![]() |
|
LinkBack | Konu Seçenekleri | Modları Göster | ![]() |
|
|
#1 (permalink) |
|
Atık Üye
![]() Durum:Offline
Üyelik Tarihi: Sep 2006
Nerden: ÇANAKKALE/ GeLiBoLu
Mesajlar: 2.425
Takım: .:FENERBAHÇE:.
KanGrubu: 0Rh+
Eğitim: Üniversite köşelerinde sürünüyomuşum :D
Sevdiği Bölüm: Her telden çalarım abi :D
Burcunuz: Yay
Arkadaşları:16
Ettiği Teşekkür: 127
Aldığı Teşekkür 407
Xsir Gücü: 0
Xsir Puanı: 100 Xsir Grafiği:
![]() ![]() |
PIC İle LCD Uygulamaları
Artık cep telefonlarıyla, dijital saatlerle ve göstergeli her türlü eşyayla hayatımızın bir parçası olan LCD (Lquid Crystal Display - Sıvı Kristal Gösterge) ekranları kullanarak birşeyler yapmak istemez misiniz? Proteus ve PIC Basic ikilisiyle birçok uygulamayı kolayca yapabilirsiniz. 1-YAZI YAZMA DEFINE OSC 4 ' PIC'in çalışma hızını 4 MHZ 'e ayarladık DEFINE LCD_DREG PORTB ' Yazı bilgisini göndereceğimiz portu seçtik DEFINE LCD_DBIT 4 ' Bilgi göndermek için başlangıç bitini seçtik DEFINE LCD_RSREG PORTB ' LCD Register(Kayıt) Portunu seçtik DEFINE LCD_RSBIT 0 ' LCD Register Bitini seçtik DEFINE LCD_EREG PORTB ' Enable(Yazılma) Portunu seçtik DEFINE LCD_EBIT 1 ' Enable bitni seçtik DEFINE LCD_BITS 4 ' Kaç bitlik bir hattan bilgi transferi yapacağımızı yazdık. DEFINE LCD_LINES 2 ' Kaç satırlık bir LCDmiz varsa yazdık DEFINE LCD_COMMANDUS 2000 ' Kac mikrosaniyede bir komut gönderileceğini yazdık DEFINE LCD_DATAUS 50 ' Kac mikrosaniyede bir yazı gönderileceğini yazdık LCDOUT 254,1, " LCD KULLANMA" LCDOUT 254,192," PROGRAM : 01" Konu cyBER_HaYLaZ tarafından (22-02-2007 Saat 15:43 ) de değiştirilmiştir.. |
|
|
|
#2 (permalink) |
|
Atık Üye
![]() Durum:Offline
Üyelik Tarihi: Sep 2006
Nerden: ÇANAKKALE/ GeLiBoLu
Mesajlar: 2.425
Takım: .:FENERBAHÇE:.
KanGrubu: 0Rh+
Eğitim: Üniversite köşelerinde sürünüyomuşum :D
Sevdiği Bölüm: Her telden çalarım abi :D
Burcunuz: Yay
Arkadaşları:16
Ettiği Teşekkür: 127
Aldığı Teşekkür 407
Xsir Gücü: 0
Xsir Puanı: 100 Xsir Grafiği:
![]() ![]() |
LCD UYGULAMASI - 2 : LCD EKRANDA DEĞER GÖSTERME
Bu uygulamada PIC 16F877'nin analog kanallarından bilgi okuyacağız ve bu bilgiyi voltaj bilgisine çevirip LDC ekranda göstereceğiz. Aşağıda bu programın kodunu bulabilirsiniz. Bir sonraki sayfada ise şemayı bulacaksınız. DEFINE LCD_DREG PORTC DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 0 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 2 DEFINE LCD_LINES 2 DEFINE LCD_BITS 4 DEFINE ADC_BITS 8 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 TRISA = 255 ;PORTA'YI GIRIŞ OLARAK TANIMLADIK ADCBILGI VAR BYTE A VAR BYTE B VAR BYTE C VAR BYTE D VAR WORD ADCON1 = 0 ;ADCON1 REGISTERINI SIFIRLADIK(*DIPNOT 1) ADC_OKU: ADCIN 0, ADCBILGI ;A0 KANALINDAN ANALOG VERI OKUR, ;DIJITAL BILGIYI ADCBILGI DEGISKENINE ATAR D=ADCBILGI*100/51 ;BILGI VOLTAJ CINSINDEN YAZILIR(*DIPNOT 2) LCDOUT 254, 1 ;EKRANI TEMIZLE A=D DIG 2 ;ADCBILGI DEGISKENININ SAGDAN 3. RAKAMINI A'YA B=D DIG 1 ;ADCBILGI DEGISKENININ SAGDAN 2. RAKAMINI B'YE C=D DIG 0 ;ADCBILGI DEGISKENININ SAGDAN 1. RAKAMINI C'YE ATADIK LCDOUT #A, ".", #B, #C," V" ;EKRANA DEGERLERI YAZDIRDIK(*DIPNOT 3) PAUSE 100 ;100 MILISANIYE BEKLEYIP BASA DÖN GOTO ADC_OKU Proteus Simülasyonu DIPNOT 1: Yukarıda verilen kod PIC 16F877 içindir. Bu PIC'te ADC ayarları yapmak üzere ayrılmış iki register bulunur. Bunlar ADCON0 ve ADCON1'dir. Burada yaptığımız ADC'de çevirim için gerekli zaman bilgisini yada interrupt(kesme) gibi özellikleri kullanmadık. Sadece 8 bitlik, bu kapasitede bir ADC yapmak için bu ayar yeterlidir. Yakında bu sitede ADC hakkında daha detaylı bilgilere ulaşabileceksiniz. DIPNOT 2: ADCIN komutuyla ADCBILGI değişkeninin içine 0-255 arası bir değer atanmıştır. 8 bitlik bir analog-dijital çevirici 1/256 çözünürlüğe sahiptir. Örneğin değişim aralığımız 0-5 Volt olsun, 2.50 Volt için dijital değer 127, 1.25 Volt için 256/5*1.25 yani 64 olur. PIC Basic'te, bölme işleminden sonra virgülden sonraki sayılar doğrudan atılır.Yani floating point ya da yuvarlama olayı yoktur.Yaptığımız analog-dijital çeviricide virgülden sonraki rakam değerlerini kaybetmemek, hassasiyeti arttırmak için okunan dijital bilgi 100 değeri ile çarpılır ve daha sonra 5/256 ile çarpılmak yerine kolaylık olması için 51'e bölünür. DIPNOT 3:Çıkan sayı üç basamaklıdır ve bu sayının rakamları DIG komutu ile alınarak ekrana yazılır. Değer göstermek için LCDOUT komutundan sonra önüne # işareti konarak değişken yazılır. Böylece değişkenin değeri ekrana yazılmış olur. Ayrıca tek satırda birden fazla şey yazmak için araya virgül konmalıdır. |
|
|
|
#3 (permalink) |
|
Atık Üye
![]() Durum:Offline
Üyelik Tarihi: Sep 2006
Nerden: ÇANAKKALE/ GeLiBoLu
Mesajlar: 2.425
Takım: .:FENERBAHÇE:.
KanGrubu: 0Rh+
Eğitim: Üniversite köşelerinde sürünüyomuşum :D
Sevdiği Bölüm: Her telden çalarım abi :D
Burcunuz: Yay
Arkadaşları:16
Ettiği Teşekkür: 127
Aldığı Teşekkür 407
Xsir Gücü: 0
Xsir Puanı: 100 Xsir Grafiği:
![]() ![]() |
LCD UYGULAMASI - 3 : LCD İLE HESAP MAKİNESİ
Son LCD uygulaması olarak burada basit bir hesap makinesi (sadece dört işlem yapan) nasıl yapılır onu anlatacağım. Şemamız aşağıdaki gibi olacak. Kullanacağınız tuş takımı 4x4'lük herhangi bir tuş takımı olabilir. Bu uygulamada da tıpkı zamalayıcı programında olduğu gibi tuş takımını tarayacağız. Yalnız burada 12 değil de 16 tane tuş bulunuyor, yani 7 değil de 8 hattımız var. Bu hatlardan 4'ünü giriş 4'ünü çıkış yapıp değeri okuyacağız. INCLUDE "MODEDEFS.BAS" DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTA DEFINE LCD_RSBIT 6 ;BO? PORT KALMADI?I YÇYN OSYLATÖR BACAKLARINDAN DEFINE LCD_EREG PORTA ;BYRYSYNY ÇIKI? YAPTIK (BKZ: DYPNOT1) DEFINE LCD_EBIT 0 DEFINE LCD_BITS 4 DEFINE LCD_LINES 1 ;LCDMIZ 1 SATIRLIK DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 CMCON=7 VRCON=0 TRISA=222 ;PORTA GYRY? ÇIKI?LARINI AYARLADIK (BKZ: DYPNOT2) TRISB=0 TEMP VAR BYTE ISLEM VAR BYTE DEGER VAR BYTE DEGER1 VAR WORD DEGER2 VAR WORD DEGER3 VAR WORD DEGER4 VAR WORD DEGER5 VAR WORD YENI VAR BIT ;ÇE?YTLY BAYRAKLAR (FLAG BITS) IKINCI VAR BIT CLEAR ;TÜM DE?Y?KENLERY SIFIRLADIK DEGER=77 ;TU? TAKIMDA OLMAYAN BYR DE?ER VERDYK ;***************ANA DÖNGÜ********************************************* ANA: CALL TARA CALL GOSTER CALL DEGERLENDIR GOTO ANA ;************************************************* ******************** GOSTER: IF DEGER<10 && YENI=0 THEN LCDOUT #DEGER IF DEGER<10 && YENI=1 THEN LCDOUT 254,1 ;E?ER YENY BYR Y?LEME BA?LANDIYSA EKRANI SYLER LCDOUT #DEGER ENDIF TEMP=DEGER ;BASILAN DE?ERY KAYBETMEMEK IÇIN BU I?LEMI YAPTIK GERIBAS: ;TU? TAKIMINDAN ELYN ÇEKYLMESYNY KONTROL EDYYOR CALL TARA IF DEGER!=77 THEN GERIBAS RETURN DEGERLENDIR: IF TEMP<10 && IKINCI=0 THEN CALL SAYIYAP IF TEMP<10 && IKINCI=1 THEN CALL SAYIYAP2 IF TEMP>9 THEN CALL ISLEMYAP RETURN SAYIYAP: DEGER1 = TEMP DEGER2 = DEGER2*10 + DEGER1 ;SAYIYI ONDALIK DÜZENDE YAZAR RETURN SAYIYAP2: DEGER3 = TEMP DEGER4= DEGER4*10 + DEGER3 RETURN ISLEMYAP: IF TEMP=10 THEN ;TEMYZLE (CLEAR) DÜ?MESYNE BASILIRSA EKRANI TEMYZLER CLEAR LCDOUT 254, 1 ENDIF IF TEMP=11 THEN ;E?YTTYRE BASILIRSA HESAPLAMA Y?LEMY YAPILIR IF ISLEM=1 THEN DEGER5=DEGER2+DEGER4 IF ISLEM=2 THEN DEGER5=DEGER2-DEGER4 IF ISLEM=3 THEN DEGER5=DEGER2*DEGER4 IF ISLEM=4 THEN DEGER5=DEGER2/DEGER4 LCDOUT "=", #DEGER5 YENI=1 ENDIF IF TEMP=12 THEN ;EKRANDA HANGY Y?LEMYN YAPILDI?I GÖZÜKÜR ISLEM=1 ;Y?LEM DE?Y?KENYNE HANGY Y?LEM YAPILACA?I ATANIR LCDOUT "+" ;IKINCI BAYRAGI 1 YAPILARAK 2. SAYIYA GEÇYLDY?Y IKINCI=1 ;BELYRTYLYR ENDIF IF TEMP=13 THEN ISLEM=2 LCDOUT "-" IKINCI=1 ENDIF IF TEMP=14 THEN ISLEM=3 LCDOUT "x" IKINCI=1 ENDIF IF TEMP=15 THEN ISLEM=4 LCDOUT "%" IKINCI=1 ENDIF RETURN TARA: ;TU? TAKIMINI TARAR DEGER = 77 HIGH PORTB.4 IF PORTA.1=1 THEN DEGER=7 IF PORTA.2=1 THEN DEGER=8 IF PORTA.3=1 THEN DEGER=9 IF PORTA.4=1 THEN DEGER=15 LOW PORTB.4 HIGH PORTB.5 IF PORTA.1=1 THEN DEGER=4 IF PORTA.2=1 THEN DEGER=5 IF PORTA.3=1 THEN DEGER=6 IF PORTA.4=1 THEN DEGER=14 LOW PORTB.5 HIGH PORTB.6 IF PORTA.1=1 THEN DEGER=1 IF PORTA.2=1 THEN DEGER=2 IF PORTA.3=1 THEN DEGER=3 IF PORTA.4=1 THEN DEGER=13 LOW PORTB.6 HIGH PORTB.7 IF PORTA.1=1 THEN DEGER=10 IF PORTA.2=1 THEN DEGER=0 IF PORTA.3=1 THEN DEGER=11 IF PORTA.4=1 THEN DEGER=12 LOW PORTB.7 RETURN |
|
|
|
#4 (permalink) |
|
Yeni Üye
![]() Durum:Offline
Üyelik Tarihi: Mar 2008
Nerden: İstanbul
Mesajlar: 3
Takım: Galatasaray...
Eğitim: Lise
Burcunuz: Akrep
Arkadaşları:0
Ettiği Teşekkür: 0
Aldığı Teşekkür 0
Xsir Gücü: 0
Xsir Puanı: 1 Xsir Grafiği:
![]() |
Ya arkadaşlar bi yıllık ödevim var yapamadım gitti yha bulamıyorum bi yardımcı olurmusu nuz:(
Konu : 8 BİTLİ LCD UYGULAMASI nolur yardımcı olun :( yapamazsam 0 alıcam. bide devre leri veriyosunuzda bunun programı nasıl oluyo anlamıyorum biz okulda sadece devre kurmasını öğrendik programlamaya başlamadık.bilen birşi varsa anlatabilirmi ayrıntılı. ben lise 3 e gidiyorumda bizde hep devre kurma var. Yardım please.. :) he bu arada site süpermiş çok faydalı konular var... |
|
|
|
#5 (permalink) |
|
Atık Üye
![]() Durum:Offline
Üyelik Tarihi: Sep 2006
Nerden: ÇANAKKALE/ GeLiBoLu
Mesajlar: 2.425
Takım: .:FENERBAHÇE:.
KanGrubu: 0Rh+
Eğitim: Üniversite köşelerinde sürünüyomuşum :D
Sevdiği Bölüm: Her telden çalarım abi :D
Burcunuz: Yay
Arkadaşları:16
Ettiği Teşekkür: 127
Aldığı Teşekkür 407
Xsir Gücü: 0
Xsir Puanı: 100 Xsir Grafiği:
![]() ![]() |
Kardeşim Proteus ve PIC Basic gibi programlarla bu kodları yazabilirsin istediğin devreyi burda kodları yazarak yapabilirsin.Ayrıca googleda istediğini ararsan bir çok şey bulacaksın 8li olmaz 4lü bulursun bunuda tasarlayarak 8e çevirebilirsin.
|
|
|
|
#6 (permalink) |
|
Yeni Üye
![]() Durum:Offline
Üyelik Tarihi: Mar 2008
Nerden: İstanbul
Mesajlar: 3
Takım: Galatasaray...
Eğitim: Lise
Burcunuz: Akrep
Arkadaşları:0
Ettiği Teşekkür: 0
Aldığı Teşekkür 0
Xsir Gücü: 0
Xsir Puanı: 1 Xsir Grafiği:
![]() |
hmm ok biraz daha araştırıyım ben bugün azcık kodlama öğrendik hoca öğretiyo.neyse ben az daha araştırıyım çok thanks..
|
|
![]() |
| Bookmarks |
| Konu Seçenekleri | |
| Modları Göster | |
|
|
Okuduğunuz Konuya Benzer Konular
|
||||
| Konu | Konuyu Açan | Forum | Cevaplar | Son Mesaj |
| P800-P900-P910 uygulamaları | HaYLaZ | Karantina Odası | 6 | 06-09-2008 14:12 |
Forum saati Türkiye saatine göredir. GMT +2. Şuan saat: 09:22 .
(Türkiye için GMT +2 seçilmelidir.)