Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: semesu - 28 Şubat 2008, 21:38:03

Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 28 Şubat 2008, 21:38:03
acıklamalarınız ıcın cok teşekkür ederım. evet kusura bakmayın eksık yerler var yazdıgım maılde.

baskalarına acıklayıcı olması acısından programın tamamını ekliyorum;


#include<pic.h>
#include<delay.c>
#include<lcd.c>
#include <stdio.h>

main (void){
const float lsb=5000.0/1024.0;
float dusuk,yuksek,volt;
unsigned char goster[]="  ";
unsigned int mv;


ADCON0=0x41;
ADCON1=0x8E;
TRISB=0;
TRISA=0xF3;
lcd_init();



for(;;){
lcd_clear();
ADCON0=0x45;
while((ADCON0 & 4)!=0);
yuksek=ADRESH;
dusuk=ADRESL;

volt=256.0*yuksek+dusuk;
volt=volt*lsb;
mv=(int)volt;
sprintf(goster,"%d",mv);
lcd_puts(goster);
DelayMs(250);


     }

}





iyi calısmalar
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 07 Mart 2008, 00:02:22
mrb(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us) yazdıgım programda bende lcd de hem adc_val degerini hemde volt degerını gostermesı ıcın degsıklıkler yaptım.
gayet sorunsuz calısıyor ancak lcd de 2.satıra gecıremedım volt degerını
sizin komutlarınızı kullandım lcd_goto(S1_1) lcd_goto(S2_1) seklınde olan ama hata verdı.(undefined S1_1 seklınde)
sonra su sekılde yazdım
lcd_goto(0x80) boyle yazdıgımda 2.satıra atlamıyor
lcd_goto(ox85) yazdıgımda da ekranda hıcbırsey cıkmıyor.
aradakı rakamları(0x81,0x82,0x83 gibi)  denedım yıne farketmedı
lcd olarak da
LM032L kullanıyorum
yardımcı olursanız sevınırım
iyi calısmalar
Başlık: Lcd.c dosyasinda sorun
Gönderen: CLR - 07 Mart 2008, 00:06:51
Merhaba,

0x80 yerine 0xC0 yaz,  2. satıra geçecektir.

Aslan74'ün tanımlamalarını görmedim fakat 1. satır için

S1_1=0x80 // 1. satır 1. karakter
S1_2=0x81
...
S1_16=0x8F // 1. satır 16. karakter
2. satır için
S2_1=0xC0   // 2. satır 1. karakter
S2_2=0xC1
...
S2_16=0xCF

olmalı  tabii bunları #define ile tanımlayacaksın
#define   S1_1     0x80   // gibi

Kolay gelsin
Başlık: Lcd.c dosyasinda sorun
Gönderen: arslan74 - 07 Mart 2008, 06:45:39
Alıntı yapılan: semesumrb yazdıgım programda bende lcd de hem adc_val degerini hemde volt degerını gostermesı ıcın degsıklıkler yaptım.
gayet sorunsuz calısıyor ancak lcd de 2.satıra gecıremedım volt degerını
sizin komutlarınızı kullandım lcd_goto(S1_1) lcd_goto(S2_1) seklınde olan ama hata verdı.(undefined S1_1 seklınde)
sonra su sekılde yazdım
lcd_goto(0x80) boyle yazdıgımda 2.satıra atlamıyor
lcd_goto(ox85) yazdıgımda da ekranda hıcbırsey cıkmıyor.
aradakı rakamları(0x81,0x82,0x83 gibi)  denedım yıne farketmedı
lcd olarak da
LM032L kullanıyorum
yardımcı olursanız sevınırım
iyi calısmalar

Merhaba,

eemkutay bey güzel bir şekilde acıklamış. Bu bahs ettiği işlemi ben "lcd.h" dosyasında yaptığım için o hatayı almıyorum. Yani Hi-tech'in "lcd.h" ve "lcd.c" dosyalarına ben biraz ekleme yaptım. Amac okunabilirliği artırmak için, böyle yaptım. yayınladığım proje dosyasının içinde aradığınız bütün bilgiler var. Benim kullandığım "lcd.c" ve "lcd.h" dosyasını kullanırsanız o hata mesajını almassınız.

Selamlar
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 07 Mart 2008, 21:58:24
MERHABA DEDİKLERİNİZİ DENEDIM
LCD_GOTO(0X80) YERİNE LCD_GOTO(0XC0) YAZDIM ANCAK BİRSEY FARKETMEDI. EKRANDA SACEDE ADC_VAL  DEGERİNİ GOREBILIYORUM.
YAZDIGIM PROGRAMI ASAGIYA EKLIYORUM ACABA GOZDEN KACIRDIGIM BIRSEYMI VAR?




#include<pic.h>
#include<delay.c>
#include<lcd.c>
#include <stdio.h>



main (void){
unsigned char goster []= "  ";





ADCON0=0x41;
ADCON1=0x8E;
TRISB=0;
TRISA=0xF3;
lcd_init();



for(;;){
unsigned int  adc_val;
unsigned int dusuk,yuksek;
float volt;


lcd_clear();

ADCON0=0x45;
while((ADCON0 & 4)!=0);
yuksek=ADRESH;
dusuk=ADRESL;
adc_val=256*yuksek+dusuk;
volt=adc_val*(5./1024);



lcd_goto(0x80);
sprintf(goster," adc_val=%d",adc_val);
lcd_puts(goster);

lcd_goto(0xC0);
sprintf(goster," volt=%1f",volt);
lcd_puts(goster);
DelayMs(500);


   }

}


iyi calısmalar
Başlık: Lcd.c dosyasinda sorun
Gönderen: arslan74 - 08 Mart 2008, 03:51:28
Alıntı yapılan: semesuMERHABA DEDİKLERİNİZİ DENEDIM
LCD_GOTO(0X80) YERİNE LCD_GOTO(0XC0) YAZDIM ANCAK BİRSEY FARKETMEDI. EKRANDA SACEDE ADC_VAL  DEGERİNİ GOREBILIYORUM.
YAZDIGIM PROGRAMI ASAGIYA EKLIYORUM ACABA GOZDEN KACIRDIGIM BIRSEYMI VAR?




#include<pic.h>
#include<delay.c>
#include<lcd.c>
#include <stdio.h>



main (void){
unsigned char goster []= "  ";





ADCON0=0x41;
ADCON1=0x8E;
TRISB=0;
TRISA=0xF3;
lcd_init();



for(;;){
unsigned int  adc_val;
unsigned int dusuk,yuksek;
float volt;


lcd_clear();

ADCON0=0x45;
while((ADCON0 & 4)!=0);
yuksek=ADRESH;
dusuk=ADRESL;
adc_val=256*yuksek+dusuk;
volt=adc_val*(5./1024);



lcd_goto(0x80);
sprintf(goster," adc_val=%d",adc_val);
lcd_puts(goster);

lcd_goto(0xC0);
sprintf(goster," volt=%1f",volt);
lcd_puts(goster);
DelayMs(500);


   }

}


iyi calısmalar

Çalışmadığını söylüyorsunuz ama hangi "lcd.c" programını kullandığınız belirtmemişsiniz. Bu durumda bu iş SCMA (sari cizmeli mehmet ağa) yı bulmaya döner.
sonuca ulaşmak için ya benim gösterdiğim şekilde benim "lcd.c" programını kullanmalısın yada başka "lcd.c" programını kullanacaksanız o zaman bu "lcd_goto" fonksiyonun içindeki koduda yayınlamanız gerekiyor.
Ancak o zaman size cevap verilebilir. Bu durumda kimse kesin cevap veremez.

Selamlar
Başlık: Lcd.c dosyasinda sorun
Gönderen: CLR - 08 Mart 2008, 19:06:18
Merhaba,

@semesu

0x80 ile birinci satıra gidip yazıyorsa 0xC0 ile de 2. satıra gider ve yazar.
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 10 Mart 2008, 20:35:11
eemkutay,sizin soyledıklerınızı tekrar tekrar denedım ama olmuyor , sanırım bendeki lcd.c ve lcd.h dosyalarında eksıkler var,sebebini bende anlamadım. yardımcı oldugunuz ıcın teşekkür ederım.
arslan74, lcd.c ve lcd.h dosyalarınızın bulundugu proje klasorune ulasamadım. nerden bulabılecegımı soyleyebilirmisiniz?
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 10 Mart 2008, 21:52:29
arkadaslar deneme yaparken bır hatamı daha buldum. bu hatamı goremedim cunku volt ve adc_val degerlerını aynı anda goremıyordum ekranda.Lcd ye sadece adc_val yada sadece volt degerını  yazdırdıgımda  ozaman ikiside dogru degerleri veriyor ama



sprintf(goster," volt=%f",volt);
lcd_puts(goster);
DelayMs(500);
lcd_clear();


sprintf(goster," adc_val=%d",adc_val);
lcd_puts(goster);
DelayMs(750);

seklınde yazdıgımda once volt degerini dogru gosterıyor ancak bu degerı sılıp adc_val degerini dogru gostermıyor alakasız deger  yazıyor ekranda . aynı sekılde


sprintf(goster," adc_val=%d",adc_val);
lcd_puts(goster);
DelayMs(750);
lcd_clear();

sprintf(goster," volt=%f",volt);
lcd_puts(goster);
DelayMs(500);
yaptıgımda da adc_val degerini dogru gosterıyor ancak  bu sefer de volt degerı alakasız bırsey yazıyor ekranda.


hatam nerede bulamadım bırturlu
iyi calısmalar arkadaslar
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 11 Mart 2008, 01:09:47
Lcd.c

void
lcd_goto(unsigned char pos)
{
LCD_RS = 0;
lcd_write(0x80+pos);
}



lcd_goto(0x00);
sprintf(goster1," Adc_value= %d",adc_val);
lcd_puts(goster1);

lcd_goto(0x40);
sprintf(goster2," %1fvolt",volt);
lcd_puts(goster2);
DelayMs(200);


yazarak deneyebilirsiniz.
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 11 Mart 2008, 15:00:10
mrb
ahmet2004  sizin dedıklerınızı yaptım

lcd_goto(0x00);
     sprintf(goster1," Adc_value= %d",adc_val);
     lcd_puts(goster1);

     lcd_goto(0x40);
     sprintf(goster2," %1fvolt",volt);
     lcd_puts(goster2);
     DelayMs(200);
komutlarını yazdım ıkı degeride gorebılıyorum ekranda ancak eger adc_val degerini ilk satıra yazarsam ikinci satırda  volt degeri sıfır gozukuyor lcd de,yada volt degerini ilk satıra yazarsam ikinci satırda adc_val degeri cok alakasız bır sayı yazıyor bu seferde .

ayrıca bende olan  lcd.c dosyasına baktım yazdıgınız
void
lcd_goto(unsigned char pos)
{
  LCD_RS = 0;
  lcd_write(0x80+pos);
}


komutları aynı bendeki dosyadakıyle .
hangı hatadan  dolayı lcd de  iki degeride aynı anda dogru goremıyor olabılrım ??
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 11 Mart 2008, 16:01:41
HI-TIDE

main.c

#include <htc.h>

#include <string.h>
#include <stdio.h>

#include "delay.h"
#include "lcd.h"

main (void){
unsigned char goster1[20]= " ";
unsigned char goster2[20]= " ";


ADCON0 = 0x41;
ADCON1 = 0x8E;
TRISB = 0x00;
TRISA = 0xF3;
TRISD = 0x00;


lcd_init();

for(;;) {
unsigned int adc_val;
unsigned int dusuk,yuksek;
float volt;
ADCON0 = 0x45;

lcd_clear();
while((ADCON0 & 4) != 0);
yuksek=ADRESH;
dusuk=ADRESL;
adc_val=256*yuksek+dusuk;
volt=adc_val*(5./1024);

lcd_goto(0x00);
sprintf(goster1," Adc_value= %d",adc_val);
lcd_puts(goster1);

lcd_goto(0x40);
sprintf(goster2," %1fvolt",volt);
lcd_puts(goster2);
DelayMs(200);
}
}
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 11 Mart 2008, 16:15:11

void
lcd_write(unsigned char c)
{
PORTB = c >> 4;
LCD_STROBE;
PORTB = c;
LCD_STROBE;
DelayUs(40);

}

Bportuna direkt değer atılıyor.Buda tabii kontrol pinlerini etkiliyor.
O yüzden kontrol pinleri D ye alıp dene.veya başka pinlere.




Main.c

........
TRISD=0x00; //D portu çıkış yapıldı.
........


Lcd.c

........
static bit LCD_RS @ ((unsigned)&PORTD*8+6); // Register select
static bit LCD_EN @ ((unsigned)&PORTD*8+7); // Enable
.......



Görüldüğü gibi;
Lcd RS pinini PortD6
Lcd E pinini   PortD7

Lcd kontrol pinlerini bu şekilde değiştir.
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 11 Mart 2008, 16:46:16
Float değişkenleri kullanmak içinse;

(http://img358.imageshack.us/img358/4995/printfpl1.jpg)

HI-TIDE Proje özelliklerinden Linker bölümünde bulunan

float parametresini programa bildirmen gerekiyor.
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 13 Mart 2008, 18:08:34
MRB
SİZİN DEDİGİNİZ SEKILDE LCD.C DOSYASINI DEGISTIRDIM ONA GORE ISISTE DEGISIKLIKLERDE YAPTIM ANCAK EKRANDA BU SEFER HIC BIRSEY CIKMIYOR.
BİRTURLU OLMADI:(
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 13 Mart 2008, 19:53:54
semesu:

devreyi isis'de bir çalıştıra bilir misin?

http://rapidshare.com/files/99276992/1.zip.html (http://rapidshare.com/files/99276992/1.zip.html)
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 19 Mart 2008, 15:38:11
MRB,
CALISTIRDIM DOGRU CALISIYOR  SİZİN GONDERDİGİNİZ HEX DOSYASIYLA
ANCAK BENDEKİ HEX DOSYASIYLA  YINE CALISMADI EKRANDA HIC BIRSEY GOREMIYORUM :(
LCD CONTROL PINLERİNİ SİZİN DEDİGİNZ SEKILDE DEGISTIRDIM AMA OLMADI YINEDE
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 21 Mart 2008, 19:11:46
mrb,
eger sakıncası yoksa yazdıgınız programı ekleyebılrımısınız?
ordan belki gorebılırım hatamı
iyi calısmalar
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 21 Mart 2008, 20:05:26
üst mesajda prg kodu vermştim. Program O.Extra birşey yok.

isis arızalı olabilir.

Ben HI-TIDE kullanıyorum.MPLAB kullanmadım.

Hex kodu HI-TIDE ile PIC16 ile oluşturuldu.Farklı birşey yok.
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 21 Mart 2008, 20:08:41
Kod bu :


#include <htc.h>

#include <string.h>
#include <stdio.h>

#include "delay.h"
#include "lcd.h"

main (void){
unsigned char goster1[20]= " ";
unsigned char goster2[20]= " ";


ADCON0   =   0x41;
ADCON1   =   0x8E;
TRISB   =   0x00;
TRISA   =   0xF3;
TRISD   =   0x00;


  lcd_init();

  for(;;) {
unsigned int adc_val;
unsigned int dusuk,yuksek;
float volt;
ADCON0   =   0x45;

     lcd_clear();
     while((ADCON0 & 4) != 0);
     yuksek=ADRESH;
     dusuk=ADRESL;
     adc_val=256*yuksek+dusuk;
     volt=adc_val*(5./1024);

     lcd_goto(0x00);
     sprintf(goster1," Adc_value= %d",adc_val);
     lcd_puts(goster1);

     lcd_goto(0x40);
     sprintf(goster2," %1fvolt",volt);
     lcd_puts(goster2);
     DelayMs(200);
  }
}



Kullandığın programları kaldırıp yeniden kurmanı öneririm.
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 24 Mart 2008, 21:46:41
mrb arkadasım
dedigin seyin mumkun olabılecegını dusundum bende dogru calısmayan programı arkadasıma  gonderdım ondada aynı sorun oldu.
yalnız programda bıryerı degıstırıdım sprintf içerisindeki  goster1 ıle goster2 yazdıgım yerlerı degıstırdım.
ancak bu seferde  adc_val 1022 olana kadar dogru volt degerlerini okuyabılıyorum ama 1022 de yanlıs deger gosterıyor.
mesela
adc_val=921 icin volt=4,49
adc_val=1022 icin volt=2.003 degerini gosterıyor.
sorun nerde bırturlu anlamadım:(
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 24 Mart 2008, 21:54:10
mrb ,
bendeki programın hatalı calısabılecegını dusundum ve  kodları arkadasıma gonderdim ancak aynı sorun ondada oldu.
yalnız programda sprintf icersinde goster1 ıle goster2 nin yerlerini degistirdim ozaman lcd de volt degerini adc_valt degerı 1022 gosterene kadar dogru okuyabılıyorum
ancak adc_val=1022 oldgunda volt=2.003 degerini veriyor, diger adc_val degerlerinde lcd den okudugum volt degerleri dogru .
hata nerde anlamadım bırturlu:(
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 24 Mart 2008, 22:38:17
Kullandığın program ve versiyon nolarını yazarmısın?

Arkadaşına yazılı kodu mu gönderdin yoksa hex'imi gönderdin.

Anlamaya çalışıyorum senin içinde bulunduğun bu durumu.

Biraz daha fazla bilgi verirsen iyi olur.

MPLAB mı HI-TIDE mi kulanıyorsun.
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 25 Mart 2008, 22:14:00
mrb arkadasım
programda biraz daha degısıklık yaptım
sprintf icerisindeki goster1 ile goster 2 nin yerlerını degıstırdım
bu seferde
sadece adc_val=1022 oldugunda yanlıs volt degerı gosterıyor diger adc_val degerlerinde dogru volt degerlerini okuyorum.
ayrıca programı gonderdım  arkadasıma aynı sorun ondada oldu maalesef.


iyi calısmalar
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 25 Mart 2008, 23:41:56
pardon ben msjımın gıtmedıgını dusunerek tekrar yazdım kusura bakmayın.
kullandıgım proteus 7 professional
mplab kullanıyorum: mplab IDE v7.10
derleyici olarak ise hi- tech kullanıyorum.
hem hex dosyasını hemde c kodlarını gonderdım arkadasıma.

yardımlarınız ıcın teşekkür ederım
iyi calısmalar
Başlık: Lcd.c dosyasinda sorun
Gönderen: arslan74 - 26 Mart 2008, 08:10:05
Alıntı yapılan: semesupardon ben msjımın gıtmedıgını dusunerek tekrar yazdım kusura bakmayın.
kullandıgım proteus 7 professional
mplab kullanıyorum: mplab IDE v7.10
derleyici olarak ise hi- tech kullanıyorum.
hem hex dosyasını hemde c kodlarını gonderdım arkadasıma.

yardımlarınız ıcın teşekkür ederım
iyi calısmalar


Hi-Tech'in hangi versiyonun kullaniyorsun?
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 26 Mart 2008, 18:10:57
8.05 PL2 versiyonunu kullanıyorum
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 26 Mart 2008, 18:40:25
mrb,
Ahmet2004 arkadasım ısıs programını sıldım tekrar yukledım ancak yıne aynı sorun devam edıyor :(
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 26 Mart 2008, 19:19:42
HI-TIDE v3.13

PICC 9.60 PL1 Standart

Proteus 7.2 sp2

Bendeki programlarda bu şekilde.
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 27 Mart 2008, 22:32:12
artık yapacak bıse yok sanırım. boardun uzerınde  denemek istıyorum inş. orda aynı hatayı gormem. cunku isis bazen yanlıs sonuclar verebılıyor maalesef .
yardımlarınız ıcın cok teşekkür ederım .
Başlık: Lcd.c dosyasinda sorun
Gönderen: arslan74 - 27 Mart 2008, 23:39:12
Alıntı yapılan: semesuartık yapacak bıse yok sanırım. boardun uzerınde  denemek istıyorum inş. orda aynı hatayı gormem. cunku isis bazen yanlıs sonuclar verebılıyor maalesef .
yardımlarınız ıcın cok teşekkür ederım .

Merhaba,

Ben PIC ile ADC okuma için eğitim yazısı yazdım. Görsel olarakta herbir adımı anlatiyorum. Sorunsuz çalışan bir kod varken, sorunlu olan ve kodunun kimin yazdığı belli olmayan ve üstelikte düzgün çalışmayan bir kod üzerinde neden ısrar ediyorsunuz? Sizin kullandığınız derleyicinin versiyonlarının aynısı kullaniyorum. Eğitimin sonundada bütün projeyi ISIS simulasyonun ile upload ettim.

Sorunsuz çalışan bir kodu kullanırsanız, vaktinizi ana koda ayrımaya verebilirsiniz. Gereksiz yere bu işler için zaman kayıb etmessiniz.

Selamlar
Başlık: Lcd.c dosyasinda sorun
Gönderen: semesu - 28 Mart 2008, 20:00:23
MRB,
ZATEN BEN SİZİN VERDİGİNİZ EGİTİMDEN YOLA CIKARAK DUZENLEDIM PROGRAMIMI ANCAK BASKASINDA DOGRU CALISAN PROGRAMIN BENDE DOGRU CALISMAMASI ,BENDEKİ PROGRAMLARIN DOGRU CALISAMAYABILECEGI DUSUNCESINI ORTAYA CIKARDI .İSRAR ETMEM BU YUZDENDİ
İYİ CALISMALAR
Başlık: Lcd.c dosyasinda sorun
Gönderen: ahmet2004 - 28 Mart 2008, 20:46:50
arslan74:

semesu'nun kendine göre düzenlediği ve üzerinde değişiklik yaptım dediği

bu yukarda benimde tekrarladığım kod sizde çalıştımı çalışmadımı?

Bunu öğrenmek istiyorum.
Başlık: Lcd.c dosyasinda sorun
Gönderen: arslan74 - 31 Mart 2008, 19:28:21
Alıntı yapılan: ahmet2004arslan74:

semesu'nun kendine göre düzenlediği ve üzerinde değişiklik yaptım dediği

bu yukarda benimde tekrarladığım kod sizde çalıştımı çalışmadımı?

Bunu öğrenmek istiyorum.


Merhaba,

Bunu proje olarak upload ederseniz. Derler ve neticeyi bildirim.

Selamlar