Đo tốc độ hiển thị LCD with CCS

9:14:00 PM
Đo tốc độ hiển thi LCD. Với sơ đồ như hình vẽ bên dước.



#include <16f877.h>     // Ben 16f877 kullandým siz kendinize göre düzeltebilirsiniz
                        //Not: 16f628 de ADC modülü mevcut DEÐÝL!
#device ADC=10  // 10 bitlik ADC kullanýlacaðýz
// ayarlar
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay (clock=4000000) //Kullandýðýmýz Osilatörün Clock frekansý

#define use_portb_lcd TRUE   // LCD B portunda

#include <lcd.c>  //lcd yi kullanacaðýz

#define buton_ileri pin_c4

#define buton_geri  pin_c5

signed int8  ADIM=0;

int16 Vref,Vcikis;

float filtre;

unsigned int8 sayac;

char durum;


#int_timer1  // Timer1 kesmesi
void  timer1_kesme ()
{
   set_timer1(63036);


  switch(durum)
         {
         case 1 :  printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: -->>", ADIM,Vcikis); break;
         case 2 :  printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: <<--", ADIM,Vcikis); break;
         case 3 :  printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: ----", ADIM,Vcikis); break;
         case 4 :  printf(lcd_putc,"\fADIM=%d %4.1Lu ms\nKonum: #HATA#", ADIM,Vcikis); break;
         }
   delay_ms(10);
 
   if(Vcikis<10){ //10ms dweðerinden küçük beklemelerde ikaz ver.! (:
 
         lcd_gotoxy(14,2);
          lcd_putc("-!-");
          delay_ms(5);
   }else{
   delay_ms(6);
   }

}

void main ( )
{
         lcd_init();
         delay_ms(10);
         printf(lcd_putc,"\fCCP-Timer-ADC\n Ayarlaniyor...");
         delay_ms(1500);
       
         setup_psp(PSP_DISABLED);        // PSP birimi devre dýþý
         setup_spi(SPI_SS_DISABLED);     // SPI birimi devre dýþý
       
         //setup_timer_1(T1_DISABLED);     // T1 zamanlayýcýsý devre dýþý
         setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayýcýsý devre dýþý
         setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
         set_timer1(63036);
 
         setup_adc_ports( ALL_ANALOG);
         setup_adc(adc_clock_internal);
         set_adc_channel(2);  
       
         setup_CCP1(CCP_OFF);            // CCP1 birimi devre dýþý
         setup_CCP2(CCP_OFF);            // CCP2 birimi devre dýþý
       
         printf(lcd_putc,"\fPortD Ayarlaniyor...");
         delay_ms(1500);
       
         output_d(0x00);
       
         printf(lcd_putc,"\fTimer1 Kesmesi\nAyarlaniyor...");
         delay_ms(1500);
       
         enable_interrupts(INT_timer1); // int_timer1 kesmesini aktif yapar
         enable_interrupts(GLOBAL);     // Aktif edilen kesmelere izin ver

         printf(lcd_putc,"\fHazir...");
         delay_ms(5);

   while(1) //herzaman burada kal
   {
 
      set_adc_channel(2);
      Vref = read_adc();  //potansiyometreden alýnan gerilim
      delay_us(50);
      Vcikis=Vref/16;

      if (input(buton_ileri)) // ÝLERÝ Butonuna basýldý ise
      {
         delay_ms(Vcikis);
         ADIM = ADIM+1;
         if( ADIM == 9)
         {
         ADIM=1;
         durum=1;
         }
      }

      if (input(buton_geri)) // GERÝ Butonuna basýldý ise
      {
         delay_ms(Vcikis);
         ADIM = ADIM-1;
         if( ADIM < 1)
         {
         ADIM=8;
//!         printf(lcd_putc,"\fADIM=%d\nKonum: -->>", ADIM);
//!         delay_ms(10);
         durum=2;
         }
      }
     
            if (input(buton_geri)&input(buton_ileri)) // Ýki butona da basýlýyor ise;
      {

         durum=3;
       
      }
      //Bu koþul iki butona da basýldýðýnda HATA durumunun oluþacaðýný bilgirir.
     
             if (!input(buton_geri)&!input(buton_ileri)) // Ýki butona da basýlmýyor ise;
      {

         durum=4;
       
      }
      delay_ms(Vcikis);
     
     
            switch(ADIM)
         {
         case 1 : output_d(0b00000001); break;
         case 2 : output_d(0b00000011); break;
         case 3 : output_d(0b00000010); break;
         case 4 : output_d(0b00000110); break;
         case 5 : output_d(0b00000100); break;
         case 6 : output_d(0b00001100); break;
         case 7 : output_d(0b00001000); break;
         case 8 : output_d(0b00001001); break;
         }
   
   }
}

Link download project.

Share this

Related Posts

Previous
Next Post »