spiritevil
Üye
- Katılım
- 21 Tem 2009
- Mesajlar
- 21
- Puanları
- 1
- Yaş
- 38
ARKADASLAR AŞAGIDAKİ KODLAR Bİ TERMOMETRE CALIŞTIRIYOR BEN PİC 16F877A NIN 30. BACAGINA ROLE 29.BACAGINADA Bİ LED TAKICAM SICAKLIK DEĞERİ 35 İN ÜSTÜNDE İSE ROL ÇEKTİRECEM (YANİ 30 BACAKTAN ENERJİ ALICAK) 35 İN ALTINDA İSE LED YANMASINI İSTEYECEM(29. BACAK) BU KODU AŞAGIDAİ KOD DİZİLİŞİNE GÖREEKLEYE BİLİRMİSİNİZ?? LÜTFEN PAZARTESİ PROJEYİ TESLİM ETMEM LAZIM PİC CCS USTALARINDAN YARDIMLARINI ESİRGEMEMELERİNİ RİCA EDİYORUM ŞİMDİDEN COK TEŞEKKÜR EDERİM.....
#include <16f877.h>
#device ADC=10 // 10 bitlik ADC
#use delay (clock=4000000) //Clock frekansı
#use fast_io(a)//D B ve A portları kullanılacak
#use fast_io(b)
#use fast_io(d)
#define zaman 100//basamaklar arasındaki ms kadar zaman
unsigned long int ad1; // ADC den ölçülecek değer
float voltaj,sicaklik,filterval; // Değişkenler
void yazdir(int bas1 , int bas2 , int ond1 )//Göstergeye yazdıran fonksiyon
{
// 0 1 2 3 4 5 6 7 8 9
int dizi[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0xC1,0x1F,0x01,0x09};
int i=1000;
set_tris_b(0x00);
set_tris_d(0x00);
output_d(0x00);
output_B(0x00);
while(--i)
{
delay_us(zaman);
output_d(0x01);
output_b(0x63);
delay_us(zaman);
output_d(0x02);
output_b(*(dizi+ond1));
delay_us(zaman);
output_d(0x04);
output_b(*(dizi+bas2));
delay_us(zaman);
output_d(0x04);
output_b(0xFE);
delay_us(zaman);
output_d(0x08);
output_b(*(dizi+bas1));
}
}
void main()
{
int bas1;
int bas2;
int ond1;
/*
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);*/
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
//RA0/AN0 girişi analog
set_adc_channel(0); // A/D işlemi yapılacak
delay_us(20);
while(TRUE) // sonsuz döngü
{
ad1=read_adc();
voltaj=(0.0048828125*ad1)*1000; //Dijitale çevrilmiş değerin mV değeri
sicaklik=(voltaj/10)+0.25; // Her 10mV'ta 1 derece artış
delay_ms(3);
filterval=(0.9*filterval)+(0.1*sicaklik);
bas1=filterval/10;
bas1=bas1%10;
bas2=filterval/1;
bas2=bas2%10;
ond1=filterval*10;
ond1=ond1%10;
yazdir(bas1,bas2,ond1);
}
#include <16f877.h>
#device ADC=10 // 10 bitlik ADC
#use delay (clock=4000000) //Clock frekansı
#use fast_io(a)//D B ve A portları kullanılacak
#use fast_io(b)
#use fast_io(d)
#define zaman 100//basamaklar arasındaki ms kadar zaman
unsigned long int ad1; // ADC den ölçülecek değer
float voltaj,sicaklik,filterval; // Değişkenler
void yazdir(int bas1 , int bas2 , int ond1 )//Göstergeye yazdıran fonksiyon
{
// 0 1 2 3 4 5 6 7 8 9
int dizi[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0xC1,0x1F,0x01,0x09};
int i=1000;
set_tris_b(0x00);
set_tris_d(0x00);
output_d(0x00);
output_B(0x00);
while(--i)
{
delay_us(zaman);
output_d(0x01);
output_b(0x63);
delay_us(zaman);
output_d(0x02);
output_b(*(dizi+ond1));
delay_us(zaman);
output_d(0x04);
output_b(*(dizi+bas2));
delay_us(zaman);
output_d(0x04);
output_b(0xFE);
delay_us(zaman);
output_d(0x08);
output_b(*(dizi+bas1));
}
}
void main()
{
int bas1;
int bas2;
int ond1;
/*
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);*/
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
//RA0/AN0 girişi analog
set_adc_channel(0); // A/D işlemi yapılacak
delay_us(20);
while(TRUE) // sonsuz döngü
{
ad1=read_adc();
voltaj=(0.0048828125*ad1)*1000; //Dijitale çevrilmiş değerin mV değeri
sicaklik=(voltaj/10)+0.25; // Her 10mV'ta 1 derece artış
delay_ms(3);
filterval=(0.9*filterval)+(0.1*sicaklik);
bas1=filterval/10;
bas1=bas1%10;
bas2=filterval/1;
bas2=bas2%10;
ond1=filterval*10;
ond1=ond1%10;
yazdir(bas1,bas2,ond1);
}
Moderatör tarafında düzenlendi: