![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| 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 |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#1 |
|
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
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);
}
![]() 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);
}
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. |
|
|
|
|
|