Tải bản đầy đủ (.pdf) (8 trang)

Điều khiển ma trận 8*8 dùng Psoc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (232.41 KB, 8 trang )

Điều khiển ma trận 8*8 dùng Psoc
Ngu
ồn : biendt.biz 
Bài này tôi giới thiệu với các pác làm led ma trận 8x8 đơn giản dùng chip Psoc.
Hiện thị chữ " BIENDT" ta quét cột
* Chuẩn bị :
1 LED ma trận 8*8. Hiện này trên thị trường có loại LED 8*8 hai mầu đỏ và xanh


Xác định cho chân LED ma trận. Ta dùng đồng hồ xác định cũng được . Vì mỗi
ma trận LED được cấu tạo bởi bởi các hàng và các cột trong đó các hàng là cực
Anot của LED và cột là Katot của LED.

Hay các pác có thể xem hình dới đây để xác định:

Để như trên thì thứ tự chân như sau: Đây là LED hai mầu đỏ (D) và xanh (X) với
hàng chung hay Anot chung!
Nhìn trên thứ tự đó thì : H1 D1 X1 H2 D2 X2 H3 D3 X3 H4 D4 X4
H5 D5 X5 H6 D6 X6 H7 D7 X7 H8 D8 X8
Ỏ đây tôi chỉ dùng mầu đỏ thôi!
* Mạch nguyên lý :


Với mạch trên tôi dùng
+ A1015 để kích dòng cho các hàng
+ ULN2803 để ổn định dòng để đèn sáng đều
* Nguyên lý hoạt động.

Tại mỗi thời điểm ta chỉ có một đèn LED trên 1 cột sáng do ta quét 8 cột với tần
số nhanh do mắt con người có sự lưu ảnh nên tại một thới điểm ta sẽ nhìn thấy
toàn bộ kí tự. Để cho đèn D1 sáng ta phải cho vào hàng 1 điện áp 5V và cột 1


điện áp âm.
Đối với mạch trên do ta sử dụng A1013 nên chân điều khiển vào Bazo phải là 0V.
Nên ta phải tính các ký tự hiện thị
ở mức 0.tức là một mảng kí tự gồm 9 phần tử
trong đó có 1 phần tử đưa tất cả các hàng về 0 V để tắt toàn bộ hàng đó!
Để làm chữ chạy ta phải thêm 1 biến vào để hiện thị các kí tự ra hàng!
* Chương trình điều khiển.
Ỏ đây các hàng ta nối với P0 với mức logic là 0 (Điều khiển Transitor A1015)
Các cột ta nối với P2 với mức logic là 0
//----------------------------------------------------------------------
// C main line
//-----------------------------------------------------------------------

#include // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
unsigned char kytu1[9]; // mang 9 phan tu cua cac hang
unsigned char k=0; bien xac dinh cac ki tu
unsigned int n;
void delay()
{
for(n=0;n<1000;n++)
{
for(n=0;n<1000;n++)
}
{}
}
/* Ham nap gia tri hien thi cac ky tu vao mang kytu1
co 8 gia tri dua ra va 1 gia tri khong bat den nao de cac ky tu cach nhau 1 cot */
void mahoa(unsigned char x)
{

switch(x)
{
//DAU DONG
case 0: {kytu1[0]=0xFF;kytu1[1]=0xFF;kytu1[2]=0xFF;kytu1[3]=0xFF;
kytu1[4]=0xFF;kytu1[5]=0xFF;kytu1[6]=0xFF;kytu1[7]=0xFF;
kytu1[8]=0xFF;break;}
//CHU B
case 1: {kytu1[0]=0xFF;kytu1[1]=0xFF;kytu1[2]=0x01;kytu1[3]=0x76;

×