Thông báo

Collapse
No announcement yet.

Công cụ học tập và phát triển cho PIC - Hoàn toàn miện phí

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • nói gì đâu k

    k đem hình vẽ hay mô phỏng ra cho người ta coi tí, nói k ai biết mà hiểu, huống chi có nhiều người còn chưa rành về pic mà

    Comment


    • http://sites.google.com/site/linhnc3082/myprojects

      Trong site này chứa một vài code chương trình nhỏ cho PIC. Các em ai quan tâm thì lên tìm đọc và tải về. Có bài viết chi tiết về led ma trận dùng PIC.
      @tam4890: Code hay mạch nguyên lý anh đều có thể cung cấp, nhưng anh không làm vậy. Anh đưa ra lời chỉ dẫn để các em phải tự tìm hiểu, như vậy các em sẽ thu được kiến thức thực. Làm điện tử, điều quan trọng là phải tìm tòi, học hỏi, nhất là tìm kiếm trên mạng, các trang nước ngoài. Cách anh đưa ra có thể phù hợp với người này và không phù hợp với người kia, điều đó không tránh khỏi được.
      Anh đi làm, thời gian không có nhiều để có thể trả lời hết các câu hỏi nên qua site trên các em kiếm tài liệu, tìm trên diễn đàn cũng có nhiều và nhất là phải tìm trên google.
      Chúc các em thành công.
      Ethernet-RS232, PIC Webserver, RFID Reader
      CallerID, Cảnh báo BTS, ...
      0988006696
      linhnc308@gmail.com
      http://linhnc308.blogspot.com

      Comment


      • anh nao` biet chi dum` em cach thiet ke mach dem xe vao ra với em mơj hoc VDK nen ko ranh` cho lam tuy cọ n` tạ` lieu nhung van~ ko nam vung dc nua~

        Comment


        • Nguyên văn bởi tieutac91 Xem bài viết
          anh nao` biet chi dum` em cach thiet ke mach dem xe vao ra với em mơj hoc VDK nen ko ranh` cho lam tuy cọ n` tạ` lieu nhung van~ ko nam vung dc nua~
          không một ông thầy nào cho làm đồ án mà phần chính không nằm trong kiến thức đã học cả. Cố gắng seach và tìm hiểu các bạn nhé!

          Comment


          • các bác có biết cách dùng pic để điêu khiển mô tơ ko chỉ cho với

            Comment


            • Hiển thị thời gian thực lên ma trận led

              Anh cho em hỏi ,dùng ds 1307 hiển thị thời gian thực trên ma trận thì làm thế nào ạ?Em mới hiển thị thời gian thực trên LCD thui ạ!Em bí quá không biết làm thế nào cả. hix!

              Comment


              • anh có mạch này không vậy?

                Comment


                • em đang làm đề tài về con PIC 16f877a nhưng đoạn code có vấn đề . Mong các anh chị giúp em với
                  #include <16F877A.h>
                  #device *=16
                  #device adc=8
                  #use delay(clock=20000000,RESTART_WDT)

                  #include "MathEx.h"
                  #include "TouchPad.h"
                  #include "LCD192x64.h"
                  #define A 1
                  #define B 3
                  #define C 6
                  #define D 7
                  #define E 10
                  #define F 15
                  #define LCD_DB0 PIN_B0
                  #define LCD_DB1 PIN_B1
                  #define LCD_DB2 PIN_B2
                  #define LCD_DB3 PIN_B3
                  #define LCD_DB4 PIN_B4
                  #define LCD_DB5 PIN_B5
                  #define LCD_DB6 PIN_B6
                  #define LCD_DB7 PIN_B7
                  #define LCD_E PIN_D7
                  #define LCD_RW PIN_D6
                  #define LCD_RS PIN_D5
                  #define LCD_CS1 PIN_C5
                  #define LCD_CS2 PIN_C7
                  #define LCD_CS3 PIN_D4
                  #define LCD_RST PIN_C6
                  char const Maytinh[]= {
                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  0x40,0x00,0x01,0x08,0x00,0x00,0xF8,0x00,
                  0xC0,0xFF,0x01,0x18,0x00,0x00,0xFE,0x03,
                  0xC0,0x00,0x01,0xF8,0x00,0x00,0x03,0x02,
                  0xC0,0x01,0x01,0xE8,0x03,0x00,0x01,0x04,
                  0x80,0x07,0x00,0x00,0x1F,0x00,0x01,0x04,
                  0x00,0x1E,0x00,0x00,0x3C,0x00,0x01,0x04,
                  0x00,0x3C,0x00,0x00,0x1C,0x00,0x03,0x02,
                  0x40,0xF0,0x00,0x08,0x03,0x00,0xFE,0x03,
                  0x40,0xC0,0x01,0xE8,0x00,0x00,0xF8,0x00,
                  0xC0,0xFF,0x01,0x38,0x00,0x00,0x00,0x00,
                  0x40,0x00,0x00,0x08,0x00,0x00,0x80,0x01,
                  0x00,0x00,0x00,0x88,0x19,0x00,0x86,0x03,
                  0x00,0x80,0x0D,0xC0,0x3D,0x00,0x07,0x04,
                  0x00,0xBC,0x1F,0x48,0x24,0x00,0x11,0x04,
                  0x00,0x7E,0x13,0x50,0x24,0x00,0x11,0x04,
                  0x00,0x42,0x13,0x50,0x14,0x00,0x31,0x04,
                  0x00,0x42,0x13,0xD0,0x3F,0x00,0x2F,0x06,
                  0x00,0x7E,0x13,0x88,0x3F,0x00,0xE6,0x03,
                  0x00,0x3D,0x0F,0x00,0x20,0x00,0xC0,0x01,
                  0x00,0x01,0x0F,0x00,0x20,0x00,0x00,0x00,
                  0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,
                  0x00,0x02,0x00,0x00,0x20,0x00,0xFF,0x07,
                  0x00,0xFE,0x00,0xC0,0x3F,0x00,0xFF,0x07,
                  0x00,0xFE,0x01,0xC0,0x3F,0x00,0x11,0x04,
                  0x00,0x00,0x01,0x80,0x20,0x00,0x11,0x04,
                  0x00,0x00,0x01,0x40,0x00,0x00,0x11,0x04,
                  0x00,0x80,0x00,0x40,0x00,0x00,0x01,0x04,
                  0x00,0xFE,0x01,0x40,0x20,0x00,0x01,0x04,
                  0x00,0xFE,0x01,0xC0,0x3F,0x00,0x03,0x06,
                  0x00,0x00,0x01,0x80,0x3F,0x00,0x06,0x03,
                  0x00,0x02,0x0C,0x00,0x20,0x00,0xFC,0x01,

                  ...
                  };

                  char const NUTNHAN[16][4] = {
                  69,31,82,45,...
                  }
                  char const MANUT[]= {
                  '0','1','2','3','4','5','6','7','8','9'
                  }
                  void main(){
                  int8 i;
                  float Num1,Num2,Number;
                  int16 Xt,Yt,Xd,Yd;
                  int8 NutNhan;
                  char Buffer[10];
                  int8 ChuSo,PhepToan;
                  setup_adc_ports( AN0_AN1_AN2_AN3_AN4 );
                  setup_adc(ADC_CLOCK_DIV_32);
                  setup_psp(PSP_DISABLED);
                  setup_spi(FALSE);
                  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
                  setup_timer_1(T1_DISABLED);
                  setup_timer_2(T2_DISABLED,0,1);
                  setup_comparator(NC_NC_NC_NC);
                  setup_vref(FALSE);

                  LCD192x64Init();
                  LCD192x64Bitmap(Maytinh);

                  ChuSo = 0;
                  PhepToan = 0;

                  while(1){

                  // Lay toa do touch
                  Xt = GetXt();
                  Yt = GetYt();

                  // Chuyen sang toa do man hinh
                  Xd = Xt*A + Yt*B + C;
                  Yd = Xt*D + Yt*E + F;



                  // Kiem tra nut duoc nhan hay khong ?
                  NutNhan = 16;
                  for(i=0;i < 16;i++){
                  if(GetPos(Xd,Yd,NUTNHAN[i][0],NUTNHAN[i][1],NUTNHAN[i][2],NUTNHAN[i][3]) == 1){
                  NutNhan = i;
                  break;
                  }
                  }

                  // Kiem tra nut nao duoc nhan
                  if(NutNhan < 16){
                  if(NutNhan == 11){ // Nut C
                  for(i=0;i < 10;i++){
                  Buffer[i] = 0;
                  }
                  ChuSo = 0;
                  LCDDispStr(Buffer,24,185);
                  }
                  if(NutNhan < 11){ // Phim so
                  if(ChuSo < 9){

                  Buffer[ChuSo] = MANUT[NutNhan];
                  ChuSo = ChuSo + 1;
                  LCDDispStr(Buffer,24,185);
                  }
                  }
                  else if(NutNhan > 11 && NutNhan < 15){ // Phim tinh toan
                  PhepToan = NutNhan - 11;
                  Num1 = atofx(Buffer);
                  for(i=0;i < 10;i++){
                  Buffer[i] = 0;
                  }
                  ChuSo = 0;
                  LCDDispStr(Buffer,24,185);
                  }
                  else if(NutNhan == 15){ // Phim ket qua
                  Num2 = atofx(Buffer);
                  if(PhepToan == 1){ // Phep Cong
                  Number = Num1 + Num2;
                  }
                  if(PhepToan == 2){ // Phep Tru


                  Number = Num1 - Num2;
                  }
                  if(PhepToan == 3){ // Phep Nhan
                  Number = Num1 * Num2;

                  }
                  if(PhepToan == 4){ // Phep Chia
                  Number = Num1 / Num2;
                  }

                  if(ftoax(Number,Buffer) == 0){ // Phep tinh sai
                  Buffer[0] = 'M';
                  Buffer[1] = 'E';
                  }
                  ChuSo = 0;
                  PhepToan = 0;
                  LCDDispStr(Buffer,24,185);
                  }
                  }
                  }
                  }

                  Comment


                  • đề tài em làm là giao tiếp giửa Pic 16F877a + LCD 192x64 + touch-creen
                    em đã lập trình theo những tài liệu về Pic16f877a nhưng đoạn code báo lổi ở phần khai báo.
                    mong các anh chị sửa giùm e đoạn code nay với

                    Comment


                    • Mình mới đọc bài này của bạn, cũng hiểu sơ về cách tính toán cho ADC để đo nhiệt độ. Mình muốn tham khảo ý kiến của các bạn về cách hiểu của mình:

                      - sử dụng ADC 8bit, số bước ADC là 255, V_ref = 5V => mỗi bước ADC là 5/255 = 19.6 mV
                      - LM335: bước điện áp là 10mV/K (như trên), nếu ở 0K thì điện áp ra là 0V

                      vậy với giá trị ADC_value đo được tương ứng điện áp là: U = ADC_value*19.6 mV --> tương ứng với nhiệt độ là (U/10)K

                      => nhiệt độ là T = (ADC_value*19.6) /10
                      hay t = T - 273 = (ADC_value*19.6) /10 - 273

                      Không biết mình hiểu như vậy có sai không. các bạn cho ý kiến.

                      Thanks!
                      ||

                      Comment


                      • Nguyên văn bởi linhnc308 Xem bài viết
                        Đề tài: Mạch đo nhiệt độ và cảnh báo

                        Chức năng của mạch:
                        - Đo nhiệt độ môi trường tại một điểm thông qua sensor nhiệt LM335(Chi tiết về LM335 xem trong
                        datasheet). LM335 là sensor đo nhiệt, đầu ra là 10mV/K. Do đó để đo độ C ta cần có công thức chuyển đổi
                        giá trị. Vì ta dùng ADC của PIC là 8bit (có thể dùng 10bit) => max=255, Vref=VCC, giả thiết là VCC=5V nên tại 0 độ C
                        hay 273K thì đầu ra của LM335 có giá trị là 2.73V. Như vậy khi muốn tính toán ra độ C ta cần phải trừ đi mức
                        điện áp là 2.73V. Lấy ví dụ: nhiệt độ là 30 độ C = 303K -> out = 303 x 10mV/K =3.03V. Ta tính toán giá trị đọc được từ
                        ADC.
                        ADC 8 bit: V_in = VCC=5V => ADC_value = 255
                        V_in = 2.73V => ADC_value = (255/5)x2.73=139.23 (tương ứng 0 độ C)
                        V_in = 3.03V => ADC_value = (255/5)x3.03=154.53 (tương ứng 30 độ C)
                        Mặt khác do V_ref = VCC=5V nên ADC_value=1 tương ứng 5/255=19.6mV ~ 20mV. Trong khi đó LM335
                        cho ra điện áp là 10mV/1K nên để giá trị ADC thay đổi 1 đơn vị thì nhiệt độ phải thay đổi là 2K (hay 20mV)
                        Từ đó ta có công thức đầy đủ sau để tính giá trị độ C:

                        C = (ADC - 139.25)x(19.6mV/10mV)=(ADC-139.25)x1.96~(ADC-139.25)/0.512
                        Tương tự ta có công thức cho ADC 10bit và 12 bit:
                        ADC_10_bit: C= ( reading-558.6)/ 2.048
                        ADC_12_bit: C= ( reading-2235.9)/ 8.19

                        - Để hiện thị giá trị nhiệt độ ta có nhiêu phương án như LED 7, LCD, máy tính(qua RS232)... Trong đề tài
                        này ta dùng LED 7 thanh cho việc hiển thị. Gồm có hai LED 7, dùng PIC để giải mã hiển thị cho LED (có thể
                        dùng 7447 để tiết kiệm chân). Để cảnh báo ta đặt khoảng theo dõi nhiệt độ là từ 15 C đến 40 C (cái này tuỳ
                        vào người dùng) khi nhiêt độ nằm ngoài khoảng này thì phát tín hiệu cảnh báo bằng loa và có thể gửi tìn
                        hiệu điều khiển đến các mạch khác nếu có.
                        - Mạch có sử dụng thêm điện trở tinh chỉnh 10K tại chân ADJ của LM335 để điều chỉnh nhiệt độ ban đầu cho
                        phù hợp.

                        Mở rộng của đề tài:
                        - Nâng cao độ chính xác hiển thị bằng cách dùng ADC có độ phân giải cao hơn (có thể dùng ADC ngoài)
                        - Thêm bàn phím giao tiếp để có thể thay đổi trực tiếp khoảng nhiệt độ theo dõi, cùng với đó ta thêm vào
                        LED 7 để hiển thị hai giá trị nhiệt độ này
                        - Sử dụng EEPROM để lưu giá trị nhiệt độ mà người dùng thiết lập, các lần thay đổi khác...
                        - Ghép nối máy tính để truyền giá trị nhiệt độ đến máy tính
                        - Ghép nối LCD và một mạch đếm thời gian thực (DS1307) để ứng với mỗi thời điểm chương trình sẽ tự động
                        chọn khoảng thiết lập nhiệt độ thích hợp theo từng mùa, từng thời điểm định trước...
                        - Sử dụng PID trong điều khiển tự động kết hợp với các mạch điều khiển tăng giảm nhiêt độ để đảm bảo nhiệt
                        độ luôn bám theo một giá trị cho trước, hệ ổn định nhiệt (giá trị thay đổi là rất nhỏ)
                        - Vân vân và vân vân...anh em nào có thêm cao kiến gì thì bổ sung.

                        Mình mới đọc bài này của bạn, cũng hiểu sơ về cách tính toán cho ADC để đo nhiệt độ. Mình muốn tham khảo ý kiến của các bạn về cách hiểu của mình:

                        - sử dụng ADC 8bit, số bước ADC là 255, V_ref = 5V => mỗi bước ADC là 5/255 = 19.6 mV
                        - LM335: bước điện áp là 10mV/K (như trên), nếu ở 0K thì điện áp ra là 0V

                        vậy với giá trị ADC_value đo được tương ứng điện áp là: U = ADC_value*19.6 mV --> tương ứng với nhiệt độ là (U/10)K

                        => nhiệt độ là T = (ADC_value*19.6) /10
                        hay t = T - 273 = (ADC_value*19.6) /10 - 273

                        Không biết mình hiểu như vậy có sai không. các bạn cho ý kiến.

                        Thanks!
                        ||

                        Comment


                        • co ai biet ve cách sử lý hiện tượng crosstalk của cam biến siêu âm không vậy?
                          help......

                          Comment


                          • anh Linh giúp em với!! Em muốn làm mạch đồng hồ số dùng ds1307 & pic 16f877a hiển thị 6led 7 đoạn có ngắt chỉnh thời gian và hẹn giờ bằng chuông với lại 60led đơn chạy vòng tròn ngoài hiển chị như kim đồng hồ quay đèn sáng tắt cách nhau 1s và hiển thị giống trên led7 đoạn đém giây. Em phải giải quyết như thế nào cho em hỏi em phải dùng những linh kiện nào và hướng thực hiện như thế nào.
                            Thank anh!!!

                            Comment


                            • Chào các bạn. Đây là lần đầu mình vào diễn đàn, nếu có j ko fai mong mấy bạn đừng trách nha. Hni mình có chút chịn mún thỉnh giáo và mong nhận dc sự giup đõ từ các bạn nè.
                              Việc là như zày. Mình làm luận văn về mô hình về thang máy có 4 tầng. Mỗi một tầng mình gắn 1 cái LCD 1602. Mình ko bit lam thế nào để gửi zứ liệu từ pic tới 4 cái LCD nua. Nếu truyền một lúc thì nó sẽ bi nhiễu do mỗi một LCD có một time để nhận zũ liệu. Có người chi mình là nên truyền zữ liệu đến từng cái LCD bằng cách tạo trễ time ở 3 chân( RS RW E) của 4 cai LCD đó. Họ chỉ nói sơ sơ như zậy nên mình cũng ko hiểu cho lắm và cũng ko biết fai giai wuyet lam sao nua!
                              Pic mình sai là pic 16F877A. Giá của nó thì cũng ko co bao nhiu mà k lẽ dể điều khiển 4 cai LCD mà fai quất đến con Pic thi có hoi phí quá ko!
                              Mình mong các bạn jup mình zới nha! Thank các ban nhiu lam!!!!

                              Comment


                              • Em mới biết đến vi điều khiển ( gà lắm ), thầy giáo cho em đề tài "Xây dựng một hệ thống đo và điều khiển cường độ ánh sáng bằng đầu đo quang.

                                Yêu cầu: sử dụng cảm biến quang đo cường độ ánh sáng, nều ánh sáng yếu thì điều khiển để tăng cường độ sáng và ngược lại nếu mạnh quá thì giảm nó cường độ xuống. Thí dụ hệ đo và điều khiển này dùng trong nhà kính trồng cây. ". ai có hướng chỉ giáo em với, có code của pic 16f877a thì càng tốt, tks các anh nhiều!!!
                                có gì gửi vào mail: minhnv53@gmail.com cho em với!
                                Last edited by minhnv53; 16-02-2012, 18:48.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X