PIC16F877 ile Display Uygulaması-2 (Buton İle 0-99 Yukarı Sayıcı) CCS C Kodu
Uygulamanın CCS C Kodu
/******************************************************
Uygulama Adi : Display Uygulamasi-2 (Buton Ile 0-99 Yukari Sayici)
PIC PROG/DEKA : Port B jumper'i 7-seg konumunda olmali
*******************************************************/
#include <0-99_sayici data-blogger-escaped-.h=""> // Kullanilacak denetleyicinin baslik dosyasi tanitiliyor.
//***********Denetleyici konfigürasyon ayarlari************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000) // Gecikme fonksiyonu için kullanilan osilatör frekansi belirtiliyor
#use fast_io(a) // Port yönlendirme komutlari a portu için geçerli
#use fast_io(b) // Port yönlendirme komutlari b portu için geçerli
#define buton pin_b0 // buton ifadesi pin_b0 ifadesine esitleniyor
#define display_1 pin_b1 //display_1 ifadesi pin_b1 ifadesine esleniyor
#define display_2 pin_b2 // display_2 ifadesi pin_b2 ifadesine esleniyor
char birler=0, onlar=0, sayi=0; // char tipinde degiskenler tanimlaniyor
// Ortak anot display için veri degerleri (Proteus)
const int digit[10]={0X40, 0X79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10,};
/********* ANA PROGRAM FONKSIYONU********/
void main ()
{
setup_psp(PSP_DISABLED); // PSP birimi devre disi
setup_spi(SPI_SS_DISABLED); // SPI birimi devre disi
setup_timer_1(T1_DISABLED); // T1 zamanlayicisi devre disi
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayicisi devre disi
setup_adc_ports(NO_ANALOGS); // ANALOG giris yok
setup_adc(ADC_OFF); // ADC birimi devre disi
setup_CCP1(CCP_OFF); // CCP1 birimi devre disi
setup_CCP2(CCP_OFF); // CCP2 birimi devre disi
set_tris_b(0x01);
set_tris_d(0x00); // B portu tümüyle çikis olarak yönlendiriliyor
output_low(display_1); // 1. display pasif durumda
output_low(display_2); // 2. display pasif durumda
while(1)
{
birler=sayi%10; // birler hanesi hesaplaniyor
onlar=sayi/10; // onlar hanesi hesaplaniyor
output_high(display_2); // 2. display aktif durumda
output_d(digit[birler]); // displaye bilgi gönderiliyor
delay_ms(5); // gecikme veriliyor
output_low(display_2); // 2. display pasif durumda
output_high(display_1); // 1. display aktif durumda
output_d(digit[onlar]); // displaye bilgi gönderiliyor
delay_ms(5); // gecikme veriliyor
output_low(display_1); // 1. display pasif durumda
if (input(buton)) // Arttir butonuna basildi ise
{
delay_ms(10); // Buton arklarini önleme gecikmesi
sayi++; // sayi degiskenini 1 arttir
if (sayi==100) // Eger sayi degiskeni 100 oldu ise sifirla
sayi=0;
birler=sayi%10; // birler hanesi hesaplaniyor
onlar=sayi/10; // onlar hanesi hesaplaniyor
while(input(buton)) // Buton birakilana kadar döngüyü isle
{
output_high(display_2); // 2. display aktif durumda
output_d(digit[birler]); // displaye bilgi gönderiliyor
delay_ms(5); // gecikme veriliyor
output_low(display_2); // 2. display pasif durumda
output_high(display_1); // 1. display aktif durumda
output_d(digit[onlar]); // displaye bilgi gönderiliyor
delay_ms(5); // gecikme veriliyor
output_low(display_1); // 1. display pasif durumda
}
}
}
}
Uygulamanın Simulasyonu
 |
Buton ile 0-99 Yukarı Sayıcı Simulasyonu |
This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
Bunu yapmak istiyorum ama sayicida kullanılacak direnclere dair hiç bir fikrim yok. Yardım eder misiniz?
YanıtlaSildirençleri bilmene gerek yok 330 ohm yeterli displayin güvenliği için
YanıtlaSil