Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: Recep METE - 29 Nisan 2014, 20:35:06

Başlık: 74hc595 ile 99999'a kadar sayıcı
Gönderen: Recep METE - 29 Nisan 2014, 20:35:06
Belki birilerinin işine yarar diye...

(http://i.hizliresim.com/LPA8aV.png) (http://hizliresim.com/LPA8aV)

#include <16F84A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay (clock=20000000)
//==============================================================================
#define hcdata pin_a0 //data
#define hcclock pin_a1//sh
#define hcload pin_a2//st
//==============================================================================
const int digit[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F}; // 9
int16 say=0;
int saybirler=0;
int sayonlar=0;
int sayyuzler=0;
int saybinler=0;
int sayonbinler=0;


//==============================================================================
void hc595_yolla(unsigned char veri)
{
   unsigned  char i;
   for(i=0x80;i>0;i>>=1)
   {
      if(i&veri)output_high(hcdata);
      else  output_low(hcdata); 
      output_high(hcclock);
      output_low(hcclock);
   }
}
//==============================================================================
void main () {
while (1){
say=0;
for (say=0;say<99999;say++){
saybirler=say%10;
sayonlar=(say % 100)/10;
sayyuzler=(say %1000)/100;
saybinler=(say %10000)/1000;
sayonbinler=(say %100000)/10000;
hc595_yolla(digit[saybirler]);
hc595_yolla(digit[sayonlar]);
hc595_yolla(digit[sayyuzler]);
hc595_yolla(digit[saybinler]);
hc595_yolla(digit[sayonbinler]);

output_high(hcload);
output_low(hcload);
delay_ms(1);
}
}
}
//==============================================================================


Başlık: Ynt: 74hc595 ile 99999'a kadar sayıcı
Gönderen: baran123 - 29 Nisan 2014, 20:41:21
Eline sağlık :)
Başlık: Ynt: 74hc595 ile 99999'a kadar sayıcı
Gönderen: isa_olcer - 20 Ağustos 2018, 10:15:16
display tarama kısmı işime yaradı teşekkürler :)
Başlık: Ynt: 74hc595 ile 99999'a kadar sayıcı
Gönderen: Recep METE - 25 Kasım 2018, 01:10:58
Birşey değil.
Başlık: Ynt: 74hc595 ile 99999'a kadar sayıcı
Gönderen: roteks - 25 Aralık 2018, 15:11:52
Merhaba kafamı karıştıran konular var yardımcı olur musun? Taramalı ne demek yada direk bilgi göndermek ne demek? Hangi elemanla yapmalıyım? 3 digit 7 segment birleşik display sürmenin en mantıklı en az pinle sürmenin yolu nedir? Ortak anot yada ortak katot hangisi olmalı yani neye göre tercih ediliyor hangisinin uygulamada daha çok kullanılıyor sebebi nedir?
Alıntı yapılan: Recep METE - 29 Nisan 2014, 20:35:06Belki birilerinin işine yarar diye...

(http://i.hizliresim.com/LPA8aV.png) (http://hizliresim.com/LPA8aV)

#include <16F84A.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading

#use delay (clock=20000000)
//==============================================================================
#define hcdata pin_a0 //data
#define hcclock pin_a1//sh
#define hcload pin_a2//st
//==============================================================================
const int digit[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x6F}; // 9
int16 say=0;
int saybirler=0;
int sayonlar=0;
int sayyuzler=0;
int saybinler=0;
int sayonbinler=0;


//==============================================================================
void hc595_yolla(unsigned char veri)
{
   unsigned  char i;
   for(i=0x80;i>0;i>>=1)
   {
      if(i&veri)output_high(hcdata);
      else  output_low(hcdata); 
      output_high(hcclock);
      output_low(hcclock);
   }
}
//==============================================================================
void main () {
while (1){
say=0;
for (say=0;say<99999;say++){
saybirler=say%10;
sayonlar=(say % 100)/10;
sayyuzler=(say %1000)/100;
saybinler=(say %10000)/1000;
sayonbinler=(say %100000)/10000;
hc595_yolla(digit[saybirler]);
hc595_yolla(digit[sayonlar]);
hc595_yolla(digit[sayyuzler]);
hc595_yolla(digit[saybinler]);
hc595_yolla(digit[sayonbinler]);

output_high(hcload);
output_low(hcload);
delay_ms(1);
}
}
}
//==============================================================================