2. Thực hành điều khiển các thiết bị vào ra
2.3.6 Đ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
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) Tuy nhiên, cách hiển thị bằng ngôn ngữ lập trình ở phần này khác phân trước ở chỗ dùng cách tra bảng để hiển thị led
Nội dung chương trình:
=============================================================== org 0h
start: mov dptr, #word ;để con trỏ dữ liệu vào đấu bảng mov R6,#8 ; số led cần hiển thị, 8 led
mov R1,#01111111b; khởi đầu ở led 8 Again: clr A ; xóa thanh ghi acc
movc A,@A+dptr ; đưa số đầu tiên ở bảng vào acc inc dptr ; tăng vị trí con trỏ
mov P0,A ; đưa mã cần hiển thị ra P0 mov A,R1 ; thứ tự led cần hiển thị mov P2,A ; hiển thị led
rr A ; dịch vi trí led cần hiển thị mov R1,A ; lưu vào thanh ghi R1 call delay ; gọi hàm trễ
mov P0,#11111111b; xóa
djnz R6,Again ; lặp lại 8 lần sjmp start ; trở về vị trí 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 ;
word: DB 00111111b, 01000111b, 00001000b, 00000011b DB 01000110b, 01000000b, 01001000b, 00111111b 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.
Trang trước - Trang
]
1. Mạch LED sáng dần thay đổi kiểu rồi tắt
Chương trình mạch điện viết bằng assembly: ORG 0H
AJMP START
INITIALIZE : ; ; ; ;SET UP CONTROL REGISTERS ;
MOV TCON,#00H MOV TMOD,#00H MOV PSW,#00H
MOV IE,#00H ; ; ; ;DISABLE INTERRUPTS RET DELAYMS: ; MOV R7,#00H LOOPA: INC R7 MOV A,R7 CJNE A,#0FFH,LOOPA RET
DELAYHS: MOV R6,#00H LOOPB: INC R6 ACALL DELAYMS MOV A,R6 JNZ LOOPB RET START: ACALL INITIALIZE LOOP: INC P1 ACALL DELAYHS AJMP LOOP END
Mở rộng bộ sắp sếp thứ tự 16LED
Bộ sắp sếp thứ tự 18 LED dùng 4017
The LED sequencer below shows a possible solution using a few extra parts. When power is applied, the 15K resistor and 10uF cap at pin 15 will reset the counters to the zero count where pin 3 is at +12 and all other outputs are at zero. The 2 diodes (1n914) and 15 resistor form a AND gate so the clock pulse will be passed to the right side counter when the sequence starts.
C1 2.2uF 25V Electrolytic Capacitor C2, C3 0.1uF Ceramic Disc Capacitor R1, R3 1K 1/4W Resistor R2 : 10K 1/4W Resistor R4 :100K 1/4W Resistor R5 :1M 1/4W Resistor D1 :1N914 Silicon Diode Q1 :2N3906 PNP Transistor
LED1-LED10 : Standard LED or LED Array U1 : LM3915 Audio Level IC
MISC : Board, Wire, Socket For U1 Nguồn aaroncake.net
1. V+ can be anywhere from 3V to 20V.
2. The input is designed for standard audio line voltage (1V P-P) and has a maximum input voltage of 1.3V.
3. Pin 9 can be disconnected from +V to make the circuit use a moving dot display instead of a bar graph display.