Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

74hc595 ile 99999'a kadar sayıcı

Başlatan Recep METE, 29 Nisan 2014, 20:35:06

Recep METE

Belki birilerinin işine yarar diye...



#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);
}
}
}
//==============================================================================
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

baran123


isa_olcer

display tarama kısmı işime yaradı teşekkürler :)

Recep METE

printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

roteks

#4
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...



#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);
}
}
}
//==============================================================================