Tải bản đầy đủ (.docx) (10 trang)

Bao cao thuc hanh vi dieu khien dh hang hai

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (505.58 KB, 10 trang )

Bài 1: Điều khiển một LED đơn từ vi điều khiển
I. Nội dung:
- Xây dựng mạch với một LED đơn được nối với cổng P0/0 của VĐK 8051
- Viết chương trình để điều khiển LED nháy với tần số 2Hz
II. Soạn thảo và dịch chương trình điều khiển trên Reads51
#include <sfr51.inc>
org 0h
nhay:
acall delay250
cpl p0.0
acall delay250
ljmp nhay
delay50:
mov tmod,#01H
mov TL0, #LOW(15536)
mov TH0, #HIGH(15536)
setb tr0
DOI: JNB TF0, DOI
CLR TF0
RET
Delay250:
Mov R7,#5H
LAP: acall delay50
Djnz r7, lap
Ret
End
III. Mô phỏng trên Proteus
- Đèn nháy với tần số 2Hz


Bài 2: Điều khiển tâm LED đơn tử vi điều khiển


I. Nội dung:
- Xây dựng mạch với 8 LED đơn được nối với cổng P0, hai nút ấn (mức logic 0) được nối với
chân P1.0 và P1.1 của VĐK 8051
- Viết chương trình để điều khiển 8 LED: các LED được điều khiển để sáng theo thứ tự mẫu bit
11100000B. Khi ấn nút nối với P1.0 thì xoay trái trình tự sáng của các LED. Khi ấn nút nối với
P1.1 thì xoay phải trình tự sáng của các LED. Nếu nút ấn liên tục thì việc xoay trái/phải sẽ được
thực hiện 250ms/1lần (1 giây xoay 4 lần).
II. Soạn thảo và dịch chương trình điều khiển trên Reads51
#include <sfr51.inc>
org 0h
MOV P0,#11100000B
kiem_tra:
JNB P1.0,trai
JNB P1.1,phai
LJMP kiem_tra
trai:
mov A,P0
RL A
MOV P0,A
acall delay250
ljmp kiem_tra
phai:
MOV A,P0
RR A
MOV P0,A
acall delay250
ljmp kiem_tra
delay50:
MOV TMOD,#01H
MOV TL0,#LOW(15536)

MOV TH0,#HIGH(15536)


setb tr0
cho: JNB TF0,CHO
CLR TF0
RET
Delay250:
MOV R7,#05H
lap: acall delay50
djnz r7,lap
ret
END
III. Mô phỏng trên Proteus
- Đèn sáng theo thứ tự 11100000B khi bắt đầu

- Xoay trái 1 lần khi nút nối với P1.0 được ấn 1 lần


- Xoay phải 4 lần/giây khi nối với 1.1 được ấn liên tục

Bài 3: Điều khiển một LED 7 vạch trực tiếp từ vi điều khiển
I. Nội dung:
- Xây dựng mạch với một LED 7 đoạn (Anode chung) được nối với cổng P2 của VĐK 80C51
theo trình tự các LED a,b,c,…,g được nối tương ứng với P2.0, P2.1,…,P2.6.
- Viết chương trình để điều khiển LED hiển thị các giá trị từ 0 đến 9, mỗi giá trị hiển thị trong
500ms,
II. Soạn thảo và dịch chương trình điều khiển trên Reads51
#include <sfr51.inc>
org 0h

led:


mov p2,#040H
acall delay500
mov p2,#079H
acall delay500
mov p2,#024H
acall delay500
mov p2,#030H
acall delay500
mov p2,#019H
acall delay500
mov p2,#012H
acall delay500
mov p2,#02H
acall delay500
mov p2,#078H
acall delay500
mov p2,#00H
acall delay500
mov p2,#010H
acall delay500
ljmp led
delay50:
mov TMOD,#01H
mov TL0,#LOW(15536)
mov TL0,#HIGH(15536)
setb tr0
CHO: JNB TF0,CHO

CLR TF0
ret
delay500:
mov r7,#010H


lap: acall delay50
djnz r7,lap
ret
END
III. Mô phỏng trên Proteus
- LED hiển thị từ 0 đến 9


Bài 4: Điều khiển hiển thị kí tự trên LCD 16x2 trực tiếp từ vi điều khiển
1. Nội dung:
#include <sfr51.inc>
org 0h
lcd:
mov a,#38H
lcall gui_lenh
mov a,#0CH
lcall gui_lenh
mov a,#06H
lcall gui_lenh
mov a,#02H
lcall gui_lenh
mov a,#01H
lcall gui_lenh
mov a,#'H'

lcall gui_du_lieu
mov a,#'e'
lcall gui_du_lieu
mov a,#'l'
lcall gui_du_lieu
mov a,#'l'
lcall gui_du_lieu
mov a,#'o'
lcall gui_du_lieu
mov a,#'!'
lcall gui_du_lieu
sjmp $
gui_lenh:
CLR P2.0
CLR P2.1


MOV P0,A
setb P2.2
lcall delay5
CLR P2.2
lcall delay5
ret
gui_du_lieu:
setb P2.0
CLR P2.1
MOV P0,A
setb P2.2
lcall delay5
CLR P2.2

lcall delay5
ret
delay5:
mov tmod,#01H
mov TL0,#LOW(60536)
mov TH0,#HIGH(60536)
setb TR0
CHO: JNB TF0,CHO
CLR TF0
RET
END
3. Mô phỏng trên Proteus


Bài 5: Điều khiển truyền/nhận dữ liệu từ vi điều khiển với máy tính
I. Nội dung:
- Viết chương trình điều khiển VĐK AT89C51 truyền/nhận dữ liệu
II. Soạn thảo và dịch chương trình điều khiển trên Reads51
#include <sfr51.inc>
org 0h
mov scon,#52H
mov tmod,#20H
mov TH1,#-3H
mov TL1,#-3H
setb TR1
lap:
jnb ti,next
mov sbuf,#41H
clr ti
next:

jnb ri,next2
mov a,sbuf
mov p2,a
clr ri
next2: sjmp lap


END
III. Mô phỏng trên Proteus
- Chọn tần số 14Mhz



×