- Vẽ mạch và mô phỏng chương trình bằng Proteus.
Lý thuyết: Vì có 4 LED nên ta có thể hiển thị đến hàng nghìn Do đó đầu vào của ta là một số bất kì lớn tới hàng nghìn Ta phả
Do đó đầu vào của ta là một số bất kì lớn tới hàng nghìn. Ta phải tách lấy từng số hàng nghìn, trăm, chục, đơn vị, đưa vào 4 biến rồi tùy vào 4 biến số đó mà ta đưa ra từng LED. Quét LED ta làm như sau: Đưa P3.0 xuống 0 để bật nguồn cho LED hàng đơn vị, đẩy trị số hàng đơn vị ra P1, trễ một khoảng thời gian và đưa P3.0 lên 1 để tắt nguồn LED đơn vị, đưa P3.1 xuống 0 để bật nguồn cho LED hàng chục, đẩy giá trị hàng chục ra P1, trễ một khoảng thời gian, … Cứ làm như vậy đến hàng nghìn. Như vậy tại một thời điểm chỉ có một LED sáng chỉ bằng 1/3 thời gian LED tắt, nhưng do tần số bật LED nhanh, mắt người lưu ảnh nên vẫn thấy LED sáng như lúc nào cũng bật nguồn cho LED.
10/04/13 Giáo Viên: Đặng Văn Hiếu 74
#include<reg52.h> //Khai báo thư viện
unsigned int i; //Khai báo biến
unsigned char M[]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xf8,0x00,0x10}; //Khai báo mảng
void delay(void) //Hàm tạo trễ
{ for(i=0;i<=100;i++);} void main() // Quét LED
{ while(1)
{ P1=0x01; // Bật LED đầu tiên (hàng nghìn)
P2=M[5]; // Hiển thị số 5
delay(); // Trễ một khoảng thời gian
P1=0x02; // Bật LED thứ 2 (hàng trăm)
P2=M[4]; // Hiển thị số 4
delay(); // Trễ một khoảng thời gian
P1=0x04; // Bật LED thứ 3 (hàng chục)
P2=M[3]; // Hiển thị số 3
delay(); // Trễ một khoảng thời gian
P1=0x08; // Bật LED thứ 4 (hàng đơn vị)
10/04/13 Giáo Viên: Đặng Văn Hiếu 76
- Ví dụ: vẽ mạch nguyên lý sau.
- Sau khi dịch file chương trình từ file.C thành file.hex - Ta nạp file.hex vào chíp như hình sau
1. Click đúp chuột trái vào ô program file rồi chọn đường dẫn đến file.hex
2. nhấn Ok để lưu file vào chíp
10/04/13 Giáo Viên: Đặng Văn Hiếu 78
- Nhấp chuột vào Play để bắt đầu mô phỏng