IV. Các chú ý:
CHƯƠNG TRÌNH ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC QUAY BẰNG 2 NÚT NHẤN START VÀ STOP
clr c ;c=0 la khong nhan Stop ret
dend: jb stop,$
setb c ;c=1 la co nhan Stop ret
end
Chú ý nếu muốn động cơ chạy thì nhấn phím số “0” và muốn ngừng thì nhấn phím số “1”. Chương trình có thể viết gọn hơn nữa nếu dùng thanh ghi A lưu trữ madkdc.
3. Thực hiện các bước giống như các bài chuẩn cho đến khi mạch chạy đúng yêu cầu.
Tại sao làm cột thứ 0 của ma trận bàn phím xuống mức 0.
III. Các chương trình mẫu:
Chương trình điều khiển động cơ bước quay có các phím điều khiển start, stop, đảo chiều. - Dùng bus dây kết nối port 1 đến pinhd ngõ vào của IC 2803 và dùng bus dây 5 sợi kết nối
giữa động cơ và một trong 2 pinheader 5 chân ở ngõ ra của 2803. - Dùng bus dây kết nối port 3 đến pinhd bàn phím ma trận từ K0 đến K7.
- Dùng bus dây kết nối port 0 đến pinhd của 8 led đơn xanh vàng đỏ để biết trạng thái đèn sáng tương ứng với động cơ.
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr dieu khien step motor: khi nhan nut start thi motor quay
;khi nhan nut stop thi motor ngung, nut dao chieu dong co
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cot_c0 bit p3.0
start bit p3.4 ;phim so 0 stop bit p3.5 ;phim so 1 inv bit p3.6 ;phim so 2
bit_inv bit p0.0 ;bit trang thai bao dao chieu dong co bit_startstop bit p0.1 ;bit trang thai bao strat stop
madkdc equ r0
outstep equ p1 org 0000h
clr cot_c0 ;cho cot thu 0 cua ma tran ban phim = 0 clr bit_inv ;bit_inv = 0 thi chay thuan, bit_inv = 1 thi chay nguoc
clr bit_startstop
mov madkdc,#00010001b ;nap ma dieu khien dc buoc ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;chtr dieu khien dong co quay thuan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
run_for: jb start,$ ;cho nhan satrt
jnb start,$ ;cho cho buong nut nhan jb bit_inv,run_inv ;nhay den chtr chay nguoc run_for1: mov outstep,madkdc ;xuat ma dk dong co
lcall delay mov a,madkdc
rl a ;;xoay thuan mov madkdc,a
jb bit_inv,run_inv ;nhay den chtr chay nguoc sjmp run_for1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr dieu khien dong co quay thuan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
run_inv: mov outstep,madkdc ;xuat ma dk dong co lcall delay
mov a,madkdc
rr a ;xoay nguoc mov madkdc,a
jb bit_startstop,run_for
jnb bit_inv,run_for1 ;nhay den chtr chay nguoc sjmp run_inv
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr con delay co kiem tra stop
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay: mov r6,#10h de: mov r7,#0 jnb stop,dend jnb inv,dend1 djnz r7,$ djnz r6,de
clr bit_startstop ;c=0 la khong nhan Stop ret
dend: jb stop,$
setb bit_startstop ;c=1 la co nhan Stop ret dend1: jb inv,$ cpl bit_inv lcall delay1s jnb inv,$ ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr con delay de chong doi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay1s: mov 7fh,#10
xde: mov 7eh,#0 djnz 7eh,$ djnz 7fh,xde
ret end
Chương trình điều khiển động cơ bước quay có các phím điều khiển start, stop, đảo chiều. - Dùng bus dây kết nối port 1 đến pinhd ngõ vào của IC 2803 và dùng bus dây 5 sợi kết nối
giữa động cơ và một trong 2 pinheader 5 chân ở ngõ ra của 2803. - Dùng bus dây kết nối port 3 đến pinhd bàn phím ma trận từ K0 đến K7.
- Dùng bus dây kết nối port 0 đến pinhd điều khiển các đoạn a, b, c, d, e, f, g, dp. - Dùng bus dây kết nối port 2 đến pinhd điều khiển quét hàng từ T0 đến T7.
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr dieu khien step motor: khi nhan nut start thi motor quay
;co hien thi cac trang thai OFF, UP, Down tren led 7 doan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cot_c0 bit p3.0
start bit p3.4 ;phim so 0 stop bit p3.5 ;phim so 1 inv bit p3.6 ;phim so 2
bit_inv bit 40h ;bit trang thai bao dao chieu dong co bit_startstop bit 41h ;bit trang thai bao strat stop
madkdc equ r0
outstep equ p1 quetled7d equ p2 cacdoan equ p0
demsobuoc equ r3 ;luu so buoc demsovong equ r4 ;luu so vong
sobuoc equ 200 ;1 vong bang 200 buoc
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx org 0000h
ljmp main org 000bh
ljmp ngat_timer0 ;ngat timer0
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx main: mov tmod,#00000001b ;T0 mod 1 dem 16 bit
mov th0,#high(-500) mov tl0,#low(-500) clr tf0
setb tr0
mov ie,#10000010b ;cho phep timer0 ngat mov demsovong,#0
mov demsobuoc,#0
clr cot_c0 ;cho cot thu 0 cua ma tran ban phim = 0 clr bit_inv ;bit_inv = 0 thi chay thuan, bit_inv = 1 thi chay nguoc
clr bit_startstop
mov madkdc,#00010001b ;nap ma dieu khien dc buoc mov dptr,#ma7doan
lcall giaima_buoc lcall giaima_vong
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr dieu khien dong co quay thuan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
run_for: mov 20h,#0c0h ;ma chu O mov 21h,#8eh ;ma chu F jb start,$ ;cho nhan satrt
jnb start,$ ;cho cho buong nut nhan jb bit_inv,run_inv ;nhay den chtr chay nguoc mov 20h,#0c1h ;ma chu U
mov 21h,#8ch ;ma chu P run_for1: mov outstep,madkdc ;xuat ma dk dong co lcall delay
mov a,madkdc
rl a ;xoay thuan mov madkdc,a
inc demsobuoc
cjne demsobuoc,#sobuoc,run_for2
mov demsobuoc,#0 ;het 200 buoc inc demsovong
lcall giaima_vong run_for2: lcall giaima_buoc
jb bit_startstop,run_for
jb bit_inv,run_inv ;nhay den chtr chay nguoc sjmp run_for1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr dieu khien dong co quay thuan
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
run_inv: mov 20h,#0a1h ;ma chu d mov 21h,#0a3h ;ma chu o
run_inv1: mov outstep,madkdc ;xuat ma dk dong co lcall delay mov a,madkdc rr a ;xoay nguoc mov madkdc,a inc demsobuoc cjne demsobuoc,#sobuoc,run_inv2
mov demsobuoc,#0 ;het 200 buoc inc demsovong
lcall giaima_vong run_inv2: lcall giaima_buoc
jb bit_startstop,run_for
jnb bit_inv,run_for1 ;nhay den chtr chay nguoc sjmp run_inv1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chtr con delay co kiem tra stop
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay: mov r6,#10h de: mov r7,#0 jnb stop,dend jnb inv,dend1 djnz r7,$ djnz r6,de
clr bit_startstop ;c=0 la khong nhan Stop ret
dend: jb stop,$
setb bit_startstop ;c=1 la co nhan Stop ret dend1: jb inv,$ cpl bit_inv lcall delay1s jnb inv,$ ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
delay1s: mov 7fh,#10 xde: mov 7eh,#0 djnz 7eh,$ djnz 7fh,xde
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ; chuong trinh con giai ma
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx giaima_buoc: mov a,demsobuoc
mov b,#10 div ab mov 37h,b mov b,#10 div ab mov 36h,b mov 35h,a mov a,37h movc a,@a+dptr mov 27h,a mov a,36h movc a,@a+dptr mov 26h,a mov a,35h movc a,@a+dptr mov 25h,a ret
giaima_vong: mov a,demsovong mov b,#10 div ab mov 34h,b mov b,#10 div ab mov 33h,b mov 32h,a mov a,32h cjne a,#0,gmv_1 mov 22h,#0ffh sjmp gmv_2 gmv_1: movc a,@a+dptr mov 22h,a gmv_2: mov a,33h cjne a,#0,gmv_3 mov 23h,#0ffh sjmp gmv_4 gmv_3: movc a,@a+dptr mov 23h,a gmv_4: mov a,34h movc a,@a+dptr anl a,#7fh mov 24h,a ret ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;Chuong trinh con ngat cua timer0 de hien thi lien tuc
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ngat_timer0: lcall hthi
mov th0,#high(-500) mov tl0,#low(-500)
reti
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hthi: push acc ;cat tam thanh ghi a mov a,#01111111b ;ma quet mov r1,#27h ht1: mov cacdoan,@r1 mov quetled7d,a lcall delay1 mov quetled7d,#0ffh dec r1
rr a ;chuyen sang led ke cjne r1,#1fh,ht1
pop acc ;lay lai noi dung thanh ghi a ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay1: mov 7ch,#50h
djnz 7ch,$ ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;khai bao ma 7 doan tu so '0' den so '9'
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ma7doan: db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h end
7. Bài tập ứng dụng:
1. Hãy viết chương trình điều khiển động cơ quay có điều khiển start và stop nhưng chỉ dùng 1 nút nhấn.
2. Hãy viết lưu đồ điều khiển của các chương trình trên.
Hãy mở rộng bài điều khiển trên với các yêu cầu điều khiển như sau như sau: Phím “F” làm phím stop có hiển thị chữ OF
Phím “E” làm phím start có hiển thị chữ UP hoặc chữ Do Phím “D” làm phím đảo chiều.
Phím “A” làm phím tăng tốc, phím “B” làm phím giảm tốc.
Chú ý: phải sử dụng bàn phím ma trận và chương trình con quét 16 phím.
Còn nhiều yêu cầu nhưng theo tác gải nếu bạn hiểu và thực hiện được các yêu cầu của sách hướng dẫn này thì việc mở rộng các yêu cầu bạn có thể giải quyết được.
PHẦN 6: