PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 13-12-2008, 10:27 AM   #1
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
giúp em với về ledmatrix

Code:
#include "E:\D cu\INFO\project-pic\matrix\matrix.h"
//#include<font.c>
#use delay(clock=20000000)
#define hang PORTD
#define cot PORTC
#byte PORTD =0x08
#byte PORTC =0x07
#byte trisc =0x87
#byte trisd =0x88
unsigned char chuA[]={
                               0b00010000,
       0b00011000,
      0b00010100,
      0b00011100,
      0b00010010,
      0b00011010,
      0b00010110,
      0b00011110 ,

       0b00100000,
      0b00101000,
     0b00100100,
     0b00101100,
     0b00100010,
     0b00101010,
     0b00100110,
     0b00101110,


      0b01000000,
      0b01001000,
    0b01000100,
     0b01001100,
     0b01000010,
     0b01001010,
    0b01000110,
   0b01001110,

       0b10000000,
     0b10001000,
     0b10000100,
     0b10001100,
     0b10000010,
    0b10001010,
     0b10000110,
     0b10001110,      
};
unsigned char font[]={
   255,255,255,255,
//    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
 131,191,191,191,255,
 131,187,185,130,249,255,
 131,235,235,247,255,
 255,255,255,
 239,131,171,187,199,255,
 130,255,
 129,42,169,255,
 131,247,239,131,255,
 255,255,255,
 251,131,251,255,
 131,190,188,131,249,255,
 255,255,255,
 183,131,191,
 199,187,187,199,255,
 255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255


};



void Display(unsigned char timer1,unsigned char k) {
unsigned char i,j,m,n;
set_tris_d(0);
set_tris_c(0);

  
for(i=0;i<timer1;i++)
 {
 m = 0;

 for(j=0;j<32;j++)
 {  
    
       Cot = chuA[j];
 hang  = 0xff;

// n=j;
  if(j >=k)
    {

  hang = font[m];

m ++;
}
//   delay();
  
  }

}
  }

void main() 
{
unsigned char index;
unsigned char i,j,k=32,m,n;


while(1)
{

Display(900,k);


// Thuc hien dich chu
//for(j=0;j<32;j++)
//  {
//   font[j] = font[j+1];
//  } 
k=k-1;

if(k==0){
 
while(1)
{
Display(900,k);
 for(m=0;m<64;m++)
 {
 font[m]=font[m+1];
// hang = font[m];
// for(m=0;m<16;m++)
 }
 hang  = 0xff;
}
}
}
}

các anh giúp em với em mô phỏng nhưng chưa được như ý lắm
các pro giúp em được không

thay đổi nội dung bởi: namqn, 13-12-2008 lúc 04:01 PM.
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-12-2008, 10:30 AM   #2
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
đây là file mô phỏng của em
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-12-2008, 10:39 AM   #3
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
file của em đây
File Kèm Theo
File Type: rar matrix.rar (48.4 KB, 445 lần tải)
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-12-2008, 10:41 AM   #4
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
các anh sẽ giúp em chứ

thay đổi nội dung bởi: dungbk49, 14-12-2008 lúc 11:57 AM.
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-12-2008, 12:08 PM   #5
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
Code:
#include "E:\D cu\INFO\project-pic\matrix\matrix.h"
//#include<font.c>
#use delay(clock=20000000)
#define hang PORTD
#define cot PORTB
#byte PORTD =0x08
#byte PORTB =0x06
#byte trisb =0x86
#byte trisd =0x88
///////////////////////////////maquetcot////////////////////////////////////////
unsigned char chuA[]={
                               0b00010000,
       0b00011000,
      0b00010100,
      0b00011100,
      0b00010010,
      0b00011010,
      0b00010110,
      0b00011110 ,

       0b00100000,
      0b00101000,
     0b00100100,
     0b00101100,
     0b00100010,
     0b00101010,
     0b00100110,
     0b00101110,


      0b01000000,
      0b01001000,
    0b01000100,
     0b01001100,
     0b01000010,
     0b01001010,
    0b01000110,
   0b01001110,

       0b10000000,
     0b10001000,
     0b10000100,
     0b10001100,
     0b10000010,
    0b10001010,
     0b10000110,
     0b10001110,      
};
unsigned char font[]={
   255,255,255,255,
//    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
 131,191,191,191,255,
 131,187,185,130,249,255,
 131,235,235,247,255,
 255,255,255,
 239,131,171,187,199,255,
 130,255,
 129,42,169,255,
 131,247,239,131,255,
 255,255,255,
 251,131,251,255,
 131,190,188,131,249,255,
 255,255,255,
 183,131,191,
 199,187,187,199,255,
 255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255

};
void Display(unsigned char timer1,unsigned char k) {
unsigned char i,j,m,n;
set_tris_d(0);
set_tris_b(0);

for(i=0;i<timer1;i++)
 {
 m = 0;
 for(j=0;j<32;j++)
 {  
    
       Cot = chuA[j];
 hang  = 0xff;

// n=j;
  if(j >=k)
    {
  hang = font[m];
m ++;
}
//   delay();
  
  }

}
  }

void main() 
{
unsigned char index;
unsigned char i,j,k=32,m,n;


while(1)
{

Display(900,k);


// Thuc hien dich chu

k=k-1;

if(k==0){
 
while(1)
{
Display(900,k);
 for(m=0;m<64;m++)
 {
 font[m]=font[m+1];
// hang = font[m];
// for(m=0;m<16;m++)
 }
 hang  = 0xff;
}
}
}
}
em xin lỗi lần trước em post code không đúng, em sửa lại như trên

thay đổi nội dung bởi: namqn, 14-12-2008 lúc 04:40 PM.
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-12-2008, 12:12 PM   #6
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
lần này em gửi file mô phỏng chứ không gửi file ảnh như lần trước nữa. Em dùng proteus v7.1 sp2. không anh nào giúp em à.
File Kèm Theo
File Type: rar matrixv7.1.rar (37.2 KB, 267 lần tải)

thay đổi nội dung bởi: dungbk49, 14-12-2008 lúc 12:22 PM.
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-12-2008, 09:40 AM   #7
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
lmd

mạch của bạn báo lôic con 16f877a.
bạn nên bỏ con này và lấy con 16f877 ra và nối lại các dây thì chạy tốt. tôi đã thử rồi, như các chữ hiển thị của bạn bị sai cả rồi (sai code)
bạn xem file này rồi vẽ lại cho gọn nhé
File Kèm Theo
File Type: rar tuyet roi.rar (67.8 KB, 521 lần tải)
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-12-2008, 01:00 PM   #8
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
chào anh tungtot_vl cám ơn anh đã giúp đỡ em, anh có thể gửi file mã nguồn về bảng quang cáo mà anh đã làm cho em tham khảo được không anh, mail em là bka_dung@yahoo.com, cám ơn anh nhiều
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-12-2008, 05:06 PM   #9
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
code phải đi liền với phần cứng của nó. nếu bạn đã biết cách làm LMD thì không cần phải xem code của người khác đâu. bạn chỉ cần xem các hiệu ứng của họ rồi tự tìm ra giải thuật để viết code cho mình. tuy nhiên các kiểu hiệu ứng còn tùy thuộc vào phần cứng của bạn có hỗ trợ được hay không. phần cứng của tôi là quét hàng. data được đưa ra 595 như trong mạch mô phỏng.
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-12-2008, 06:17 PM   #10
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
anh tungtot_vl ơi em hỏi trong mạch của anh có tới 16 hàng, trong khi mạch của em chỉ có 8 hàng, vậy giải thuật có gì khác không anh.
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-12-2008, 08:19 AM   #11
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
nói chung không có gì khác cả chỉ là quét 16 hay quét 8 thôi. đương nhiên số điểm ảnh càng nhiều thì càng tốn thêm nhiều dung lượng bộ nhớ để lưu data. còn về giải thật không có gì thay đổi, chỉ là mở rộng thêm từ 8 nên 16 thôi.
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-12-2008, 12:21 PM   #12
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
anh ơi em đã làm như anh thay bằng con pic16f877 nhưng không dc, nếu dùng 3 bảng (8x24) thì chạy được anh ạ, còn dùng 4 bảng (8x32) thì khi mô phỏng anh nhìn trong file mô phỏng em gửi nó bị làm sao ấy, đảm bảo với anh code mã font là đúng không sai đâu anh ạ, anh giúp em với.
File Kèm Theo
File Type: rar matrixv7.1.rar (20.5 KB, 122 lần tải)
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-12-2008, 11:49 PM   #13
dungbk49
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 20
:
Không có anh nào giúp em à, em bí quá
dungbk49 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-12-2008, 10:13 AM   #14
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
phần mềm bạn viết không có giải thích và hơi khó hiểu, còn phần cứng thỉ lại phức tạm nên kéo theo phầm mềm cũng phức tạp theo.
theo tôi bạn nên sửa lại phần cứng đơn giản hơn để sau này còn mở rộng bảng lớn hơn. hơn nữa cách quét 138 chỉ là cách cơ bản của những ai mới tập làm quang báo thôi, còn muốn làm tốt hơn bạn nên dùng 595.
phần cứng: ở các chân E2, E3 của 138 bạn có thể nối mass.
các chân A, B, C nên nối với port E (3 chân) để dễ quét hơn bằng cách: for(i = 0;i<8;i++) {porte = i}// giải mã cho 138.
các chân E1 của 138 bạn có thể nối với bất khì port nào của VDK. tốt nhất là nối theo thứ tự các ic 138 vào lần lượt của các chân R0,R1... của VDK để dễ viết code
chúc thành công.
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-12-2008, 10:30 AM   #15
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
bạn ko cần dùng timer để quét led đâu. nên dùng delay thì đơn giản hơn. nếu cảm thấy led còn bị giật thì có thể giảm delay xuống cho phù hợn là được. nếu bạn cải cách phần cứng như tôi nói thì có thể dùng cách sau để hiển thị led
int chon_ic[4] = {0x01, 0x02,0x04,0x08};
void display()
{ int a,b,i;
for(a = 0;a<30;a++) // điều chỉnh tốc độ dịch chữ
{ for(b = 0;b<4;b++)
{ portb = chon_ic[b]; // chọn ic 138 để quet
for(i-0;i<8;i++) {porte = i; delay_ms(1);} // quet 138
}
}
}
tại vị trí cần hiển thị chữ lên led bạn chỉ cần gọi hàm này là được.
còn một điều rất quan trọng là trình mô phỏng rất hạn chế khi quét led, vì nếu thời gian quét càng nhỏ thì đồi hỏi tốc độ xử lý của máy tính càng cao, không đáp ứng được tốc độ quét của vxl do đó cũng có thể hiển thị sai (có thể bị giật hoặc không chạy).
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:37 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam