CHƯƠNG TRÌNH ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC QUAY BẰNG 2 NÚT NHẤN START VÀ STOP

Một phần của tài liệu Tài liệu Các bài thực hành về vi điều khiển pdf (Trang 95 - 102)

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:

Một phần của tài liệu Tài liệu Các bài thực hành về vi điều khiển pdf (Trang 95 - 102)

Tải bản đầy đủ (PDF)

(132 trang)