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