Thông báo

Collapse
No announcement yet.

Chương trình tạo PWM bằng 8051

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

  • #31
    thanks mình đag cần cái này :d thanks pác rất nhiều
    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


    • #32
      cái này mình viết giống như sao băng thôi ko có j khó.
      ở đây mình dùng 89 2051 , 15bit out. ko có p3.6. tham khảo.
      Code:
      ;Dung cho 89x2xx
      ;		***********************
      ;--------------------Hoang_KH----------------------
      ;		   dt: 0978 086 596
      ;		***********************
      
      tocdo		equ 50h
      biendem_pwm	equ 52h
      so_bit		equ 53h
      so_hang		equ 54h
      vonglap1	equ 55h
      vonglap2	equ 56h
      
      org 00h
      jmp main
      org	001bh			; ngat T1
      	call ngat1
      reti
      org 0057h
      main:
      	mov tmod,#00100000b
      	setb ie.7	;cho phep toan cuc
      	setb ie.3	; cho phep ngat t1
      	setb ie.1
      	mov th1,#-2
      	mov tl1,#-2
      	mov biendem_pwm,#51	
      	mov p0,#00h
      	mov p1,#00h
      	mov p2,#00h
      	mov p3,#00h
      
      hoang:
      	mov so_bit,#15	;so bit dieu khien
      	call chuongtrinh
      jmp hoang
      ;-----------------------------
      ngat1:	
      push acc
      push 03h
      	dec biendem_pwm
      	mov a,biendem_pwm
      	call out_port
      	cjne a,#1,exit_ngat1
      	mov biendem_pwm,#51
      	mov p1,#00
      	mov p3,#00
      	mov p2,#00
      	mov p0,#00
      exit_ngat1:
      	pop 03h
      	pop acc		
      ret
      ;------------------------------
      out_port:	
      	cjne a,30h,tiep0
      	setb p1.7
      tiep0:	cjne a,31h,tiep1
      	setb p1.6
      tiep1:	cjne a,32h,tiep2
      	setb p1.5
      tiep2:	cjne a,33h,tiep3
      	setb p1.4
      tiep3:	cjne a,34h,tiep4
      	setb p1.3
      tiep4:	cjne a,35h,tiep5
      	setb p1.2
      tiep5:	cjne a,36h,tiep6
      	setb p1.1
      tiep6:	cjne a,37h,tiep7
      	setb p1.0	
      tiep7:	cjne a,38h,tiep8
      	setb p3.7
      tiep8:	cjne a,39h,tiep9
      	setb p3.5
      tiep9:	cjne a,3ah,tiep10
      	setb p3.4
      tiep10:	cjne a,3bh,tiep11
      	setb p3.3
      tiep11:	cjne a,3ch,tiep12
      	setb p3.2
      tiep12:	cjne a,3dh,tiep13
      	setb p3.1
      tiep13:	cjne a,3eh,tiep14
      	setb p3.0
      tiep14:	
      ret
      ;----------------------------------
      ma_led:
      push 01h
      push 03h
      	mov r1,#30h
      	mov r3,so_bit
      lay_dr:	call dorong_xung
      	djnz r3,tiep_lay_dorong	
      	jmp exit_lay_dorong
      tiep_lay_dorong	:	
      	inc dptr
      	inc r1
      jmp lay_dr	
      exit_lay_dorong:
      pop 03h
      pop 01h
      ret
      ;-----------------------------------
      dorong_xung:
      push acc
      push 01h
      push 03h
      	mov a,r0
      	movc a,@a+dptr
      	mov r3,a
      	push dph
      	push dpl
      	mov dptr,#ma_dorong
      	movc a,@a+dptr
      	add a,r3
      	mov @r1,a
      	pop dpl
      	pop dph
      pop 03h
      pop 01h
      pop acc
      ret
      ;-------------------------------------
      delay:
      	push acc
      	push 06h
      	push 07h
      	push dph
      	push dpl
      	mov dptr,#ma_thoigian
      	mov a,tocdo
      	movc a,@a+dptr
      	mov r6,a
      d0:	mov r7,#50
      	djnz r7,$
      	djnz r6,d0
      	pop dpl
      	pop dph
      	pop 07h
      	pop 06h
      	pop acc
      ret
      ;--------------------------------------
      ma_thoigian:
      db	46,43,40,37,34,31,28,25,22,19,16,13,10,7,04,01
      ma_dorong:
      db	00,00,01,02,03,04,05,06,08,10,13,16,20,24,29,35
      ;------------------------------
      play:	
      	mov r0,#00h
      	mov r4,so_hang		
      hd:	call ma_led
      	setb tr1
      	call delay
      	clr tr1
      inc r0
      djnz r4,hd
      clr a
      ret
      
      
      ;$$$$$$$$$$$$$$$$$$= chuong trinh chinh =$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      
      chuongtrinh:
      	mov tocdo,#13	;(low 0, fast 15)
      
      	mov dptr,#ma1
      	mov so_hang,#31
      	call play
      		
      	mov tocdo,#15
      	mov dptr,#ma2
      	mov so_hang,#15
      	call play		
      ret
      ;-------------------------------------------
      ma1:
      db	00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
      db	15,00,00,00,00,00,00,00,00,00,00,00,00,00,00
      db	14,15,00,00,00,00,00,00,00,00,00,00,00,00,00
      db	13,14,15,00,00,00,00,00,00,00,00,00,00,00,00
      db	12,13,14,15,00,00,00,00,00,00,00,00,00,00,00
      db	11,12,13,14,15,00,00,00,00,00,00,00,00,00,00
      db	10,11,12,13,14,15,00,00,00,00,00,00,00,00,00
      db	09,10,11,12,13,14,15,00,00,00,00,00,00,00,00
      db	08,09,10,11,12,13,14,15,00,00,00,00,00,00,00
      db	07,08,09,10,11,12,13,14,15,00,00,00,00,00,00
      db	06,07,08,09,10,11,12,13,14,15,00,00,00,00,00
      db	05,06,07,08,09,10,11,12,13,14,15,00,00,00,00
      db	04,05,06,07,08,09,10,11,12,13,14,15,00,00,00
      db	03,04,05,06,07,08,09,10,11,12,13,14,15,00,00
      db	02,03,04,05,06,07,08,09,10,11,12,13,14,15,00
      db	01,02,03,04,05,06,07,08,09,10,11,12,13,14,15
      db	00,01,02,03,04,05,06,07,08,09,10,11,12,13,14
      db	00,00,01,02,03,04,05,06,07,08,09,10,11,12,13
      db	00,00,00,01,02,03,04,05,06,07,08,09,10,11,12
      db	00,00,00,00,01,02,03,04,05,06,07,08,09,10,11
      db	00,00,00,00,00,01,02,03,04,05,06,07,08,09,10
      db	00,00,00,00,00,00,01,02,03,04,05,06,07,08,09
      db	00,00,00,00,00,00,00,01,02,03,04,05,06,07,08
      db	00,00,00,00,00,00,00,00,01,02,03,04,05,06,07
      db	00,00,00,00,00,00,00,00,00,01,02,03,04,05,06
      db	00,00,00,00,00,00,00,00,00,00,01,02,03,04,05
      db	00,00,00,00,00,00,00,00,00,00,00,01,02,03,04
      db	00,00,00,00,00,00,00,00,00,00,00,00,01,02,03
      db	00,00,00,00,00,00,00,00,00,00,00,00,00,01,02
      db	00,00,00,00,00,00,00,00,00,00,00,00,00,00,01
      db	00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
      ma2:
      db	00,00,00,00,00,00,00,00,00,00,00,00,00,00,15
      db	00,00,00,00,00,00,00,00,00,00,00,00,00,15,00
      db	00,00,00,00,00,00,00,00,00,00,00,00,15,00,00
      db	00,00,00,00,00,00,00,00,00,00,00,15,00,00,00
      db	00,00,00,00,00,00,00,00,00,00,15,00,00,00,00
      db	00,00,00,00,00,00,00,00,00,15,00,00,00,00,00
      db	00,00,00,00,00,00,00,00,15,00,00,00,00,00,00
      db	00,00,00,00,00,00,00,15,00,00,00,00,00,00,00
      db	00,00,00,00,00,00,15,00,00,00,00,00,00,00,00
      db	00,00,00,00,00,15,00,00,00,00,00,00,00,00,00
      db	00,00,00,00,15,00,00,00,00,00,00,00,00,00,00
      db	00,00,00,15,00,00,00,00,00,00,00,00,00,00,00
      db	00,00,15,00,00,00,00,00,00,00,00,00,00,00,00
      db	00,15,00,00,00,00,00,00,00,00,00,00,00,00,00
      db	15,00,00,00,00,00,00,00,00,00,00,00,00,00,00
      end
      PCCC

      Comment


      • #33
        ban lep140389 ơi cho mình hỏi. vậy mún làm đủ 32 cổng thì phải khai báo làm sao? mình đang dùng con AT89C52. mong đươc sự giúp đỡ của bạn cũng như của tất cả mọi người trên DĐ.

        Comment


        • #34
          Bạn đã viết thành công chưa...???? cho mình xin với

          Comment


          • #35
            Bạn muốn cả 32 chân out của VDK đều là PWM để điều khiển cái gì thế? nếu bài toán phức tạp thì nên dùng C cho dễ {thực hiện, bảo trì}, nâng cấp. Nếu cả 32 chân out đều dùng để điều chế PWM thì bạn dùng chân nào để bạn lắp cảm biến để thay đổi tần số băm xung? hay nó không thay đổi theo thời gian đối với mỗi chân (PWM cứng)?

            Comment


            • #36
              Em muốn làm bộ điều khiển nhiệt độ dựa vào xung pwm để thay đổi góc mở triac. Anh nào cho em cái ý tưởng với.
              Em sẽ so sánh nhiệt độ nhập từ bàn phím và nhiệt độ đọc được từ cảm biến, nếu nhiệt độ nhỏ hơn nhiệt độ nhập vào thì tăng độ rộng xung ra và ngược lại còn nếu bằng rồi thì thoát.
              Có anh nào biết chỉ giùm em với?

              Comment


              • #37
                Em đang làm đồ án Điều khiển Đc 1 chiều 4 nút bấm ứng với 4 chế độ "thuận, nghịch, tăng, giảm" và hiển thị tên chế độ lên LCD. Em đã làm đc thuận và nghịch hiển thị LCD rồi. Nhưng không biết cách làm tăng giảm tốc độ. Các bác có thể cho em xin code asm được không ạ? Làm bằng phương pháp PWM ạ.

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X