Elektrik elektronik eğitimi ile ilgili bilgiler, kitap özetleri, kitap sınav soruları ve eğitime dair her şey
PIC16F877A etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
PIC16F877A etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
31 Ağustos 2019 Cumartesi
PIC16F877A Mikrodenetleyici ve 74HC595 Shift Register ile 7 Segment Displayli İleri Geri Sayıcı (Up Down) Uygulama Devresi ve Program Kodu
Yukarıdaki devrede PIC16F877A Mikrodenetleyici ve 74HC595 Shift Register kullanılarak yapılan 7 Segment Displayli Sayıcı Uygulama Devresi görülmektedir.
Bu devrede Up yazan butona basıldığında ileri yönlü sayma işlemi yapılırken, Down yazan butona basıldığında geri yönlü sayma işlemi yapılmaktadır.
PIC16F877A Mikrodenetleyici Program Kodu :
// 4-Digit 7-Segment display with 74HC595 interfacing with PIC16F877A CCS C code
// http://elektrikelektronikegitimi.blogspot.com/
#define data_pin PIN_B0
#define clock_pin PIN_B1
#define latch_pin PIN_B2
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 8000000)
#use fast_io(B)
#use fast_io(D)
short s; // Used to know buttons position
unsigned int j, digit ;
unsigned long i = 0;
unsigned int seg(unsigned int num) {
switch (num) {
case 0 : return 0x80;
case 1 : return 0xF2;
case 2 : return 0x48;
case 3 : return 0x60;
case 4 : return 0x32;
case 5 : return 0x24;
case 6 : return 0x04;
case 7 : return 0xF0;
case 8 : return 0;
case 9 : return 0x20;
}
}
void write_data(unsigned int number){
for(j = 0x80; j > 0; j = j >> 1) {
if(number & j)
output_high(data_pin);
else
output_low(data_pin);
output_high(clock_pin);
output_low(clock_pin);
}
output_high(latch_pin);
output_low(latch_pin);
}
void main(){
port_b_pullups(TRUE); // Enable PORTB pull-ups
output_b(0); // PORTB initial state
set_tris_b(0x18); // Configure RB3 & RB4 pins as inputs
output_d(0); // PORTD initial state
set_tris_d(0); // Configure PORTD pins as inputs
while(TRUE){
if(input(PIN_B3) && input(PIN_B4))
s = 1;
if(s == 1) {
if(input(PIN_B3) == 0) {
s = 0;
i++;
if(i > 9999)
i = 0;
}
if(input(PIN_B4) == 0) {
s = 0;
if(i < 1)
i = 1;
i--;
}
}
digit = seg(i % 10); // Prepare to display ones
output_d(0x0F); // Turn off all displays
write_data(digit);
output_d(0x07); // Turn on display for ones
delay_ms(1);
digit = seg((i / 10) % 10); // Prepare to display tens
output_d(0x0F); // Turn off all displays
write_data(digit);
output_d(0x0B); // Turn on display for tens
delay_ms(1);
digit = seg((i / 100) % 10); // Prepare to display hundreds
output_d(0x0F); // Turn off all displays
write_data(digit);
output_d(0x0D); // Turn on display for hundreds
delay_ms(1);
digit = seg((i / 1000) % 10); // Prepare to display thousands
output_d(0x0F); // Turn off all displays
write_data(digit);
output_d(0x0E); // Turn on display for thousands
delay_ms(1);
}
}
Kaydol:
Kayıtlar (Atom)
İyi Geceler Bay Tom (Michelle Magorian) Kitap Sınavı Yazılı Soruları ve Cevap Anahtarı
Kitabın Adı: İyi Geceler Bay Tom Kitabın Yazarı: Michelle Magorian Kitap Sınavı Soruları ve Cevap Anahtarı 1. Will'in kollarındaki morlu...
-
Cep telefonu ve tablet şarj cihazlarında USB kablolarla sık sık karşılaşıyoruz ve kullanıyoruz. Aynı zamanda bu cihazlara ve bilgisayarl...
-
Kitabın Adı : Kiraz Ağacı ile Aramızdaki Mesafe Kitabın Yazarı : Paola Peretti Kitap Hakkında Bilgi : Yazarın kendi yaşam hikâyesinden esinl...