Ðăng Nhập

View Full Version : ai xem giúp e đoạn code quét led matrix với?


yukul
29-04-2012, 10:25 PM
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
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:

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
tách phần dk 74138 sang port khác:

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
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:

#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
phần cứng thiết kế gì mà kinh dị vậy.
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
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
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
#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.