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

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

Đang tải... (xem toàn văn)

Thông tin tài liệu

Đ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; kytu1[4]=0x76; kytu1[5]=0x89;kytu1[6]=0xFF;kytu1[7]=0xFF;kytu1[8]=0xFF;break;} //CHU I case 2: {kytu1[0]=0xFF;kytu1[1]=0x7E;kytu1[2]=0x7E;kytu1[3]=0x7E; kytu1[4]=0x00; kytu1[5]=0x7E;kytu1[6]=0x7E;kytu1[7]=0xFF;kytu1[8]=0xFF;break;} //CHU E case 3: {kytu1[0]=0xFF;kytu1[1]=0xFF;kytu1[2]=0x00;kytu1[3]=0x6E; kytu1[4]=0x6E; kytu1[5]=0x6E;kytu1[6]=0x6E;kytu1[7]=0xFF;kytu1[8]=0xFF;break;} //CHU N case 4: {kytu1[0]=0xFF;kytu1[1]=0x00;kytu1[2]=0xFE;kytu1[3]=0xFD; kytu1[4]=0xFB; kytu1[5]=0xF7;kytu1[6]=0xEF;kytu1[7]=0xDF;kytu1[8]=0x00;break;} //CHU D case 5: {kytu1[0]=0xFF;kytu1[1]=0xFF;kytu1[2]=0x00;kytu1[3]=0x7E; kytu1[4]=0x7E; kytu1[5]=0x7E;kytu1[6]=0x7E;kytu1[7]=0x81;kytu1[8]=0xFF;break;} //CHU T case 6: {kytu1[0]=0xFF;kytu1[1]=0xFE;kytu1[2]=0xFE;kytu1[3]=0xFE; kytu1[4]=0x00; kytu1[5]=0xFE;kytu1[6]=0xFE;kytu1[7]=0xFE;kytu1[8]=0xFF;break;} } //DAU DONG case 7: {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;} void hienthi(void) { unsigned char i,j,lap; unsigned char cot[8]={0xFF,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //phan tu quet cot for(j=0;j<8;j++) // Dich hien thi { for(lap=0;lap<10;lap++) // lap hien thi nhanh hay cham { for(i=0;i<8;i++) quet cot { if((i+j)<9) //Neu i+j < 9 hien thi ky tu 1 { mahoa(k);// Nap cac gia tri ma hoa ky tu dua ra cac hang PRT0DR=kytu1[i+j]; // Gia tri ma hoa dua ra cac hang PRT2DR=cot[i]; // gia tri oV dua ra cac cot delay(); // tre } if((i+j)>7) 7) // Neu i+j >7 hien thi ky tu 2 { mahoa(k+1); PRT2DR=cot[i]; dua du lieu cho cot PRT0DR=kytu1[i+j-8]; // nap gia tri tiep theo cho hang delay(); tre } PRT0DR=0xFF; PRT2DR=0xFF; } } } } void main(void) { while(1) { hienthi(); k=k+1; if(k==7) { k=0; } } } Ngoài ra các pác có thể hiện thị chữ khác chỉ cần tính chữ hiện thị trong mảng kí tự là OK!   . Đ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ị. 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

Ngày đăng: 23/10/2013, 04:15

Hình ảnh liên quan

Hay các pác có thể xem hình dới đây để xác định: - Điều khiển ma trận 8*8 dùng Psoc

ay.

các pác có thể xem hình dới đây để xác định: Xem tại trang 2 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan