Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: mr_knox - 20 Ocak 2012, 10:44:21

Başlık: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 10:44:21
arkadaşlar merhaba hepinize iyi çalışmalar ve ilgileriniz için şimdiden teşşekkürlerimi sunuyorum.
gelelim konumuza ccs c derleyicisi kullanıyorum ve bir projede çok uzadığı için daha büyük hafıza alanı olan 18f452 denetleyicisini seçtim.
programı derledim mevcut çıkan hataları düzelttim. ama isiste  deneme yapacakken simülasyonu etkin duruma getirdiğimde lcd yi sürdüğüm d portu aktif olarak olarak gözükmüyor :( acaba ccs c kütüphanesindeki lcd driver dosyasımı uyumsuzluk gösteriyor? çünkü sırf lcd denemek için bir deneme yazıyorum 16f877a da sorun yok ama aynı denemeyi 18f452 ye göre değiştirip derlediğimde sonuç yok :( bu konuda tecrübeli arkadaşların yardımlarını rica ediyorum.

tekrardan iyi çalışmalar diliyorum....
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: skara1214 - 20 Ocak 2012, 11:03:28
yanlış hatırlamıyorsam void mainin üstünde lcd _d true gibi bir komut kullanıyordun biraz araştırırsan görürsün o komut lcd nin hangi porta bağlandığını söylüyordu onu eklememişsindir heralde.İyi çalışmalar...
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 11:18:12
#define use_portd_lcd TRUE 
#include <LCD.c>   
bu komutlardan bahsediyorsun galiba arkadaşım
bunları kullandım zaten hiç lcd sürmemiş biri değilim 16f877a da değişik 4-5 uygulama yapmış ve gerçek uygulamada çalıştırmışlıklarım var
ama yinede ilgin için teşşekkür ederim
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: fahri- - 20 Ocak 2012, 11:21:46
peki hangi yanlışlarını düzelticez?
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 11:31:00
Alıntı yapılan: fahri- - 20 Ocak 2012, 11:21:46
peki hangi yanlışlarını düzelticez?

bu soruyu anlamlandıramadım yanlışımı bilsem zaten ortalıkta bir problem kalmaz.
benim problemim kısaca şu 16f877a ile lcd uygulamaları yaptım fakat 18f452 ile yaptığımda yukarıdada anlattığım sonuç ortaya çıkıyor 18f452 ile lcd uygulama tecrübesi olan veya bu konuda fikir sahibi arkadaşların yardımlarını bekliyorum.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: fahri- - 20 Ocak 2012, 11:44:07
Arkadaşım kodlarını ve şemanı koymadan nasıl yanlışını bulacağız. Ne kodu yazdığını şemanı nasıl bilip de yorum yapalım.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 12:03:26
(http://C:%5CUsers%5CTOSHIBA%5CPictures%5Cpicproje_ye)
(http://C:%5CUsers%5CTOSHIBA%5CPictures%5Cpicproje_ye_2)
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: Pir-O - 20 Ocak 2012, 12:34:35
CCS C'nin kütüphanesi sorunlu ben de baya problem yaşadım. İnternetten bulduğum bir kütüphane var ben onu kullanıyorum sorunsuz çalışıyor.

// flex_lcd.c

// These pins are for the Microchip PicDem2-Plus board,
// which is what I used to test the driver.  Change these
// pins to fit your own board.

#define LCD_DB4   PIN_B4
#define LCD_DB5   PIN_B5
#define LCD_DB6   PIN_B6
#define LCD_DB7   PIN_B7

#define LCD_E     PIN_B0
#define LCD_RS    PIN_B1
//#define LCD_RW    0
// If you only want a 6-pin interface to your LCD, then
// connect the R/W pin on the LCD to ground, and comment
// out the following line.

//#define USE_LCD_RW   1

////  lcd_putc(c)  Will display c on the next position of the LCD.     ////
////                     The following have special meaning:           ////
////                      \f  Clear display                            ////
////                      \n  Go to start of second line               ////
////                      \b  Move back one position                   ////
////                                                                   ////
////  lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1)    ////
////                                                                   ////
////  lcd_getc(x,y)   Returns character at position x,y on LCD         ////
//========================================

#define lcd_type 2        // 0=5x7, 1=5x10, 2=2 lines
#define lcd_line_two 0x40 // LCD RAM address for the 2nd line


int8 const LCD_INIT_STRING[4] =
{
0x20 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots
0x0C,//0xf,                    // Display on
1,                      // Clear display
6                       // Increment cursor
};

/*
byte CONST LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xC, 1,6};

Value   Cursor  Blink
0x0C     Off      Off
0x0D     Off      On
0x0E     On       Off
0x0F     On       On

*/

//-------------------------------------
void lcd_send_nibble(int8 nibble)
{
// Note:  !! converts an integer expression
// to a boolean (1 or 0).
output_bit(LCD_DB4, !!(nibble & 1));
output_bit(LCD_DB5, !!(nibble & 2));
output_bit(LCD_DB6, !!(nibble & 4));
output_bit(LCD_DB7, !!(nibble & 8));

delay_cycles(1);
output_high(LCD_E);
delay_us(2);
output_low(LCD_E);
}

//-----------------------------------
// This sub-routine is only called by lcd_read_byte().
// It's not a stand-alone routine.  For example, the
// R/W signal is set high by lcd_read_byte() before
// this routine is called.

#ifdef USE_LCD_RW
int8 lcd_read_nibble(void)
{
int8 retval;
// Create bit variables so that we can easily set
// individual bits in the retval variable.
#bit retval_0 = retval.0
#bit retval_1 = retval.1
#bit retval_2 = retval.2
#bit retval_3 = retval.3

retval = 0;

output_high(LCD_E);
delay_cycles(1);

retval_0 = input(LCD_DB4);
retval_1 = input(LCD_DB5);
retval_2 = input(LCD_DB6);
retval_3 = input(LCD_DB7);

output_low(LCD_E);

return(retval);
}
#endif

//---------------------------------------
// Read a byte from the LCD and return it.

#ifdef USE_LCD_RW
int8 lcd_read_byte(void)
{
int8 low;
int8 high;

output_high(LCD_RW);
delay_cycles(1);

high = lcd_read_nibble();

low = lcd_read_nibble();

return( (high<<4) | low);
}
#endif

//----------------------------------------
// Send a byte to the LCD.
void lcd_send_byte(int8 address, int8 n)
{
output_low(LCD_RS);

#ifdef USE_LCD_RW
while(bit_test(lcd_read_byte(),7)) ;
#else
delay_us(60);
#endif

if(address)
   output_high(LCD_RS);
else
   output_low(LCD_RS);

delay_cycles(1);

#ifdef USE_LCD_RW
output_low(LCD_RW);
delay_cycles(1);
#endif

output_low(LCD_E);

lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}

//----------------------------


void lcd_setcursor_vb(short visible, short blink) {
  lcd_send_byte(0, 0xC|(visible<<1)|blink);
}


void lcd_init(void)
{
int8 i;

output_low(LCD_RS);

#ifdef USE_LCD_RW
output_low(LCD_RW);
#endif

output_low(LCD_E);

delay_ms(15);

for(i=0 ;i < 3; i++)
   {
    lcd_send_nibble(0x03);
    delay_ms(5);
   }

lcd_send_nibble(0x02);

for(i=0; i < sizeof(LCD_INIT_STRING); i++)
   {
    lcd_send_byte(0, LCD_INIT_STRING[i]);

    // If the R/W signal is not used, then
    // the busy bit can't be polled.  One of
    // the init commands takes longer than
    // the hard-coded delay of 60 us, so in
    // that case, lets just do a 5 ms delay
    // after all four of them.
    #ifndef USE_LCD_RW
    delay_ms(5);
    #endif
   }

}

//----------------------------

void lcd_gotoxy(int8 x, int8 y)
{
int8 address;

if(y != 1)
   address = lcd_line_two;
else
   address=0;

address += x-1;
lcd_send_byte(0, 0x80 | address);
}


//-----------------------------
void lcd_putc(char c)
{
switch(c)
   {
    case '\f':
      lcd_send_byte(0,1);
      delay_ms(2);
      break;

    case '\n':
       lcd_gotoxy(1,2);
       break;

    case '\b':
       lcd_send_byte(0,0x10);
       break;

    default:
       lcd_send_byte(1,c);
       break;
   }
}

//------------------------------
#ifdef USE_LCD_RW
char lcd_getc(int8 x, int8 y)
{
char value;

lcd_gotoxy(x,y);

// Wait until busy flag is low.
while(bit_test(lcd_read_byte(),7));

output_high(LCD_RS);
value = lcd_read_byte();
output_low(lcd_RS);

return(value);
}
#endif
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: pea - 20 Ocak 2012, 13:52:01
Ben de Lcd.c ile çok sorun yaşadım.Her ne kadar güncelleseler , farklı port desteği de sağlasalar sorun çıkarıyor.
Flex_lcd.c kullanıyorum sorunsuz.
Ancak şöyle bir durum var , Flex_lcd kullanırken Fast_io yapmak sorun çıkarabiliyormuş.

http://www.ccsinfo.com/forum/viewtopic.php?t=24661
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 14:39:43
@pir-0 arkadaşım evet dediğin flex_lcd driver bende de vardı hem elimdekini , hem senin paylaştığını d portuna uyarlayıp denedim ama hiçbir faydası olmadı :( @pae arkadaşım belirttiğin ve linini paylaştığın konuyuda uyguladım standart_io() komutunu değişen malesef bişey olmadı :(
ama ilgileri,niz için çok çok teşekkür ediyorum.18 f seri ile lcd uygulaması yapan arkadaş yokmu hiç?
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: pea - 20 Ocak 2012, 14:59:58
18F'in config/fuse ayarlarını doğru yaptığına emin misin?
Bana osilatör ayarı hatalı gibi geldi.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 15:37:59
#include <18f452.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay (clock=4000000)
ve
setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

mevcut olan ayarlar bunlar ters bişey gözünüye çarptımı?
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: BAHAR - 20 Ocak 2012, 17:37:11
Lcd'yi sürmek için porta'yı mı kullanıyorsun? Kendini diğer port'larda dene belki porta'nın bazı ayarları ile ilgili bir problem yaşıyor olabilirsin.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 20 Ocak 2012, 17:41:56
Alıntı yapılan: BAHAR - 20 Ocak 2012, 17:37:11
Lcd'yi sürmek için porta'yı mı kullanıyorsun? Kendini diğer port'larda dene belki porta'nın bazı ayarları ile ilgili bir problem yaşıyor olabilirsin.

evet denedim ccs c programının driver ları genelde b portu için yazılmış ben hem b portu hemde d portu için denedim  ama sonuç alamadım malesef:( yazının başında da dediğim gibi 16f877a da çalışıyor ama 18f452 de çalışmıyor bi sorun varsa bu ikisinin arasındaki farklarda var gibi görünüyor ama nerede halaa bulamadım :(
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: BAHAR - 20 Ocak 2012, 18:01:08
C kullanmıyorum fakat benzer problemi bende yaşamıştım ufak bir incelemeden sonra, 16F877A gibi bir denetleyiciden 18F452 denetleyicisine aynı kodlar ile geçtiğin zaman kodların başından ufak bir satırı değiştirerek yada kaldırarak çözmüştüm. Ama şuan o satır aklımda değil ve muhtemelen adcon yazmacı ile ilgili olabilir.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 23 Ocak 2012, 09:09:58
tekrar merhaba arkadaşlar malesef hala probleme bi çözüm bulamadım :(
fikir, görüş ve tavsiyelerinizi bekliyorum...
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: Pir-O - 23 Ocak 2012, 10:46:53
Ben aynı kütüphaneyi hem 18F452 için hem de diğer PIC'ler için kullanıyorum bir sorun yok. Daha dün bir proje yaptım 18F452 kullandım LCD'ekranı sürdüm hatta data portlarım D portuydu EN ve RS'yi C portuna bağladım sorunsuz çalışıyor. Bence PIC'in bozulmuş olabilir ve ya config ayarlarında sorun olabilir. Basit bir program yaz bir adet ledi yak söndür PIC çalışıyor mu diye kontrol et. Eğer çalışıyorsa lcd_init(); komutundan sonra bekleme yapman gerekiyor delay_ms(10); kadar. bunlar da işe yaramazsa tekrar çözüm yolu ararız.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 23 Ocak 2012, 12:25:37
#include <16f877a.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use fast_io(b)
#define use_portb_lcd TRUE
#include <LCD.c>
void main()
{
  set_tris_b(0x00);

lcd_init();
lcd_send_byte(0,0x01);
start:
lcd_gotoxy(1,1);
printf(lcd_putc,"      LCD       ");
lcd_gotoxy(1,2);
printf(lcd_putc,"     DENEME     ");

goto start;
}


BU 16F877A İLE YAZDIĞIM BASİT KOD ÇALIŞIYOR

#include <18f452.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use fast_io(b)
#define use_portb_lcd TRUE
#include <LCD.c>
void main()
{
  set_tris_b(0x00);

lcd_init();
lcd_send_byte(0,0x01);
start:
lcd_gotoxy(1,1);
printf(lcd_putc,"      LCD       ");
lcd_gotoxy(1,2);
printf(lcd_putc,"     DENEME     ");

goto start;
}


BUDA 18F452 İÇİN YAZILMIŞ BASİT KOD ÇALIŞMIYOR.

yani sadece denetleyici  kodlarını değiştiriyorum port aynı işlev aynı ama 18 te çalışmıyor
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 24 Ocak 2012, 17:46:05
arkadaşlar sonunda sorunu deneme yanılma ile çözdüm.
sorunun yazılımla alakası yokmuş. 16f serilerde proteusta çalışırken mclr ununu high çekmek gerekmiyor eee bizde alışmışız proteus simülasyonda çekmemeye 18 f serisinde eğer mclr yi high çekmezseniz simülasyon çalışmıyor.16 f serisinden 18 f serisine geçipte niye çalışmadı bu şimdi diyen arkadaşların dikkatine :)
bu arada ilgilenen arkadaşlara tekrar teşşekkürlerimi iletir iyi çalışmalar dilerim...
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: fahri- - 24 Ocak 2012, 18:30:16
sana en başta demiştimki şemayı buraya koy hatayı bulalım diye. eğer şemayı koysaydın yaptığın hata 10 dk da sana söylenirdi. Ne demek istediğimi anladın sanırım.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 25 Ocak 2012, 09:02:59
şemayı eklemeye çalıştım tamam sanmıştım ama hata oluşmuş malesef  :-\
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: Maxim - 25 Ocak 2012, 09:12:20
evet şema-kod koymayanlara yardım edip, boşu boşuna vakit harcayanlar için güzel bir örnek çalışma oldu bu  :)
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 24 Şubat 2012, 11:04:11
arkadaşlar merhaba daha önce bu başlık altındaki sorunlu çalışmamla alakalı olduğu için aynı başlık altına yazmanın uygun olacağını düşündüm. sorunum port d den lcd sürmekteki başarısızlığım. şuan ki yaşadığım sorun sırf lcd sürmede olduğu için bununla ilgili basit devreyi ekliyorum. şimdi sorum şu ccs c de mevcut lcd.c driver ile ve forumlarda bulduğum çeşitli driver lar ile denemeler yaptım proteusta ister b portundan ister d portundan süreyim sorun yok küçük resimde görüldüğü gibi ama uygulama yaptığımda b portunda çalışıyor fakat d portunda malesef çalışmıyor :( bağlantıları birkaç sefer kontrol ettim hatta bozdum tekrar yaptım ama olmuyor.hee nedir bu d portu ısrarın diye sorarsanızda devremde b0 daki dış kesmeyi kullanıyorum ve bu sebep lcd yi d portundan sürmek istiyorum. sizce bu sorun ne sebepten kaynaklanabilir.bilgi ve tecrübelerinizi rica ediyorum ilginiz işin şimdiden teşşekkürlerimi sunuyorum.
#include <18f452.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use fast_io(d)
#define use_portd_lcd TRUE
#include <LCD.c>
void main()
{
  set_tris_d(0x00);

lcd_init();
lcd_send_byte(0,0x01);
start:
lcd_gotoxy(1,1);
printf(lcd_putc,"      LCD       ");
lcd_gotoxy(1,2);
printf(lcd_putc,"     DENEME     ");

goto start;
}


(http://[url=http://postimg.cc/image/40xskbj51/%5D%5Bimg%5Dhttp://s18.postimg.cc/40xskbj51/pic_projeye.jpg)
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 25 Şubat 2012, 09:04:29
arkadaşlar bu konuda daha önce sorun yaşayan ve çözen yada neden kaynaklandığını tahmin edecek birisi yokmu?
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: gokayk - 28 Şubat 2012, 18:44:34
Alıntı yapılan: mr_knox - 25 Şubat 2012, 09:04:29
arkadaşlar bu konuda daha önce sorun yaşayan ve çözen yada neden kaynaklandığını tahmin edecek birisi yokmu?

Merhabalar.

#include <18f452.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use fast_io(d)
#include <lcd.c>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2

void main()
{
    lcd_init();
    printf(lcd_putc," Merhaba ");
}

while(1);


Bu şekilde çalışacaktır. Bir deneyin bakalım.

Bunları dahil ettin mi?
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 02 Mart 2012, 11:23:04
#gokayk arkadaş vermiş olduğun kodlarla denedim malesef yine çalışmadı :(
proteusta tamam çalışıyor fakat gelgelelim iş uygulamaya geldiğinde sonuç yok
olay b portundan sürmekse hem proteus hem uygulamada sorun yok çalışıyor.
ama ilgi alakan için çok teşşekkür ederim.
bu arada bu vermiş olduğun kodlarla gerçekte böyle uygulama yapmışmıydın çalışmışmıydı?
yoksa problem bende benim beceriksizliğimmi acep  :-[
evet arkadaşlar ccs c de d portunda lcd sürme işini gerçek uygulamada yapan arkadaşlar tecrübeleriniz ile beni ve bu tip sorunları ileride yaşayacak googleden bu sayfayı bulup okuyacak arkadaşları aydınlatmanızı rica ediyorum.


Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: elektronikhobi - 02 Mart 2012, 13:45:41
Sorun basitçe lcd.c dosyasında B portu çıkış olarak tanımlanmış olabilir.

#define LCD_DATA PORTB


gibi. Bunu PORTD ile değiştirince (gerekiyorsa Enable ve Register Select uçlarını da) çalışması lazım.

https://github.com/erdemoncel/sicaklik/blob/master/lcd.c

Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: gokayk - 02 Mart 2012, 16:29:48
Alıntı yapılan: mr_knox - 02 Mart 2012, 11:23:04
#gokayk arkadaş vermiş olduğun kodlarla denedim malesef yine çalışmadı :(
proteusta tamam çalışıyor fakat gelgelelim iş uygulamaya geldiğinde sonuç yok
olay b portundan sürmekse hem proteus hem uygulamada sorun yok çalışıyor.
ama ilgi alakan için çok teşşekkür ederim.
bu arada bu vermiş olduğun kodlarla gerçekte böyle uygulama yapmışmıydın çalışmışmıydı?
yoksa problem bende benim beceriksizliğimmi acep  :-[
evet arkadaşlar ccs c de d portunda lcd sürme işini gerçek uygulamada yapan arkadaşlar tecrübeleriniz ile beni ve bu tip sorunları ileride yaşayacak googleden bu sayfayı bulup okuyacak arkadaşları aydınlatmanızı rica ediyorum.

Şuanda simülasyon aşamasında gerçekleştirdiğim bir projede LCD'yi d portundan sürüyorum yani pratikte gözlemlemedim. Fakat 16F877 ile birçok sefer D portundan LCD sürdüm ve çalışmıştı. Kodlarını paylaşabilir misin? Bir bakalım.
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 03 Mart 2012, 09:33:33
Alıntı yapılan: elektronikhobi - 02 Mart 2012, 13:45:41
Sorun basitçe lcd.c dosyasında B portu çıkış olarak tanımlanmış olabilir.

#define LCD_DATA PORTB


gibi. Bunu PORTD ile değiştirince (gerekiyorsa Enable ve Register Select uçlarını da) çalışması lazım.

https://github.com/erdemoncel/sicaklik/blob/master/lcd.c (https://github.com/erdemoncel/sicaklik/blob/master/lcd.c)



linkini vermiş olduğun uygulamayı indirip içindeki lcd.c driver ında port b yi port d diye ve diğer pin tanımlama düzenlemeleri yapıp C:\Program Files\PICC\Drivers içine yapıştırdım. ve yeni isim vererek yazmış olduğum lcd deneme programı içinde tanıttım fakat malesef yine sonuç alamadım   :'(


#gokayk arkadaş  denedim driverlerden birini örnek verecek olursak durum şöyle ;

#include <18f452.h>
#fuses XT, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, NOPUT, NOWRT, NODEBUG, NOCPD
#use delay (clock=4000000)
#use fast_io(d)
#include <lcd.c>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2

void main()
{
 
set_tris_d(0x00);
lcd_init();
lcd_send_byte(0,0x01);
while(1)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"      LCD       ");
lcd_gotoxy(1,2);
printf(lcd_putc,"     DENEME     ");

}
}


(http://s16.postimg.cc/gx1xvblsh/18f452_port_D_lcd.jpg) (http://postimg.cc/image/gx1xvblsh/)

bu kodda isiste resimde göründüğü gibi sorunsuz çalışıyor ama iş uygulamaya geldiğinde malesef sonuç hüsran  :-\
peki elinde ben d portunda lcd sürmek için bu driver ı kullanıyorum ve çalışyor dediğiniz bi lcd.c driver varmı?
paylaşabilirmisiniz?
ilgi alakalara tekrar çok teşşekkürler.
saygılar
iyi çalışmalar....
Başlık: Ynt: 18f452 ile ccs c ile 2x16 lcd sürmek yardım!
Gönderen: mr_knox - 05 Mart 2012, 09:12:31
daha önce uygulamada d portunu lcd sürmekte kullanan hiçkimse yokmu?