Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Thursday, October 17, 2013

1. Cấu tạo:
- 8 led đơn nối với cổng P1 và 1 led nối với chân P2.1 của vi điều khiển 89S52 ;
- Một cặp thu phát hồng ngoại,thu được nối với chân P3.2 (INT0), phát nối với nguồn 5V .
Tất cả được đặt trên board mạch in và được gắn vào một động cơ DC.
Vấn đề khó khăn nhất ở đây là ciệc cấp nguồn cho board mạch, được thực hiện thông qua chổi quét lên trục động cơ DC. Như hình vẽ

2. Sơ đồ nguyên lý:
Mạch dùng với cảm biến hồng ngoại 3 chân:
3. Nguyên lý hoạt động:
Dựa theo nguyên lý quét LED MA TRẬN theo cột. Việc quét cột được thực hiện nhờ quay của động cơ. Cặp thu phát hồng ngoại được hàn theo hình chữ U nhằm tạo ra ngắt cho vi điều khiển khi bị 1 vật cản xen giữa. Để dữ liệu được cố định trên vòng tròn quay, ta thực hiện bằng cách cứ ngắt xảy ra mới cho xuất dữ liệu,nếu trong thời gian thực hiện ngắt mà dữ liệu đã xuất hết thì thoát ngắt và chờ đến ngắt tiếp theo lại xuất dữ liệu.
Ở sơ đồ trên có sử dụng Transistor NPN (C828, C1825,…) nhằm mục đích mở dòng tín hiệu từ led thu để đưa tới chân Ngắt INT0. Led thu thu được liên tục tín hiệu bởi led phát nên luôn trong tình trạng dẫn làm cho cực B của transistor luôn ở mức thấp khiến transistor không dẫn, chan INT0 ở mức cao – không có ngăt. Khi không có tín hiệu từ led phát thì led thu hở mạch làm dòng qua R3 phân cực cho transistor dẫn khiến chân INT0 bị đưa xuống thấp và xảy ra ngăt.
4. Mạch in và hình ảnh 3D:
5. Viết code cho LED QUAY:
Trong lập trình vi xử lý ngôn ngữ thường dùng là ngôn ngữ lập trình ASM và ngôn ngữ C . Ngôn ngữ lập trình ASM hay lập trình hợp ngữ là ngôn ngữ lập trình trực tiếp cho vi điều khiển ( lập trình trực tiếp ) còn ngôn ngữ C hay còn gọi là lập trình hướng đối tượng nó gần với ngôn ngữ con người hơn . Điều này có nghĩa là với ASM người lập trình ra lệnh trực tiếp thông qua ngôn ngữ câu lệnh có tính ràng buộc còn ngôn ngữ C sử dụng các cấu trúc điều kiện và vòng lặp theo ý muốn .Nói về ngôn ngữ C thì ưu điểm của ngôn ngữ C là nó dễ hiểu nhưng cấu trúc lại dài và phức tạp so với ngôn ngữ ASM , học ngôn ngữ ASM ta sẽ nắm được phần cứng của vi điều khiển tốt hơn…
C là một ngôn ngữ khá mạnh và có rất nhiều người dung. Nhưng với vi xử lý ta chỉ cần biết một vài vấn đề cơ bản sau :
+ Các kiểu toán tử của C .
+ Các kiểu dữ liệu (int , float , double , char , unsigned char , …)
+ Các hàm trong C
+Cấu trúc cơ bản của một chương trình.
+ Cấu trúc điều khiển hay các tập lệnh.
Phần mềm sử dụng lập trình: Keil C
Cấu trúc chương trình cơ bản cho LED QUAY:
- Goị thư viện (- xxx là tên chip đang dùng)
- Khai báo mảng các mã ký tự cần hiển thị (mã hệ hexa hoặc decimal đều được)
- Hàm ngắt ngoài: xử lý và xuất dữ liệu ra theo ý muốn
- Hàm chính : cho phép ngắt và chờ cho ngắt xảy ra.
Ví dụ:
Chữ cái 8×5 là có 8 hàng và 5 cột, ta thích quét mấy cột cũng được nhưng thấp nhất là 5 cột thì mới có thể thấy dc chữ. ví dụ mình quét 10 cột ta tạo một mảng như sau:
#include
code unsigned char m[x]={
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
/// mã chữ tiếp theo
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0
};
// vậy là xong phần tạo code quét 10 cột tiếp phần lâp trình:
unsigned char i,k; //k dùng để hiển thị chữ chạy, không chạy thì bỏ k
Void ngat() interrupt 0 using 2 //ngắt ngoài 0 và chọn Bank thanh ghi 2
{
for(i=k;i {
// đưa dữ liệu ra
}
k++; // tăng k lến
}
Void main()
{
EA=1; //cho phép tất cả các ngắt
EX0=1; // cho phép ngắt ngoài 0
While(1) // lặp vô hạn
{
// không làm gì cả chỉ đợi ngắt xảy ra
}
}
Giải thích như sau: ngắt lần đâu tiên mới đầu k=0 thì nó đưa 10 cột giá trị ra là (m[0]) đến m[10]), led ko sang ngắt lần 2 k=1 thì nó đưa tiếp 10 giá trị ra từ m[1]đến m[11],cứ như vậy đưa hết cái mảng ra mỗi lần tăng lên 1 đơn vị, chữ đã hết thì phải reset k lại =0. thời điểm reset là k= số phần tử trong mảng trừ đi 10 thi reset k lai=0 giống y trang quét led matrix.
Lưu ý:
- Hàm ngắt không được phép trả lại giá tri hay truyền tham biến vào hàm
- Tên hàm : tùy chọn
- Interrupt : từ khóa chỉ hàm ngắt
- Nguồn ngắt : từ 0 đến 5 theo bảng vecter ngắt
Ngắt do Cờ Địa chỉ vector Nguồn ngắt
———————————————————————————————–
Reset hệ thống RST 0000H -
Ngắt ngoài 0 IE0 0003H 0
Timer 0 TF0 000BH 1
Ngắt ngoài 1 IE1 0013H 2
Timer 1 TF1 001BH 3
Port nối tiếp RI hoặc TI 0023H 4
Timer 2 TF2 hoặc EXF2 002BH 5
Băng thanh ghi trên RAM chon từ 0 đến 3.
Bảng mã chữ dùng phẩn mềm tạo mã chữ cho led ma trận để tạo! Chẳng hạn như:
- Động cơ chọn loại <=12V có trục dài
- Cố gắng xác định chính xác trọng tâm của board mạch để gắn lên trục động cơ, tối ưu khối lượng và sức cản gió của board.
- Mắc thêm tụ 470uF ->1000uF để ổn định nguồn do chổi quét tiếp xúc không tốt và tụ 104 để khử nhiễu nguồn.
- Khi viết mã ma trận chú ý chiều dữ liệu từ D0->D7 hay từ D7->D0 nếu sai dữ liệu hiển thị sẽ bị ngược.
Đây là sản phẩm sau nhiều lần update:

Code tham khảo: DOWNLOAD
Nhược điểm của mạch là khi để ở nơi có ánh sáng mạnh sẽ không chạy đc vì cảm biến hồng ngoại bị nhiễu

Nguồn :tam102.wordpress.com

0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts