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 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
Old 24-06-2007, 12:37 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Nếu bạn chuyển phần khai báo của kytu[] vào trong hàm hienthi() thì sao?

Nếu bạn bỏ từ khóa const trong khai báo của kytu[] thì sao?

Tôi không dùng CCS C, do đó chỉ có thể gợi ý cho bạn thử các khả năng khác nhau, chứ không dịch thử code được.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2007, 10:40 AM   #3
Chunhatonline
Nhập môn đệ tử
 
Tham gia ngày: Apr 2006
Bài gửi: 8
:
Bạn nên nghiên cứu về modun SPI và thanh ghi dich họ 74LS595 để có thể quét Led matrix hàng trăm cột và dùng mảng con trỏ để dịch chữ. Tôi không dùng CCS nên không sửa mã giùm bạn được.
Chunhatonline vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-01-2009, 12:22 AM   #4
thongdtk3
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 7
:
thử xem..tui cũng vừahọc matrix
Code:
#include <16F877A.h>
#include <def_877a.h>
#device *=16
#fuses NOWDT,HS,NOPROTECT
#use delay(clock=20000000)


//============Khai bao bien toan cuc====================//
int8 a,i,j,k;
//int8 const font=10;
//int8 const kytu[8]={224,219,187,123,187,219,224,255}; // A
int kytu[36]={0xff,0xff,0xf,0xff,0xff,0xff,0xf,0xff,
0X7f,0X7f,0x01,0X7f,0X7f,0Xff,0xdb,0xff,  //t
0XC1,0Xaf,0X6f,0Xaf,0XC1,  //chu a
0Xff,0x01,0Xef,0Xd7,0Xbb,0X7d, // chu k
0Xff,0xff,0xf,0xff,0xff,0xff,0xf,0xff};
INT8 MA_QUET[8]={0X1,0X2,0X4,0X8,0X10,0X20,0X40,0X80};

//int8 ma_quet[8]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};
//INT8 MA_QUET[10]={0b11111110,0b1111 1101,0b11111011,0b11110111,0b11101111,0b11011111,0b10111111,0X01111111};
//=============khai bao ham====================//





void main()
    {set_tris_b(0);output_b(0);
     set_tris_d(0);output_d(0);

while(1)

 {for(k=0;k<10;k++)


 //  for(j=0;j<1;j++)
 {
         for (a=0;a<=7;a++){
               portd=MA_QUET[a];
               Portb=kytu[i+a]; 
               delay_ms(5);
                 }
              }
              i=i+1;
              delay_ms(50);
    }
 }

thay đổi nội dung bởi: namqn, 12-01-2009 lúc 12:50 AM.
thongdtk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-01-2009, 08:50 AM   #5
longtu
Đệ tử 6 túi
 
longtu's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Send a message via Yahoo to longtu
Nếu bạn them 1 con số cụ thể vào kytu[] xem? Ví dụ kytu[100].
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".
longtu 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à 11:59 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