![]() |
|
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. |
![]() |
![]() |
|
|