Project lam led trai tim 32 led
Upcoming SlideShare
Loading in...5
×
 

Project lam led trai tim 32 led

on

  • 498 views

 

Statistics

Views

Total Views
498
Slideshare-icon Views on SlideShare
498
Embed Views
0

Actions

Likes
0
Downloads
27
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Project lam led trai tim 32 led Project lam led trai tim 32 led Document Transcript

    • Vừa qua tôi nhận được rất nhiều điện thư của Bạn đọc, nhiều thư vẫnhỏi về đề tài bản đèn Led và các bản đèn quang báo. Trong lần này tôiđề cứ một thư của một Bạn đọc, dân kiến trúc không chuyên về điệntử, hỏi về các vấn đề có liên quan đến bản đèn 32 Led sắp xếp thànhhình trái tim và có nhiều kiểu nhấp nháy đẹp mắt. Tôi đoán chắc cũngcó nhiều Bạn mới chơi ic lập trình cũng thích đề tài này, nên mượn ý,viết bài trả lời thư dài hơi hơn, đầy đủ hơn, mong bài viết này đáp ứngđược tính tò mò ham tìm hiểu của các Bạn.Nội dung trong file đính kèm theo điện thư trong đó có các hình nhưsau:1. Hình vẽ sơ đồ mạch điện cho thấy mạch dùng IC AT89C51, 52 đểđiều khiển sự nhấp nháy của 32 Led gắn trên 4 cảng p0, p1, p2, p3.Đây là một mạch điện rất cơ bản, trị các điện trở hạn dòng có thể dùng150 ohm đến 220 ohm. Y1 là thạch anh duǹg tạo xung nhịp, có thểdùng thạch anh 12MHz. Các tụ ổn tần gắn bên cạnh thạch anh theo nhàsản xuất IC nên dùng trị 33pF.Thư Bạn đọc có 4 ý chính, được trả lời nhanh như sau:Ý 1: Bạn có thể dùng ic lập trình AT89C51 với bộ nhớ nội là 4Kbyte haytốt hơn dùng AT89C52 với bộ nhớ nội là 8Kbyte.Ý 2: Trong mạch duǹg các điện trở hạn dòng cho Led, Bạn có thể dùngđiện trở có trị từ 150 ohm đến 220 ohm.Ý 3: Bên cạnh thạch anh, theo nhà sản xuất IC đề nghị Bạn nên dùngtụ 33pF để tăng hệ số ổn đ̣inh tần số của thạch anh.Ý 4: Về Led, chân A cho nối vào đường nguồn +5V, chân K của Led,qua điện trở hạn dòng, lấy dòng điện tử chảy ra trên các chân của cáccảng để phát sáng. Bạn dùng Ohm kế kim, đặt ở thang đo Rx1, đo kiểmtra Led, khi đo thuận Led sẽ sáng, lúc này dây màu đen đang ở trênchân Anode và dây màu đỏ cho biết chân K.
    • Trong phần sau tôi sẽ vẽ lại sơ đồ mạch điện chính xác hơn, rõ rànghơn và sẽ giải thích chi tiết phương cách thiết kế loại mạch này.2. Hình tổng thể của 32 Led hình trái tim.
    • Hình mặt dưới của bản mạch in, trên đó là các đường đồng nối mạch.
    • 3. Cách bố trí các linh kiện trên bản mạch in, lới mặt trên.
    • Phần trả lời thư mở rộng:Để thiết kế mạch 32 Led gắn thành hình trái tim, cho nhấp nháy theonhiều kiểu, Bạn có thể ráp theo sơ đồ mạch điện như sau:Phần 1: Sơ đồ cho thấy cách kết nối 32 Led trên 4 cảng của icAT89C52
    • Hình vẽ cho thấy, chúng ta gắn 32 Led trên hình trái tim, mỗi Led đượcđiều khiển tắt mở độc lập bởi một chân của ic lập trình AT89C52. Vấn
    • đề quan trọng là Bạn phải nhớ chân nào điều khiển Led nào. Trong hìnhvẽ trên Bạn thấy, chúng ta gắn Led D1 đến D8 tiếp theo là D9 đến D16cho cung hình bên trái và Led D17 đến D24 liền theo là D25 đến D32tạo ra hình cung bên phải. Điều này phải xác định chính xác vì sau nàychúng ta sẽ dùng các câu lệnh để tắt mở các Led trên đúng theo trìnhtự, đúng theo ý muốn, nếu không sắp đúng trình tự của chương trìnhđiều khiển, các Led sẽ nhấp nháy "loạn cào cào".Phần 2: Sơ đồ mạch điện cơ bản dùng điều khiển sự nhấp nháy củacác Led gắn trên các cảng p0, p1, p2, p3Muốn dùng ic lập trình AT89C52, trước hết Bạn hãy ráp vào các phụkiện sau:* Trên chân 9 gắn tụ 10uF và điện trở 8.2K để tạo tính reset mỗi khi mởnguồn. Ngay khi mạch được cấp nguồn, tụ 10uF nạp điện, nó sẽ kéochân số 9 lên mức áp cao, điều này sẽ reset ic AT89C52, cấu trúc mạchbên trong sẽ được xác lập về trạng thái mở đầu theo quy định. Chúngta biết ở trạng thái khởi đầu, tấ cả các chân của 4 cảng đều cho ở mứcáp cao và như vậy 32 Led trên hình trái tim lúc mạch mới được cấp điện
    • sẽ ở trạng thái tắt. Sau một lúc tụ nạp đầy, trả chân 9 về lại mức ápthấp, mức 0V, ic lập trình bắt đầu chạy các câu lệnh có trong bộ nhớEEPROM. Nếu thấy cần Bạn gắn thêm nút nhấn reset S1.* Trên chân 18, 19 Bạn gắn thạch anh định tần cho mạch dao độngtrong ic lập trình. Thông thường dùng thạch anh 12MHz, vậy trong ic sẽcó xung nhịp chu kỳ 1us. ở đây người ta gắn các tụ nhỏ 33pF có côngdụng ổn tần.* Điều cần nhớ là phải cho chân 31 nối vào đường nguồn 5V đểkhai báo là cho chạy các câu lệnh nằm trong bộ nhớ trong.Phần 3: Sơ đồ mạch nguồn nuôi, nguồn 5V có độ ổn định tốtMạch nguồn gồm biến áp cách ly T1, nó có 2 công dụng: (1), vừa tạotính cách ly giữa mạch điện và đường nguồn AC, giữ an toàn cho ngườidùng. (2), vừa dùng làm giảm áp AC, hạ mức nguồn AC 220V xuống9V. Dùng cầu nắn dòng 4 diode để chuyển đổi dòng AC ra dạng dòngđiện xung một pha. Tụ C1 dùng tụ hóa lớn làm kho chứa điện, nó có 3công dụng: (1), giảm độ dợn sóng. (2), nâng cao mức áp DC lên gầnbằng mức volt cực đại. (3), làm kho chứa điện ổn định điều kiện cấpđiện cho tải. Dùng Led đỏ với điện trở hạn dòng 1K làm đèn chỉ thị. Đểcó mức áp DC 5V có độ ổn định tốt, trong mạch dùng ic ổn áp 3 chân7805. Với loại ic ổn áp tích cực, để tránh mạch điện trong ic không phátsinh hiện tượng dao động tự kích, ở ngả ra dùng thêm tụ hóa C2 làm tụlọc, có thể dùng thêm tụ lọc nhỏ C3 để lọc bỏ các tín hiệu nhiễu tần cao
    • nhiễm vào đường nguồn. Điều cần nhớ: IC 7805 phải cho gắn trên lánhôm làm nguội.Nói về cách gắn 32 Led theo hình vẽ trái tim.Qua hình thị phạm trên, trước hết Bạn vẽ hình trái tim hay hình gì kháccũng được, sau đó gắn 32 Led theo đường bao của hình, điều Bạn cầnnhớ là Led nào được điều khiển bởi chân nào của ic AT89C52, sau đóBạn sẽ dùng các câu lệnh tắt mở các Led này theo các kiểu nhấp nháymà Bạn muốn. Đó chính là nội dung của bài viết này.Cách viết chương trình nguồn tạo ra các kiểu nhấp nháy.Hình động dưới đây cho thấy mỗi Led được điều khiển bởi một chân củaic lập trình AT89C52, hay AT89C51. Trong mạch này chúng ta cho Ledsáng với mức áp thấp, hay bit 0 và cho tắt Led với mức áp cao hay bit1.
    • Các lệnh có thể dùng để đặt bit 0, bit 1 lên các chân của các cảng là:setb bit : set bit, cho đặt chân lên mức áp cao sẽ làm tắt Led.clr bit : clear bit, cho đặt chân xuống mức áp thấp sẽ cấp dòng làmsáng Led.mov p0, #11111111b : đặt 8 chân của cảng p0 lên mức áp cao, làm tắt8 Led trên cảng p0.hay:mov p0, #00000000b : đặt 8 chân của cảng p0 xuống mức áp thấp, chosáng 8 Led trên cảng p0.Chúng ta có thể lập bảng lưu giữ các kiểu nhấp nháy và cho xuất cácmã điều khiển ra các cảng để điều khiển sự tắt sáng của các Led. Mộtthí dụ:kieu_1: ; dùng bit 0 để cho Led sáng, vậy kiểu này sẽ cho 1 Led sángnhẩy.db 11111111bdb 11111110bdb 11111101bdb 11111011bdb 11110111bdb 11101111bdb 11011111bdb 10111111bdb 01111111bdb 10111111bdb 11011111bdb 11101111b
    • db 11110111bdb 11111011bdb 11111101bdb 11111110b......Sau đây là một chương trình nguồn dùng điều khiển 32 Led trên 4 cảngcủa ic lập trình AT89C51 hay 52.Chúng ta sẽ dùng cách viết cơ bản, dễ hiểu nhất, đó là muốn Led sángthì cho nó có bit 0, muốn tắt Led thì gán cho nó bit 1. Trướt hết hãy tạora các đoạn chương trình con dùng cho các nkiểu nhấp nháy;Kiểu 1: cho 3 Led nhẩy như hình động trên.kieu_1a: ; 3 Led nhẩy ra biên trái, và 3 Led nhẩy ra biên phải. mov p0, #11111000b mov p1, #00011111b call delay mov p0, #11110001b mov p1, #10001111b call delay mov p0, #11100011b mov p1, #11000111b call delay mov p0, #11000111b mov p1, #11100011b call delay mov p0, #10001111b mov p1, #11110001b call delay mov p0, #00011111b mov p1, #11111000b call delay
    • ; bắt cầu giữa p0 - p2 và p1 - p3 mov p0, #00111111b mov p2, #11111110b mov p1, #11111100b mov p3, #01111111b call delay mov p0, #01111111b mov p2, #11111100b mov p1, #11111110b mov p3, #00111111b call delay mov p0, #11111111b mov p2, #11111000b mov p1, #11111111b mov p3, #00011111b call delay; cho 3 Led nhẩy trên p2, p3 mov p2, #11110001b mov p3, #10001111b call delay mov p2, #11100011b mov p3, #11000111b call delay mov p2, #11000111b mov p3, #11100011b call delay mov p2, #10001111b mov p3, #11110001b call delay mov p2, #00011111b mov p3, #11111000b call delay retCho 3 Led từ biên trái, biên phải nhẩy trở vào, chương trình con viếtnhư sau:kieu_1b: ; cho 3 Led nhẩy từ biên vào mov p2, #00011111b
    • mov p3, #11111000b call delaymov p2, #10001111bmov p3, #11110001b call delaymov p2, #11000111bmov p3, #11100011b call delaymov p2, #11100011bmov p3, #11000111b call delaymov p2, #11110001bmov p3, #10001111b call delaymov p2, #11111000bmov p3, #00011111b call delaymov p2, #11111100bmov p0, #01111111bmov p3, #00111111bmov p1, #11111110b call delaymov p2, #11111110bmov p0, #00111111bmov p3, #01111111bmov p1, #11111100b call delaymov p2, #11111111bmov p0, #00011111bmov p3, #11111111bmov p1, #11111000b call delaymov p0, #10001111bmov p1, #11110001b call delaymov p0, #11000111bmov p1, #11100011b call delaymov p0, #11100011b
    • mov p1, #11000111b call delay mov p0, #11110001b mov p1, #10001111b call delay mov p0, #11111000b mov p1, #00011111b call delay retThử viết một đoạn chương trình con khác: Cho 4 Led chạy quay vòng,từ cung bên phải qua cung bên trái và chạy ngược lại.kieu_2a: ; cho 4 Led nhẩy từ bên trái qua bên phải mov P0, #11110000b call delay mov p0, #11000011b call delay mov p0, #00001111b call delay mov p0, #00111111b mov p2, #11111100b call delay mov p0, #11111111b mov p2, #11110000b call delay mov p2, #11000011b call delay mov p2, #00001111b call delay mov p2, #00111111b mov p3, #11111100b call delay mov p2, #11111111b mov p3, #11110000b call delay mov p3, #11000011b call delay mov p3, #00001111b
    • call delay mov p3, #00111111b mov p1, #11111100b call delay mov p3, #11111111b mov p1, #11110000b call delay mov p1, #11000011b call delay mov p1, #00001111b call delay retkieu_2b: ; cho 4 Led nhẩy từ bên phải qua bên trái mov p1, #00001111b call delay mov p1, #11000011b call delay mov p1, #11110000b call delay mov p1, #11111100b mov p3, #00111111b call delay mov p1, #11111111b mov p3, #00001111b call delay mov p3, #11000011b call delay mov p3, #11110000b call delay mov p3, #11111100b mov p2, #00111111b call delay mov p3, #11111111b mov p2, #00001111b call delay mov p2, #11000011b call delay
    • mov p2, #11110000b call delay mov p2, #11111100b mov p0, #00111111b call delay mov p2, #11111111b mov p0, #00001111b call delay mov p0, #11000011b call delay mov p0, #11110000b call delay retkieu_3: ; cho 8 Led sáng kểu đưa võng mov p0, #00000000b call delay mov p0, #11111111b mov p3, #00000000b call delay mov p3, #11111111b mov p1, #00000000b call delay mov p1, #11111111b mov p2, #00000000b call delay mov p2, #11111111b retViết đoạn chương trình con cho 2 Led sáng lan dần từ trên xuống dưới.kieu_4: ; cho 2 Led sáng lan dần từ trên xuống dưới. mov p0, #11111100b mov p1, #00111111b call delay mov p0, #11110000b mov p1, #00001111b call delay
    • mov p0, #11000000b mov p1, #00000011b call delay mov p0, #00000000b mov p1, #00000000b call delay mov p2, #11111100b mov p3, #00111111b call delay mov p2, #11110000b mov p3, #00001111b call delay mov p2, #11000000b mov p3, #00000011b call delay mov p2, #00000000b mov p3, #00000000b call delay retCấu trúc của chương trình nguồn có thể viết như sau:org 0000hstart: call xoa call kieu_1a call xoa call kieu_1b call xoa mov r3, #10tt_1: call kieu_2a call xoa call kieu_2b call xoa djnz r3, tt_1 mov r3, #5tt_2: call xoa
    • call kieu_3 call xoa djnz r3, tt_2 mov r3, #20tt_3: call xoa call kieu_4 call xoa djnz r3, tt_3 jmp start;kieu_1a:kieu_1b:kieu_2a:kieu_2b:kieu_3:kieu_4:;xoa: mov p0, #11111111b mov p1, #11111111b mov p2, #11111111b mov p3, #11111111b retdelay: mov r7, #20v_6: mov r6, #100v_5: mov r5, #200 djnz r5, $ djnz r6, v_5 djnz r7, v_6 retendĐến đây, Bạn có thể ghép các đoạn chương trình con trên thành 1 file,đặt tên tùy chọn, họ là .asm, thí dụ: tên file là led-nhay.asm và dùng M-IDE để dịch file .asm này, tạo ra file .hex để rồi cho nạp các mã lệnhtrong file này vào trong bộ nhớ của AT89C52, thế là xong.
    • File nguồn led-nhay.asm có nội dung như sau:org 0000hstart: call xoa call kieu_1a call xoa call kieu_1b call xoa mov r3, #10tt_1: call kieu_2a call xoa call kieu_2b call xoa djnz r3, tt_1 mov r3, #5tt_2: call xoa call kieu_3 call xoa djnz r3, tt_2 mov r3, #20tt_3: call xoa call kieu_4 call xoa djnz r3, tt_3 jmp start;kieu_1a: ; 3 Led nhẩy ra biên trái, và 3 Led nhẩy ra biên phải. mov p0, #11111000b mov p1, #00011111b call delay mov p0, #11110001b mov p1, #10001111b call delay mov p0, #11100011b
    • mov p1, #11000111b call delay mov p0, #11000111b mov p1, #11100011b call delay mov p0, #10001111b mov p1, #11110001b call delay mov p0, #00011111b mov p1, #11111000b call delay; bắt cầu giữa p0 - p2 và p1 - p3 mov p0, #00111111b mov p2, #11111110b mov p1, #11111100b mov p3, #01111111b call delay mov p0, #01111111b mov p2, #11111100b mov p1, #11111110b mov p3, #00111111b call delay mov p0, #11111111b mov p2, #11111000b mov p1, #11111111b mov p3, #00011111b call delay; cho 3 Led nhẩy trên p2, p3 mov p2, #11110001b mov p3, #10001111b call delay mov p2, #11100011b mov p3, #11000111b call delay mov p2, #11000111b mov p3, #11100011b call delay mov p2, #10001111b mov p3, #11110001b
    • call delay mov p2, #00011111b mov p3, #11111000b call delay retkieu_1b: ; cho 3 Led nhẩy từ biên vào mov p2, #00011111b mov p3, #11111000b call delay mov p2, #10001111b mov p3, #11110001b call delay mov p2, #11000111b mov p3, #11100011b call delay mov p2, #11100011b mov p3, #11000111b call delay mov p2, #11110001b mov p3, #10001111b call delay mov p2, #11111000b mov p3, #00011111b call delay mov p2, #11111100b mov p0, #01111111b mov p3, #00111111b mov p1, #11111110b call delay mov p2, #11111110b mov p0, #00111111b mov p3, #01111111b mov p1, #11111100b call delay mov p2, #11111111b mov p0, #00011111b mov p3, #11111111b mov p1, #11111000b call delay
    • mov p0, #10001111b mov p1, #11110001b call delay mov p0, #11000111b mov p1, #11100011b call delay mov p0, #11100011b mov p1, #11000111b call delay mov p0, #11110001b mov p1, #10001111b call delay mov p0, #11111000b mov p1, #00011111b call delay retkieu_2a: ; cho 4 Led nhẩy từ bên trái qua bên phải mov P0, #11110000b call delay mov p0, #11000011b call delay mov p0, #00001111b call delay mov p0, #00111111b mov p2, #11111100b call delay mov p0, #11111111b mov p2, #11110000b call delay mov p2, #11000011b call delay mov p2, #00001111b call delay mov p2, #00111111b mov p3, #11111100b call delay mov p2, #11111111b mov p3, #11110000b call delay
    • mov p3, #11000011b call delay mov p3, #00001111b call delay mov p3, #00111111b mov p1, #11111100b call delay mov p3, #11111111b mov p1, #11110000b call delay mov p1, #11000011b call delay mov p1, #00001111b call delay retkieu_2b: ; cho 4 Led nhẩy từ bên phải qua bên trái mov p1, #00001111b call delay mov p1, #11000011b call delay mov p1, #11110000b call delay mov p1, #11111100b mov p3, #00111111b call delay mov p1, #11111111b mov p3, #00001111b call delay mov p3, #11000011b call delay mov p3, #11110000b call delay mov p3, #11111100b mov p2, #00111111b call delay mov p3, #11111111b mov p2, #00001111b call delay mov p2, #11000011b
    • call delay mov p2, #11110000b call delay mov p2, #11111100b mov p0, #00111111b call delay mov p2, #11111111b mov p0, #00001111b call delay mov p0, #11000011b call delay mov p0, #11110000b call delay retkieu_3: ; cho 8 Led sáng kiểu đưa võng mov p0, #00000000b call delay mov p0, #11111111b mov p3, #00000000b call delay mov p3, #11111111b mov p1, #00000000b call delay mov p1, #11111111b mov p2, #00000000b call delay mov p2, #11111111b retkieu_4: ; cho 2 Led sáng lan dần từ trên xuống dưới. mov p0, #11111100b mov p1, #00111111b call delay mov p0, #11110000b mov p1, #00001111b call delay mov p0, #11000000b mov p1, #00000011b call delay mov p0, #00000000b
    • mov p1, #00000000b call delay mov p2, #11111100b mov p3, #00111111b call delay mov p2, #11110000b mov p3, #00001111b call delay mov p2, #11000000b mov p3, #00000011b call delay mov p2, #00000000b mov p3, #00000000b call delay ret;xoa: mov p0, #11111111b mov p1, #11111111b mov p2, #11111111b mov p3, #11111111b retdelay: mov r7, #20v_6: mov r6, #100v_5: mov r5, #200 djnz r5, $ djnz r6, v_5 djnz r7, v_6 retendChuyển file này vào vùng soạn thảo M-IDE để tìm lỗi, hình chụp sau đâycho thấy cách dùng trình M-IDE.
    • Sau khi dịch xong, chúng ta có file led-nhay.hex, nôi dung như sau::100000001202A512003B1202A51200CC1202A57B1F:100010000A12015D1202A51201CA1202A5DBF27BCF:10002000051202A51202371202A5DBF57B1412029B:10003000A512025C1202A5DBF580C57580F87590EB:100040001F1202B27580F175908F1202B27580E3B3:100050007590C71202B27580C77590E31202B2752F:10006000808F7590F11202B275801F7590F81202A0:10007000B275803F75A0FE7590FC75B07F1202B21C:1000800075807F75A0FC7590FE75B03F1202B27549:1000900080FF75A0F87590FF75B01F1202B275A0B1:1000A000F175B08F1202B275A0E375B0C71202B23B:1000B00075A0C775B0E31202B275A08F75B0F112CA:1000C00002B275A01F75B0F81202B22275A01F759A:1000D000B0F81202B275A08F75B0F11202B275A01D:1000E000C775B0E31202B275A0E375B0C71202B2D1:1000F00075A0F175B08F1202B275A0F875B01F121D:1001000002B275A0FC75807F75B03F7590FE12023B:10011000B275A0FE75803F75B07F7590FC1202B27B:1001200075A0FF75801F75B0FF7590F81202B2754B:10013000808F7590F11202B27580C77590E312023C:10014000B27580E37590C71202B27580F175908F19:100150001202B27580F875901F1202B2227580F0FB:100160001202B27580C31202B275800F1202B2750C:10017000803F75A0FC1202B27580FF75A0F01202DC:10018000B275A0C31202B275A00F1202B275A03FE1:1001900075B0FC1202B275A0FF75B0F01202B27514:1001A000B0C31202B275B00F1202B275B03F7590B3:1001B000FC1202B275B0FF7590F01202B27590C3D6:1001C0001202B275900F1202B22275900F1202B293:1001D0007590C31202B27590F01202B27590FC7560:1001E000B03F1202B27590FF75B00F1202B275B037:1001F000C31202B275B0F01202B275B0FC75A03F26:100200001202B275B0FF75A00F1202B275A0C31230:1002100002B275A0F01202B275A0FC75803F120206:10022000B275A0FF75800F1202B27580C31202B2C0:100230007580F01202B2227580001202B27580FF42
    • :1002400075B0001202B275B0FF7590001202B2755F:1002500090FF75A0001202B275A0FF227580FC7598:10026000903F1202B27580F075900F1202B2758045:10027000C07590031202B27580007590001202B230:1002800075A0FC75B03F1202B275A0F075B00F12E8:1002900002B275A0C075B0031202B275A00075B0AD:1002A000001202B2227580FF7590FF75A0FF75B035:0F02B000FF227F147E647DC8DDFEDEFADFF622BA:00000001FF