CCS ile bargraph yardım lütfen

Başlatan thenorthstar, 29 Eylül 2014, 23:25:42

thenorthstar

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.

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);

            } 
       }

Erhan YILMAZ

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

thenorthstar

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

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.

Murat Mert

S.A.
Hocam değerde değişme olunca LCD yi yenileyerek denedinmi.
mert07

MrDarK

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ış.
Picproje Eğitim Gönüllüleri ~ MrDarK

thenorthstar

@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?

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
Nerde hata yaptığımı bulamadım.


thenorthstar

Teşekkür ederim arkadaşlar sorunu duzelttim.