Thông báo

Collapse
No announcement yet.

Hỏi về Pic!!!

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

  • Hỏi về Pic!!!

    Các bác giúp mình đề tài Ghép nối thiết bị ngoại vi sử dụng PIC16F877A với nhé!
    " Thiết kế Kit dùng Pic16F877A để đo và điều khiển độ sáng, có ghép nối máy tính qua cổng COM"
    Dùng quang trở hay diode quang gì cũng được!
    Cảm ơn các bác nhiều nhé
    mail:

  • #2
    Bạn cần những kiến thức sau:
    - Lập trình PIC
    - Giao tiếp cổng COM
    - Dùng quang trở để nhận biết mức ánh sáng (dùng ADC - tích hợp sẵn trong PIC rồi)
    - Điều khiển độ sáng của đèn (bằng cách điều khiển góc mở sử dụng triac)

    Cứ làm từng môđun một. Trên diễn đàn và google có rất nhiều bài viết bạn cố gắng đọc và làm. Tất nhiên không ai có thời gian để làm giúp bạn. Vấn đề bạn nêu ra ở trên đã bàn "gần nát" rồi. Bạn sinh sau đẻ muộn thì tốt rồi..vì được ngồi trên vai những người khổng lồ.

    Chúc bạn làm tốt!
    Hi vọng bài viết giúp X được cho bạn.

    Comment


    • #3
      Các bác cho mình hỏi.
      Mình thử viết một chương trình đếm sản phẩm lưu vào eerom và hiển thị lên led 7 đoạn
      Nhưng sao lúc đầu nó hiển thị lên toàn số 8 mặc dù trong chương trình mình đã gán giá trị ban đầu là 0.
      Nhưng chương trình vẫn đếm và lưu đúng sau mỗi lần có tín hiệu đếm.Chỉ mỗi cái tội là còn các số 8 ở phía trước.
      VD: Mình dùng 4 led hiển thị. Khi đếm được 5 sản phẩm thì lúc này nhìn vào led ta thấy các số 8885
      Chẳng lẻ lúc đầu khi nạp chương trình xong ta phải chế một cái phím bấm đếm để triệt tiêu hết 4 số 8 ấy sao?Như vậy thì quá vất quả rồi.
      Mình dùng con 16f877a
      Mong các bác giúp đỡ.

      Comment


      • #4
        Nguyên văn bởi digital83 Xem bài viết
        Các bác cho mình hỏi.
        Mình thử viết một chương trình đếm sản phẩm lưu vào eerom và hiển thị lên led 7 đoạn
        Nhưng sao lúc đầu nó hiển thị lên toàn số 8 mặc dù trong chương trình mình đã gán giá trị ban đầu là 0.
        Nhưng chương trình vẫn đếm và lưu đúng sau mỗi lần có tín hiệu đếm.Chỉ mỗi cái tội là còn các số 8 ở phía trước.
        VD: Mình dùng 4 led hiển thị. Khi đếm được 5 sản phẩm thì lúc này nhìn vào led ta thấy các số 8885
        Chẳng lẻ lúc đầu khi nạp chương trình xong ta phải chế một cái phím bấm đếm để triệt tiêu hết 4 số 8 ấy sao?Như vậy thì quá vất quả rồi.
        Mình dùng con 16f877a
        Mong các bác giúp đỡ.
        Code của bạn ra sao? Và sơ đồ nguyên lý liên quan đến phần hiển thị?

        Bạn luôn luôn có thể thực hiện khởi tạo hiển thị trước khi vào vòng lặp chính.

        Thân,
        Biển học mênh mông, sức người có hạn

        Comment


        • #5
          Code:
          #include<16f877a.h>
          //#device ADC = 10
          #fuses HS,NOLVP,NOWDT,PUT
          #USE delay(clock = 12000000)//define crystal = 12MHZ
          // #use rs232(baud = 9600,xmit = PIN_C6,rcv=pin_c7)//
          // uses rs232 baud - rate 19200,TX PIN = RC6,RX PIN = RC7
          byte const map[10]={0xc0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
          void main()
             {
             int8 i,k,j;
             i=0;
             k=0;
             j=0;
             set_tris_d(0xff);      //khai bao port nhap
             set_tris_b(0x00);      //khai bao port xuat
             set_tris_a(0x00);
             set_tris_c(0x00);
             output_a(0x00);   
             output_c(0xff);
             WHILE (TRUE)    //KIEM TRA DKIEN DUNG THI THUC HIEN LENH PHIA DUOI ROI KT TIEP
             {              //VI DIEU KIEN LUON LUON DUNG NEN TAO THANH VONG TUAN HOAN 
                  loop:   
                 i=read_eeprom (0x00)&(0x0f);
                 k=read_eeprom (0x01)&(0x0f);   
                 j=read_eeprom (0x02)&(0x0f);
             output_b(map[i]);
             output_low(pin_c0);   //doan chuong trinh quet 3 led
             delay_us(600);
             output_b(map[k]);
             output_high(pin_c0);
             output_low(pin_c1);
             delay_us(600);
             output_b(map[j]);
             output_high(pin_c1);
             output_low(pin_c2);
             delay_us(600);
             output_high(pin_c2);      
             if (input(pin_d0))   //neu d0 = 1 thuc hien lenh phia duoi
               goto loop;
               else 
                i = i+1;
                output_a(i);     
                //----------------------------
                
                if (i==10)   //neu i =10 thuc hien khoi lenh nguoc lai xet tiep dk
                {
                i = 0;
                k=k+1;
                }
                if (k==10)   //neu k = 10 thuc hien khoi lenh
                {
                k=0;
                j=j+1;
                }
                if (j==10)
                {j=0;
                }
              delay_ms(200); 
              write_eeprom(0x00,i);
              write_eeprom(0x01,k); 
              write_eeprom(0x02,j);                 
             }
             }
          Last edited by namqn; 15-03-2009, 17:54. Lý do: định dạng code

          Comment


          • #6
            Mình chỉ mới biết sơ sơ về pic và viết đại thế thôi.
            Có lẻ chương trình rườm rà quá
            Chương trình có lỗi gì mấy anh sửa dùm và cho ý kiến nhé.
            Thanks

            Comment


            • #7
              Sao lâu quá mà ko thấy cao thủ nào xem giúp chương trình của mình sai chổ nào vậy?
              Các bác xem giúp tí nhé.

              Comment


              • #8
                Bạn không post sơ đồ lên ah, như thế mới biết được mà sửa chứ.

                Web:[url]www.ledviet.info/url]
                Email:
                DĐ:0949299699

                Comment


                • #9
                  Mình mua kit có sẵn nên ko có sơ đồ bạn à.
                  Mình nghĩ chỉ hiển thị led thôi thì sơ đồ cũng ko quan trọng lắm.
                  Bạn nhìn code cũng nghĩ ra sơ đồ rồi.
                  Chắc chỉ sai ở phần code thôi.

                  Comment


                  • #10
                    Sẵn đây các bác cho mình hỏi.
                    Mình đang định nghiên cứu thêm con AVR hoặc Pic,nhưng thấy trên diễn đàn này nói họ nào cũng mạnh và hay cả.
                    Mình cũng đang rất phân vân vì cũng ko có nhiều thời gian.
                    Theo kinh nghiệm của các bác đi trước mình nên lựa con nào để học cho đúng hướng.
                    Mình bắt đầu vdk bằng con 89c51.
                    Mong các bác nhiệt tình góp ý.
                    Chúc cả nhà cuối tuần vui vẻ!

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X