PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   ai xem giúp e đoạn code quét led matrix với? (http://www.picvietnam.com/forum/showthread.php?t=16634)

yukul 29-04-2012 10:25 PM

ai xem giúp e đoạn code quét led matrix với?
 
2 Attachment(s)
chả là e muốn dùng 595 để gửi dữ liệu ra cod.còn 138 để cáp nguồn cho hàng
code e nó đây ạ
#include <18f4520.h>
#use delay(clock=12000000)
int8 m,i;
int8 Cot1[8]={0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}; //H{0x36,0x36,0x36,0x7e,0x7e,0x36,0x36,0x36}
//A{0x4c,0x6e,0x33,0x33,0x7f,0x7f,0x33,0x33}
//D{0x4E,0x26,0x36,0x36,0x36,0x36,0x26,0x4E}
//T{0x7e,0x7e,0x48,0x48,0x48,0x48,0x48,0x48}
//4{0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}
//int8 Dong[]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110,0b00000111};
//int8 hang[8]={0b000,0b001,0b010,0b011,0b100,0b101,0b110,0b111} ;
#define SH PIN_A5 // clock
#define DS PIN_A3 // data
#define ST PIN_A4 // chot
int8 team;
void sen595(int8 x)
{
#bit fla=x.7;
for (i=0;i<=7;i++)
{
if (fla)
output_high(DS); //Dich 1 bit vao 74HC595
else
output_low(DS);
output_high(SH); //Tao xung Clock
delay_us(10);
output_low(SH); //tao xung Clock
x = x<<1; //Dich trai 1 bit cua Data
}
output_high(ST); //Chot 8 bit cho dau ra
output_low(ST); //Chot 8 bit cho dau ra
}



void main()
{
int8 i,j;
while(1)
{
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
sen595(cot1[i]);
output_a(i);
delay_ms(10); //Tao thoi gian tre
}
}


}
}

tdm 30-04-2012 01:22 PM

1 Attachment(s)
Trích:

Nguyên văn bởi yukul (Post 59376)
chả là e muốn dùng 595 để gửi dữ liệu ra cod.còn 138 để cáp nguồn cho hàng
code e nó đây ạ
#include <18f4520.h>
#use delay(clock=12000000)
int8 m,i;
int8 Cot1[8]={0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}; //H{0x36,0x36,0x36,0x7e,0x7e,0x36,0x36,0x36}
//A{0x4c,0x6e,0x33,0x33,0x7f,0x7f,0x33,0x33}
//D{0x4E,0x26,0x36,0x36,0x36,0x36,0x26,0x4E}
//T{0x7e,0x7e,0x48,0x48,0x48,0x48,0x48,0x48}
//4{0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}
//int8 Dong[]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110,0b00000111};
//int8 hang[8]={0b000,0b001,0b010,0b011,0b100,0b101,0b110,0b111} ;
#define SH PIN_A5 // clock
#define DS PIN_A3 // data
#define ST PIN_A4 // chot
int8 team;
void sen595(int8 x)
{
#bit fla=x.7;
for (i=0;i<=7;i++)
{
if (fla)
output_high(DS); //Dich 1 bit vao 74HC595
else
output_low(DS);
output_high(SH); //Tao xung Clock
delay_us(10);
output_low(SH); //tao xung Clock
x = x<<1; //Dich trai 1 bit cua Data
}
output_high(ST); //Chot 8 bit cho dau ra
output_low(ST); //Chot 8 bit cho dau ra
}



void main()
{
int8 i,j;
while(1)
{
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
sen595(cot1[i]);
output_a(i);
delay_ms(10); //Tao thoi gian tre
}
}


}
}

tách phần dk 74138 sang port khác:
Code:

void main()
{
int8 i,j;
while(1)
{
for(i=0;i<8;i++)
{
output_c(i);//dk 74138
sen595(cot1[i]);
// sent138(Dong[i]);
delay_ms(2); //Tao thoi gian tre
}
}
}


yukul 30-04-2012 08:18 PM

Trích:

Nguyên văn bởi tdm (Post 59453)
tách phần dk 74138 sang port khác:
Code:

void main()
{
int8 i,j;
while(1)
{
for(i=0;i<8;i++)
{
output_c(i);//dk 74138
sen595(cot1[i]);
// sent138(Dong[i]);
delay_ms(2); //Tao thoi gian tre
}
}
}


cám ơn a nhưng e làm phần cứng trên cùng 1 port rùi a có thể xem có cách nào giúp e không ạ?e cám ơn a nhiêu lắm ạ.giúp e với.huhu

yukul 30-04-2012 08:59 PM

e thử lại cách nối giống của a cùng 1 port thì nó vẫn chạy.nhưng vấn đề ở đây của e là.trong phần cứng e lại nối chân A với pin_a2,chân B với pin_a1 và chân C với pin_a0.e nghĩ là nó ngược bit lơn nhất thành bit thấp nhất.a có cách nào sửa lại code với phần cứng để nó chạy không ạ?e cám ơn nhiều lắm ạ

tdm 30-04-2012 11:08 PM

Trích:

Nguyên văn bởi yukul (Post 59484)
e thử lại cách nối giống của a cùng 1 port thì nó vẫn chạy.nhưng vấn đề ở đây của e là.trong phần cứng e lại nối chân A với pin_a2,chân B với pin_a1 và chân C với pin_a0.e nghĩ là nó ngược bit lơn nhất thành bit thấp nhất.a có cách nào sửa lại code với phần cứng để nó chạy không ạ?e cám ơn nhiều lắm ạ

phần cứng thiết kế gì mà kinh dị vậy.
code:
Code:

#include <18f4520.h>
#use delay(clock=12000000)
int8 m,i;
int8 hang[8]={0,4,2,6,1,5,3,7}; //coi kĩ chỗ này nhé em
int8 Cot1[8]={0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}; //H{0x36,0x36,0x36,0x7e,0x7e,0x36,0x36,0x36}
                                                        //A{0x4c,0x6e,0x33,0x33,0x7f,0x7f,0x33,0x33} 
                                                        //D{0x4E,0x26,0x36,0x36,0x36,0x36,0x26,0x4E}
                                                        //T{0x7e,0x7e,0x48,0x48,0x48,0x48,0x48,0x48}
                                                        //4{0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}
//int8 Dong[]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110,0b00000111};
//int8 hang[8]={0b000,0b001,0b010,0b011,0b100,0b101,0b110,0b111};
#define  SH  PIN_A5  // clock
#define  DS  PIN_A3  // data
#define  ST  PIN_A4  // chot
int8 team;
void sen595(int8 x)
{
#bit fla=x.7;
for (i=0;i<=7;i++)
{
if (fla)
output_high(DS); //Dich 1 bit vao 74HC595
else
output_low(DS);
output_high(SH); //Tao xung Clock
delay_us(10);
output_low(SH); //tao xung Clock
x = x<<1; //Dich trai 1 bit cua Data
}
output_high(ST); //Chot 8 bit cho dau ra
output_low(ST); //Chot 8 bit cho dau ra
}



void main()
{
int8 i,j;
while(1)
{
for(i=0;i<8;i++)
{
output_a(hang[i]);
sen595(cot1[i]);
// sent138(Dong[i]);
delay_ms(2); //Tao thoi gian tre
}
}
}


yukul 01-05-2012 12:45 AM

Trích:

Nguyên văn bởi tdm (Post 59492)
phần cứng thiết kế gì mà kinh dị vậy.
code:
Code:

#include <18f4520.h>
#use delay(clock=12000000)
int8 m,i;
int8 hang[8]={0,4,2,6,1,5,3,7}; //coi kĩ chỗ này nhé em
int8 Cot1[8]={0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}; //H{0x36,0x36,0x36,0x7e,0x7e,0x36,0x36,0x36}
                                                        //A{0x4c,0x6e,0x33,0x33,0x7f,0x7f,0x33,0x33} 
                                                        //D{0x4E,0x26,0x36,0x36,0x36,0x36,0x26,0x4E}
                                                        //T{0x7e,0x7e,0x48,0x48,0x48,0x48,0x48,0x48}
                                                        //4{0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60}
//int8 Dong[]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110,0b00000111};
//int8 hang[8]={0b000,0b001,0b010,0b011,0b100,0b101,0b110,0b111};
#define  SH  PIN_A5  // clock
#define  DS  PIN_A3  // data
#define  ST  PIN_A4  // chot
int8 team;
void sen595(int8 x)
{
#bit fla=x.7;
for (i=0;i<=7;i++)
{
if (fla)
output_high(DS); //Dich 1 bit vao 74HC595
else
output_low(DS);
output_high(SH); //Tao xung Clock
delay_us(10);
output_low(SH); //tao xung Clock
x = x<<1; //Dich trai 1 bit cua Data
}
output_high(ST); //Chot 8 bit cho dau ra
output_low(ST); //Chot 8 bit cho dau ra
}



void main()
{
int8 i,j;
while(1)
{
for(i=0;i<8;i++)
{
output_a(hang[i]);
sen595(cot1[i]);
// sent138(Dong[i]);
delay_ms(2); //Tao thoi gian tre
}
}
}


cám ơn a nhiều lắm.e chậy thư mô phỏng thì ok.nhưng e cho vào mạch thật nó chạy không đúng lắm a à.chữ L ban đầu bị nhòe và các chữ nó cũng sáng không đều.
code e đây ạ:
#include <18f4520.h>
#use delay(clock=12000000)
#use fast_io(a)
int8 m,i;
int8 hang[8]={0,4,2,6,1,5,3,7};
int8 Cot[78]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x06,0x06,0x06,0x06,0x06,0x06,0x7e,0x7e, 0x00,0x00, //L
0x36,0x36,0x36,0x7e,0x7e,0x36,0x36,0x36, 0x00,0x00, //H
0x36,0x36,0x36,0x36,0x36,0x36,0x6c,0x48, 0x00,0x00, //V
0x4E,0x26,0x36,0x36,0x36,0x36,0x26,0x4E, 0x00,0x00, //D
0x7e,0x7e,0x48,0x48,0x48,0x48,0x48,0x48, 0x00,0x00, //T
0x68,0x6c,0x66,0x63,0xff,0xff,0x60,0x60, 0x00,0x00, //4
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00
};

//int8 Dong[]={0b00000000, 0b00000001, 0b00000010, 0b00000011, 0b00000100, 0b00000101, 0b00000110,0b00000111};
//int8 hang[8]={0b000,0b001,0b010,0b011,0b100,0b101,0b110,0b111} ;
#define SH PIN_A5 // clock
#define DS PIN_A3 // data
#define ST PIN_A4 // chot
int8 team;
void sen595(int8 x)
{
#bit fla=x.7;
for (i=0;i<=7;i++)
{
if (fla)
output_high(DS); //Dich 1 bit vao 74HC595
else
output_low(DS);
output_high(SH); //Tao xung Clock
delay_us(10);
output_low(SH); //tao xung Clock
x = x<<1; //Dich trai 1 bit cua Data
}
output_high(ST); //Chot 8 bit cho dau ra
output_low(ST); //Chot 8 bit cho dau ra
}



void main()
{
set_tris_a(0x00);
int8 i,j,k;
while(1)
{
for(i=0;i<70;i++)
{
for(k=0;k<30;k++)
{
for(j=0;j<=7;j++)
{
output_a(hang[j]);
output_b(j);
sen595(cot[j+i]);
delay_us(5); //Tao thoi gian tre
}
}

}
}
}

P/S :nếu a có thể cho e yahoo và số điện thoại thì tốt quá ạ.e cám ơn a nhiều ạ.hihi

tdm 01-05-2012 06:52 PM

Trích:

Nguyên văn bởi yukul (Post 59498)
các chữ nó cũng sáng không đều.

dòng ra của 74138 không đủ để cấp dòng cho một hàng.
khắc phục dùng tranzitor khuếch đại dòng.
em đang học ở trường nào.

yukul 01-05-2012 07:25 PM

Trích:

Nguyên văn bởi tdm (Post 59594)
dòng ra của 74138 không đủ để cấp dòng cho một hàng.
khắc phục dùng tranzitor khuếch đại dòng.
em đang học ở trường nào.

em học truong dhcnhn ạ.a có thể cho e yahoo để e hỏi a chút được không ạ?tại thing thoảng mới thấy a lên. cứ lúc e lại vào diễn đàn xem anh trả lời chưa?sốt ruột quá ạ.hihi

222222222 04-05-2012 10:06 PM

help me
 
#bit d7=send_reg.31 câu lệnh này nghĩa là gì vậy mọi người.ai giải giải thích dủm em cái.


Múi giờ GMT. Hiện tại là 06:25 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