Ý 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. Để 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
Vừa qua tôi nhận được rất nhiều điện thư của Bạn đọc, nhiều thư vẫn hỏ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ện tử, hỏi về các vấn đề có liên quan đến bản đèn 32 Led sắp xếp thành hình trái tim và có nhiều kiểu nhấp nháy đẹp mắt. Tôi đoán chắc cũng có 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ù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 [...]... đ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... 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 mov 3 Led nhẩy p2,... p0, call mov p0, call ret kieu_3: ; cho 8 mov Led sáng p0, kểu call mov mov p0, p3, call mov mov p3, p1, call mov mov p1, p2, call mov p2, đưa võng #00000000b delay #11111111b #00000000b delay #11111111b #00000000b delay #11111111b #00000000b delay #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 mov mov sáng lan dần từ p0, p1, call... #11110001b #10001111b delay #11111000b #00011111b delay call mov mov p0, p1, call mov mov p0, p1, call 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 mov nhẩy từ bên P0, call mov p0, call mov p0, call mov mov p0, p2, call mov mov p0, p2, call mov p2, call mov p2, call mov mov p2, p3, call mov mov... 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 MIDE để 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 start: 0000h call call call call call r3, r3, r3, kieu_2a xoa kieu_2b xoa... kieu_1a xoa kieu_1b xoa #10 xoa kieu_3 xoa tt_2 #20 tt_1: call call call call djnz mov tt_2: call call call djnz mov tt_3: call call call djnz r3, jmp xoa kieu_4 xoa tt_3 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, call mov mov p0, p1, call mov mov p0,... delay p2, #11111111b p0, #00001111b call delay p0, #11000011b call delay p0, #11110000b call delay ret 8 Led sáng kiểu đưa võng p0, #00000000b call delay p0, #11111111b p3, #00000000b call delay p3, #11111111b p1, #00000000b call delay p1, #11111111b p2, #00000000b call delay p2, #11111111b ret Led sáng lan dần từ trên xuống dưới p0, #11111100b p1, #00111111b call delay p0, #11110000b p1, #00001111b... call mov mov p0, p1, call mov mov p0, p1, call ; bắt cầu giữa mov mov mov mov p0 - p2 và p0, p2, p1, p3, call mov mov mov mov p0, p2, p1, p3, call mov mov mov mov p0, p2, p1, p3, call ; cho 3 mov mov Led nhẩy p2, p3, call mov mov p2, p3, call mov mov p2, p3, call mov mov p2, p3, trên #11000111b delay #11000111b #11100011b delay #10001111b #11110001b delay #00011111b #11111000b delay p1 p3 #00111111b... #11111000b #11111111b #00011111b delay p2, p3 #11110001b #10001111b delay #11100011b #11000111b delay #11000111b #11100011b delay #10001111b #11110001b call mov mov p2, p3, call kieu_1b: ; cho mov mov 3 Led nhẩy p2, p3, call mov mov p2, p3, call mov mov p2, p3, call mov mov p2, p3, call mov mov p2, p3, call mov mov p2, p3, call mov mov mov mov p2, p0, p3, p1, call mov mov mov mov p2, p0, p3, p1, call... #01111111b #11111100b delay #11111111b #00011111b #11111111b #11111000b delay mov mov p0, p1, call mov mov p0, p1, call mov mov p0, p1, call mov mov p0, p1, call mov mov p0, p1, call kieu_2a: ; cho 4 mov Led nhẩy từ bên P0, call mov p0, call mov p0, call mov mov p0, p2, call mov mov p0, p2, call mov p2, call mov p2, call mov mov p2, p3, call mov mov p2, p3, call trái #10001111b #11110001b delay #11000111b