74595
các bác cho em hỏi về 74595 được ko
em mới vào nghề nên chẳng biết j cả giúp em với em đang làm một mạch hiển thị led 7 thanh gồm 8 led và 2 ic 74595 em dùng pic 16f886 em làm mãi rùi mà nó ko chạy chán lắm mong các bác chỉ giáo cho |
có gì pam vào mail mình mình gửi cho bạn.con này nói chung rất dể sài không khó lắm đâu.
tranvanphat1989@yahoo.com.vn |
ko có ai giúp em ah
huuuuu |
em cám ơn bác
em đang học cách lập trình bằng ngôn ngữ c mong bác giáp em vói và chỉ giùm em chỗ sai thanks |
cu thể là bạn đã đưa dữ liệu ra 595 duọc chưa.bạn đưa code bạn lên thử xem để mọi người còn sửa code giúp bạn
|
anh phatcddt08a ui
bây giờ anh có online trên yahoo ko nếu có thì em add nick của anh vào nhá |
thế để nick bạn lại đi . mail trên đó cũng là nick mình đó.mình với bạn đồng tuổi thôi cứ kêu bạn là được
|
vâng
đây là code của em #include <16F886.h> #device adc=10 #FUSES NOWDT //No Watch Dog Timer #FUSES INTRC_IO //Internal RC Osc, no CLKOUT #FUSES NOPUT //No Power Up Timer #FUSES MCLR //Master Clear pin enabled #FUSES PROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES BROWNOUT //Reset when brownout detected #FUSES NOIESO //No Internal External Switch Over mode enabled #FUSES NOFCMEN //No Fail-safe clock monitor enabled #FUSES NOLVP //No Low Voltage Programming on B3(PIC16) or B5(PIC18) #FUSES NODEBUG //No Debug mode for ICD #FUSES WRT //Program memory write protected #FUSES BORV40 //Brownout reset at 4v #use delay(clock=4000000) #byte PORTB = 0x06 #byte TRISB = 0x86 //=============================== //define com //mant //=============================== //#define data PIN_B5 //#define //#define SHIFT_CLK_1 PORTB |= 0b00010000 //#define SHIFT_CLK_0 PORTB &= ~0b00010000 #define SHIFT_DTA_1 PORTB |= 0b00100000 #define SHIFT_DTA_0 PORTB &= ~0b00100000 #define MASK_LED_0 0b00101000 #define MASK_LED_1 0b10101111 #define MASK_LED_2 0b10011000 #define MASK_LED_3 0b10001010 #define MASK_LED_4 0b00001111 #define MASK_LED_5 0b01001010 #define MASK_LED_6 0b01001000 #define MASK_LED_7 0b10101110 #define MASK_LED_8 0b00001000 #define MASK_LED_9 0b00001010 //int16 n; const unsigned char dta[10] = {MASK_LED_0,MASK_LED_1,MASK_LED_2,MASK_LED_3,MASK_ LED_4, MASK_LED_5,MASK_LED_6,MASK_LED_7,MASK_LED_8,MASK_L ED_9}; //=============================== //dinh nghia cac ham //=============================== void sckc(); void lat(); void dichbit(); //=============================== //tao xung clock //=============================== void sckc() { //PORTB=0b11110111 output_high(PIN_B4); delay_us(200); output_low(PIN_B4); delay_us(200); } //=============================== //tao xung latch va hien thi //=============================== void lat() { //PORTB=0b11101111 output_high(PIN_B3); delay_us(200); output_low(PIN_B3); delay_us(200); } //=============================== //DICH BIT //n la so phan tu mang //i so lan lap dich bit //=============================== void main() { unsigned char mask,i,n; int8 dk; mask = 0x80; for(n=0;n<10;n++) { for(i=0;i<8;i++) { if( dta[n] & mask ) {SHIFT_DTA_1;} else {SHIFT_DTA_0;} sckc(); mask>>=1; } dk=0b00001111; if(dk & mask) {SHIFT_DTA_1;} else {SHIFT_DTA_0;} sckc(); mask>>=1; lat(); delay_ms(2000); } } |
còn đây là nick của mình
chithanh_pro89 còn đây là mail của mình chithanhtb |
mail của em là chithanhtb@gmail.com
|
Trích:
gợi ý nhé. int dulieu = 0x01,i,y; int1 value; for(i=8;i>=1;i--) { value = bit_test(dulieu,i-1); data = value; // data la chân dử liệu 595 ckl = 0; // chân xung nhip ckl=1; chot=0; // chân chốt chot=1; } ở đây chương trình chạy như sau bắt đầu lấy bít 7 dử liệu đưa ra rồi chốt liền ,lần thứ 2 sẽ là 6 và 5 dến 0 cứ thế . còn nếu bạn muốn đưa nguyên byte rồi chốt thì làm như sau: int dulieu = 0x01,i,y; int1 value; for(i=8;i>=1;i--) { value = bit_test(dulieu,i-1); data = value; // data la chân dử liệu 595 ckl = 0; // chân xung nhip ckl=1; } chot=0; // chân chốt chot=1; cái lệnh bit_test này tốn rất ít chu kỳ máy so với if mình thường đưa bít 7 vào trước để dữ liệu ra giống như dữ liệu vào,còn đưa bít 0 ra trước thì dữ liệu sẻ đảo lại. bản thân thanh ghi dịch bên trong 595 la dịch trái.đi ăn cái gì đã đói bụng thế |
vâng
em gửi toàn bộ mạch in và chuơng trình vào mail của anh rùi |
thế nói chung chuong trình của mình có đúng ko bạn
|
cám ơn bạn nhiều
mình sẽ thay đổi theo cách của bạn nhưng sao mình nạp chuơng trình mình viết nó lại ko chạy được nhỉ |
bạn có thể giải thích cho mình cái 0x01,i,y đẻ làm j ko?
và bit_test(dulieu,i-1); để làm gì ý nghĩa của nó được ko bạn giải thích giúp mình với |
Múi giờ GMT. Hiện tại là 12:14 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam