PIC16F88 ADC ve LCD sorunu

Başlatan MetaL_HEAD, 15 Kasım 2011, 11:41:36

MetaL_HEAD

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:
#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 ADCresult 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:

#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

dosya ekleri https://rapidshare.com/files/952299123/test.rar

NOT: MPLAB +  HITECH C kullanıyorum

MetaL_HEAD

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.