2.3.5 Điều khiển nhiều led 7 thanh 2. Thực hành điều khiển các thiết bị vào ra 2.3 Điều khiển led 7 thanh 2.3.5 Cách điều khiển nhiều led 7 thanh Trong phần này bài học sẽ hướng dẫn cách điều khiển nhiều led 7 thanh cùng lúc Bước 1: Xây dựng mạch điều khiển mô tả như hình 2.3.5. Trong ví dụ này, các chân P2.0 đến P2.7 điều khiển việc cấp nguồn cho các led 7 thanh. Các chân P0.0 đến P0.6 được nối với các chân của led 7 thanh để điều khiển việc cấp đất cho các thanh led. Hình 2.3.5 Sơ đồ nguyên lý điều khiển nhiều led 7 thanh Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h start: mov P0,#11111001b;Số 1 clr P2.7 ;Led 1 hiển thị số 1 call delay ;Gọi trễ setb P2.7 ;Tắt led 1 ; mov P0,#11011011b;Số 2 clr P2.6 ;Led 2 hiển thị số 2 call delay ;Gọi trễ setb P2.6 ;Tắt led 2 ; mov P0,#10110000b;Số 3 clr P2.5 ;Led 3 hiển thị số 3 call delay ;Gọi trễ setb P2.5 ;Tắt led 3 ; mov P0,#10011001b;Số 4 clr P2.4 ;Led 4 hiển thị số 4 call delay ;Gọi trễ setb P2.4 ;Tắt led 4 ; mov P0,#10010010b;Số 5 clr P2.3 ;Led 5 hiển thị số 5 call delay ;Gọi trễ setb P2.3 ;Tắt led 5 ; mov P0,#10000010b;Số 6 clr P2.2 ;Led 6 hiển thị sô 6 call delay ;Gọi trễ setb P2.2 ;Tắt led 6 ; mov P0,#11111000b;Số 7 clr P2.1 ;Số 7 hiển thị số 7 call delay ;Gọi trễ setb P2.1 ;Tắt led 7 ; mov P0,#10000000b;Số 8 clr P2.0 ;Led 8 hiển thị số 8 call delay ;Gọi trễ setb P2.0 ;Tắt led 8 sjmp start ;Trở lại ban đầu ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học. 2. Thực hành điều khiển các thiết bị vào ra 2.3 Điều khiển led 7 thanh 2.3.2 Phối hợp nhiều thanh của led 7 thanh Bước 1: Xây dựng mạch điều khiển mô tả như hình 2.3.2. Trong ví dụ này, các chân P2.0 điều khiển việc cấp nguồn cho led 7 thanh. Các chân P0.0 đến P0.6 được nối với các chân của led 7 thanh để điều khiển việc cấp đất cho các thanh led. Trong phần này sẽ hướng dẫn cách phối hợp hiển thị các thanh led của led 7 thanh Hình 2.3.2 Sơ đồ nguyên lý điều khiển led 7 thanh Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h start: mov P0,#11111100b; Cấp 0V cho thanh led a và b clr P2.0 ; Cấp 5V cho led 7 thanh call delay ; Gọi hàm trễ mov P0,#11011011b; Cấp 0V cho thanh led c,f clr P2.0 ; Cấp 5V cho led call delay ; Gọi hàm trễ mov P0,#10110000b; Cấp 0V to a,b,c,d,g clr P2.0 ; Cấp 5V cho led call delay ; Gọi hàm trễ sjmp start ; Trở về đầu chương trình ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học. 2.3.3 Điều khiển led 7 thanh hiển thị số Thực hành mạch như phần 2.3.2, tuy nhiên hãy phối hợp các thanh led để led 7 thanh hiển thị các chữ số 0,1,2,3,4,5,6,7,8,9. Việc này rất đơn giản. Chỉ việc thay đổi lại chương trình ở phần 2.3.2 (thay đổi lại lệnh mov P0,#xxxxxxxxb) 2.3.4 Điều khiển led 7 thanh hiển thị chữ Thực hành mạch như phần 2.3.2, tuy nhiên hãy phối hợp các thanh led để led 7 thanh hiển thị các chữ số a,b,c,d,e,f. Việc này rất đơn giản. Chỉ việc thay đổi lại chương trình ở phần 2.3.2 (thay đổi lại lệnh mov P0,#xxxxxxxxb) Thực hành điều khiển các thiết bị vào ra 2.2 Giao tiếp công tắc 2.2.2 Điều khiển led chạy khi nhấn công tắc Trong phần này, nội dung bài học là điều khiển led sáng dịch chuyển khi nhấn công tắc. Cụ thể là led sáng sẽ chuyển động sang trái khi nhấn phím nối với chân P2.0 và chuyển động sang phải khi nhấn phím nối với chân P2.1. Bước 1: Xây dựng mạch điều khiển mô tả như hình 2.2.2. Trong ví dụ này, các chân P2.0 đến chân P2.7 của vi điều khiển được nối với phím bấm nháy và các chân P0.0 đến P0.7 được nối với Ka- tốt của led. Nhiệm vụ là khi nhấn phím tại chân P2.0 thì led sáng chuyển động sang trái, nhấn phím nối với chân P2.1 led sáng sẽ chuyển động sang phải. Hình 2.2.2 Sơ đồ nguyên lý hoạt động giao tiếp với công tắc Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h CekP20: JB P2.0,CekP21 ; kiểm tra P2.0 call RLeft ; gọi hàm điều khiển led -> trái sjmp CekP20 ; trở về CekP20 CekP21: JB P2.1,CekP20 ; kiểm tra P2.1 call RRight ; gọi hàm điều khiển led -> trái sjmp CekP20 ; trở về CekP2.0 ;=============================================== ;this subroutine is used to move LED to the left. ;================================================ RLeft: mov A,#11111110b;Khởi tạo cho led tại P0.0 sáng RLeft1: mov P0,A ;P0.0 sáng call delay ;gọi hàm trễ JB P2.0,RLeft2 ;kiểm tra P2.0 sjmp EndRLeft ;không nhấn phím P2.0, kết thúc RLeft2: RL A ; dịch thanh ghi A -> trái sjmp RLeft1 EndRLeft: ret ; ;================================================= ;this subroutine is used to move LED to the right. ;================================================= RRight: mov A,#01111111b RRight1:mov P0,A call delay JB P2.0,RRight2 sjmp EndRRight RRight2:RL A sjmp RRight1 EndRRight: ret ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học. Thực hành điều khiển các thiết bị vào ra 2.1 Điều khiển LED 2.1.3 Điều khiển bật tắt lần lượt các led Phần trước đã giới thiệu cách điều khiển bật tắt nhiều led cùng lúc, phần này sẽ hướng dẫn cách điều khiển bật tắt lần lượt các led (8 led). Bước 1: Thiết kế mạch ứng dụng cho vi điều khiển như hình 2.1.3. Trong đó các chân P0.0 đến P0.7 được nối với Ka-tốt của led. Hình 2.1.3 Sơ đồ nguyên lý mạch điều khiển lần lượt các led Bước 2: Lập trình điều khiển Led theo ngôn ngữ lập trình Assembly (có thể dùng chương trình Reads51) Nội dung chương trình: =============================================================== org 0h start: mov P0,#11111110b; Bật led nối với P0.0 call delay ; Tạo trễ mov P0,#11111101b; Bật led nối với P0.1 call delay ; Tạo trễ mov P0,#11111011b; Bật led nối với P0.2 call delay ; Tạo trễ mov P0,#11110111b; Bật led nối với P0.3 call delay ; Tạo trễ mov P0,#11101111b; Bật led nối với P0.4 call delay ; Tạo trễ mov P0,#11011111b; Bật led nối với P0.5 call delay ; Tạo trễ mov P0,#10111111b; Bật led nối với P0.6 call delay ; Tạo trễ mov P0,#01111111b; Bật led nối với P3.7 call delay ; Tạo trễ sjmp start ; loooooop forever to start ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end =============================================================== Bước 3: Biên dịch chương trình trên bằng các chương trình biên dịch chuyên dụng cho vi điều khiển như Reads51. Sau khi biên dịch, chươn trình sẽ tạo ra file mã máy mà vi điều khiển dựa vào đó để hoạt động. Thông thường file đó sẽ có dạng tên_file.hex. Việc đặt tên file là do người dùng tự đặt. Bước 4 Nạp file mã máy mà chương trình biên dịch vừa tạo ra bằng các công cụ và mạch nạp như trong trang web này hướng dẫn làm như: mạch nạp 89xxxx, mạch nạp 89Cxx, mạch nạp 89Sxxxx, mạch nạp 89Sxx và AVR Sau khi nạp file mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học. . 2.3.5 Điều khiển nhiều led 7 thanh 2. Thực hành điều khiển các thiết bị vào ra 2.3 Điều khiển led 7 thanh 2.3.5 Cách điều khiển nhiều led 7 thanh Trong phần này bài học sẽ hướng dẫn cách điều khiển. vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học. Thực hành điều khiển các thiết bị vào ra 2.1 Điều khiển LED 2.1.3 Điều khiển bật tắt lần lượt các led Phần trước đã giới thiệu cách. mã máy vào vi điều khiển 89S51. Gắn vi điều khiển vào mạch ứng dụng, sẽ thấy kết quả của bài học. 2. Thực hành điều khiển các thiết bị vào ra 2.3 Điều khiển led 7 thanh 2.3.2 Phối hợp nhiều