ccs c grafik lcd problemi hakkında

Başlatan ilker58, 15 Haziran 2014, 07:37:42

ilker58

merhaba değerli kullanıcılar;
Grafik lcd de bir gösterge paneli yapmak istiyordum. Lakın proteus similasyonun da programı denediğim de grafik lcd de herhangi bir tepki almıyorum programı yanlış yazma ihtimalim yuksek uzun zamandır pic ile ugraşmıyordum yardımlarınızı bekliyorum. Temel sorun grafik lcd ye yazı bastıramıyorum.
#include "D:\canbus gösterge\test\denememmemme\Yeni klasör\evotomasyon\motor\Yeni klasör\standart.h"

#include <HDM64GS12.c>
#include <GRAPHICS.C>

#fuses HS,NOPROTECT,NOLVP,NOWDT
#use delay(clock=80000000)









long
int vitess,vites_orani;
int r=4.67;
long rpm ;
int x1,x2,y2,m,k,i,temp;
int16 sayac,hizzz,bilgi,voltaj,t;

      char Devir[5];
      char Sicaklik[8];
      char HIZ[3];
      char VITES[5];




#int_CCP1
void devir_alma()
{

i++;

if(i==3){

rpm++;
i=0;
}


}



#int_CCP2

void yakalama_devir(){
sayac=sayac+1;
}

#int_timer0



void zamanlama()
{
set_timer0(60);
k++;
}
void sonuc(){
if (k==10){
  hizzz=sayac*2*3.14*r*0.06;
  t=sayac;
  sayac=0;
}
}



void main()
{

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_DIV_32);
   setup_spi(SPI_SS_DISABLED);
   setup_ccp1(CCP_CAPTURE_FE);
   setup_ccp2(CCP_CAPTURE_FE);
   setup_ccp1(CCP_CAPTURE_DIV_4);
   setup_ccp2(CCP_CAPTURE_DIV_4);
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   

}
   







 
      void Vitessse(){
     
while(true){   
     vites_orani=rpm /(t);
     
      vitess=read_eeprom(1) ;
     
     
     
        if  (2.400<vites_orani<2.750) {
     
        vitess=1;
      write_eeprom(1,vitess); 
       
        }
       
       else if(1.800<vites_orani<2.200){
        vitess=2;
       write_eeprom(1,vitess);
       
       }
           else if (1.600<vites_orani< 1.720){
       
        vitess=3;
        write_eeprom(1,vitess);
        }
       
       
        else if(1.340 <vites_orani< 1.500) {
       
        vitess=4;
        write_eeprom(1,vitess);
        }
       
        else if( 1.280<vites_orani<1.320) {
       
        vitess=5;
         write_eeprom(1,vitess);
        }
       
        else if (1<vites_orani< 1.275)
        {
       
           vitess=6;
            write_eeprom(1,vitess);
        }
if (input(pin_A2==1)){
vitess=0;
write_eeprom(1,vitess);
       
        }
       
     
  if(input(pin_A3==1)){
     
      vitess=read_eeprom(1);
     
     
      }
     
     
     
}}
     
     
      void uyarilar(){

while(true){
set_adc_channel(0);
bilgi=read_adc();
voltaj=5-((7.63*10^-5)*bilgi)*1000;
temp=(voltaj/0.06)-40;
if(temp>=110){

output_high(pin_C5);
}
if(temp>95){

output_high(pin_B3);

}





}}
   
   
   void cruise(){

while(true){
if(hizzz>=118){

output_high(pin_A1);

}


}
   } 
   
   
      void lcdekran(){
     glcd_init(ON);
     while(true){
     
     
     
     
     
      sprintf(Devir,"%02ld",rpm);
       sprintf(Sicaklik,"%02d",temp);
         sprintf(HIZ,"%02ld",hizzz);
         sprintf(VITES,"%02ld",vites); 
   glcd_text57(20,15,Devir,6,ON);
   glcd_text57(20,8,Sicaklik,6,ON);
   glcd_text57(50,8,HIZ,15,ON);
   glcd_text57(100,10,VITES,10,ON);
  x1=50;
  x2=100;

   if (0<rpm<4000) {
    for (m=0;m<5;m++){
   
   
    glcd_bar(x1,20,x1,30,10,ON);
    delay_us(20);
    x1+=15;
    y2+=5;
    }
    if (0<rpm<6000) {
    for (m=0;m<5;m++){
   
   
    glcd_bar(x1,20,x1,40,10,ON);
    delay_us(20);
    x1+=15;
    y2+=5;
    }
    }
    if (6000<rpm<8000) {
    for (m=0;m<5;m++){
   
   
    glcd_bar(x1,20,x1,50,10,ON);
    delay_us(20);
    x1+=15;
    y2+=5;
   
   
   
    }
    }
   if (8000<rpm<10000) {
    for (m=0;m<5;m++){
   
   
    glcd_bar(x1,20,x1,55,10,ON);
    delay_us(20);
    x1+=15;
    y2+=5;
    }}
   if (rpm>12000) {
    for (m=0;m<5;m++){
   
   
    glcd_bar(x1,35,x1,64,10,ON);
    delay_us(20);
    x1+=15;
    y2+=5;
   
   glcd_init(ON);
   
   }



}
   }
     }}






   
     


Murat Mert

S.A.
Normal bir yazı yazdırmayı denedinizmi acaba.
birde
#use delay(clock=80000000)
#use delay(clock=20000000) diye değiştirin.

mert07

sadogan

#2
main rutinde sürekli bir döngü yok.
Bu durumda CCS işlemciyi uyumaya sokar.

kimlenbu

main fonksiyonunda lcd yazdırma fonksiyonu çağrılmamış gördüğüm kadarıyla. Ayrıca sonsuz döngü kurmanız gerekiyor yoksa kodlar bir kere çalışır durur.

ayrıca kodlarınızı "#" işareti şeklindeki butonla "code" bloğu içine alırsanız kodlarınızın okunabilirliği artacağından benim gibi üşengeç adamlar cevap yazıp yazmama konusunda ikilemde kalmaz :)

while (1)
{
//İşletilecek kodlar
}

ilker58

onu yeni fark ettım :D düzelttim onları da ayrıca timer0 da işlem yaptırmak isteyince taşma olusuyor sanırım onu da timer 0 oluştugunda kesme değişkeni atayıp kesme =1 oldugunda deyip main fonksiyonunun altunda gercekleştiriyorum. o sorunu da çözdüm yalnız ccp1 ve ccp2 kesmeleri aktıf olmuyor sanırım pic orayı atlıyor var mı yardım edebilecek olan cevaplarınız içinde ayrıca tesekkur ederim :)