PIC16F88 ADC ve LCD sorunu

MetaL_HEAD

Üye
Katılım
18 Mar 2009
Mesajlar
32
Puanları
1
Yaş
37
Merhaba arkadaşlar

pic16f88 mikroişlemcisiyle 3 farklı kanaldan analog okumam gerekiyor ve bunları lcd de göstermem gerekiyor. analog okuma işini öncelikle tek bir kanaldan yapmak istedim fakat başarılı olamadım.

lcd.h ve lcd.c dosyaları nadir bulunduğu için bu dosyaları HI-TECT ile PIC Ogreniyorum kitabından yola çıkarak ben modifiye ettim.

LCD deki
RS için RB0
RW için RB1
E için de RB2 çıkışını kullanmak istedim.
D4 D5 D6 D7 için de sırasıyla RB4 RB5 RB6 RB7 çıkılarını kullandım.

Problemleri şunlar:

Basit bir kod yazıp lcd de görüntülemek istediğim de görüntüleyemedim.

Kod şu:
Kod:
#include <htc.h>
#include "delay.h"  // Gecikme kütüphanesi
#include "lcd.h"        // LCD kütüphanesi tanımlanıyor

void main(void)    // Ana fonksiyon alanı
{  
  TRISB=0x00; 
 
  PORTB=0x00;
 
  
  lcd_init();  
  
  lcd_yaz("  hello world"); 
  lcd_gotoxy(2,1);     
  lcd_yaz("   1234567890"); 
  for(;;);       
}

ADC ile ilgili problemim de şu:

Proteus'ta simule etmek istediğim sistemi RA2 ucunu LM335 'ten gelen veriyi okuyup belirli bir değerden büyükse B portundan birini aktif etmesi idi. Fakat adresl ve adresh registerlarına atılan sayısal değeri ne şekilde yorumlamam gerektiğini bilmiyorum. Yani sensör dönüşü +2 ile + 4 arasında ise bu registerlar içerisinde değerler ne şekilde değişir ?

Aşağıda yazdığım kod var ADC için. Orda ADCvalue değerini forumlardaki bazı bilgiler ışığında bişeye eştledim ama bilinçli olarak ne yaptığımı bilmiyorum. Böyle absürd bi durumdayım.

ADC için yazdığım kod:

Kod:
#include <htc.h>
#include "delay.h"


void main(void)
{
    int ADCresult=0;
    CMCON=7;
   
    ANSEL= 0b00000100;
    TRISA= 0b00000100;
    TRISB= 0x00;
    PORTB= 0x00;
   
    ADCON1=0b10000000;
    ADCON0=0b01010001;
   
    for(;;)
    {
        DelayUs(25);
        GO=1;
        while(GO);
        ADCresult=ADRESH*256+ADRESL;
       
        if (ADCresult < 100)
       
        RB0=1;
        else RB0=0;
        }
}

Ekte hem lcd için oluşturduğum gerekli dosyalar hem de ADC için oluşturduğum dosyalar mevcuttur.

Yardımlarınız için şimdiden teşekkürler. İyi akşamlar
 
Arkadaşlar ADC ile ilgili problemimi hallettim.


Bahsettiğim ADCresult değeri, PIC16F88 10bitlik çözünürlükte çevridiği için 0 ile 1023 arasında değişiyormuş.


Fakat hala LCD ile ilgili problemimi devam etmekte. Lütfen bu konuyla ilgili bir fikriniz varsa öneriniz.
 
Sn. MetaL_HEAD,

Dosyalarınızı forum'a tekrar yüklemeniz mümkün müdür acaba? Ayrıca LCD'nizin kaç karakteri desteklediğini de belirtebilir misiniz?

Saygılarımla,
 
Sn. etuzuner

ADC ile ilgili değişikliğin de olduğu dosyaları ekledim.
 
Sn. MetaL_HEAD,

Derleyicinin HI-TECH C görmemişim, kusura bakmayınız. HI-TECH C kullanmadım, eminim kullanan üyelerimizden size yardımcı olacak çıkacaktır. Eğer CCS C derleyicisinde nasıl yapılır diye merak ederseniz, elimden geldiği kadar yardımcı olmaya çalışırım.

Saygılarımla,
 
Yok hocam estağfirullah.

ben önce ADC olayını CCS de denemiştim ve bir randıman alamadım. Hatta gerekli registerlara erişmemi engelliyor diye düşündüğümden HITECH C ye döndüm. HITECH C ye dönmemin diğer sebebi de C de kod yazmaya daha alışığım.
Diyeceğim CCS için yardımcı olursanız çok sevinirim ve hatalarımı CCs de anlayıp HITECH C ye entegre edebilirsem foruma da bu bilgiyi paylaşırım.

Görüntülenme sayısına göre tek bir cevap gelmesinin sebebi sanırım HITECH C kullanıyor olmam.

İlginiz için tekrardan teşekkürler
 
Sn. MetaL_HEAD,

Aşağıdaki linkteki dosya Serdar Çiçek'in kitabından alınmış bir örnek var. Birazcık oynadım. Anladığım kadarıyla bilginiz var, onun için sadece fazla kanalları iptal ettim.

Eğer kod ile ilgili soracağınız bir şey olursa seve seve yardımcı olmaya çalışırım.

Bilmiyorum ne kadar zamandır ilgileniyorsunuz ama ben seneler seneler önce başlamadım. Bu nedenle eğer yeni başladıysanız en azından başka konularda da ilerlemenize belki yardımım dokunabilir.

Saygılarımla,
 
Hocam ilginiz için tekrardan teşekkür ederim.

Lisans öğrenimim süresince bir kaç proje dışında mikroişlemcilerle ilgilenmedim. O zamanlar CCS C kullanıyordum ve mikroişlemcilerde genelde 16F877 oluyordu. Şuanda işim dolayısıyla tekrardan mikroişlemcilere dönmem gerekti.

Eminim ki bana yardımınız dokunacaktır. Şuanda eklediğiniz dosyayı indiriyorum. İnceledikten sonra sizi tekrardan rahatsız ederim. Yardımınız ve yardımcı olma isteğiniz için tekrardan teşekkür ederim.
 
Hi-Tech lcd sorun olabiliyor , çok örnek olmadığı için.
Microchip satın aldı ve çöpe attı .
Kendisinde 12-16 için c yok .
CCS C iyidir , muhtemelen kullanımla ilgili sorunlar olmuştur.
Önerilen kitap çok iyidir.

Aşağıdaki link picp den @aslan74 nic li hocamızdan alıntıdır.
Bu vesile ile kendisine teşekkür ederim.
Hi-Tech kurulum dosyasındaki örnekler sorunlu olduğu için ve kendisi iyi bir programcı olması hasebiyle bazı değişiklikler yapmış ve sorunsuzca lcd kullanılabiliyor.
 
@KAZIMUGUR verdiğiniz bilgiler ve dosyalar için teşekkür ederim. ben 16F88 kullanıyorum ve bu mikroişlemci için gerek CCS C de gerekse de HITECH te, F877 yada F84 deki gibi detaylı bir anlatım ve örnek bulmak oldukça güç. Bu yüzden de birşeylere hakim olmak zaman alıyor. Verdiğiniz dosyaları inceleyeceğim. Teşekkürler
 

Yeni mesajlar

Forum istatistikleri

Konular
128,306
Mesajlar
916,563
Kullanıcılar
450,144
Son üye
Saffetarli

Yeni konular

Geri
Üst