Display Uygulaması-2(7448 Entegresi ve Buton İle 0

Transkript

Display Uygulaması-2(7448 Entegresi ve Buton İle 0
Display Uygulaması-2(7448 Entegresi ve Buton İle 0-9999 Yukarı/Aşağı Sayıcı)
CRYSTAL
FREQ=4MHz
22pF
RESET
+5V
C1
R1
10k
X1
U1
C2
22pF
13
14
1
+5V
+5V
2
3
4
5
6
7
R21
R22
10k
10k
8
9
10
OSC1/CLKIN
OSC2/CLKOUT
MCLR/Vpp/THV
RA0/AN0
RA1/AN1
RA2/AN2/VREFRA3/AN3/VREF+
RA4/T0CKI
RA5/AN4/SS
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RE0/AN5/RD
RC2/CCP1
RE1/AN6/WR
RC3/SCK/SCL
RE2/AN7/CS
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
Arttır
Azalt
U2
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
33
34
35
36
37
38
39
40
7
1
2
6
4
5
3
7x220 Ohm
A
B
C
D
BI/RBO
RBI
LT
QA
QB
QC
QD
QE
QF
QG
13
12
11
10
9
15
14
74LS48
15
16
17
18
23
24
25
26
+5V
19
20
21
22
27
28
29
30
PIC16F877
R23
R24
220
220
D8
D7
D6
D5
D4
D3
D2
D1
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
LED-RED
/******************************************************
Uygulama Adı : Display Uygulaması-2(7448 Entegresi ve Buton İle 0-99 Yukarı/Aşağı Sayıcı)
Ders: Microişlemcili Sistemler- (Bilecik Üniveristesi Bilgisayar Mühendisliği)
*******************************************************/
#include <16f877A.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
//***********Denetleyici konfigürasyon ayarları************
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000) // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor
#use fast_io(a) // Port yönlendirme komutları a portu için geçerli
#use fast_io(b) // Port yönlendirme komutları b portu için geçerli
#use fast_io(d) // Port yönlendirme komutları d portu için geçerli
#define
#define
#define
#define
#define
#define
arttir pin_a0 // arttir butonu pin_a0 ile eşleniyor
azalt
pin_a1 // azalt butonu pin_a1 ile eşleniyor
arttiron pin_a2 // arttir butonu pin_a2 ile eşleniyor
azalton pin_a3 // azalt butonu pin_a3 ile eşleniyor
arttiryuz pin_a4 // arttir butonu pin_a4 ile eşleniyor
azaltyuz pin_a5 // azalt butonu pin_a5 ile eşleniyor
#define dspBirler 0b01110000
#define dspOnlar 0b10110000
#define dspYuzler 0b11010000
#define dspBinler 0b11100000
char birler=0, onlar=0,yuzler=0,binler=0; // int tipinde değişkenler tanımlanıyor
unsigned int16 sayi=0;
// HC74LS48 entegresi Ortak katot display için veri değerleri
const int digit[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
/********* ANA PROGRAM FONKSİYONU********/
void main ()
{
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_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF);
// ADC birimi devre dışı
setup_CCP1(CCP_OFF);
// CCP1 birimi devre dışı
setup_CCP2(CCP_OFF);
// CCP2 birimi devre dışı
set_tris_a(0xFF); // A portu tümüyle giriş olarak yönlendiriliyor
set_tris_b(0x00); // B portu tümüyle çıkış olarak yönlendiriliyor
set_tris_d(0x00); // D portu tümüyle çıkış olarak yönlendiriliyor
while(1)
{
// Sonsuz döngü
birler=sayi%10;
onlar=(sayi/10)%10;
yuzler=(sayi/100)%10;
binler=sayi/1000;
output_b(digit[birler]|(dspBirler));
delay_ms(5);
output_b(digit[onlar]|(dspOnlar));
delay_ms(5);
output_b(digit[Yuzler]|(dspYuzler));
delay_ms(5);
output_b(digit[Binler]|(dspBinler));
delay_ms(5);
// 1.display aktif, diğer displeyler pasif ve birler basamağı gönderiliyor
// Gecikme veriliyor
// 2.display aktif, diğer displeyler pasif ve onlar basamağı gönderiliyor
// Gecikme veriliyor
// 3.display aktif, diğer displeyler pasif ve yuzler basamağı gönderiliyor
// Gecikme veriliyor
// 4.display aktif, diğer displeyler pasif ve binler basamağı gönderiliyor
// Gecikme veriliyor
output_d(sayi);// sayıcının değeri d portuna LED lere gönderiliyor
if (!input(arttir)) // arttır butonuna basıldığında
{
if (sayi>=10000) sayi=0; // sayi değeri 100 ise değeri sıfırla
sayi++; // sayi değerini 1 arttır
birler=sayi%10;
onlar=(sayi/10)%10;
yuzler=(sayi/100)%10;
binler=sayi/1000;
while(!input(arttir))
// arttır butonundan el çekilene kadar bekle
{
output_b(digit[birler]|(dspBirler));
delay_ms(5);
output_b(digit[onlar]|(dspOnlar));
delay_ms(5);
output_b(digit[Yuzler]|(dspYuzler));
delay_ms(5);
output_b(digit[Binler]|(dspBinler));
delay_ms(5);
// 1.display aktif, diğer displeyler pasif ve birler basamağı gönderiliyor
// Gecikme veriliyor
// 2.display aktif, diğer displeyler pasif ve onlar basamağı gönderiliyor
// Gecikme veriliyor
// 3.display aktif, diğer displeyler pasif ve yuzler basamağı gönderiliyor
// Gecikme veriliyor
// 4.display aktif, diğer displeyler pasif ve binler basamağı gönderiliyor
// Gecikme veriliyor
}
}
if (!input(azalt)&&(sayi!=0)) // azalt butonuna basıldığında
{
sayi--; // sayi değerini 1 azalt
if (sayi<0) sayi=9999;
birler=sayi%10;
onlar=(sayi/10)%10;
yuzler=(sayi/100)%10;
binler=sayi/1000;
while(!input(azalt)) // azalt butonundan el çekilene kadar bekle
{
output_b(digit[birler]|(dspBirler));
// 1.display aktif, diğer displeyler pasif ve birler basamağı gönderiliyor
delay_ms(5);
// Gecikme veriliyor
output_b(digit[onlar]|(dspOnlar));
// 2.display aktif, diğer displeyler pasif ve onlar basamağı gönderiliyor
delay_ms(5);
// Gecikme veriliyor
output_b(digit[Yuzler]|(dspYuzler));
// 3.display aktif, diğer displeyler pasif ve yuzler basamağı gönderiliyor
delay_ms(5);
// Gecikme veriliyor
output_b(digit[Binler]|(dspBinler));
// 4.display aktif, diğer displeyler pasif ve binler basamağı gönderiliyor
delay_ms(5);
// Gecikme veriliyor
}
}
}
}

Benzer belgeler

Display Uygulaması-3(Kesme Yöntemi Kullanarak 7448 Entegresi

Display Uygulaması-3(Kesme Yöntemi Kullanarak 7448 Entegresi 9. Uygulamanın raporu, C kodu ,Proteus similasyon dosyası ve uygulama için hazır kodlanmış PIC inizi haftaya derse getirmeniz gerekiyor.

Detaylı

UYGULAMA 4 DEVRE BAĞLANTISI VE ĠSTENENLER

UYGULAMA 4 DEVRE BAĞLANTISI VE ĠSTENENLER RA4/T0CKI RA5/AN4/SS RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT

Detaylı

butonu kesmeli çalışacak:butona basınca birler basamağı

butonu kesmeli çalışacak:butona basınca birler basamağı RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT

Detaylı