Mạch Khóa Số Điện Tử Mạch Đếm Sản Phẩm Mạch Đèn giao thông Ngã Tư Mạch Trái Tim Final Mạch Trái Tim Final Mạch Trái Tim I Love U

May 3, 2012

Vi điều khiển 89C52 + Nút bấm + TZT + 7SEG + Led đơn

Mạch Vi điều khiển sử dung atmel 89C52 kết hợp 3 nút bấm cùng với 3 TZT nối vào 3 chân VĐK.điều khiển 3 led sáng tắt hiển thị số nút đã bấm ra led 7 đoạn,đếm thời gian 1 phút cho 1 nút bấm để chuyển sang nút kế tiếp.Yêu cầu khởi động 3 led đều tắt,nhấn nút 1 chân TranZiTor 1 được set bit lên 1 và đèn 1 sáng,hiển thị số 1 ra led 7 đoạn,đếm 60s...bấm nút 2 đèn 1 tắt đèn 2 sáng hiển thị số 2,đếm 60s,nhấn nút 3 đèn 3 sáng hiển thị số 3 đếm 60s..kết thúc..



SƠ ĐỒ NGUYÊN LÝ:


SƠ ĐỒ MẠCH MÔ PHỎNG TRÊN PROTUES



CODE CHƯƠNG TRÌNH ASM:


ORG 00H;BAN QUYEN CHIPKOOL
MAIN:
CLR P1.0
CLR P1.1
CLR P1.2
KEY0:
JNB P1.5,KEY0OK
SJMP KEY1
KEY0OK:
CALL CT1

KEY1:
JNB P1.6,KEY1OK
SJMP KEY2
KEY1OK:
CALL CT2

KEY2:
JNB P1.7,KEY2OK
SJMP KEY0
KEY2OK:
CALL CT3
JMP MAIN


CT1:
SETB P1.0
CLR P1.1
CLR P1.2
MOV P3,#11111001B
CALL DELAYLED 
MOV R0,#0
LAP:CALL HIENTHI7SEG
INC R0
CJNE R0,#60,LAP
CLR P1.0
MOV P3,#0FFH
RET


CT2:
CLR P1.0
SETB P1.1
CLR P1.2
MOV P3,#10100100B
CALL DELAYLED 
MOV R0,#0
LAPD:CALL HIENTHI7SEG
INC R0
CJNE R0,#60,LAPD
CLR P1.1
MOV P3,#0FFH
RET




CT3:
CLR P1.0
CLR P1.1
SETB P1.2
MOV P3,#10110000B
CALL DELAYLED 
MOV R0,#0
LAP2:CALL HIENTHI7SEG
INC R0
CJNE R0,#60,LAP2
CLR P1.2
MOV P3,#0FFH
RET




HIENTHI7SEG:
MOV R7,#20
QUET:MOV P2,#00H
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P2,A
CALL DELAY60
SETB P1.3
CALL DELAY60
CLR P1.3
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
SETB P1.4
CALL DELAY60
CLR P1.4
CALL DELAY60
RET
DJNZ R7,QUET


MALED:DB 11000000B,11111001B,10100100B,10110000B,10011001B,10010010B,10000010B,11111000B,10000000B,10010000B
RET


DELAYLED:
MOV R5,#200
LAPXI:
MOV R6,#100
LAPYI:
NOP
DJNZ R6,LAPYI
DJNZ R5,LAPXI
RET




DELAY60:
MOV R3,#100
LAPBB:
MOV R2,#50
LAPAA:
NOP
NOP
NOP
DJNZ R2,LAPAA
DJNZ R3,LAPBB
RET
END


TRỌN BỘ TẤT CẢ FILE TẢI VỀ.NẾU HAY THANKS CHIP NA^^
(pass:chipkool.tk)

2 comments:

chimsedinang said...
7/5/12

chương trinh tham khảo cho bai trên:
// Note: program only for reference
ORG 00H
MAIN:
CLR P1.0
CLR P1.1
CLR P1.2
CLR P1.4 ;clr speaker
;MOV P0,#0C0H
;MOV P2,#0C0H
MOV P3,#0C0H
NUT_1:
JB P1.5,NUT_2 ; if P1.5=1, jump to NUT_2
SETB P1.4 ; ;set speaker
CAll DELAY
CAll DELAY
CAll DELAY
CLR P1.4
CALL CT_1 ; if P1.5=0, call CT_1

NUT_2:
JB P1.6,NUT_3 ; if P1.6=1, jump to NUT_3
SETB P1.4 ; ;set speaker
CAll DELAY
CAll DELAY
CAll DELAY
CLR P1.4
CALL CT_2 ; if P1.6=0, call CT_2

NUT_3:
JB P1.7,NUT_1 ; if P1.7=1, jump to NUT_1
SETB P1.4 ; ;set speaker
CAll DELAY
CAll DELAY
CAll DELAY
CLR P1.4
CALL CT_3 ; if P1.6=0, call CT_3
MOV P3,#0C0H ;erase P3
CALL DELAY
JB P1.6,$ ;if P1.6=1, wait... a here
SETB P1.1 ;if P1.6=0, P1.1=1
JB P1.5,$ ;if P1.5=1, wait... a here
SETB P1.0 ;if P1.5=0, P1.01=1
SJMP $
EXIT:
;JMP MAIN
CT_1: ;function: subroutine

MOV P3,#11111001B ; number one
CALL SEG ; call 7-segment, 1 minute
SETB P1.0 ; after P1.0=1, P1.1=0, P1.2=0
CLR P1.1
CLR P1.2

RET
CT_2:

MOV P3,#10100100B ; number two
CALL SEG
SETB P1.1
CLR P1.0
CLR P1.2

RET
CT_3:
MOV P3,#10110000B ; number three
CALL SEG
SETB P1.2
CLR P1.1
CLR P1.0

RET
SEG:
MOV R0,#0 ; R0=0
LAP:
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
CALL Tre_1S
INC R0 ; increase R0 up to 1
CJNE R0,#60,LAP ; compare R0 with 60. If R0 not equal 60, jump to LAP
MOV P0,#0FFH
MOV P2,#0FFH
RET
Tre_1MINU:
MOV R1,#60 ;1MIN=60S=60.1000MS=60.250.4.1MS
LAP_1:
CALL Tre_1S
DJNZ R1,LAP_1
RET
Tre_1S:
MOV R2,#250
LAP_2:
MOV R3,#4
LAP_3:
MOV TMOD,#01H ;timer0 che do 1
MOV TH0,#0FCH
MOV TL0,#18H
SETB TR0

JNB TF0,$
CLR TF0
CLR TR0
DJNZ R3,LAP_3
DJNZ R2,LAP_2

RET
DELAY:
MOV R7,#250
loop:
MOV R6,#200
loop1:
NOP
NOP
NOP
DJNZ R6,loop1
DJNZ R7,loop
RET
MALED:DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
END

ChipKool_Online said...
7/5/12

hehehe,anh Long to đây mà..hihi^^,thanks anh đóng góp code nhé..^^

Post a Comment

Bạn đọc hãy giúp chúng tôi xây dựng cộng đồng bằng cách để lại bình luận, chúng tôi luôn đón nhận mọi ý kiến của các bạn:
» Bình luận nghiêm túc và không chứa các liên kết quảng cáo.
» Vui lòng không Spam nhận xét với mọi hình thức.
» Rất mong bạn đề tên cho nhận xét của chính mình - Bằng cách chọn vào Tên/URL và điền tên bạn vào (Phần URL có thể bỏ trống ).

- Bạn có thể chèn Link nhạc (NCT), video(Youtube),Hình ảnh vào comment bằng cú pháp:
+ [youtube] Link video Youtube [/youtube].
+ [img] Link ảnh( định dạng PNG, JPG,GIF) [/img]
+Chèn link liên kết: <a href="LINK" rel="nofollow">Name</a>
-Bạn copy mã bên cạnh biểu tượng chèn vào nhận xét để bày tỏ cảm xúc!!

:) :( :)) :(( =)) =D> :D :P