ccs de 4051 i kullanmak veya 74hc595 kullanmak

Başlatan sagamen, 17 Temmuz 2006, 11:40:49

sagamen

arkadaşlar ccs de 4051 i nasıl kullanırım daha dogrusu pwm basacam ve onları 8 e bolup değisik pwm elde etmek için
ilginize cok sağolun

ustalarımdan yardım beklıyorum
herkEse kolay gelsin

tnen

4051 in 6 nolu pinini (INH) GND ye cek. ABC uclarından da pic  ile kontrol et.000 için 0. cıkış 111 için 7. çıkış aktif olur

OG

CCS ile ne gibi ilgisi var anlayamadım?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

sagamen

sevgili og arkadaşım sadece ornek kod lazım ve bunların cıkısını pwm olması ile ilgili örnek kodlar varmı
ben bayağı ugraştım ama sadece 0 1 oluyor çıkışları
herkEse kolay gelsin

sagamen

C ================
#TYPE short=8, int=16, long=32

#if defined(__PCM__)

#include <16F628A.h> 
#fuses MCLR,NOLVP,NOWDT,NOPUT,NOBROWNOUT,PROTECT,INTRC_IO
#use delay(clock=4000000)
#pragma use standard_io(B)
#endif

#include <stdio.h>
#include <stdlib.h>
#include "rgb.h"

//#define red 
//#define green 
//#define blue 
void main() {
set_tris_a(IOBITS_A);
set_tris_b(IOBITS_B);
setup_timer_2(T2_DIV_BY_1,255,1);
SETUP_CCP1(CCP_PWM);			
SET_PWM1_DUTY(0);

while(true){ 
set_pwm1_duty(255); 
output_b( rgb_led);
  }

}

h==================
// PORT_B'NIN BIT TANIMLAMALARI //
		#define	IOBITS_B		0b00000000

		#define	PB_0			PIN_B0  //OUT
		#define	PB_1			PIN_B1  //out
		#define	PB_2			PIN_B2  //out
		#define	pwm1 			PIN_B3  //pwm
		#define	BCDA			PIN_B4  //a
		#define	BCDB			PIN_B5  //b
		#define	BCDC			PIN_B6  //c
		#define	PB_7			PIN_B7  //out

// PORT_A'NIN BIT TANIMLAMALARI //
		#define	IOBITS_A		0b00000000

		#define	PA_0		PIN_A0  //out
		#define	PA_1		PIN_A1  //out
		#define	PA_2		PIN_A2  //out
		#define	PA_3		PIN_A3  //out
		#define	PA_4		PIN_A4  //out
		#define	PA_5		PIN_A5  //out
		#define	PA_6		PIN_A6  //out
		#define	PA_7		PIN_A7  //out

static const unsigned char rgb_led[32] = {
    //CBA
	0b00000000,	//B'01110000'	;0	1	0
	0b00000010,	//B'01110010'	;1	2	1
	0b00010100,	//B'01110100'	;2	3	2
	0b00001000,	//B'01110110'	;3	4	3
	0b00011000,	//B'01111000'	;4	5	4
	0b00011000,	//B'01111010'	;5	6	5
	0b00101000,	//B'01111100'	;6	7	6
	0b00111110,	//B'01111110'	;7	8	7
};
char i;


----------------------------
gibi denemeler yapıyorum ama sadece çikişlarda 1 veya 0 conuc alıyorum ben 1 veya 0 yerine pwm uygulamayı nasıl yapabilirim
herkEse kolay gelsin

sagamen

c--------------------------------
#TYPE short=8, int=16, long=32

#if defined(__PCM__)

#include <16F628A.h> 
#fuses MCLR,NOLVP,NOWDT,NOPUT,NOBROWNOUT,PROTECT,INTRC_IO
 #use delay(clock=4000000)
#pragma use standard_io(B)
#endif

//#include <stdio.h>
//#include <stdlib.h>
#include "rgb.h"

//#define red 
//#define green 
//#define blue 
void main() {
set_tris_a(IOBITS_A);
set_tris_b(IOBITS_B);
setup_timer_2(T2_DIV_BY_1,255,1);
SETUP_CCP1(CCP_PWM);			
SET_PWM1_DUTY(0);

while(true){	
	for ( i=0;i<255; i++){
		set_pwm1_duty(i);
		output_b(0b00000000); 
		delay_ms(200);
		}
		for ( i=0;i<255; i++){
			set_pwm1_duty(i);
			output_b(0b00001000); 
			delay_ms(200);
			}
			for ( i=0;i<255; i++){
				set_pwm1_duty(i);
				output_b(0b00010000); 
				delay_ms(200);
			   	}
				for ( i=0;i<255; i++){
					set_pwm1_duty(i);
					output_b(0b00011000); 
					delay_ms(200);
					}
					for ( i=0;i<255; i++){
						set_pwm1_duty(i);
						output_b(0b00100000); 
						delay_ms(200);
						}
						for ( i=0;i<255; i++){
							set_pwm1_duty(i);
							output_b(0b00011000); 
							delay_ms(200);
							}
 							for ( i=0;i<255; i++){
								set_pwm1_duty(i);
								output_b(0b00101000); 
								delay_ms(200);
								}
								for ( i=0;i<255; i++){
									set_pwm1_duty(i);
									output_b(0b00110000); 
									delay_ms(200);
									}
									for ( i=0;i<255; i++){
										set_pwm1_duty(i);
										output_b(0b00111000); 
										delay_ms(200);
										}
	}
}




h--------------------------------------------
		#define	IOBITS_B		0b00000000

		#define	PB_0			PIN_B0  //OUT
		#define	PB_1			PIN_B1  //out
		#define	PB_2			PIN_B2  //out
		#define	pwm1 			PIN_B3  //pwm
		#define	BCDA			PIN_B4  //a
		#define	BCDB			PIN_B5  //b
		#define	BCDC			PIN_B6  //c
		#define	PB_7			PIN_B7  //out

// PORT_A'NIN BIT TANIMLAMALARI //
		#define	IOBITS_A		0b00000000

		#define	PA_0		PIN_A0  //out
		#define	PA_1		PIN_A1  //out
		#define	PA_2		PIN_A2  //out
		#define	PA_3		PIN_A3  //out
		#define	PA_4		PIN_A4  //out
		#define	PA_5		PIN_A5  //out
		#define	PA_6		PIN_A6  //out
		#define	PA_7		PIN_A7  //out
/*
static const unsigned char rgb_led[8] = {
    //  CBA
	0b00000000,	//B'01110000'	;0	1	0
	0b00001000,	//B'01110010'	;1	2	1
	0b00010000,	//B'01110100'	;2	3	2
	0b00011000,	//B'01110110'	;3	4	3
	0b00100000,	//B'01111000'	;4	5	4
	0b00101000,	//B'01111010'	;5	6	5
	0b00110000,	//B'01111100'	;6	7	6
	0b00111000,	//B'01111110'	;7	8	7
};
*/
//unsigned char red;
//unsigned char green;
//unsigned char blue;
char i;
//char x;
//static const unsigned char led_Tablo[8] = {0,1,2,3,4,5,6,7};
herkEse kolay gelsin

sagamen

yukarıda ki programda 4051 butun bacaklarından pwm alabiliyorum  ama sorunum şu; aynı anda 1-2-3'cü bacaklardan nasıl pwm  alabilirim veya 4-5-6 gibi
herkEse kolay gelsin

OG

Şunları code tag içine alsana güzel kardeşim. Bak böyle daha anlaşılır oluyor.

Ben CCS bilmiyorum. Ne yapmak istediğini biraz daha açabilirmisin. Blok bir şema çizebilirsen daha rahat anlaşılacak.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

tnen

4051 ile bunu yapman inkansız. Nedeni A-B-C uclarından verdigin binary koda gore sadece 1 tane cıkısı aktif yapabilirsin.Senin istediğin gibi aynı anda değil 3 ; 2 çıkışı bile aktif yapamazsın. Tabi üç tane 4051 kullanırsan uc tana aynı anda cıkısın olur.Ama 4053 ile bunu yapabilirsin birde bunu dene

sagamen

evet şimdi anladım sevgili tnen  o zaman 3 tane 4051 kullanacagız  peki bu arada abc ucların paralel mı yoksa picden ayrı ayrı abc mi cıkmam gerekiyor?
ilgine cok sağol
herkEse kolay gelsin

sagamen

aklıma bir şey takıldı  4051'in butun bacakları 30-35 hz le tarasam farklı bır sonuc alabılırmıyım
herkEse kolay gelsin

tnen

Cevap vermekte geciktiğim için özür dilerim bi kaç gündür PC de bi sorun var. picprojeye bir turlu ulasamadım. Başka bir pc den cevap yazıyorum...

4051 in ABC uclarını 30-35 Hz ile tararsak yine aynı anda elde edemeyiz aralarında bir zaman farkı olur.1/30 veya 1/35 sn gibi bu tarama frekansına baglıdır. Eger uc tane  4051 kullanırsan 4051 lerin pic ten cekeceği akıma bakmak gerekir. Biliyorsundur ki pic in dışarıya vereceği akım 20mA in uzerine çıkamaz yada çıkarsa pic hasar görür.bunun yerine  A B C uclarına bağlıyacagın pic çıkışlarını direk değilde bir buffer turu yapı ile aktarabilirsin uln bu iş için kullanılabilir. Ama bence sen birde ilk once 4053 u bir incele proteusta bir bak işini gorurmu bu sayede hem 3 tane 4051 yerine birtane 4053 kullanırsın  hemde buffer yapısına ihtiyacın kalmayabilir.4053 içinde 6 nolu pin (INH) gnd ye baglı kalacak şekilde ABC ye 000 verissen X0 Y0 Z0  X Y Z girişlerinle aynı şekilde değisir. ABC ye 111 verirsen X1 Y1 Z1 X Y Z  girişlerinle aynı şekilde değişir.Yani A 0 ise X0 1 ise X1 B 0 ise Y0 1 ise Y1 C 0 ise Z0 1 ise Z1 ilgili girişle aynı şekilde değişir.

sagamen

bilgilerin için cok sağol ama kücücük bir sorun var örneğin 4053 ün   abc uclarını 111 yaptım X1 Y1 Z1 X Y Z aktif oldu ama ben istiyorum ki x1 artarken y1 eksilsin z1 de sabit kalsın bu durumda ne 4051  ne 4052 ne de 4053 iş yapar gibime geliyor bunu başka şekilde nasıl haledebilirim
       ilgine teşekkürler
herkEse kolay gelsin

tnen

Yapmak istediğin proje nedir.Eger sen üç çıkışın farklı sekilde değişmesini istiyorsan girişlerinin değişimi senin istediğin gibi olmalı yani üç farklı çıkış için üç farklı girişe ihtiyacın olur. Şöyleki X girişin artarken X0 ve ya X1 artacak ; aynı anda Y girişin azalırken Y1 veya Y0 çıkışın azalacak ve Z girişin aynı anda sabitse Z0 veya Z1 çıkışın sabit kalacaktır. Eğer X Y Z çıkışların herhangi bir t anında farklı olmasını istersen dogal olarak girişlerin farklı olmalıdır.

Eger yapmak istediğin proje hakkında bilgi verirsen sadece ben değil boarddaki herkez  belki sana daha fazla yardımcı olabilir.

Kolay gelmesi dileği ile

sagamen

bir çeşit rgb sistemi yanlız  biliyorsun rgb 3 cikiştan meydana geliyor ortalama 30 cıkısa ihtiyacım olacak her cıkısı istediğim gibi ayarlamak istiyorum sadece bir pvm ile  10 adet rengi ayrı ayrı istediğim gibi ayarlamalıyım
herkEse kolay gelsin