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);
}
}
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)
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.
S.A.
Hocam değerde değişme olunca LCD yi yenileyerek denedinmi.
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ış.
@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.
Teşekkür ederim arkadaşlar sorunu duzelttim.