|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
13-06-2013, 08:38 PM | #1 |
Đệ tử 1 túi
Tham gia ngày: Apr 2011
Nơi Cư Ngụ: Quảng Nam
Bài gửi: 13
: |
[HELP] hiển thị 4 led 7 đoạn bằng 74HC595
Em làm mạch quét 4 led 7 đoạn dùng IC 74HC595
Mấy anh chị xem giúp em code hoặc mạch có gì sai ko mà khi em cho hiển thị thì chỉ led 1,2 hiển thị đúng còn led 3,4 thì nó đổi vị trí các đoạn của led 7 ví dụ như cho nó sáng đoạn A thì nó sáng đoạn B, B thì thành C…. Code với sơ đồ nguyên lý trong file đính kèm! Em cảm ơn trước! code: #include <16f877A.h> #device *=16, ADC = 10 #use delay(clock=20000000) #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP,NOCPD, NOWRT //==============================DEFINE============== =================== #define DAT PIN_B5 #define SCK PIN_B6 #define SCL PIN_B7 //========================VARIABLE================== =================== unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; //unsigned char N[10]={0x60,0xFC,0x52,0x58,0xcc,0x49,0x41,0x7c,0x40,0x4 8}; //======================FUNCTION==================== =================== void display(int x,int y,int z,int t) { int i,temp; for (i=0;i<8;i++){temp=x;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);x*=2;output_low(SCK);output_high(S CK);} for (i=0;i<8;i++){temp=y;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);y*=2;output_low(SCK);output_high(S CK);} for (i=0;i<8;i++){temp=z;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);z*=2;output_low(SCK);output_high(S CK);} for (i=0;i<8;i++){temp=t;temp=temp&0x80;if(temp==0x80) output_high(DAT);else output_low(DAT);t*=2;output_low(SCK);output_high(S CK);} output_low(SCL);delay_ms(10); output_high(SCL); } void main() { while(true) { display(M[1],M[2],M[3],M[4]); delay_ms(200); } } |
|
|