Thứ Ba, 18 tháng 12, 2012

Hướng dẫn làm Mạch led trai tim tang nguoi yeu full mediafire update 2013

Chương trình + code:(32 led trai tim ) :( Tất cả link mediafire )

link: mediafire 1

or mediafire 2 

code   :mediafirec 3  

mach  in dung 89c51:

mediafire 4 

Hoặc mediafire 5  


Còn đây là code và mạch đc mô phỏng bằng proteus 7.5




 



-sắp xếp linh kiện:  mediafire   
- mạch in hàn linh kiện mặt trướcmediafire  
- Mạch in hàn linh kiện mặt sau:  mediafire 

Video hướng dẫn làm Mạch Led Trái tim và chương trình(phần mềm +code)


Các Bạn down ở đây nhé



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ùng 150 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 hay tố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ùng tụ 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ác cảng để phát sáng. Bạn dùng Ohm kế kim, đặt ở thang đo Rx1, đo kiểm tra Led, khi đo thuận Led sẽ sáng, lúc này dây màu đen đang ở trên châ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àng hơ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 theo nhiề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 ic AT89C52

 

 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ình vẽ trên Bạn thấy, chúng ta gắn Led D1 đến D8 tiếp theo là D9 đến D16 cho cung hình bên trái và Led D17 đến D24 liền theo là D25 đến D32 tạ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ày chúng ta sẽ dùng các câu lệnh để tắt mở các Led trên đúng theo trình tự, đú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ủa các Led gắn trên các cảng p0, p1, p2, p3

 

 Muố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éo chân số 9 lên mức áp cao, điều này sẽ reset ic AT89C52, cấu trúc mạch bên trong sẽ được xác lập về trạng thái mở đầu theo quy định. Chúng ta 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 áp thấ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 động trong 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ông dụ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ốt

 

 

 Mạch nguồn gồm biến áp cách ly T1, nó có 2 công dụng: (1), vừa tạo tính cách ly giữa mạch điện và đường nguồn AC, giữ an toàn cho người dùng. (2), vừa dùng làm giảm áp AC, hạ mức nguồn AC 220V xuống 9V. 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ó 3 công dụng: (1), giảm độ dợn sóng. (2), nâng cao mức áp DC lên gần bằ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ân 7805. Với loại ic ổn áp tích cực, để tránh mạch điện trong ic không phát sinh 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ác cũng được, sau đó gắn 32 Led theo đường bao của hình, điều Bạn cần nhớ 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áy mà 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ủa ic lập trình AT89C52, hay AT89C51. Trong mạch này chúng ta cho Led sáng với mức áp thấp, hay bit 0 và cho tắt Led với mức áp cao hay bit 1.

 

 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àm sáng Led.

 mov p0, #11111111b : đặt 8 chân của cảng p0 lên mức áp cao, làm tắt 8 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, cho sá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ác mã điều khiển ra các cảng để điều khiển sự tắt sáng của các Led. Một thí dụ:

 kieu_1:  ; dùng bit 0 để cho Led sáng, vậy kiểu này sẽ cho 1 Led sáng nhẩy.

db 11111111b

db 11111110b 

db 11111101b

db 11111011b

db 11110111b

db 11101111b

db 11011111b

db 10111111b

db 01111111b

db 10111111b

db 11011111b

db 11101111b

db 11110111b

db 11111011b

db 11111101b

db 11111110b

 

......

 

Sau đây là một chương trình nguồn dùng điều khiển 32 Led trên 4 cảng củ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áng thì cho nó có bit 0, muốn tắt Led thì gán cho nó bit 1. Trướt hết hãy tạo ra 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

     ret

   Cho 3 Led từ biên trái, biên phải nhẩy trở vào, chương trình con viết như sau:

   kieu_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
ret   


  Thử 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
ret


 kieu_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
ret 


 kieu_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
ret


 Viế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
ret 


 Cấu trúc của chương trình nguồn có thể viết như sau:

 org 0000h

start:
call xoa
call kieu_1a
call xoa
call kieu_1b
call xoa
mov r3, #10
tt_1:
call kieu_2a
call xoa
call kieu_2b
call xoa
djnz r3, tt_1
mov r3, #5
tt_2:
call xoa
call kieu_3
call xoa
djnz r3, tt_2
mov r3, #20
tt_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
ret
delay:
mov r7, #20
v_6: mov r6, #100
v_5: mov r5, #200
djnz r5, $
djnz r6, v_5
djnz r7, v_6
ret
end


Đế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ệnh trong 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 0000h

start:
call xoa
call kieu_1a
call xoa
call kieu_1b
call xoa
mov r3, #10
tt_1:
call kieu_2a
call xoa
call kieu_2b
call xoa
djnz r3, tt_1
mov r3, #5
tt_2:
call xoa
call kieu_3
call xoa
djnz r3, tt_2
mov r3, #20
tt_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
ret
kieu_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
ret
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
ret
kieu_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
ret
kieu_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
ret
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
ret
;
xoa:
mov p0, #11111111b
mov p1, #11111111b
mov p2, #11111111b
mov p3, #11111111b
ret
delay:
mov r7, #20
v_6: mov r6, #100
v_5: mov r5, #200
djnz r5, $
djnz r6, v_5
djnz r7, v_6
ret
end


 Chuyển file này vào vùng soạn thảo M-IDE để tìm lỗi, hình chụp sau đây cho thấy cách dùng trình M-IDE.

 


0 nhận xét:

Đăng nhận xét