PDA

View Full Version : Cách mô phỏng led matrix


thanhl0nglee
13-05-2009, 12:29 AM
Em đang học về led metrix.Muốn thực hành xíu,mà cái mạch nạp JDM nó bị lỗi j j ko biết.Nên phải dùng Proteus để mô phỏng.Mà sao mô phỏng cái chữ A mà ko đc.Hjc hjc
Nhờ các bác chị hộ.Bác nào có tài liệu về mô phỏng Proteus thì cho em với.
Đây là đoạn code em viết
#include <16F877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=4000000)
#use fast_io(a)
#byte porta=0x05
#use fast_io(b)
#byte portb=0x06
#use fast_io(c)
#byte portc=0x07
#use fast_io(d)
#byte portd=0x08
#use fast_io(e)
#byte porte=0x09
int data[] = {0x00,0xf8,0x24,0x22,0x24,0xf8,0x00,0x00};
int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;
void main(void)
{
set_tris_b(0x00);
set_tris_d(0x00);
while(1)
{
for(i=0;i<8;i++)
{
portb = data[i];
portd = quet[i];
delay_ms(100);
portb = 0x00;
}
}
}

phandinh
13-05-2009, 12:42 AM
Mình không tìm hiểu led Ma trận dùng PIC nên không giúp bạn dc.
Có file hướng dẫn Proteus này hy vọng giúp ích cho bạn
http://rapidshare.com/files/232160406/huong_dan_ve_mach-mo_phong-pcb_voi_proteus_7.1.rar.html

staythesame
13-05-2009, 01:18 AM
Để giả lập Led matrix trong Proteus bạn cần chú ý về chân quy đinh của nó. Led matrix xanh và đỏ là khác nhau. Đối với Led matrix xanh : 8 chân phía trên là hàng , 8 chân phía dưới là cột. Led matrix đỏ thì ngược lại ; 8 chân trên là cột, 8 chân dưới là hàng. Để led sáng : chân hàng 0, chân cột 1.

Bạn xem lại trong code để bố trí chân cho phù hợp: xuất data ở port B, quét theo port D

thanhl0nglee
13-05-2009, 11:47 PM
Để giả lập Led matrix trong Proteus bạn cần chú ý về chân quy đinh của nó. Led matrix xanh và đỏ là khác nhau. Đối với Led matrix xanh : 8 chân phía trên là hàng , 8 chân phía dưới là cột. Led matrix đỏ thì ngược lại ; 8 chân trên là cột, 8 chân dưới là hàng. Để led sáng : chân hàng 0, chân cột 1.

Bạn xem lại trong code để bố trí chân cho phù hợp: xuất data ở port B, quét theo port D

Em cũng xuất data ở porb và quet ở port d mà
Bác có thể chỉ cụ thể giùm em cái đc ko.

staythesame
16-05-2009, 12:11 AM
Mình đã thử làm lại bài này cho bạn. Về giả lập ko có vấn đề gi`. Vấn đề là do code của ban.
Phần delay bạn để
delay_ms(100);
thì quá nhiều những 0,1s. Bạn chuyển sang delay_us(50) thì sẽ ok.
Chúc bạn thành công !

thanhl0nglee
16-05-2009, 01:36 AM
Bạn có thể nói rõ hơn cách xác định chân,cách mắc đc ko.Mình đã sửa lại chỗ delay,nhưng mà khi mô phỏng nó vẫn ko ra hình thù j cả.Thực ra đây là bài tập thực hành hiển thị chữ A bằng led matrix nhưng do mình ko biết cách mô phỏng nên mới ra thế này.Bạn làm ơn chỉ rõ hơn giùm mình cái nhé.
Bạn chỉ cách xác định chân,các mắc rồi cho mình cái hình của bạn nhé

staythesame
17-05-2009, 12:04 AM
OK! Minh mắc mạch theo sơ đồ của bạn. Ở đây bạn quét theo cột(do nối portD vào 8 chân cột phía dưới của Ledmatrix xanh), do chân cột của của Led matrix xanh là chân anot =>đối với mỗi cột được chọn sáng khi xuất dữ liệu cho cột thì bit 0 làm đèn led trên cột đó sáng, bít 1 thì tắt. Trong trường hợp bạn muốn xuất ra chữ A thì trong code phần data () bạn phải đảo ngược 1->0 , 0->1 . Vd: từ 0x00 ->0xff .
Đây là code mình đã sửa lại cho bạn để xuất chữ A

#include <16F877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=4000000)
#use fast_io(a)
#byte porta=0x05
#use fast_io(b)
#byte portb=0x06
#use fast_io(c)
#byte portc=0x07
#use fast_io(d)
#byte portd=0x08
#use fast_io(e)
#byte porte=0x09
int data[] = {224,219,187,123,187,219,224,255}; //đa chinh lai cho nay doi bit 1->0, 0->1
int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;

void main(void)
{
set_tris_b(0x00);
set_tris_d(0x00);
while(1)
{
for(i=0;i<8;i++)
{
portb = data[i];
portd = quet[i];
delay_us(50);
output_d(0);output_b(0);
}
}
}

thaithien
17-05-2009, 12:19 AM
Gửi cả file proteus lên luôn để dễ xử lý đi,và cũng để người khác tham khảo nữa.Đơ mất thời gian vẽ mạch trở lại.

nguyenyeu11
18-05-2009, 01:01 AM
co bac nao co so do nguyen ly mach ko cho em voi

nguyenductu2310
25-05-2009, 03:04 PM
Mô phỏng hiển thị chữ lưu ý chân linh kiện thui, nếu ko rõ thì test thử với mạch đơn giản ấy.
Mình viết tạm chương trình hiển thị chữ A. bạn coi thử nhé!
Code:

#include <16f877a.h>
#fuses NOWDT,HS,PUT,NOPROTECT
#device 16f877a*=16 adc=8
#use delay(clock=20000000)
int8 Cot[]= {0b00011000, 0b00111100, 0b01100110, 0b11000011, 0b11111111, 0b11111111, 0b11000011, 0b11000011};
int8 Hang[]={0b11111110, 0b11111101, 0b11111011, 0b11110111, 0b11101111, 0b11011111, 0b10111111, 0b01111111};
int8 i;

void main()
{
set_tris_b(0x00);
set_tris_d(0x00);
while(1)
{
for (i=0; i<8; i++)
{
output_b(Hang[i]);
output_d(Cot[i]);
delay_ms(5);
}
}
}

nguyenductu2310
25-05-2009, 03:06 PM
Quên mất! chương trình mình viết dùng CCS thuần, không phải định nghĩa thêm Port, có thế rút gọn hơn đó. Với chương trình nhỏ dùng ntn minh thấy tiện hơn.

loanmapdit
19-06-2009, 04:42 PM
đọc không hiểu gì hết. mình còn gà lắm.mong các bạn giúp đỡ

Huynh Thanh San
19-06-2009, 11:33 PM
Em đang học về led metrix.Muốn thực hành xíu,mà cái mạch nạp JDM nó bị lỗi j j ko biết.Nên phải dùng Proteus để mô phỏng.Mà sao mô phỏng cái chữ A mà ko đc.Hjc hjc
Nhờ các bác chị hộ.Bác nào có tài liệu về mô phỏng Proteus thì cho em với.
Đây là đoạn code em viết
#include <16F877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=4000000)
#use fast_io(a)
#byte porta=0x05
#use fast_io(b)
#byte portb=0x06
#use fast_io(c)
#byte portc=0x07
#use fast_io(d)
#byte portd=0x08
#use fast_io(e)
#byte porte=0x09
int data[] = {0x00,0xf8,0x24,0x22,0x24,0xf8,0x00,0x00};
int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;
void main(void)
{
set_tris_b(0x00);
set_tris_d(0x00);
while(1)
{
for(i=0;i<8;i++)
{
portb = data[i];
portd = quet[i];
delay_ms(100);
portb = 0x00;
}
}
}

================================================== =============
NGUOI READ : Bạn chỉ có thể mo phong duoc 1 led matrix thoi hả . Khong the mo phong với 16 led matrix ah cùi thế

Huynh Thanh San
19-06-2009, 11:34 PM
Có muon Hoc hoi kg hả.

0903579509
20-06-2009, 07:16 AM
Có muon Hoc hoi kg hả.

Show hàng cho anh em mở rộng tầm mắt đi! Dấu làm gì cho nặng bụng.

pehan
15-07-2009, 04:49 PM
mấy anh oi ! Em dang lam 1 bảng matrix 8x32, mach sử dụng PIc 16f877a,IC 74hc573 de chot dữ liệu cột, em dùng portD quet hàng, em lập trình chạy Ok rồi nhưng chỉ chạy được từ dưới lên ko a`,chưa lập trình chạy từ phải sang trái dc , máy anh giúp em với, còn mấy hôm nửa là nộp dồ án rồi! Em có gủi kèm phần mô phỏng + code do em viet, cam on máy anh trước nha. Em trai.

htlongbkdn
15-07-2009, 07:12 PM
Mình là lính mới cũng muốn học hỏi nhiều mong các bạn chỉ giáo

mrbean007
20-07-2009, 03:04 AM
int data[] = {0x00,0xf8,0x24,0x22,0x24,0xf8,0x00,0x00};
int quet[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
mình ko hiểu rõ 2 dòng này lắm, mong bạn nào biết chỉ mình thêm
thanks!!

Bluetek212
24-07-2009, 12:08 AM
cái này là hiển thị led matrix dùng phương pháp quét cột, dữ liệu ra hàng!
Cái mảng data[] là chữ A dc mã hóa, bạn có thể xem trong cái hình mình đính kèm!
Còn cái mảng quet[] là dữ liệu quét cột, ở đây theo mình hiểu là tích cực mức cao!bạn lấy giấy mà ghi ra thử xem có phải 0x01 là 00000001b còn 0x02 là 00000010b.....cứ tiếp tục như thế mà thôi! số 1 đó sẽ chạy từ LSB cho đến MSB là 0x80 tức 10000000b!

mrbean007
12-08-2009, 12:50 AM
thì ra là vậy mình hiểu đc rùi,thanks
mình đọc thấy có phần đệm dòng cho cột và hàng nữa là sao hả bạn,với lại mún cho chữ chạy từ phải wa trái và trái-->phải(or từ trên xuống và từ dưới lên) thì mình phải wét sao hả bạn
có bạn nào viết 1ct chạy chữ pót lên cho mình và ae xem và học hỏi cái
mong các bạn ủng hộ thêm
Thanks nhìu...

longvy09
22-09-2009, 09:38 PM
Ừhm có bạn nào biết viết cho nó chạy từ phải qua trái mà quét cột ko?

lenam04dtd
30-10-2009, 04:29 PM
Ai có chương trình chạy chữ A từ trái sang phải thì cho a e xem với. Còn vấn đề bạn thanhl0nglee hỏi thì đơn giản quá. Bạn nào bít thì cho mình với nhé
:D

zonnamtao
31-10-2009, 01:20 AM
Mấy bạn coi cái này mà tìm hiểu dần nha.Nó chạy cả ngày luôn hahaa

congly
14-01-2010, 09:45 AM
cám ơn các bác nhiều về những gì mà các bác đã làm

tieukhe0303
03-04-2011, 03:44 AM
Có muon Hoc hoi kg hả.

kênh kiệu tự tin thái quá là biểu hiện của bệnh thất bại