Đ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;
}
}
}
#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.
EmoticonEmoticon