Em là thành viên mới. Rất mong được sự chỉ giáo của các huynh.
Đây là chương trình điều khiển 2 động cơ bước. Trong đó có 3 led 7 đoạn dùng để đếm sản phẩm từ 000 đến 999.
Chương trình có 2 chế độ điều khiển:
-Chạy đường thẳng
-Chạy đường tròn (Mâm quay)
*Ở chế độ đường thẳng:
Nhấn chạy thì ĐC sẽ chạy cho đến khi nào đụng S2 thì sẽ về home, sau đó Sản Phẩm sẽ tăng lên 1 (Hiện ở led 7), cứ như vậy cho đến khi bằng 999 thì báo titit không thể tăng được nữa.
*Ở chế độ đường tròn:
Cũng như vậy nhưng CTHT là S3.
Hỏi:
Ở chế độ đường tròn thì sản phẩm tăng đến 29 thì chương trình treo hoàn toàn. Nút nhấn không nhấn được nữa.
Ở chế độ đường thẳng thì sản phẩm tăng đến 9 thì tự đổi sang chế độ đường tròn, bấm nút chế độ thì không thể đổi chế độ lại được, nhưng vẫn chạy ở chế độ đường tròn được.
Bình thường khi chưa gắn động cơ, cho chay không để thừ thì 7805 rất nóng. Nhưng khi gắn động cơ vào thì 7805 còn ấm nhưng DIOD CẦU lại nóng. Tại sao vậy ?
Nguyên nhân nào 7805 nóng, điện áp T xài là 12V.
Nguyên nhân nào Diod Cầu nóng, Diod cầu T xài 5A và T xài nguồn 12V 5A.
; XU LY THEM LED 7 DEM SP
include reg_51.pdf
org 0000h
ljmp main
main:
; DN cac bit
chaythang bit p3.6
dungthang bit p3.5
den bit p3.0
chaytron bit p3.3
dungtron bit p3.2
home bit p3.1
chedo bit p3.4
chuong bit p3.7
s1 bit p2.4
s2 bit p2.5
s3 bit p2.6
s4 bit p2.7
hoquang_on bit p2.3
;################################################# #########
; DN cac bien
CNT EQU 7FH
DONVI EQU 7EH
CHUC EQU 7DH
TRAM EQU 7CH
bchedo bit 7BH
;################################################# #########
; Xoa cac bien, bit, port
mov p1,0ffh
mov p3,0ffh
setb chedo
clr chuong
clr hoquang_on
setb s1
setb s2
SETB S3
SETB S4
setb chaythang
setb dungthang
setb home
setb bchedo
clr hoquang_on
MOV P2,#0FFH
MOV CNT,#0
MOV DPTR,#MALED
MOV CHUC,#0
MOV DONVI,#0
MOV TRAM,#0
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
chonchedo:
clr hoquang_on
jb chedo,ktchedo
call chongdoi
call tittit
cpl bchedo
;ljmp ktchedo
;***********************************
ktchedo:
jnb bchedo,ktr_duongtron
jb bchedo, ktr_duongthang
;call ktchedo
;********************************************
ktr_duongthang:
CALL QUETLED; DE XEM SO DEM
setb den
ktdt0: jb chaythang,ktdt1
call dc_chay
ktdt1: jb dungthang,ktdt2
call dc_dung_tamthoi_thang
ktdt2: jb home,chonchedo
call home_all
ljmp chonchedo
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ktr_duongtron:
CALL QUETLED; DE XEM SO DEM
clr den
MOV P1,#0FFH
ktdtr0: jb chaytron,ktdtr1
call dc_chaytron
ktdtr1: jb dungtron,ktdtr2
call dc_dung_tamthoi_tron
ktdtr2: jb home,ktdtr3
call home_all
ktdtr3: jb chaythang,ktdtr4
call chaytoi
ktdtr4: jb dungthang,ktdtr5
call chaylui
ktdtr5: ljmp chonchedo
chongdoi:
Mov R7,#30
lap: Dec R7
Cjne r7,#0,lap
Ret
;################################################# ##
dc_chay:
call tittit
setb hoquang_on ; bat ho quang
back1:
jb home,skip1
call home_all
skip1: jb dungthang,skip2
call dc_dung_tamthoi_thang ; kt xem co nhan Stop hay ko ?
skip2: jb s2,skip3
call ve_hometd ; kt xem co dung s2 ko ?
skip3: mov r7,#4
mov A,#11111110b
begin: mov p1,A
call delay_ra
rl A
DJNZ r7,begin ; xuat du 4 bit, roi quay lai begin de nap lai
ljmp back1
chaytoi:
clr hoquang_on ; tat ho quang
jb s2,skip4
call tittit ; kt xem co dung s2 ko ?
skip4: mov r7,#4
mov A,#11111110b
begin11:
mov p1,A
call delay_fast
rl A
DJNZ r7,begin11 ; xuat du 4 bit, roi quay lai begin de nap lai
ret
chaylui:
clr hoquang_on ; tat ho quang
jb s1,skip5
call tittit
skip5: mov r7,#4
mov A,#11110111b
begin12: mov p1,A
call delay_fast
rr A
DJNZ r7,begin12 ; xuat du 4 bit, roi quay lai begin de nap lai
ret
dc_chaytron:
call tittit
lap8:
jb dungtron,skip6
call dc_dung_tamthoi_tron
skip6: jnb home,home_all
setb hoquang_on ; bat ho quang
jb s4,skip7
call ve_hometrontd ; kt xem co dung s2 ko ?
skip7 mov r4,#4
mov A,#11101111b
begin9 :mov p1,A
call delay_ra
rl A
DJNZ r4,begin9 ; xuat du 4 bit, roi quay lai begin de nap lai
ljmp lap8
;***********************************************
home_all:
call tittit
clr hoquang_on
xet3:
jnb s1,run_cir
mov r4,#4
mov A,#11110111b
begin3: mov p1,A
call delay_fast
rr A
DJNZ r4,begin3
ljmp xet3
run_cir:
call tittit
clr hoquang_on
xet4:
jnb s3,dc_dung_luon ; kiem tra xem co dung CTHT S1
mov r4,#4
mov A,#01111111b
begin4: mov p1,A
call delay_ve
rr A
DJNZ r4,begin4
ljmp xet4
ljmp chonchedo
ve_hometrontd:
clr hoquang_on
call tittit
call DEMSP
xet1:
jnb s3,dc_dung_luon ; kiem tra xem co dung CTHT S3
mov r4,#4
mov A,#01111111b
begin1: mov p1,A
call delay_ve
rr A
DJNZ r4,begin1
ljmp xet1
ve_hometd:
clr hoquang_on
call tittit
call DEMSP
xet2:
jnb s1,dc_dung_luon ; kiem tra xem co dung CTHT S1
mov r4,#4
mov A,#11110111b
begin2 :mov p1,A
call delay_fast
rr A
DJNZ r4,begin2
ljmp xet2
;**********************************************
dc_dung_luon:
mov p1,#0ffh; xoa het DL kich
clr hoquang_on ; tat ho quang
mov r7,#5
tr: call tittit
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
djnz r7,tr
ljmp chonchedo
dc_dung_tamthoi_thang:
clr hoquang_on ; tat ho quang
call tittit
mov p1,#0ffh
test: jb home,skip8
call home_all
skip8: jb chaythang,skip9
call dc_chay ; kiem tra xem co bam chay tro lai ko ?
skip9: ljmp test
dc_dung_tamthoi_tron:
clr hoquang_on ; tat ho quang
call tittit
mov p1,#0ffh
test2: jb home,skip10
call home_all
skip10: jb chaytron,skip11
call dc_chaytron ; kiem tra xem co bam chay tro lai ko ?
skip11: ljmp test2
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;XU LY LED 7
DEMSP:
INC CNT; TANG BIEN DEM
MOV A,CNT
CJNE A,#100,EXIT
MOV CNT,#0
INC TRAM
MOV A,TRAM
CJNE A,#10,EXIT ; NEU BANG 1000 THI BAO LA KO THE TANG DC NUA
CALL NHAPNHAY
EXIT: RET
QUETLED:
CALL DOISO
MOV A,CHUC
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
CALL DELAY
SETB P2.1
MOV A,DONVI
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
CALL DELAY
SETB P2.0
MOV A,TRAM
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
CALL DELAY
SETB P2.2
RET
DOISO:
PUSH ACC
PUSH B
MOV A,CNT
MOV B,#10
DIV AB
MOV CHUC,A
MOV DONVI,B
POP B
POP ACC
RET
DELAY:
MOV R0,#100
DJNZ R0,$
RET
;**********************************************
delay_fast:
Push 03
mov tmod,#10h
mov th1,#high(-2000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-2000)
setb tr1
clr tf1
jnb tf1,$
pop 03
ret
;#############################################
tittit:
setb chuong
call delay_chuong
clr chuong
call delay_chuong
call delay_chuong
setb chuong
call delay_chuong
clr chuong
ret
;############################################
NHAPNHAY:
clr hoquang_on ; tat ho quang
mov r1,#10
COMEBACK:
CALL TITTIT
mov p0,#10010000B
CLR P2.0
CLR P2.1
CLR P2.2
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
SETB P2.0
SETB P2.1
SETB P2.2
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
djnz r1,COMEBACK
CALL CHONCHEDO
;**********************************************
;so0:
; mov p0,#11000000b
;CLR P2.0
;CLR P2.1
; CLR P2.2
; ret
;so1:
; mov p0,#10111111b
; CLR P2.0
; CLR P2.1
; CLR P2.2
; ret
;************************************************* *
DELAY_XET:
Mov R7,#20
back: Dec R7
Cjne r7,#0,back
Ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$
delay_chuong:
push 03
mov tmod,#10h
mov th1,#high(-50000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-50000)
setb tr1
clr tf1
jnb tf1,$
pop 03
ret
delay_ra:
Push 01
mov tmod,#10h
mov th1,#high(-7000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-7000)
setb tr1
clr tf1
jnb tf1,$
pop 01
ret
delay_ve:
Push 01
mov tmod,#10h
mov th1,#high(-6000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-6000)
setb tr1
clr tf1
jnb tf1,$
pop 01
ret
MALED:
DB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
end
Đây là chương trình điều khiển 2 động cơ bước. Trong đó có 3 led 7 đoạn dùng để đếm sản phẩm từ 000 đến 999.
Chương trình có 2 chế độ điều khiển:
-Chạy đường thẳng
-Chạy đường tròn (Mâm quay)
*Ở chế độ đường thẳng:
Nhấn chạy thì ĐC sẽ chạy cho đến khi nào đụng S2 thì sẽ về home, sau đó Sản Phẩm sẽ tăng lên 1 (Hiện ở led 7), cứ như vậy cho đến khi bằng 999 thì báo titit không thể tăng được nữa.
*Ở chế độ đường tròn:
Cũng như vậy nhưng CTHT là S3.
Hỏi:
Ở chế độ đường tròn thì sản phẩm tăng đến 29 thì chương trình treo hoàn toàn. Nút nhấn không nhấn được nữa.
Ở chế độ đường thẳng thì sản phẩm tăng đến 9 thì tự đổi sang chế độ đường tròn, bấm nút chế độ thì không thể đổi chế độ lại được, nhưng vẫn chạy ở chế độ đường tròn được.
Bình thường khi chưa gắn động cơ, cho chay không để thừ thì 7805 rất nóng. Nhưng khi gắn động cơ vào thì 7805 còn ấm nhưng DIOD CẦU lại nóng. Tại sao vậy ?
Nguyên nhân nào 7805 nóng, điện áp T xài là 12V.
Nguyên nhân nào Diod Cầu nóng, Diod cầu T xài 5A và T xài nguồn 12V 5A.
; XU LY THEM LED 7 DEM SP
include reg_51.pdf
org 0000h
ljmp main
main:
; DN cac bit
chaythang bit p3.6
dungthang bit p3.5
den bit p3.0
chaytron bit p3.3
dungtron bit p3.2
home bit p3.1
chedo bit p3.4
chuong bit p3.7
s1 bit p2.4
s2 bit p2.5
s3 bit p2.6
s4 bit p2.7
hoquang_on bit p2.3
;################################################# #########
; DN cac bien
CNT EQU 7FH
DONVI EQU 7EH
CHUC EQU 7DH
TRAM EQU 7CH
bchedo bit 7BH
;################################################# #########
; Xoa cac bien, bit, port
mov p1,0ffh
mov p3,0ffh
setb chedo
clr chuong
clr hoquang_on
setb s1
setb s2
SETB S3
SETB S4
setb chaythang
setb dungthang
setb home
setb bchedo
clr hoquang_on
MOV P2,#0FFH
MOV CNT,#0
MOV DPTR,#MALED
MOV CHUC,#0
MOV DONVI,#0
MOV TRAM,#0
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
chonchedo:
clr hoquang_on
jb chedo,ktchedo
call chongdoi
call tittit
cpl bchedo
;ljmp ktchedo
;***********************************
ktchedo:
jnb bchedo,ktr_duongtron
jb bchedo, ktr_duongthang
;call ktchedo
;********************************************
ktr_duongthang:
CALL QUETLED; DE XEM SO DEM
setb den
ktdt0: jb chaythang,ktdt1
call dc_chay
ktdt1: jb dungthang,ktdt2
call dc_dung_tamthoi_thang
ktdt2: jb home,chonchedo
call home_all
ljmp chonchedo
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ktr_duongtron:
CALL QUETLED; DE XEM SO DEM
clr den
MOV P1,#0FFH
ktdtr0: jb chaytron,ktdtr1
call dc_chaytron
ktdtr1: jb dungtron,ktdtr2
call dc_dung_tamthoi_tron
ktdtr2: jb home,ktdtr3
call home_all
ktdtr3: jb chaythang,ktdtr4
call chaytoi
ktdtr4: jb dungthang,ktdtr5
call chaylui
ktdtr5: ljmp chonchedo
chongdoi:
Mov R7,#30
lap: Dec R7
Cjne r7,#0,lap
Ret
;################################################# ##
dc_chay:
call tittit
setb hoquang_on ; bat ho quang
back1:
jb home,skip1
call home_all
skip1: jb dungthang,skip2
call dc_dung_tamthoi_thang ; kt xem co nhan Stop hay ko ?
skip2: jb s2,skip3
call ve_hometd ; kt xem co dung s2 ko ?
skip3: mov r7,#4
mov A,#11111110b
begin: mov p1,A
call delay_ra
rl A
DJNZ r7,begin ; xuat du 4 bit, roi quay lai begin de nap lai
ljmp back1
chaytoi:
clr hoquang_on ; tat ho quang
jb s2,skip4
call tittit ; kt xem co dung s2 ko ?
skip4: mov r7,#4
mov A,#11111110b
begin11:
mov p1,A
call delay_fast
rl A
DJNZ r7,begin11 ; xuat du 4 bit, roi quay lai begin de nap lai
ret
chaylui:
clr hoquang_on ; tat ho quang
jb s1,skip5
call tittit
skip5: mov r7,#4
mov A,#11110111b
begin12: mov p1,A
call delay_fast
rr A
DJNZ r7,begin12 ; xuat du 4 bit, roi quay lai begin de nap lai
ret
dc_chaytron:
call tittit
lap8:
jb dungtron,skip6
call dc_dung_tamthoi_tron
skip6: jnb home,home_all
setb hoquang_on ; bat ho quang
jb s4,skip7
call ve_hometrontd ; kt xem co dung s2 ko ?
skip7 mov r4,#4
mov A,#11101111b
begin9 :mov p1,A
call delay_ra
rl A
DJNZ r4,begin9 ; xuat du 4 bit, roi quay lai begin de nap lai
ljmp lap8
;***********************************************
home_all:
call tittit
clr hoquang_on
xet3:
jnb s1,run_cir
mov r4,#4
mov A,#11110111b
begin3: mov p1,A
call delay_fast
rr A
DJNZ r4,begin3
ljmp xet3
run_cir:
call tittit
clr hoquang_on
xet4:
jnb s3,dc_dung_luon ; kiem tra xem co dung CTHT S1
mov r4,#4
mov A,#01111111b
begin4: mov p1,A
call delay_ve
rr A
DJNZ r4,begin4
ljmp xet4
ljmp chonchedo
ve_hometrontd:
clr hoquang_on
call tittit
call DEMSP
xet1:
jnb s3,dc_dung_luon ; kiem tra xem co dung CTHT S3
mov r4,#4
mov A,#01111111b
begin1: mov p1,A
call delay_ve
rr A
DJNZ r4,begin1
ljmp xet1
ve_hometd:
clr hoquang_on
call tittit
call DEMSP
xet2:
jnb s1,dc_dung_luon ; kiem tra xem co dung CTHT S1
mov r4,#4
mov A,#11110111b
begin2 :mov p1,A
call delay_fast
rr A
DJNZ r4,begin2
ljmp xet2
;**********************************************
dc_dung_luon:
mov p1,#0ffh; xoa het DL kich
clr hoquang_on ; tat ho quang
mov r7,#5
tr: call tittit
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
djnz r7,tr
ljmp chonchedo
dc_dung_tamthoi_thang:
clr hoquang_on ; tat ho quang
call tittit
mov p1,#0ffh
test: jb home,skip8
call home_all
skip8: jb chaythang,skip9
call dc_chay ; kiem tra xem co bam chay tro lai ko ?
skip9: ljmp test
dc_dung_tamthoi_tron:
clr hoquang_on ; tat ho quang
call tittit
mov p1,#0ffh
test2: jb home,skip10
call home_all
skip10: jb chaytron,skip11
call dc_chaytron ; kiem tra xem co bam chay tro lai ko ?
skip11: ljmp test2
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;XU LY LED 7
DEMSP:
INC CNT; TANG BIEN DEM
MOV A,CNT
CJNE A,#100,EXIT
MOV CNT,#0
INC TRAM
MOV A,TRAM
CJNE A,#10,EXIT ; NEU BANG 1000 THI BAO LA KO THE TANG DC NUA
CALL NHAPNHAY
EXIT: RET
QUETLED:
CALL DOISO
MOV A,CHUC
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
CALL DELAY
SETB P2.1
MOV A,DONVI
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
CALL DELAY
SETB P2.0
MOV A,TRAM
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
CALL DELAY
SETB P2.2
RET
DOISO:
PUSH ACC
PUSH B
MOV A,CNT
MOV B,#10
DIV AB
MOV CHUC,A
MOV DONVI,B
POP B
POP ACC
RET
DELAY:
MOV R0,#100
DJNZ R0,$
RET
;**********************************************
delay_fast:
Push 03
mov tmod,#10h
mov th1,#high(-2000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-2000)
setb tr1
clr tf1
jnb tf1,$
pop 03
ret
;#############################################
tittit:
setb chuong
call delay_chuong
clr chuong
call delay_chuong
call delay_chuong
setb chuong
call delay_chuong
clr chuong
ret
;############################################
NHAPNHAY:
clr hoquang_on ; tat ho quang
mov r1,#10
COMEBACK:
CALL TITTIT
mov p0,#10010000B
CLR P2.0
CLR P2.1
CLR P2.2
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
SETB P2.0
SETB P2.1
SETB P2.2
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
call delay_chuong
djnz r1,COMEBACK
CALL CHONCHEDO
;**********************************************
;so0:
; mov p0,#11000000b
;CLR P2.0
;CLR P2.1
; CLR P2.2
; ret
;so1:
; mov p0,#10111111b
; CLR P2.0
; CLR P2.1
; CLR P2.2
; ret
;************************************************* *
DELAY_XET:
Mov R7,#20
back: Dec R7
Cjne r7,#0,back
Ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$
delay_chuong:
push 03
mov tmod,#10h
mov th1,#high(-50000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-50000)
setb tr1
clr tf1
jnb tf1,$
pop 03
ret
delay_ra:
Push 01
mov tmod,#10h
mov th1,#high(-7000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-7000)
setb tr1
clr tf1
jnb tf1,$
pop 01
ret
delay_ve:
Push 01
mov tmod,#10h
mov th1,#high(-6000); Timer0 hoat dong o che do 16 bit ko nap lap lai, gia tri dat cho Timer la 65536
mov tl1,#low(-6000)
setb tr1
clr tf1
jnb tf1,$
pop 01
ret
MALED:
DB 11000000B,11111001B,10100100B,10110000B,10011001B, 10010010B,10000010B,11111000B,10000000B,10010000B
end
Comment