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)
In bài này
Previous
Next Post »

2 comments

Click here for comments
chimsedinang
admin
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

Reply
avatar
7/5/12 ×

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

Reply
avatar

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!! ConversionConversion EmoticonEmoticon

       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

THƯ MỤC KHO TÀI LIỆU MIỄN PHÍ ECHIPKOOL

Code 8051 - ASM Code 8051 - C Code AVR - C Code led sao băng Code PIC - C Điện tử cơ bản điện tử viễn thông Đo Nhiệt Độ DS18B20 + LCD Đo Nhiệt Độ LM35 + LCD Đo Nhiệt Độ LM35 + Led 7 thanh Đo tốc độ động cơ Động cơ robo Ebook Đại Học ebook điện tử Ebook đồ án Học Orcad Học Protues Hồng ngoại Lập Trình 8051 Lập Trình AVR lập trình c++ Lập Trình Led Quảng Cáo lập trình PIC Lập trình Robot Lập trình VHDL Lcd16x2 Led Clock Led Quay Led RGB Mạch 7seg Mạch Amply.Mạch Loa Mạch Cảm Biến Mạch cube Mạch Đếm Sản Phẩm Mạch điện cơ bản Mạch điện hay Mạch Điện Ứng Dụng Mạch đọc file nhạc MP3 dùng Atmega 8 Mạch Động Cơ Mạch đồng hồ Mạch đồng hồ LCD Mạch đồng hồ Matrix Mạch giao thông Mạch in Mạch khóa số điện tử Mạch Led đơn Mạch Led Quảng Cáo Mạch Led Vumeter Mạch Ma trận Phím Mạch Matrix Mạch nạp Mạch nguồn Mạch Nút Bấm Mạch RS232 Mạch RS485 Mạch thu phát Mạch tổ hợp MSI Mạch trái tim Mạch truyền điện không dây Mạch Vi điều khiển Module Bluetooth Module Sim Module Sim548 Motor Nhiệt độ - Độ ẩm oscilloscope Phần mềm điện tử Phần Mềm Diệt Viruts Phần Mềm Hay Phần Mềm Led Quảng Cáo Phần mềm vi tính robocon Rule robocon Sạc Acquy Sản Phẩm Thương Mại Sáng tạo Smart Home Tài liệu Điện Tử Tranzitor Tụ điện TUT - 8051 - ASM TUT - 8051 - KeilC UART Ứng Dụng Led Quảng Cáo Ứng dụng USB USB TO COM Vi điều khiển - Ứng dụng Vi mạch số VOM Wifi ESP8266