View Single Post
Old 23-06-2007, 10:56 PM   #1
dvnccbmacbt
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 65
:
Cool Hỏi về LED MATRIX?

Chào mọi người!
Em vừa làm một chương trình nhỏ : hiển thị và dịch một chữ A trêm một led matrix 8x8.
Đây là sơ đồ mạch:

Đây là chương trình em viết:
Chương trình hiển thị chữ A:
Code:
#include <16F877A.h>
#device *=16
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(a)
#use fast_io(d)
#use fast_io(e)

//============Khai bao bien toan cuc====================//
int8 a,i;
int8 const kytu[]={224,219,187,123,187,219,224,255}; //mã hóa chữ A
//=============khai bao ham====================//
void hienthi();
void xoa();
//============chuong trinh chinh==================//
void main()
{set_tris_b(0);output_b(0);
 set_tris_d(0);output_d(0);
 while(1)
 { for(i=0;i<24;i++)
    {hienthi();
    }
 }
}
//=============chuong trinh con=================//
//======chuong trinh hien thi kytu=======//
void hienthi()
{
 output_b(kytu[0]);output_d(0x1);xoa(); //thực hiện quét cột 
 output_b(kytu[1]);output_d(0x2);xoa();//( nối với portD )để hiển thị 
 output_b(kytu[2]);output_d(0x4);xoa();
 output_b(kytu[3]);output_d(0x8);xoa();
 output_b(kytu[4]);output_d(0x10);xoa();
 output_b(kytu[5]);output_d(0x20);xoa();
 output_b(kytu[6]);output_d(0x40);xoa();
 output_b(kytu[7]);output_d(0x80);xoa();
}

//======xoa ky tu=====//
void xoa()
{output_d(0);
}
Đây là kết quả chạy:


Em sửa chương trinh trên như sau để dịch chữ A:
Code:
#include <16F877A.h>
#device *=16
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(a)
#use fast_io(d)
#use fast_io(e)

//============Khai bao bien toan cuc====================//
int8 a,i;
int8 const kytu[]={224,219,187,123,187,219,224,255,255,255,255,255,255,255};
//=============khai bao ham====================//
void hienthi( int8 );
void xoa();
//============chuong trinh chinh==================//
void main()
{set_tris_b(0);output_b(0);
 set_tris_d(0);output_d(0);
 while(1)
 {for(a=0;a<8;a++)  //sau mỗi lần a tăng lên 
   for(i=0;i<24;i++)  //thì bảng sẽ dịch 1 cột so với led matrix
    {hienthi(a);
    }
 }
}
//=============chuong trinh con=================//
//======chuong trinh hien thi kytu=======//
void hienthi(int8 k)
{
 output_b(kytu[k+0]);output_d(0x1);xoa();
 output_b(kytu[k+1]);output_d(0x2);xoa();
 output_b(kytu[k+2]);output_d(0x4);xoa();
 output_b(kytu[k+3]);output_d(0x8);xoa();
 output_b(kytu[k+4]);output_d(0x10);xoa();
 output_b(kytu[k+5]);output_d(0x20);xoa();
 output_b(kytu[k+6]);output_d(0x40);xoa();
 output_b(kytu[k+7]);output_d(0x80);xoa();
}
//======xoa ky tu=====//
void xoa()
{output_d(0);//output_b(0);
}
chương trinh không hiển thị và cũng không dịch chữ nào đi cả. Hàm hienthi(int8 k) bây giờ có tham số là k.
Em không hiểu được tại sao? Có phải do em truyền tham số cho hàm không đúng hay tại vì sao? Em đau đầu 2 ngày rồi mà chưa tìm ra.Mong các bác giúp đỡ. Em cảm ơn nhiều.
dvnccbmacbt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn