ai giúp em cái đồ án vđk với.thiết kế đồng hồ hiển thị ngày tháng năm và giờ phút giây hiển thị ở 2 chế độ dùng với 8 led 7 thanh.có nguồn dự phòng.có phím chỉnh thời gian.nghĩa là dùng 1 chế độ để hiển thị ngày tháng năm.chế độ còn lại để hiển thị giờ phút giây.ai có cái đồ án nào cho mình tham khảo với nhé.thanks
Thông báo
Collapse
No announcement yet.
Các Đề Tài VDK 8051
Collapse
X
-
các project dùng led 7 seg(7 đoạn)
để góp bài với mục đích giúp đỡ như chủ topic HoangPhat góp 3 bài dùng led 7 seg
mạch đồng hồ đơn giản dùng 89sxx
đây là code
Code:;************************************************* ** ;CHUONG TRINH DIEU KHIEN HIEN THI DEM GIO - PHUT - GIAY ;(LED1,2 DEM GIAY, LED3,4 DEM PHUT, LED5,6 DEM GIO) ;************************************************* ** ;CAC DOAN (A-G) -> PORT0. CHON LED 7 DOAN (8 LED) -> PORT1 ;NUT MODE -> P3.0, UP -> P3.1, DOWN -> P3.2 ;************************************************* ** GIAY EQU R2 PHUT EQU R3 GIO EQU R4 B_GIAY EQU R7 B_MODE EQU R6 MODE BIT P3.0 UP BIT P3.1 D0WN BIT P3.2 ORG 000H LJMP MAIN ORG 00BH LJMP ISR_T0 MAIN: MOV TMOD,#01H ;CHE DO TIMER - MODE 1 MOV TH0,#3CH ;THOI GIAN TIMER - 50MS MOV TL0,#0B0H CLR TF0 ;XOA CO TRAN SETB TR0 ;CHAY TIMER MOV IE,#82H ;CHO PHEP NGAT TIMER0 MOV B_MODE,#0 TD: MOV GIO,#0 ;NAP GIA TRI GIO BAN DAU X4: MOV PHUT,#0 ;NAP GIA TRI PHUT BAN DAU X3: MOV GIAY,#0 ;NAP GIA TRI GIAY BAN DAU MOV B_MODE,#0 X2: MOV B_GIAY,#0 ;NAP GIA TRI BAN DAU CHO BIEN DEM SO LAN NGAT TIMER LCALL HEX_BCD ;DOI GIA TRI THOI GIAN -> BCD -> MA 7 DOAN LCALL BCD_7DOAN X1: LCALL HIENTHI ;HIEN THI THOI GIAN JNB MODE,ADJ ;KIEM TRA NUT MODE - DUNG -> PHAN CHINH THOI GIAN ADJ CJNE B_GIAY,#20,X1 ;KIEM TRA SO LAN NGAT TIMER - 20 LAN x 50MS = 1S INC GIAY ;TANG GIAY CJNE GIAY,#60,X2 ;SO SANH DU 60 GIAY - CHUA DU -> QUAY LAI HIEN THI INC PHUT ;TANG PHUT CJNE PHUT,#60,X3 ;SO SANH DU 60 PHUT - CHUA DU -> QUAY LAI HIEN THI INC GIO ;TANG GIO CJNE GIO,#24,X4 ;SO SANH DU 60 GI0 - CHUA DU -> QUAY LAI HIEN THI SJMP TD ;DU -> QUAY LAI TU DAU ;************************************************* ** ;CHUONG TRINH CON DOI HEX -> BCD (TACH SO HEX) ;************************************************* ** ;R2 -> 11H & 10H, R3 -> 13H & 12H, R4 -> 15H & 14H ;************************************************* ** HEX_BCD: MOV R0,#02 ;NAP DIA CHI DAU CUA VUNG NHO CHUA SO HEX MOV R1,#10H ;NAP DIA CHI DAU CUA VUNG NHO CHUA SO BCD H1: MOV B,#10 ; MOV A,@R0 ;LAY SO HEX CAN CHUYEN DOI DIV AB ;CHIA 10 DE TACH RIENG BYTE THAP VA BYTE CAO MOV @R1,B ;CAT BYTE THAP INC R1 ;TANG DIA CHI VUNG NHO CHUA SO BCD MOV @R1,A ;CAT BYTE CAO INC R0 ;TANG DIA CHI VUNG NHO CHUA SO HEX INC R1 ;TANG DIA CHI VUNG NHO CHUA SO BCD CJNE R0,#05H,H1 ;KIEM TRA HOAN TAT VIEC CHUYEN DOI RET ;************************************************* ** ;CHUONG TRINH CON DOI SO BCD -> MA 7 DOAN ;************************************************* ** ;SO BCD (10H - 15H) -> MA 7 DOAN (20H - 25H) ;************************************************* ** BCD_7DOAN: MOV DPTR,#200H ;NAP DIA CHI VUNG CHUA MA 7 DOAN MOV R0,#10H ;NAP DIA CHI DAU TIEN CUA VUNG NHO CHUA SO BCD MOV R1,#20H ;NAP DIA CHI DAU TIEN CUA VUNG NHO CHUA MA 7 DOAN B1: MOV A,@R0 ;GIAI MA MOVC A,@A+DPTR MOV @R1,A INC R0 ;TANG DIA CHI VUNG NHO CHUA SO BCD INC R1 ;TANG DIA CHI VUNG NHO CHAU MA 7 DOAN CJNE R0,#16H,B1 ;KEM TRA HOAN TAT VIEC GIAI MA RET ;************************************************* ** ;CHUONG TRINH CON HIEN THI (20H - 25H) ;************************************************* ** HIENTHI: MOV R0,#20H ;DIA CHI DAU TIEN CUA VUNG CHUA DU LIEU CAN HIEN THI MOV A,#0FEH ;MA QUET DAU TIEN HT1: MOV P0,@R0 ;LAY DU LIEU CAN HIEN THI MOV P1,A ;XUAT MA QUET LCALL DELAY MOV P1,#0FFH ;TAT LED DE CHONG LEM LCALL DELAY INC R0 ;CHUYEN SANG DIA DIA KE TIEP RL A ;THAY DOI MA QUET CJNE A,#0BFH,HT1 ;KIEM TRA QUET XONG CHUA - CHUA XONG -> QUAY VE LAM TIEP RET ;TRO LAI KHI DA QUET VA HIEN THI XONG ;************************************************* ** ISR_T0: ;ISR TIMER0 - 50MS CLR TR0 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H INC B_GIAY ;TANG BIEN DEM SO LAN NGAT - 1 LAN = 50MS SETB TR0 RETI ;************************************************* ** ADJ: ;CHUONG TRINH CON XU LY NUT MODE LCALL HIENTHI JNB MODE,ADJ ;KIEM TRA NHU MODE DA DUOC THA RA HAY CHUA INC B_MODE ;TANG SO LAN NHAN NUT MODE CJNE B_MODE,#4,ADJ_GPG ;KIEM TRA SO LAN NHAT NUT MODE MOV B_MODE,#0 ;DU 3 LAN -> TRO LAI TU DAU MOV B_GIAY,#0 SJMP X2 ;************************************************* ** ADJ_GPG: LOOP1: MOV 76H,#10 ;SO LAN CHOP TAT CAP LED DANG DUOC CHINH LOOP2: MOV 77H,#0FFH ;SO LAN KIEM TRA NUT NHAN LCALL HEX_BCD LCALL BCD_7DOAN LOOP: LCALL HIENTHI CJNE B_GIAY,#20,Z1 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NUT NHAN LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY Z1: JNB UP,TANG ;KIEM TRA NUT UP JNB D0WN,GIAM ;KIEM TRA NUT DOWN JNB MODE,ADJ ;KIEM TRA NUT MODE DJNZ 77H,LOOP ;GIAM SO LAN KIEM TRA NUT NHAN MOV 77H,#0FFH ;NAP SO LAN TAT (THOI GIAN TAT) CJNE B_MODE,#1,SS11 ;KIEM TRA NHAN MODE 1 LAN - SAI -> KIEM TRA TIEP SS11 MOV 24H,#0FFH ;DUNG - NHAN MODE 1 LAN -> NAP GIA TRI TAT LED... MOV 25H,#0FFH ;CHO PHAN "GIO" SJMP TAT ;HIEN THI TRANG THAI LED SS11: CJNE B_MODE,#2,SS12 ;KIEM TRA NHAN MODE 2 LAN - SAI -> KIEM TRA TIEP SS12 MOV 22H,#0FFH ;DUNG - NHAN MODE 2 LAN -> NAP GIA TRI TAT LED... MOV 23H,#0FFH ;CHO PHAN "PHUT" SJMP TAT ;HIEN THI TRANG THAI LED SS12: ;NHAN MODE 3 LAN -> NAP GIA TRI TAT LED... MOV 20H,#0FFH ;CHO PHAN "GIAY" MOV 21H,#0FFH TAT: LCALL HIENTHI ;HIEN THI CJNE B_GIAY,#20,Z2 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NUT NHAN LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY Z2: JNB UP,TANG ;KIEM TRA NUT UP JNB D0WN,GIAM ;KIEM TRA NUT DOWN JNB MODE,ADJ ;KIEM TRA NUT MODE DJNZ 77H,TAT ;GIAM SO LAN TAT (THOI GIAN TAT) DJNZ 76H,LOOP2 ;GIAM SO LAN CHOP TAT CAP LED MOV B_MODE,#0 ;XOA SO LAN NHAN NUT MODE LJMP X2 ;QUAY LAI TANG: LCALL HIENTHI CJNE B_GIAY,#20,Z3 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NHU NHAN LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY Z3: JNB UP,TANG CJNE B_MODE,#1,SS1 INC GIO CJNE GIO,#24,LOOP1 MOV GIO,#0 LOOP11: LJMP LOOP1 SS1: CJNE B_MODE,#2,SS2 INC PHUT CJNE PHUT,#60,LOOP1 MOV PHUT,#0 SJMP LOOP1 SS2: INC GIAY CJNE GIAY,#60,Z5 MOV GIAY,#0 Z5: LJMP LOOP1 GIAM: LCALL HIENTHI CJNE B_GIAY,#20,Z4 ;KIEM TRA SO LAN NGAT - CHUA DU THI KIEM TRA NUT NHAN LJMP TANGGIAY ;DU 20 LAN NGAT -> TANG GIAY Z4: JNB D0WN,GIAM CJNE B_MODE,#01,SS3 DEC GIO CJNE GIO,#0FFH,K1 MOV GIO,#23 K1: LJMP LOOP1 SS3: CJNE B_MODE,#02,SS4 DEC PHUT CJNE PHUT,#0FFH,K2 MOV PHUT,#59 K2: LJMP LOOP1 SS4: DEC GIAY CJNE GIAY,#0FFH,K3 MOV GIAY,#59 K3: LJMP LOOP1 ;************************************************* ** TANGGIAY: MOV B_GIAY,#0 INC GIAY CJNE GIAY,#60,EXIT MOV GIAY,#0 INC PHUT CJNE PHUT,#60,EXIT MOV PHUT,#0 EXIT: LJMP LOOP ;************************************************* ** DELAY: ;CHUONG TRINH CON TAO THOI GIAN TRE 150US MOV 7FH,#50H DJNZ 7FH,$ RET ;************************************************* ** ORG 200H ;VUNG MA 7 DOAN DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
liên lạc với em qua địa chi email: Mob: 01882.076.989
Comment
-
mạch đèn giao thông ứng dụng led 7seg
sau đây em chia sẽ thêm bài đèn giao thông (thấy nhìu người cần bài này)
đây là mạch đèn dùng cho ngã tư
đây là code
Code:org 000H ljmp begin org 30h #define DEN1 P0 #define DEN2 P2 #define TIME1 R4 #define TIME2 R5 #define NUM1 R6 #define NUM2 R7 RED1 BIT P3.0 Y1 BIT P3.1 B1 BIT P3.2 RED2 BIT P3.3 Y2 BIT P3.4 B2 BIT P3.5 BEGIN: ;----------KHOI TAO----- MOV P3,#00H SETB B1 SETB RED2 MOV TIME1,#26 MOV TIME2,#31 MOV NUM1,#1 MOV NUM2,#1 LOOP: DEC TIME1 DEC TIME2 LCALL HIEN_THI LCALL DELAY1S CJNE TIME1,#0,KT_DEN2 CJNE NUM1,#1,KT_NUM1_2 MOV NUM1,#2 MOV TIME1,#6 CLR B1 SETB Y1 LJMP KT_DEN2 KT_NUM1_2: CJNE NUM1,#2,KT_NUM1_3 MOV NUM1,#3 MOV TIME1,#31 CLR Y1 SETB RED1 LJMP KT_DEN2 KT_NUM1_3: MOV NUM1,#1 MOV TIME1,#26 CLR RED1 SETB B1 LJMP KT_DEN2 KT_DEN2: CJNE TIME2,#0,LOOP CJNE NUM2,#1,KT_NUM2_2 MOV NUM2,#2 MOV TIME2,#26 CLR RED2 SETB B2 LJMP LOOP KT_NUM2_2: CJNE NUM2,#2,KT_NUM2_3 MOV NUM2,#3 MOV TIME2,#6 CLR B2 SETB Y2 LJMP LOOP KT_NUM2_3: MOV NUM2,#1 MOV TIME2,#31 CLR Y2 SETB RED2 LJMP LOOP HIEN_THI: MOV A,TIME1 MOV B,#10 DIV AB RL A RL A RL A RL A ADD A,B MOV DEN1,A MOV A,TIME2 MOV B,#10 DIV AB RL A RL A RL A RL A ADD A,B MOV DEN2,A RET DELAY1S: mov r1,#100 noop1: mov r2,#500 noop2: mov r3,#20 noop3: djnz r3,noop3 djnz r2,noop2 djnz r1,noop1 ret END
8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
liên lạc với em qua địa chi email: Mob: 01882.076.989
Comment
-
mạch đếm ứng dụng led 7seg
tiếp theo úp lun bài đếm sản phẩm để các pác có tài liệu ngâm cứu
code
Code:INCLUDE 89c52.MC org 000H ; GAN MO DAU = 000 MOV R0,#0;GAN GIA TRI CHO O1 = = 0 MOV R1,#0 MOV P2,#0H MOV P0,#01000000B MAIN: LCALL QUET_LED LCALL QUET_PHIM LJMP MAIN QUET_LED: ;LAM SANG DEN 1 MOV A,R3 LCALL GIAIMA MOV P2,#00000001b MOV P0,A LCALL DELAY MOV P2,#0; ;LAM SANG DEN 2 MOV A,R2 LCALL GIAIMA MOV P2,#00000010b MOV P0,A LCALL DELAY MOV P2,#0; ;LAM SANG DEN 3 MOV A,R1 LCALL GIAIMA MOV P2,#00000100b MOV P0,A LCALL DELAY MOV P2,#0; ;LAM SANG DEN 4 MOV A,R0 LCALL GIAIMA MOV P2,#00001000b MOV P0,A LCALL DELAY MOV P2,#0; RET QUET_PHIM: JNB P3.3,BUTTON1 JNB P3.2,BUTTON2 JNB P3.1,BUTTON3 JNB P3.0,BUTTON4 RET BUTTON1: WAIT: LCALL QUET_LED JNB P3.3,WAIT CJNE R3,#9,TANG_R3 MOV R3,#0 SJMP END1 TANG_R3: INC R3 END1: RET BUTTON2: WAIT1: LCALL QUET_LED JNB P3.2,WAIT1 CJNE R2,#9,TANG_R2 MOV R2,#0 SJMP WAIT TANG_R2: INC R2 RET BUTTON3: WAIT2: LCALL QUET_LED JNB P3.1,WAIT2 CJNE R1,#9,TANG_R1 MOV R1,#0 SJMP WAIT1 TANG_R1: INC R1 RET BUTTON4: WAIT3: LCALL QUET_LED JNB P3.0,WAIT3 CJNE R0,#9,TANG_R0 MOV R0,#0 SJMP WAIT2 TANG_R0: INC R0 RET GIAIMA: CJNE A,#00h,SO1 MOV A,#0C0H SJMP EXIT SO1: CJNE A,#01H,SO2 MOV A,#0F9H SJMP EXIT SO2: CJNE A,#02H,SO3 MOV A,#0A4H SJMP EXIT SO3: CJNE A,#03H,SO4 MOV A,#0B0H SJMP EXIT SO4: CJNE A,#04H,SO5 MOV A,#99H SJMP EXIT SO5: CJNE A,#05H,SO6 MOV A,#92H SJMP EXIT SO6: CJNE A,#06H,SO7 MOV A,#82H SJMP EXIT SO7: CJNE A,#07H,SO8 MOV A,#0F8H SJMP EXIT SO8: CJNE A,#08H,SO9 MOV A,#80H SJMP EXIT SO9: MOV A,#00010000b EXIT: RET DELAY1S: MOV R1,#10 noop1: MOV R2,#100 noop2: MOV R3,#200 noop3: nop nop djnz r3,noop3 djnz r2,noop2 djnz r1,noop1 ret Delay: Mov R6,#50H ; = = >= > > > gan R6 = #0FFH, 1 chu ki may Kt1jnz R6,Kt1 ; = = >= > > > giam R6 xuong 1, R6 khac 0- > giam tiep Ret ; = = >= > > > ket thuc chuong trinh con end
chúc các pác thành công8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
liên lạc với em qua địa chi email: Mob: 01882.076.989
Comment
-
mạch đòng hồ thời gian thực ứng dùng led 7seg
bài này rất khó em đã ngâm cứu 2 tháng để viết c
ode hoàn chình
nhưng phân chỉnh h em chưa sửa lại các pác ch
ịu khó sửa lại phần này để hoàn thiện hơn
sau đây là hình ảnh cửa nó
đây là mạch đồng hồ đày đủ
đây là 1 đơn vị led 7seg(1 7seg dùng 1 con 595)
đay là mạch dk chính(89s52 và ds1307)
đây là code
Code:INCLUDE 89C52.MC FLAGS DATA 20H LASTREAD BIT FLAGS.0 ACK BIT FLAGS.5 BUS_FLT BIT FLAGS.6 BUSY BIT FLAGS.7 BITCNT DATA 21H BYTECNT DATA 22H SECS DATA 24H MINS DATA 25H HRS DATA 26H DAY DATA 27H DATE DATA 28H MONTH DATA 29H YEAR DATA 2AH TUC DATA 30H CLK BIT P3.2 SHW BIT P3.3 RED BIT P3.4 GRE BIT P3.5 SCL BIT P2.3 SDA BIT P2.2 CONNECT BIT P1.7 ;---------------------------------------------------------------------- ORG 0000H OSC_CONTROL: ACALL START ; GENERATE START CONDITION MOV A, #0D0H ; 1101 0000 ADDRESS + WRITE-BIT ACALL SEND_DATA ; SEND BYTE TO 1307 MOV A,#00H ; ADDRESS BYTE TO REGISTER 00H ACALL SEND_DATA ; SECONDS REGISTER, ALWAYS LEAVE SETB LASTREAD ; REG 00H-BIT #7 = 0 (LOW) ACALL STOP ; IF REG 00H-BIT #7 = 1 CLOCK ACALL START ; OSCILLATOR IS OFF. MOV A,#0D1H ; 1101 0001 ADDRESS + READ-BIT ACALL SEND_DATA ACALL READ_DATA ; READ A BYTE FROM THE 1307 CLR ACC.7 ; CLEAR REG 00H-BIT #7 TO ENABLE OSC_SET: ; OSCILLATOR. PUSH ACC ; SAVE ON STACK ACALL STOP ACALL START MOV A,#0D0H ; SETUP TO WRITE ACALL SEND_DATA MOV A,#00H ; REGISTER 00H ADDRESS ACALL SEND_DATA POP ACC ; GET DATA TO START OSCILLATOR ACALL SEND_DATA ; SEND IT ACALL STOP MAIN: CALL READ_CLOCK ; GET TIME,DATE,ALARM DATA CALL DISPLAY ;CALL CHINH_TIME SJMP MAIN ;-------------------------------------------------------------------------------------------------------------------------------- READ_CLOCK: MOV R1, #SECS ; SECONDS STORAGE LOCATION MOV BYTECNT, #00H CLR LASTREAD CALL START MOV A,#0D0H CALL SEND_DATA MOV A, #00H CALL SEND_DATA CALL STOP CALL START MOV A, #0D1H CALL SEND_DATA LOOP5: MOV A, BYTECNT CJNE A, #09H, NOT_LAST SETB LASTREAD NOT_LAST: CALL READ_DATA MOV @R1, A MOV A, BYTECNT CJNE A, #00H, NOT_FIRST MOV A,@R1 CLR ACC.7 ; ENSURE OSC BIT = 0 (ENABLED) MOV @R1, A NOT_FIRST: INC R1 INC BYTECNT MOV A,BYTECNT CJNE A, #0AH, LOOP5 ; SO SANH VOI SO BCD (0-9) CALL STOP RET ;---------------------------------------------------------------------------------------------------------------------- DISPLAY: ;DAU_CHAM: ; MOV DPTR, #TABLE2 ; mov 30H, 24H ; chuyen gia tri Giay co trong 24H vao thanh ghi tam 30H ; mov a, 30H ; anl a, #0FH ; cho xoa phan byte cao, chi lay phan byte thap ; MOVC A,@A+DPTR ; cjne a, #80H, ss ; so sanh voi gia tri trong TABLE2 ; clr P1.7 ;ss: cjne A, #00H, sec ; so sanh voi gia tri trong TABLE2 ; setb P1.7 SEC: MOV DPTR, #TABLE MOV A, 24H ; nap dia chi luu gia tri Giay ANL A, #0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 24H SWAP A ANL A, #0FH MOVC A,@A+DPTR CALL SEND_595 MIN: MOV A, 25H ; nap dia chi luu gia tri Phut ANL A, #0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 25H SWAP A ANL A, #0FH MOVC A,@A+DPTR CALL SEND_595 HOUR: MOV A, 26H ; nap dia chi luu gia tri Gio ANL A, #0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 26H SWAP A ANL A, #0FH MOV DPTR, #TABLE3 ; bang TABLE3 la chi cho hien thi so hang chuc khi nhay len so 10 MOVC A,@A+DPTR CALL SEND_595 DATE: MOV DPTR, #TABLE5 MOV A, 27H ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 27H SWAP A ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 DAY: MOV DPTR, #TABLE MOV A, 28H ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 28H SWAP A ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 MONTH: MOV DPTR, #TABLE MOV A, 29H ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 29H SWAP A ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 YEAR: MOV DPTR, #TABLE MOV A, 2AH ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 MOV A, 2AH SWAP A ANL A,#0FH MOVC A,@A+DPTR CALL SEND_595 CLR CLK ; xung latch NOP SETB CLK RET ;------------------------------------------------------------------------------------------------------------------------- CHINH_TIME: JB P1.0, N2 ; chinh phut JNB P1.0, L1 L1: JB P1.0, $ INC 25H MOV A, 25H CJNE A, #0AH, min1 ; so sanh voi con so 10 MOV 25H, #10h min1: CJNE A, #1AH, min2 ; so sanh voi con so 20 MOV 25H, #20H min2: CJNE A, #2AH, min3 ; so sanh voi con so 30 MOV 25H, #30H min3: CJNE A, #3AH, min4 ; so sanh voi con so 40 MOV 25H, #40H min4: CJNE A, #4AH, min5 ; so sanh voi con so 50 MOV 25H, #50H min5: CJNE A, #5AH, N1 ; so sanh voi con so 60 MOV 25H, #00H N1: CALL START MOV A,#0D0H CALL SEND_DATA MOV A, #01H CALL SEND_DATA MOV A, 25H CALL SEND_DATA CALL STOP N2: JB P1.1, N4 ; chinh gio JNB P1.1, L2 L2: JB P1.1, $ INC 26H MOV A, 26H CJNE A, #0AH, hour1 ; so sanh voi con so 10 MOV 26H, #10h hour1: CJNE A, #1AH, hour2 ; so sanh voi con so 20 MOV 26H, #20H hour2: CJNE A, #24H, N3 ; so sanh voi con so 24 MOV 26H, #00H N3: CALL START MOV A,#0D0H CALL SEND_DATA MOV A, #02H CALL SEND_DATA MOV A, 26H CALL SEND_DATA CALL STOP N4: RET ;-------------------------------------------------------------------------------------------------------------------------------- READ_DATA: MOV BITCNT, #8 ; SET COUNTER FOR 8-BITS DATA MOV A,#00H SETB SDA NOP loop: SETB SCL MOV C, SDA ; MOVE DATA BIT INTO CARRY RLC A ; ROTATE CARRY-BIT INTO ACC.0 CLR SCL DJNZ BITCNT, loop ; LOOP FOR 8-BITS JB LASTREAD, ackn ; CHECK TO SEE IF THIS IS THE LAST READ CLR SDA ; IF NOT LAST READ SEND ACK-BIT ackn: SETB SCL CLR SCL ; OR NOT ACKNOWLEDGE BIT NOP RET ;----------------------------------------------------------------------------------------------------------------------------------- SEND_DATA: MOV BITCNT, #8 ; SET COUNTER FOR 8-BITS loop4: JNB ACC.7, notone ; CHECK TO SEE IF BIT-7 OF SETB SDA JMP one notone: CLR SDA one: NOP SETB SCL RL A CLR SCL DJNZ BITCNT, loop4 ; LOOP FOR 8-BITS SETB SDA ; SET SDA HIGH TO LOOK FOR SETB SCL CLR ACK JNB SDA, sb_ex ; CHECK FOR ACK OR NOT ACK SETB ACK ; SET ACKNOWLEDGE FLAG FOR ; NOT ACK sb_ex: NOP ; DELAY FOR AN OPERATION CLR SCL NOP ; DELAY FOR AN OPERATION RET ;--------------------------------------------------------------------------------------------------------------------------------------- SEND_595: MOV R0, #8 CLR C loop2: RRC A MOV GRE, C ; DATA CLR SHW ; xung clock NOP SETB SHW DJNZ R0, loop2 RET ;--------------------------------------------------------------------------------------------------------------------- START: SETB BUSY CLR ACK ; OPERATION IS IN PRODATASS CLR BUS_FLT ; CLEAR STATUS FLAGS JNB SCL, fault JNB SDA, fault SETB SDA NOP SETB SCL CLR SDA NOP CLR SCL NOP RET fault: SETB BUS_FLT NOP RET ;------------------------------------------------------------------------------------------------------------------------- STOP: CLR SDA NOP SETB SCL SETB SDA CLR BUSY NOP RET ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ;((((((((((((((((((((((((((((((((((((((((((((((((((((( END ))))))))))))))))))))))))))))))))))))))))))))))))) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ;(((((((((((((((((((((((((((((((((((((((((((((((COMMUNICATION PC2 ))))))))))))))))))))))))))))))))))))))))))) ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ;--------------------------------------------------------------------------------------------------------------------------- TABLE: ;DATA CHO PHUT VA GIAY 60 GIAY VA 60 PHUT ; 0 1 2 3 4 5 6 7 8 9 DB 11111100B,01100000B,11011010B,11110010B,01100110B,10110110B,10111110B,11100000B,11111110B,11110110B TABLE2: ;DATA CHO LED NHAY DB 80h, 00h, 80h, 00h, 80h, 00h, 80h, 00h, 80h, 00h TABLE3: ;DATA CHO GIO CO 24H ; 0 1 2 0 0 0 0 0 0 0 DB 11111100B,01100000B,11011010B,11111100B,11111100B,11111100B,11111100B,11111100B,11111100B,11111100B TABLE4: ;DATA CHO THANG ; 0 1 0 0 0 0 0 0 0 0 DB 10111111B,10000110B,10111111B,10111111B,10111111B,10111111B,10111111B,10111111B,10111111B,10111111B TABLE5: ;DATA CHO THU (DATE) ; 0 CN 2 3 4 5 6 7 0 0 DB 11111100B,11101100B,11011010B,11110010B,01100110B,10110110B,10111110B,11100000B,11111100B,11111100B ;---------------------------------------------------------------------------------------------------------------------------- DELAY_100mS: PUSH 01 PUSH 02 TT0: MOV R2,#250 MOV R1,#100 TT1: DJNZ R1,TT1 DJNZ R2,TT1 POP 02 POP 01 RET END
8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
liên lạc với em qua địa chi email: Mob: 01882.076.989
Comment
-
các pác xem thấy hay thi up cho em cái để có động lực post tiếp nhé . thắc mắc thì cmt em sẽ trả lời sau
rất vui dc giúp các pác8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
liên lạc với em qua địa chi email: Mob: 01882.076.989
Comment
-
Mình có mấy bài làm hồi học 8051 cũng post lên đây cho các bạn tham khảo
Đo nhiệt độ hiển thị led 7 vạch hiển thị chính xác đến 0.5 độ:
Code:#include <sfr51.inc> ORG 00H SJMP MAIN ORG 1BH SJMP SAMPLE MAIN: WRA BIT P3.1 RDA BIT P3.0 MOV P0,#0H MOV DPTR,#MA7V MOV A,#0 MOV TMOD,#10H MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) MOV IE,#88H SETB TR1 BACK: LCALL HIEN_THI SJMP BACK ;---------------- SAMPLE: CLR TR1 MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 INC R0 CJNE R0,#1,TT1 CLR WRA;dat wr=0 SETB WRA ;dat wr=1 de bat dau chuyen doi SJMP TTT TT1: CJNE R0,#10,TT2 CLR RDA MOV R1,P1 SJMP TTT TT2: CJNE R0,#15,TTT SETB RDA MOV R0,#0 TTT: RETI ;---------------- HIEN_THI: MOV A,R1 MOV B,#2 DIV AB MOV R2,B MOV B,#10 DIV AB MOV R3,B MOV B,#10 DIV AB MOV R4,B MOV R5,A CJNE A,#0,TG SJMP TG1 TG: MOV P0,#01H LCALL WRITE_NUM LCALL TRE2MS MOV A,R4 MOV P0,#02H LCALL WRITE_NUM LCALL TRE2MS MOV A,R3 MOV P0,#04H MOVC A,@A+DPTR ANL A,#7FH MOV P2,A LCALL TRE2MS LCALL TRE2MS SJMP TG4 TG1: MOV A,R4 CJNE A,#0,TG2 SJMP TG3 TG2: MOV P0,#02H LCALL WRITE_NUM LCALL TRE2MS TG3: MOV A,R3 MOV P0,#04H MOVC A,@A+DPTR ANL A,#7FH MOV P2,A LCALL TRE2MS TG4: CJNE R2,#1,TK MOV A,#5 MOV P0,#08H LCALL WRITE_NUM LCALL TRE2MS SJMP TK1 TK: MOV A,#0 MOV P0,#08H LCALL WRITE_NUM LCALL TRE2MS TK1: RET ;--- WRITE_NUM: MOVC A,@A+DPTR MOV P2,A ;--- TRE2MS: MOV R6,#2 TRR1: MOV R7,#200 TRR2: NOP NOP NOP DJNZ R7,TRR2 DJNZ R6,TRR1 RET ;--- MA7V: DB C0h,F9h,A4h,B0h,99h,92h,82h,F8h,80h,90h END
Comment
-
Điều khiển động cơ bước (tốc độ, chiều quay, số bước) qua LCD và nút bấm:
Code:#include <sfr51.inc> RS BIT P0.0 RW BIT P0.1 EN BIT P0.2 START BIT P3.2 UP BIT P3.0 DOWN BIT P3.1 RIGHT BIT P3.4 DATA_LCD EQU P2 TG EQU 30H ;----- ORG 00H SJMP MAIN ;----- ORG 13H MOV R3,#1 RETI ;================================== ;================================== ORG 30H MAIN: MOV IE,#84H SETB TCON.2 MOV TMOD,#01H MOV A,#3CH LCALL LCD_COMMAND MOV A,#0FH LCALL LCD_COMMAND MOV A,#01H LCALL LCD_COMMAND MOV R7,#10 MOV R6,#5 MOV R5,#0FH ;================================== STEP: MOV A,#01H LCALL LCD_COMMAND LCALL STEP_DIS LCALL TRE STEP1: JNB START,RUNCALL JNB RIGHT,SPEED JNB UP,STEP_U JNB DOWN,STEP_D SJMP STEP1 STEP_U: CJNE R7,#20,STEP_U1 MOV R7,#0 LCALL STEP_DIS1 LCALL TRE SJMP STEP1 STEP_U1: INC R7 LCALL STEP_DIS1 LCALL TRE SJMP STEP1 STEP_D: CJNE R7,#0,STEP_D1 MOV R7,#20 LCALL STEP_DIS1 LCALL TRE SJMP STEP1 STEP_D1: DEC R7 LCALL STEP_DIS1 LCALL TRE SJMP STEP1 RUNCALL: LCALL RUN ;================================== SPEED: LCALL SPEED_DIS LCALL TRE SPEED1: JNB START,RUN JNB RIGHT,DIRRECT JNB UP,SPEED_U JNB DOWN,SPEED_D SJMP SPEED1 SPEED_U: CJNE R6,#25,SPEED_U1 MOV R6,#1 LCALL SPEED_DIS1 LCALL TRE SJMP SPEED1 SPEED_U1: INC R6 LCALL SPEED_DIS1 LCALL TRE SJMP SPEED1 SPEED_D: CJNE R6,#1,SPEED_D1 MOV R6,#25 LCALL SPEED_DIS LCALL TRE SJMP SPEED1 SPEED_D1: DEC R6 LCALL SPEED_DIS1 LCALL TRE SJMP SPEED1 ;================================== DIRRECT: LCALL FLINE MOV DPTR,#STR4 LCALL WRITE_CH LCALL DIRRECT_DIS LCALL TRE DIRRECT1: JNB START,RUN JNB RIGHT,STEPCALL JNB UP,DIRRECT_U JNB DOWN,DIRRECT_D SJMP DIRRECT1 DIRRECT_U: MOV A,R5 SWAP A MOV R5,A LCALL DIRRECT_DIS LCALL TRE SJMP DIRRECT1 DIRRECT_D: MOV A,R5 SWAP A MOV R5,A LCALL DIRRECT_DIS LCALL TRE SJMP DIRRECT1 STEPCALL: LCALL STEP ;================================== RUN: MOV A,#01H LCALL LCD_COMMAND MOV DPTR,#STR5 LCALL WRITE_CH RUN1: MOV A,R7 MOV B,#10 MUL AB MOV R3,A MOV 31H,R6 MOV A,#11H RUN2: CJNE R5,#0FH,ROLL_LEFT ROLL_RIGHT: MOV P1,A RR A LCALL TRE_RUN CJNE R3,#0,JUMP1 SJMP ROLL_RIGHT JUMP1: DJNZ R3,ROLL_RIGHT SJMP STEPCALL ROLL_LEFT: MOV P1,A RL A LCALL TRE_RUN CJNE R3,#0,JUMP2 SJMP ROLL_LEFT JUMP2: DJNZ R3,ROLL_LEFT SJMP STEPCALL ;----- ;================================== ;================================== STEP_DIS: LCALL FLINE MOV DPTR,#STR2 LCALL WRITE_CH MOV TG,R7 LCALL VAR RET ;----- STEP_DIS1: MOV TG,R7 LCALL VAR RET ;===== SPEED_DIS: LCALL FLINE MOV DPTR,#STR3 LCALL WRITE_CH MOV TG,R6 LCALL VAR RET ;----- SPEED_DIS1: MOV TG,R6 LCALL VAR RET ;===== DIRRECT_DIS: CJNE R5,#0FH,DIRRECT_DIS1 LCALL SLINE MOV DPTR,#STR6 LCALL WRITE_CH SJMP JUMP DIRRECT_DIS1: LCALL SLINE MOV DPTR,#STR7 LCALL WRITE_CH JUMP: NOP RET ;================================== VAR: MOV A,#0C0H LCALL LCD_COMMAND MOV A,TG MOV R1,TG MOV B,#10 DIV AB LCALL WRITE_NUM MOV A,B LCALL WRITE_NUM CLR A LCALL WRITE_NUM RET ;================================== TRE: MOV R2,#20 TRE1: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) CLR TF0 SETB TR0 TRE2: JNB TF0,TRE2 CLR TR0 DJNZ R2, TRE1 RET ;----- TRE_RUN: MOV R4,31H TRE_RUN1: MOV TH0,#HIGH(-10000) MOV TL0,#LOW(-10000) CLR TF0 SETB TR0 TRE_RUN2: JNB TF0,TRE_RUN2 CLR TR0 DJNZ R4,TRE_RUN1 RET ;================================== WRITE_NUM: CJNE R1,#0,WN1 MOV DPTR,#STR8 SJMP WN2 WN1: MOV DPTR,#STR1 WN2: MOVC A,@A+DPTR LCALL WRITE RET ;================================== FLINE: MOV A,#80H LCALL LCD_COMMAND RET ;----- SLINE: MOV A,#C0H LCALL LCD_COMMAND RET ;================================== WRITE: SETB EN SETB RS CLR RW MOV DATA_LCD,A CLR EN LCALL WAIT_LCD RET ;================================== WRITE_CH: MOV A,R0 MOVC A,@A+DPTR CJNE A,#'#',TT SJMP EXIT_WR TT: LCALL WRITE INC R0 SJMP WRITE_CH EXIT_WR: MOV R0,#0 RET ;================================== LCD_COMMAND: SETB EN CLR RS CLR RW MOV DATA_LCD,A CLR EN LCALL WAIT_LCD RET ;================================== WAIT_LCD: SETB RW CLR RS CLR EN MOV DATA_LCD,#0FFH SETB EN JB DATA_LCD.7,WAIT_LCD CLR EN CLR RW RET ;================================== STR1: DB "0123456789" STR2: DB "So buoc: #" STR3: DB "Toc do(ms/buoc):#" STR4: DB "Chieu quay: #" STR5: DB "START #" STR6: DB "PHAI#" STR7: DB "TRAI#" STR8: DB ">123456789" ;================================== END
Comment
-
Nguyên văn bởi lonton16 Xem bài viếtMình có mấy bài làm hồi học 8051 cũng post lên đây cho các bạn tham khảo
Đo nhiệt độ hiển thị led 7 vạch hiển thị chính xác đến 0.5 độ:
Code:#include <sfr51.inc> ORG 00H SJMP MAIN ORG 1BH SJMP SAMPLE MAIN: WRA BIT P3.1 RDA BIT P3.0 MOV P0,#0H MOV DPTR,#MA7V MOV A,#0 MOV TMOD,#10H MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) MOV IE,#88H SETB TR1 BACK: LCALL HIEN_THI SJMP BACK ;---------------- SAMPLE: CLR TR1 MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 INC R0 CJNE R0,#1,TT1 CLR WRA;dat wr=0 SETB WRA ;dat wr=1 de bat dau chuyen doi SJMP TTT TT1: CJNE R0,#10,TT2 CLR RDA MOV R1,P1 SJMP TTT TT2: CJNE R0,#15,TTT SETB RDA MOV R0,#0 TTT: RETI ;---------------- HIEN_THI: MOV A,R1 MOV B,#2 DIV AB MOV R2,B MOV B,#10 DIV AB MOV R3,B MOV B,#10 DIV AB MOV R4,B MOV R5,A CJNE A,#0,TG SJMP TG1 TG: MOV P0,#01H LCALL WRITE_NUM LCALL TRE2MS MOV A,R4 MOV P0,#02H LCALL WRITE_NUM LCALL TRE2MS MOV A,R3 MOV P0,#04H MOVC A,@A+DPTR ANL A,#7FH MOV P2,A LCALL TRE2MS LCALL TRE2MS SJMP TG4 TG1: MOV A,R4 CJNE A,#0,TG2 SJMP TG3 TG2: MOV P0,#02H LCALL WRITE_NUM LCALL TRE2MS TG3: MOV A,R3 MOV P0,#04H MOVC A,@A+DPTR ANL A,#7FH MOV P2,A LCALL TRE2MS TG4: CJNE R2,#1,TK MOV A,#5 MOV P0,#08H LCALL WRITE_NUM LCALL TRE2MS SJMP TK1 TK: MOV A,#0 MOV P0,#08H LCALL WRITE_NUM LCALL TRE2MS TK1: RET ;--- WRITE_NUM: MOVC A,@A+DPTR MOV P2,A ;--- TRE2MS: MOV R6,#2 TRR1: MOV R7,#200 TRR2: NOP NOP NOP DJNZ R7,TRR2 DJNZ R6,TRR1 RET ;--- MA7V: DB C0h,F9h,A4h,B0h,99h,92h,82h,F8h,80h,90h END
vì nhiều khi mô phỏng chỉ mang tính lý thuyết!
Comment
-
Nguyên văn bởi vu_spiderman Xem bài viếtmình không thể đưa nguyên code cho bạn đươc, bạn tim hiểu theo cách sau: 1 bạn phải biết được mã ASCII, gtmt dùng cổng com hay USB...rùi tìm tài liệu VB đọc. nhất là MSCOMM ...hiển thị led matrix thì tìm hiểu chân căg cua nò nưa. nếu gặp khó khăn thì pót bài lên mọi người giúp bạn..
Comment
-
Nguyên văn bởi mr.ngoc Xem bài viếtmạch này bác lonton đã làm thực tế chưa? chạy có ổn định ko vậy bác!
vì nhiều khi mô phỏng chỉ mang tính lý thuyết!
mà mục đích của mình là chia sẻ code chứ ko phải hướng dẫn làm phần cứng
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Hỏi về bơm màng bldcbởi vi van phamPhải xem cơ cấu bơm, chứ xem cơ cấu rotor, thì chỉ làm thầy bói xem voi.
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 08:19 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11vg, cám ơn bác...........
-
Channel: Thiết bị điện tử cá nhân
28-11-2024, 14:37 -
-
bởi khoine9899
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...-
Channel: Điện tử dành cho người mới bắt đầu
28-11-2024, 11:22 -
-
Trả lời cho Cần mọi người giúp mạch tạo sóng siêu âm máy rửabởi bqviet
-
Channel: Điện tử công suất
27-11-2024, 20:26 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
27-11-2024, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
27-11-2024, 11:28 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 00:35 -
Comment