BÀI 36 : LED MATRIX 8X8 PIC16F877A XC8

5:32:00 PM
1. Sơ đồ chân Led ma trận 8x8


led matrix 8x8
Hình 1: Led ma trận 8x8

2. Câu tạo bên trong của LED matrix 8x8.
Hình 2: Sơ đồ chân và sơ đồ kết nối bên trong led ma trận.
3. Code hiển thị chữ A lên led ma trận
/*
 * File:   matrix_8x8.c
 * Author: Lam 3 Ngon
 * My blog http://xcvn.blogspot.com
 * Created on April 20, 2016, 9:17 AM
 */
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 4000000
#include <xc.h>
// CONFIG
#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
const unsigned char FontA[8] = {0xff,0x01,0x00,0xf6,0xf6,0x00,0x01,0xff}; 
// lay ma tu duoi len 8 - 4 - 2 - 1
// sang la 0 tat la 1
void main()
{
unsigned char i;
unsigned char cnt;
unsigned char j;
    TRISB = 0X00;
    TRISD = 0X00;
while(1)
{
for(i=0;i<7;i++)
{
PORTB = FontA[i];
PORTD = 0x01<<i;
__delay_ms(1);
PORTD = 0x00;
}           
    }
}
- Giải thuật để quét LED matrix là chúng ta sẽ quét lần lượt theo từng hàng và cột nha ! Như các bạn thấy đoạn code trên chúng ta sử dụng phương pháp này để quét sao đó xuất kết quả ra PORT !
Nếu thời gian quét đủ nhanh, ta thấy các led dường như sáng liên tục tạo nên chữ như hình bên dưới.
Hình một số font chữ trên led ma trận:

Font 5x7 cho led ma trận;
 
Đây là ảnh mô phỏng trên phần mềm protues.
led matrix 8x8 pic16f877a
- Lý do mình không làm trên LED matrix 5x7 cho ví dụ này là vì LED matrix nào cũng giống nhau cả muốn hiển thị thì phải quét theo hàng và cột thôi. 
- Mình sẽ giải thích chương trình 1 tý :
const unsigned char FontA[8] = {0xff,0x01,0x00,0xf6,0xf6,0x00,0x01,0xff};
đoạn code trên là mã của chữ A. Và cách tính để có được mã này như sau : Mặc định sáng là  và tắt là 1 như vậy hàng đầu tiên là 0xff, hàng thứ 2 từ dưới tính lên là 0x01 các hàng còn lại thương tự.
Và tiếp theo chúng ta có đoạn code này dùng để xuất dữ liệu ra hàng và cột như sau :
for(i=0;i<7;i++)
{
PORTB = FontA[i];
PORTD = 0x01<<i;
__delay_ms(1);
PORTD = 0x00;
}   
Ở đây chúng ta có 8 hàng và 8 cột nên cho vòng for chạy 8 lần và mỗi lần thì PORTD sẽ dịch sang 1 như vậy cho đến hết 8 hàng.

Share this

Related Posts

  • BÀI 21 : GIAO TIẾP GIỮA 2 PIC16F877A XC8 1. Tổng quan về truyền nhận dữ liệu bằng UART trong PIC16F877A Truyền Sơ đồ khối bộ truyền UART: Nguyên tắc hoạt đ
  • BÀI 14 : EEPROM PIC16F877A XC8 Tổng quan về EEPROM ! Có thể nói EEPROM là công nghệ mới nhất của ROM mà điều khác biệt cơ bản là chúng
  • BÀI 1 : CHỚP TẮT LED PIC16F877A XC8 Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn về I/O của PIC16F877A cụ thể là chớp tắt led. Nhưng trước t
  • BÀI 18 : NGẮT RB0 PIC16F877A XC8 Ngắt là gì ? “Ngắt ” là tạm dừng một việc nào đó lại để thực làm một việc khác, sau khi làm xong lại tiếp tục làm cô
Previous
Next Post »

6 nhận xét

Write nhận xét
October 31, 2016 at 7:34 PM delete

code này vòng for fai bé hơn 8 chứ ad

Reply
avatar
October 31, 2016 at 9:40 PM delete

từ 0 - 7 nó đã chạy 8 lần rồi !

Reply
avatar
November 3, 2016 at 6:49 AM delete

a ơi...e dùng con 16f877a h làm sao để dịch chữ từ phải sang trái a....chỉ giáo e với

Reply
avatar
November 3, 2016 at 6:50 AM delete

a ơi...e dùng con 16f877a h làm sao để dịch chữ từ phải sang trái a....chỉ giáo e với

Reply
avatar
November 3, 2016 at 6:51 AM delete

a ơi...e dùng con 16f877a h làm sao để dịch chữ từ phải sang trái a....chỉ giáo e với...thanks a nhiều

Reply
avatar
November 6, 2016 at 5:07 AM delete

AD để code ở đâu quên mất tiêu rồi để khi nào kiếm được AD cho ! không thì bạn lên mạng kiếm nha !

Reply
avatar

EmoticonEmoticon

:)
:(
=(
^_^
:D
=D
=)D
|o|
@@,
;)
:-bd
:-d
:p
:ng