Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: thenorthstar - 29 Eylül 2014, 23:25:42

Başlık: CCS ile bargraph yardım lütfen
Gönderen: thenorthstar - 29 Eylül 2014, 23:25:42
Merhaba Arkadaşlar,
ccs ile bargraph yapmaya çalışıyorum, net de bulduğum kodu deneme yapıyordum fakat şöyle bir sorun yadadım ve düzeltemedim bu konuda yardımlarınızı rica ediyorum.

LM35 i analog kısmından okuyorum ve lcd nin ilk satırında gösteriyorum, ikinci satırında ise bargraph olarak göstermek istedim, aşağıdaki kod ile sıcaklık arttıkca bargraph ileri yönde çok güzel çalışıyor fakat sıcaklığı azalttığım zaman bargraph da azalıyor fakat azaldıkca önündeki 5x8 lik sutunda resimdeki gibi bir dikey çizgi kalıyor bunu bir türlü çözemedim.
(http://s28.postimg.cc/b76u4ar7x/image.jpg)
LCD kodu:

void init_user_chars(void) {
   int8 i;  //counting variable
    const char user_char[40] = {
    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18
    0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C
    0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E
    0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F
    };

   lcd_send_byte(0,64);

   for (i=0; i<40;i++)
      lcd_send_byte(1,user_char[i]);

   lcd_gotoxy(1,1);
}
//!
void bargraph(BYTE percent) {

   int16 Bar_Val;       
   int Bars;         
   int Balance;     
   int i;         

   int const B_Wdth = 16;       
   int const Maxbar = B_Wdth * 5; 

   Bars = percent/5;       
   Balance = percent%5;   
   lcd_gotoxy(1,2);       
  for (i=0; i<Bars;i++)
lcd_send_byte(1,0x04);  // print the bars
  switch (Balance) {
      case 0: break;
      case 1: lcd_send_byte(1, 0x00);
              break;
     case 2: lcd_send_byte(1, 0x01);
              break;
     case 3: lcd_send_byte(1, 0x02);
              break;           
              }


Uygulama Kodu:


#include <18F452.h>
#device adc=10    // Set ADC resolution to 10Bit
#fuses HS,NOPROTECT, NOBROWNOUT, NOPUT,NODEBUG, NOLVP
#use delay(clock=10000000)

#include "2x16_4x20_LCD.c"

int16 digital_reading;  // ADC resolution is 10Bit, an 8Bit integer is not enough to hold the reading
float temp;


void main()
{
   setup_adc(ADC_CLOCK_INTERNAL); // initialize ADC with a sampling rate of Crystal/4 MHz
   setup_adc_ports(RA0_ANALOG);   // set PIN_A0 as analog input channel
   set_adc_channel(0);            // point ADC to channel 0 for ADC reading
   delay_ms(1); 
   
lcd_init();
init_user_chars();
Delay_ms(100);


    while (TRUE)
       {
      digital_reading = read_adc();    // capture current temperature reading
      delay_us(100);                   // 0.1ms delay for ADC stabilization
      temp = digital_reading * 0.4883; // convert reading to Celsius
      lcd_gotoxy(1,1); printf(lcd_putc,"Temp: %2.1f C "temp);
      bargraph(temp);

            }
       }

Başlık: Ynt: CCS ile bargraph yardım lütfen
Gönderen: Erhan YILMAZ - 29 Eylül 2014, 23:34:53
Kodunu tam inceleyemedim ama zamanında lcd bar işine baya kafa yormuştum. Aşağıda yazımda kodlar mevcut bir incele istersen işine yarayabilir.

https://320volt.com/lcd-bar-uygulamalari-pic-micro-hitech-c-proton-basic (https://320volt.com/lcd-bar-uygulamalari-pic-micro-hitech-c-proton-basic)
Başlık: Ynt: CCS ile bargraph yardım lütfen
Gönderen: thenorthstar - 30 Eylül 2014, 00:24:26
Alıntı yapılan: Erhan YILMAZ - 29 Eylül 2014, 23:34:53
Kodunu tam inceleyemedim ama zamanında lcd bar işine baya kafa yormuştum. Aşağıda yazımda kodlar mevcut bir incele istersen işine yarayabilir.

https://320volt.com/lcd-bar-uygulamalari-pic-micro-hitech-c-proton-basic (https://320volt.com/lcd-bar-uygulamalari-pic-micro-hitech-c-proton-basic)

S.a Hocam ilgin için teşekkür ederim,
bunu ccs de nasıl yapabilirim, yardımcı olurmusunuz, sizinkine biraz benziyor ama tam çözemedim hocam.
Başlık: Ynt: CCS ile bargraph yardım lütfen
Gönderen: Murat Mert - 30 Eylül 2014, 08:48:58
S.A.
Hocam değerde değişme olunca LCD yi yenileyerek denedinmi.
Başlık: Ynt: CCS ile bargraph yardım lütfen
Gönderen: MrDarK - 30 Eylül 2014, 09:17:59
Bence o barın ince çizgilerinin orada kalması normal ? Yoksa kim onu bir tüp gibi görecekti ki.

Bence kod kasıtlı olarak o çizgiler orada kalacak şekilde yazılmış.
Başlık: Ynt: CCS ile bargraph yardım lütfen
Gönderen: thenorthstar - 30 Eylül 2014, 17:48:13
@mert07;
Alıntı Yap
S.A.
Hocam değerde değişme olunca LCD yi yenileyerek denedinmi.
Hocam, bu aklımagelmedi ilk fırsatta denicem.


@MrDark;
Alıntı yapılan: MrDarK - 30 Eylül 2014, 09:17:59
Bence o barın ince çizgilerinin orada kalması normal ? Yoksa kim onu bir tüp gibi görecekti ki.

Bence kod kasıtlı olarak o çizgiler orada kalacak şekilde yazılmış.
Hocam, Erhan YILMAZ arkadaşın yaptığı proje çok güzel çalışıyor onda öyle bir sorun yok, program HI-Tech de yazılmış ccs e çeviremedim ama bendeki koda çok benziyor.
Erhan YILMAZ hocamın projesini linkten indirip kontrol edebilir misiniz?
(http://img674.imageshack.us/img674/1508/buBgnm.gif)
Alıntı yapılan: Erhan YILMAZ - 29 Eylül 2014, 23:34:53
Kodunu tam inceleyemedim ama zamanında lcd bar işine baya kafa yormuştum. Aşağıda yazımda kodlar mevcut bir incele istersen işine yarayabilir.

https://320volt.com/lcd-bar-uygulamalari-pic-micro-hitech-c-proton-basic (https://320volt.com/lcd-bar-uygulamalari-pic-micro-hitech-c-proton-basic)
Nerde hata yaptığımı bulamadım.

Başlık: Ynt: CCS ile bargraph yardım lütfen
Gönderen: thenorthstar - 01 Ekim 2014, 12:53:36
Teşekkür ederim arkadaşlar sorunu duzelttim.