|
Tài trợ cho PIC Vietnam |
Chương trình dịch & các công cụ mô phỏng Khu vực này chỉ có thành viên diễn đàn mới được vào |
|
Ðiều Chỉnh | Xếp Bài |
13-05-2009, 12:29 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 4
: |
Cách mô phỏng led matrix
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 Code:
#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; } } } |
13-05-2009, 12:42 AM | #2 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
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/23216040...s_7.1.rar.html |
13-05-2009, 01:18 AM | #3 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 6
: |
Để 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 |
13-05-2009, 11:47 PM | #4 | |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 4
: |
Trích:
Bác có thể chỉ cụ thể giùm em cái đc ko. |
|
16-05-2009, 12:11 AM | #5 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 6
: |
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 ! thay đổi nội dung bởi: staythesame, 16-05-2009 lúc 11:44 PM. |
16-05-2009, 01:36 AM | #6 |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 4
: |
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é |
17-05-2009, 12:04 AM | #7 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 6
: |
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 Code:
#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); } } } thay đổi nội dung bởi: staythesame, 20-05-2009 lúc 02:08 AM. |
17-05-2009, 12:19 AM | #8 |
Đệ tử 7 túi
Tham gia ngày: Aug 2007
Bài gửi: 213
: |
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.
|
18-05-2009, 01:01 AM | #9 |
Nhập môn đệ tử
Tham gia ngày: May 2009
Bài gửi: 1
: |
co bac nao co so do nguyen ly mach ko cho em voi
|
25-05-2009, 03:04 PM | #10 |
Đệ tử 1 túi
Tham gia ngày: Feb 2008
Bài gửi: 16
: |
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); } } } |
25-05-2009, 03:06 PM | #11 |
Đệ tử 1 túi
Tham gia ngày: Feb 2008
Bài gửi: 16
: |
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.
|
19-06-2009, 04:42 PM | #12 |
Đệ tử 1 túi
Tham gia ngày: Jun 2009
Bài gửi: 13
: |
đọc không hiểu gì hết. mình còn gà lắm.mong các bạn giúp đỡ
|
19-06-2009, 11:33 PM | #13 | |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 8
: |
Khong có zỳ là hay het
Trích:
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ế
__________________
THS |
|
19-06-2009, 11:34 PM | #14 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 8
: |
Có muon Hoc hoi kg hả.
__________________
THS |
20-06-2009, 07:16 AM | #15 |
Đệ tử 4 túi
Tham gia ngày: Mar 2007
Nơi Cư Ngụ: Da Nang
Bài gửi: 69
: |
|
|
|