- Nhưng bài toán trên vẫn có thể giải quyết được bằng phương pháp quét LED sử dụng tính chất lưu ảnh trên võng mạc24 ảnh/giây thì ảnh như liên tục.Do vậy ta phải quét hết 6 LED 24 lần/ 1
Trang 1Phương pháp quét LED
Phương pháp Quét Led
- Giả sử cho bài toán: Dùng PIC 16F84(13 chân I/O) để hiện thị số lên 6 LED 7 đoạn.Bình thường để hiển thị số lên LED 7 đoạn bạn có thể dùng trực tiếp các chân I/O(8 chân/ 1 LED 7 đoạn),Hoặc dùng bộ giải mã BCD(4 chân I/O / 1 LED 7
đoạn).Như vậy để hiển thị số lên 6 LED 7 đoạn bạn cần dùng tối thiểu 24 chân
I/O. > bài toán buộc phải thay đổi ,không dùng PIC 16F84 nữa! dùng con khác có nhiều chân hơn
- Nhưng bài toán trên vẫn có thể giải quyết được bằng phương pháp quét LED sử dụng tính chất lưu ảnh trên võng mạc(24 ảnh/giây) thì ảnh như liên tục.Do vậy ta phải quét hết 6 LED 24 lần/ 1s Các LED lần lượt sáng theo thứ tự từ LED thứ 1 cho tới LED thứ 6 trong một khoảng thời gian nào đó(Tùy thuộc vào tần số quét ta chọn) Linh kiện:
PIC 16F84A
Giải mã BCD 74LS47N
6 Led 7 đoạn Anốt chung
6 Tranzitor C828
Sơ đồ mạch<không upload được ảnh!!!>
Mô tả:
6 Led Anode chung được nối qua Transitor C828 tới nguồn Vcc.Chân RB0-RB5 nối tương ứng qua một điện trở tới chân Bazơ của Transitor C828
Tất cả các chân của Led 7 đoạn (a,b,c,d,e,f,g) được nối chung với BUS
- 4 lối ra của PORTA (RA3-RA0) nối với lối vào của 74LS47.Lối vào nhị phân này tương ứng với lối ra là số thập phân được hiển thị.Giả sử ta cần số 5 sáng
thì RB0 phải bằng 1- để mở Transitor.Còn RA3,RA2,RA1,RA0=0101
tương tự đối với các LED 7 đoạn khác
Chương trình được viết như sau:
Code:
//******************************************
//QUET LED
//author: noisepic@gmail.com
//date:20/07/2005
//status:OK
//Mota:PIC16F84A + Bo giai ma BCD 7447
//4 vao 7447: RA3-RA0
//PORTB(RB0-RB5 ket noi voi Transitor C828)
//*******************************************
#include<16f84A.h>
#include<def_84.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
main()
{
//gia su ta can quet so 1,2,3,4,5,6
TRISA=0x00;
TRISB=0x00;
PORTA=0xff;
PORTB=0x00;// ban dau chua Led 7 doan nao sang
while(TRUE)
Trang 2{
//hien so 1
PORTB=0x01;//transitor 1 mo
PORTA=0x01;
delay_us(3333);
//hien so 2
PORTB=0x02;//transitor 2 mo
PORTA=0x02;
delay_us(3333);
//hien so 3//transitor 3 mo
PORTB=0x04;
PORTA=0x03;
delay_us(3333);
//hien so 4//transitor 4 mo
PORTB=0x08;
PORTA=0x04;
delay_us(3333);
//hien so 5 //transitor 5 mo
PORTB=0x10;
PORTA=0x05;
delay_us(3333);
//hien so 6//transitor 6 mo
PORTB=0x20;
PORTA=0x06;
delay_us(3333);
}
}
Với thời gian trễ là 3333us~3.3 ms tương đương với quét 50 ảnh/ s
3.3*6*50~999ms=1s
Chương trình trên hiển thị số 1 2 3 4 5 6
- Trong chương trình có sử dụng hàm delay_us(3333).Tại sao lại là 3333
Theo nguyên lý làm phim, nếu có 24 hình ảnh của vật xuất hiện trong 1 giây thì dường như vật đó luôn luôn xuất hiện- ứng dụng của hiện tượng lưu ảnh trên võng mạc.Nhưng do trong thiết kế khi dùng 24 ảnh/s đèn led hơi nháy.Do vậy noisepic tăng tần số quét lên 50 ảnh /s