Thông báo

Collapse
No announcement yet.

Các Đề Tài VDK 8051

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #61
    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

    Comment


    • #62
      sao anh vũ không help dùm em cái đèn giao thông thế

      Comment


      • #63
        [QUOTE=hamster.khin;303858]sao anh vũ không help dùm em cái đèn giao thông thế [
        dạo này mình bận nhiều việc quá. bạn viết chương trinh hiện thị 2 led 7đoạn rùi từ tư lên là được..hồi đó mình cũng làm vậy..code săn thì để khi nào mih rảnh thì viết cho.mà bạn có đợi dc không nhỉ.

        Comment


        • #64
          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
          chúc các pác công thành
          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


          • #65
            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
            chúc các pác thành công
            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


            • #66
              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
              ứng dụng vào project đếm (đếm sản phẩm,xe,người,thú....) dùng mạch cảm biến để thay thế công tắt
              chúc các pác thành công
              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


              • #67
                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 đủ
                Click image for larger version

Name:	Clock.jpg
Views:	1
Size:	46.8 KB
ID:	1345629
                đây là 1 đơn vị led 7seg(1 7seg dùng 1 con 595)
                Click image for larger version

Name:	7seg595.JPG
Views:	1
Size:	162.5 KB
ID:	1345628
                đay là mạch dk chính(89s52 và ds1307)
                Click image for larger version

Name:	main board.JPG
Views:	1
Size:	145.5 KB
ID:	1345630
                đâ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
                chúc vui và thành công
                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


                • #68
                  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ác
                  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


                  • #69
                    mình chưa test thử nhưng thấy chuơng trình bạn có ich lám đó!!!!nếu trong topic này có nhiều người như bạn thì topic này sẽ sinh động hơn đó!!!!rất mong nhận được ý kiến của bạn cho những đề tài kế tiếp.

                    Comment


                    • #70
                      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
                      So đồ nói dây trong file đính kèm.
                      Attached Files

                      Comment


                      • #71
                        Đ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
                        Attached Files

                        Comment


                        • #72
                          Nguyên văn bởi lonton16 Xem bài viết
                          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
                          So đồ nói dây trong file đính kèm.
                          mạ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!

                          Comment


                          • #73
                            Nguyên văn bởi vu_spiderman Xem bài viết
                            mì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..
                            Anh spider ơi em viết đc chữ A rồi nhưng mà cho em hỏi làm sao để xuất đc chữ đó ra chân TxD.Anh hướng dẫn em dùm chỗ này nha

                            Comment


                            • #74
                              Nguyên văn bởi mr.ngoc Xem bài viết
                              mạ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ình mới chỉ làm mạch thực đo nhiệt độ qua cổng lpt thôi chứ qua 8051 thì chưa ^^!
                              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


                              • #75
                                oh hay lam lonton oi...mo phong duoc thi lam phan cung kho khan gi dau...co len nua nhe

                                Comment

                                Về tác giả

                                Collapse

                                vu_spiderman Tìm hiểu thêm về vu_spiderman

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X