Thông báo

Collapse
No announcement yet.

Dùng 8051 điều khiển độ sáng của led bằng Assembly

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

  • Dùng 8051 điều khiển độ sáng của led bằng Assembly

    Em mới học lập trình Assembly mong các anh chị chỉ giáo giúp.Em muốn viết code để điều khiển độ sáng của led ở 2 chế độ: tự động và thông qua nút nhấn.Anh chị nào biết chỉ giúp em với.Có thể dùng timer để điều khiển được không ạ!!!

  • #2
    không ai giúp hay gợi y cách lập trình giúp em với sao, sao chán thế....

    Comment


    • #3
      ko cần ngắt đâu bạn, bạn dùng lệnh jnb hay jb, để đk bằng tay, còn tự động thì ko cần kiểm tra, là ok

      Comment


      • #4
        Nguyên văn bởi sunypower Xem bài viết
        Em mới học lập trình Assembly mong các anh chị chỉ giáo giúp.Em muốn viết code để điều khiển độ sáng của led ở 2 chế độ: tự động và thông qua nút nhấn.Anh chị nào biết chỉ giúp em với.Có thể dùng timer để điều khiển được không ạ!!!
        Điều chỉnh tự động theo ý của bạn là như thế nào đây, ít ra cũng phải có cái cảm biến phản hồi về như thay đổi độ sáng theo môi trường,... Còn bằng nút nhấn thì có hai cái nút tăng và giàm độ sáng thì bạn có thể dùng kỹ thuật PWM để điều khiển, bấm 2 cái nút đó sẽ tăng hay giảm duty của sóng pwm
        Bạn dùng timer và ngắt timer để tạo PWM còn chương trình chính thì kiểm tra nút nhấn.,..

        Comment


        • #5
          Nguyên văn bởi youaremylife Xem bài viết
          Điều chỉnh tự động theo ý của bạn là như thế nào đây, ít ra cũng phải có cái cảm biến phản hồi về như thay đổi độ sáng theo môi trường,... Còn bằng nút nhấn thì có hai cái nút tăng và giàm độ sáng thì bạn có thể dùng kỹ thuật PWM để điều khiển, bấm 2 cái nút đó sẽ tăng hay giảm duty của sóng pwm
          Bạn dùng timer và ngắt timer để tạo PWM còn chương trình chính thì kiểm tra nút nhấn.,..
          Em không biết phải điều chỉnh PWM như thế nào đây, anh co thể hướng dẫn và viết đoạn code mẫu được không.thanks nhiều!!!

          Comment


          • #6
            Nguyên văn bởi sunypower Xem bài viết
            Em không biết phải điều chỉnh PWM như thế nào đây, anh co thể hướng dẫn và viết đoạn code mẫu được không.thanks nhiều!!!
            Phần PWM phải tìm hiểu lâu lâu mới hiểu . K thể 1 sớm 1 chiều được . Vì tài liệu ASM cho PWM cũng khá ít

            Comment


            • #7
              đây là phần cứng em thiết kế và phần code em viết, chỉ mới cho xuất ra chuỗi xung có độ rộng cố định, chưa biết làm sao để thay đổi độ rộng xung khi nhấn Up hoac Down, bác nào có kinh nghiệm mong chỉ giáo giúp, em đang làm đề tài này, mà chỉ mới học asly mới có nửa tháng ah.cảm on nhiều!!!
              DIEU KHIEN DO SANG LED.rar

              Comment


              • #8
                Muốn cải tiến cái chương trình của bạn mình góp vài ý như sau:
                Hàm delay của bạn nó theo kiểu thủ tục (procedure) hơn là hàm (function). Muốn có thể điều xung thì thời gian chân ra ở mức cao và ở mức thấp có thể thay đổi được, nghĩa là cái hàm delay của bạn cần phải có đối số truyền vào.
                Trong đoạn BAT......SJMP BAT của bạn thêm đoạn kiểm tra nút nhấn LIGH UP/DOWN vào.
                Chương trình của bạn thiếu đi phần chống nảy cho nút nhấn, bạn có thể khắc phục bằng chống nảy bằng phần cứng,...
                ví dụ hàm delay như bạn có thể thay
                DELAY50uS:
                MOV TH1,#HIGH(value) ; CHUONG TRINH CON TRE 50MS GIAY
                MOV TL1,#LOW(value)
                SETB TR1
                JNB TF1,$
                CLR TR1
                CLR TF1
                RET
                bằng
                // đối số vào hàm
                MOV TH1, duty ; CHUONG TRINH CON TRE 50MS GIAY
                MOV TL1, duty+1 ;
                // hàm tạo trễ
                DELAYuS:
                SETB TR1
                JNB TF1,$
                CLR TR1
                CLR TF1
                RET
                cái này chỉ mang tính tham khảo phần còn lại tự bạn nghĩ
                Khi bạn nhấn nút LIGH UP thì duty tăng ngược lại thì duty giảm
                duty là số 16 bit nên bạn xem cách viết hàm cộng số 16bit
                tính khoảng thời gian mức thấp nduty = PERIOD - duty

                BAT
                // phần tạo PWM
                Cho PWM PIN mức cao
                Truyền tham số duty vào hàm delay
                Gọi hàm delay
                Cho PWM PIN mức thấp
                Truyền tham số nduty vào hàm delay
                Gọi hàm delay
                //////////////
                kiem tra nut LIGH UP duoc nhan
                đúng gọi hàm tăng
                Gọi hàm tình tham số PWM
                kiem tra nut LIGH DOWN duoc nhan
                Đúng gọi hàm giảm
                Gọi hàm tình tham số PWM
                ....

                Comment


                • #9
                  cảm ơn bác youaremylife nhiều nha, để em xem rồi viết chuơng trình lại, có gì mong bac chỉ giáo tip

                  Comment


                  • #10
                    Ai chỉ em cách điều chỉnh PWM để điều khiển độ sáng của led . làm led sao băng . thnks mn

                    Comment


                    • #11
                      Tình hình là em đã viết xong code, nhưng giờ chon linh kiện thì có trục trặc, có bác nào biết nên sử dụng loại tranisistor công suất nào để thiên áp cho led công suất tầm 80W, tần số 2kHz ko, liệt kê giúp em một số tên với, loại nghịch (NPN) nha, cảm ơn nhiều

                      Comment


                      • #12
                        ai đã làm dc led sao băng bằng ngôn ngữ assembly thì cho tôi xin file code a51 or file asm để mình tham khảo chân thành cảm ơn

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X