7 segment sayıcı

Başlatan hmg, 03 Temmuz 2007, 15:47:15

hmg

arkadaşlar ccs kullanmaya yeni başladım ve  7 segment ile aşağıdaki gibi basit bir 0-9 kadar yazan program yazdım fakat bu yazdığımı for döngüsü ile ayrı ayrı yazmadan 0 dan 9 kadar nasıl yazdırırım.şimdiden teşekkürler.

0-9 kadar yazan program;
void main()
{
nt sayi;
int constsg[11]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7C,0x7,0x7F,0x6F,0}

set_tris_d(0);            
  for(;;)
{
     sayi=~sg[0];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[1];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[2];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[3];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[4];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[5];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[6];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[7];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[8];
     output_d(sayi);
     delay_ms(1000);
     sayi=~sg[9];
     output_d(sayi);
     delay_ms(1000);

MURSEL

cok uzatmısın kardeş aşagıdaki ayzılım işini görür ve anlamanda daha yarrlı olur ve altaki linkte üni de yaptıgımız  giriş calışmaları var bu uygulamaları incele kolay gelsin
http://dosya.cc/MPLAB2007p_ccal__malar.rar.html


#include <16f628.h>
#use delay(clock=4000000)
main()
{
int sayac=0;
const int gosterge[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
output_b(0xff);// anotu ortak dispilay oldugu için
while(1)
  {
  for(sayac=0;sayac<10;sayac++)
     {
     output_b(gosterge[sayac]);
     delay_ms(500);
     }
sayac=0;
  }
}

hmg

kardeşim verdiğin cevap ve ilgin için tşk.ler.bizim biraz yaşımız geçiyor heralde ama merakımız var.cevabından faydalandım ,sorularım biraz basit kaçabilir inşallah cevap verirsiniz. kolay gelsin iyi çalışmalar.

MURSEL

estağfurullah abiş    demekki o yaşında azmin var saygı duyarız   selametle iyi calışmalar

M_B

Bu program b portuna parelel baglı  ıkı tane  7 led segmentli sayıcı devresı 1. dıjıt 0-f sayıyor sonra ıkıncı led 0-f sayıyır. Port_a= right bunun ıcın kullanılıyor.
umarım ısınıze yarar en azından bır fıkır verır.
Kolay gelsın


#include <16c84.h>

#USE DELAY( CLOCK=4000000 ) /* Using a 4 Mhz clock */

#FUSES XT,NOWDT,NOPROTECT,NOPUT
/* Use XT mode, No Watch Dog, No Code Protect, No Power-up Timer */

#byte port_b=6 /* define the location of register port_b */
#byte port_a=5 /* define the location of register port_b */
byte CONST LED_MAP[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

main(void){
byte cnt, right,num ;

set_tris_b(0); /* set port_b as outputs */
set_tris_a(0); /* set port_a as output */
 port_b = 0; /* ZERO port_a & port_b */
 port_a = 0;

for( ;; ){
for (right=1;right<3;right++){
  port_a = right;
   for (cnt=0;cnt<10;cnt++){
    port_b = LED_MAP[cnt];
      DELAY_MS(1000); /* one second delay */

             }
         }
     }
 }
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Chan86

Abi devrede displayleri sürmek için hangi entegreyi kullandığını belirtirsen yardımcı olabilirim bende bi ara çok uğratım display ile sayıcıya

Chan86

4511 yada 7447 ilemi yaptın acaba onu bilmek istedim sorun yoksa devreni buraya verebilirsen daha iyi olur