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

  • #16
    Dùng PIC16F873 điều khiển động cơ 1 chiều

    undefinedMình vừa search trên google.com.vn thấy có một đề tài dùng PIC để điều khiển tốc độ của động cơ một chiều tại trang web này:
    http://www.interq.or.jp/japan/se-inoue/e_pic6_9.htm

    Xem sơ bộ thì thấy rằng site này hướng dẫn rất chi tiết cụ thể về phần cứng và phần mềm, và đã có sản phẩm có ảnh chụp chi tiết bộ điều khiển này.

    Sau đây là một vài minh họa tại trang này:

    Ảnh sản phẩm

    Ảnh sơ mạch trên board

    Sơ đồ nguyên lý của mạch.

    Bọn này hướng dẫn chi tiết quá.Các bạn có thể theo đó làm thành một bộ điều khiển ngon lành cho mình đó.

    Chúc các bạn thành công.
    Technical sale at WT Microelectronics S'pore
    Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
    Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

    Comment


    • #17
      Mạch đo tần số. 0~50MHz

      Hôm nay vừa bảo vệ xong môn đo lường, được miễn thi. Vui quá pót lên đây cho mọi người xem cái code chương trinh đo tần số-nhiệt độ-điện áp mà tôi làm.
      - Đo nhiệt độ dùng LM35 làm cảm biến, đưa vào AN0 - PIC16F877A
      - Đo điện áp cũng đưa luôn vào AN0(có thể dùng ANx để đo độc lập với AN0). Mặc định đo 0~5V. Điện áp dưới 1V thì hiển thị dạng mV (ví dụ 250mV). Muốn đo điện áp to hơn, dải rộng hơn thì dùng mạch phân áp thích hợp và tính toán lại công thức đo. Mạch phân áp có thể tìm thấy chi tiết trong sách của thầy Ngô Diên Tập. Minh không nói ra ở đây vì muốn bạn nào mới tìm hiểu thì khi đọc quyển sách này sẽ thu đc nhiều kinh nghiệm ("Đo lường và điều khiên...").
      >> Chương trinh đo nhiệt độ và điên áp sẽ thực hiện lấy mẫu 20 lần trong 1 giây và đưa vào bộ đệm FIFO 10 phần tử. Sau 1 giây thì tính giá trị trung bình và đưa ra cập nhật hiển thị trên LCD.
      - Đo tần số mình dùng biến 32 bit đếm số xung vào trong đúng 1 giây. Theo lý thuyết sẽ đếm được tối đa 2 mũ 32 = 4.2GHz. Lý thuyết thôi, còn thực tế test với mấy phất tần chuẩn đo đc lên tời 10MHz. To hơn chưa thử vì không có máy phát. Đo cực chuẩn, dưới 100KHz sai số là +/-1. Nói chung khi mình chỉnh mấy phát hiển thị ra sao thì trên LCD cũng hiênt thị đúng ngần ấy số.
      (Tín hiệu xung đếm đưa vào chân RC0)
      Đây là code. Code này kết hợp với một example của CCS nói về dùng Timer.

      Code:
      // Main.c
      #include <16f877A.h>
      #include <def_877a.h>
      #device *=16 ADC=10
      #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, NOCPD, NOWRT
      #use delay(clock=20000000)
      #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
      #bit t1_overflow = 0x0C.0  // Co tran Timer1
      #include <lcd_lib_4bit.c>
      
      int8 nghin,tram,chuc,donvi,mode;
      int16 xin[10];
      int1 mili_volt,on_disp;
      float volt;
      int8 char1,char2,char3,char4,char5,char6,char7,char8,f_mode;
      int cycles8, cycles,i;
      int32 freq;
      long freqc_high;
      long freqc_low;
      
      #define INTS_PER_SECOND0  4    // (20000000/(4*256*256))
      #define INTS_PER_SECOND1 19         // (20000000/(4*4*65536))
      byte int_count0,int_count1;
      
      void do_dien_ap();
      void do_nhiet_do();
      void do_tan_so();
      void Convert_freq(int32 freq);
      void xuat_ra_lcd();
      void temp_2_buff();
      //==================================
      //-----Ngat Ngoai------
      #INT_EXT
      void ngatngoai()
      {
      while (RB0 == 0) {delay_ms(500);}
      delay_ms(500);
      mode++;
      if (mode == 3) mode = 0;
      on_disp = 0;
      }
      //============Ngat Timer 0 1=============
      #int_rtcc                          // This function is called every time
      void clock0_isr() {                 // the RTCC (timer0) overflows (255->0).
                                         // For this program this is apx 76 times
          if(--int_count0==0) {           // per second.
            temp_2_buff();
            int_count0=INTS_PER_SECOND0;
          }
      
      }
      #INT_TIMER1                        // This function is called every time
      void clock1_isr() {                 // timer 1 overflows (65535->0), which is
                                         // approximately 19 times per second for
          if(--int_count1==0) {           // this program.
            xuat_ra_lcd();
            int_count1 = INTS_PER_SECOND1;
          }
      }
      //==================================
      void main() {
      
         lcd_init();
         lcd_putcmd(0x01);
         lcd_putcmd(0x80);
         printf(lcd_putchar,"# DigiMetter f-t-V #");
      
         setup_adc_ports(AN0);
         setup_adc(ADC_CLOCK_INTERNAL);
         delay_us(10);
      
      // Khoi tao cho ngat ngoai
         enable_interrupts (INT_EXT);
         ext_int_edge(H_TO_L);
      //----------------------------
      
         //lcd_putchar(0xdf);
         //lcd_putchar("C");
         enable_interrupts (GLOBAL);
      //---------------------------
         int_count0=INTS_PER_SECOND0;
         int_count1=INTS_PER_SECOND1;
         mode = 0;
         on_disp = 0;
      while(true)
         {
            switch(mode)
            {
            case 0 : do_tan_so();   break;
            case 1 : do_nhiet_do(); break;
            case 2 : do_dien_ap();  break;
            }
         }
      }
      //---------END MAIN-----------------
      Last edited by linhnc308; 18-09-2008, 10:01. Lý do: cho thêm tag code
      Ethernet-RS232, PIC Webserver, RFID Reader
      CallerID, Cảnh báo BTS, ...
      0988006696
      linhnc308@gmail.com
      http://linhnc308.blogspot.com

      Comment


      • #18
        Code:
        // Tiếp theo
        void temp_2_buff() {
           xin[9]=xin[8];
           xin[8]=xin[7];
           xin[7]=xin[6];
           xin[6]=xin[5];
           xin[5]=xin[4];
           xin[4]=xin[3];
           xin[3]=xin[2];
           xin[2]=xin[1];
           xin[1]=xin[0];
           xin[0]=read_adc();
        }
        //-----------------------------------
        void convert_bcd(int16 x)
          {
         int16 temp;
           temp = x;
           nghin = temp / 1000 + 0x30;
           temp  = temp % 1000;
           tram  = temp / 100 + 0x30;
           temp  = temp % 100;
           chuc  = temp / 10 + 0x30;
           donvi = temp % 10 + 0x30;
          }
        //===================================
        int16 cal_temp() {
        return((xin[0]+xin[1]+xin[2]+xin[3]+xin[4]+xin[5]+xin[6]+xin[7]+xin[8]+xin[9])/10);
        }
        
        void do_dien_ap()
        {
        if (on_disp==0)
        {
           //lcd_putcmd(0x01);
           //lcd_putcmd(0x80);
           //printf(lcd_putchar,"CT Do dien ap");
           lcd_putcmd(0xC0);
           for(i=0;i<20;i++) lcd_putchar(" ");
           on_disp=1;
           set_timer0(0);
           setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // Tran = 13.1ms
           set_timer1(0);
           setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
           enable_interrupts(INT_RTCC);
           enable_interrupts(INT_TIMER1);
        }
        }
        
        void do_nhiet_do()
        {
        if (on_disp==0)
        {
           //lcd_putcmd(0x01);
           //printf(lcd_putchar,"CT Do nhiet do");
           lcd_putcmd(0xC0);
           for(i=0;i<20;i++) lcd_putchar(" ");
           on_disp=1;
           set_timer0(0);
           setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); // Tran = 13.1ms
           set_timer1(0);
           setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
           enable_interrupts(INT_RTCC);
           enable_interrupts(INT_TIMER1);
        }
        }
        
        void xuat_ra_lcd() {
        int16 temp1;
        
           temp1 = cal_temp();
           if (mode == 1)   temp1 = temp1 * 50/1.023;
           if (mode == 2)
           {
              temp1 = temp1 * 5;
              if (temp1 < 1023) mili_volt = 1;
              else mili_volt = 0;
           }
           convert_bcd(temp1);
           lcd_putcmd(0xC0);
           if (mode == 1)
           {
              printf(lcd_putchar, " T = ");
              lcd_putchar(nghin);
              lcd_putchar(tram);
              lcd_putchar(".");
              lcd_putchar(chuc);
              lcd_putchar(donvi);
              lcd_putchar(0xdf);   // Ky tu do
              printf(lcd_putchar,"C");
           }
           if(mode == 2)
           {
           lcd_putcmd(0xC0);
           printf(lcd_putchar, " V = ");
           if (!mili_volt)
           {
           lcd_putchar(nghin);
           lcd_putchar(".");
           }
           lcd_putchar(tram);
           lcd_putchar(chuc);
           lcd_putchar(donvi);
           if (mili_volt) printf(lcd_putchar,"  mV");
           else   printf(lcd_putchar," V");
           }
        }
        Last edited by linhnc308; 18-09-2008, 10:03. Lý do: thêm tag code
        Ethernet-RS232, PIC Webserver, RFID Reader
        CallerID, Cảnh báo BTS, ...
        0988006696
        linhnc308@gmail.com
        http://linhnc308.blogspot.com

        Comment


        • #19
          //-------Chuong trinh do tan so -----------
          void disp_freq() {

          lcd_putcmd(0xC0);
          printf(lcd_putchar,"f = ");
          convert_freq(freq);
          if (char1 != 0x30) LCD_putchar(char1);
          if (f_mode == 2) LCD_putchar(".");
          if ((char1 != 0x30) || (char2 != 0x30)) LCD_putchar(char2);
          if ((char3 != 0x30) || (char2 != 0x30) || (char1 !=0x30)) LCD_putchar(char3);
          if (f_mode==0) {LCD_putchar(char4);LCD_putchar(".");}
          else if (f_mode==1)
          {
          LCD_putchar(".");
          LCD_putchar(char4);
          }
          else lcd_putchar(char4);
          LCD_putchar(char5);
          LCD_putchar(char6);
          switch (f_mode)
          {
          case 0: {LCD_putchar(char7);lcd_putcmd(0xCD);Printf(LCD_pu tchar," Hz");} break;
          case 1: {LCD_putchar(char7);lcd_putcmd(0xCD);Printf(LCD_pu tchar,"KHz");} break;
          case 2: {LCD_putchar(char7);lcd_putcmd(0xCD);Printf(LCD_pu tchar,"MHz");} break;
          }
          }
          //------------------------------------
          void do_tan_so() {

          if (on_disp==0)
          {
          //lcd_putcmd(0x01);
          //lcd_putcmd(0x80);
          //printf(lcd_putchar,"CT Do tan so (f)");
          lcd_putcmd(0xC0);
          for(i=0;i<20;i++) lcd_putchar(" ");
          on_disp=1;
          set_timer1(0);
          disable_interrupts(INT_RTCC);
          set_timer0(0);
          disable_interrupts(INT_TIMER1);
          }

          while (mode == 0) {
          cycles8=0;
          cycles=0;
          freqc_high=0;
          t1_overflow=0;
          set_timer1(0);
          setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);
          while (cycles!=0xFF) {
          cycles8=0;
          while (cycles8!=0xFF) {
          if (t1_overflow)
          {t1_overflow=0;freqc_high++;}
          else
          {delay_cycles(5);}
          delay_cycles(62); // x = 62
          cycles8++;
          }
          delay_cycles(216); // y = 216
          cycles++;
          }
          delay_cycles(200); //z = 211
          /* ___ end waiting 1 second ___ */
          setup_timer_1(T1_DISABLED); //turn of counter to prevent corruption while grabbing value
          if (t1_overflow) //check one last time for overflow
          freqc_high++;
          freqc_low=get_timer1(); //get timer1 value as the least sign. 16bits of freq counter
          freq=make32(freqc_high,freqc_low); //use new make32 function to join lsb and msb
          disp_freq();
          printf("f = %LU Hz\r\n",freq); //and print frequency
          }
          }
          void Convert_freq(int32 freq)
          {
          int32 temp;
          if (freq >= 10000 )
          {
          f_mode = 1;
          temp = freq;
          goto exit;
          }
          else
          if (freq >= 1000000 )
          {
          f_mode = 2;
          temp = freq;
          char1 = (temp / 1000000) + 0x30;
          temp = temp % 1000000;
          char2 = (temp / 100000) + 0x30;
          temp = (temp % 100000);
          char3 = (temp / 10000) + 0x30;
          temp = (temp % 10000);
          char4 = (temp / 1000) + 0x30;
          temp = temp % 1000;
          char5= (temp/100) + 0x30;
          temp = temp % 100;
          char6 = temp /10 + 0x30;
          char7 = (temp % 10) + 0x30;
          goto exit_convert;
          }
          else
          {
          f_mode = 0;
          temp = freq * 100;
          goto exit;
          }
          exit:
          char1 = (temp / 100000) + 0x30;
          temp = temp % 100000;
          char2 = (temp / 10000) + 0x30;
          temp = (temp % 10000);
          char3 = (temp / 1000) + 0x30;
          temp = (temp % 1000);
          char4 = (temp / 100) + 0x30;
          temp = temp % 100;
          char5= (temp/10 ) + 0x30;
          char6 = (temp % 10) + 0x30;
          char7 = 0x30;
          exit_convert:
          temp=0;
          }
          Ethernet-RS232, PIC Webserver, RFID Reader
          CallerID, Cảnh báo BTS, ...
          0988006696
          linhnc308@gmail.com
          http://linhnc308.blogspot.com

          Comment


          • #20
            Tất cả phần trên là trong cúng 1 files *.C, biên dịch bằng CCS. CÒn đây là hàm điều khiển LCD dạng 4bit. Tôi tham khảo trên mạng hay ở đâu thì khôgn nhớ nữ, có chỉnh sửa đôi chút.
            // lcd_lib_4bit.c
            #include <stddef.h>

            #define LCD_RS PIN_D2
            //#define LCD_RW PIN_A1
            #define LCD_EN PIN_D3

            #define LCD_D4 PIN_D4
            #define LCD_D5 PIN_D5
            #define LCD_D6 PIN_D6
            #define LCD_D7 PIN_D7

            // misc display defines-
            #define Line_1 0x80
            #define Line_2 0xC0
            #define Clear_Scr 0x01

            // prototype statements
            #separate void LCD_Init ( void );// ham khoi tao LCD
            #separate void LCD_SetPosition ( unsigned int cX );//Thiet lap vi tri con tro
            #separate void LCD_PutChar ( unsigned int cX );// Ham viet1kitu/1chuoi len LCD
            #separate void LCD_PutCmd ( unsigned int cX) ;// Ham gui lenh len LCD
            #separate void LCD_PulseEnable ( void );// Xung kich hoat
            #separate void LCD_SetData ( unsigned int cX );// Dat du lieu len chan Data
            // D/n Cong
            #use standard_io ( B )
            #use standard_io (A)

            //khoi tao LCD**********************************************
            #separate void LCD_Init ( void )
            {
            LCD_SetData ( 0x00 );
            delay_ms(200);
            output_low ( LCD_RS );// che do gui lenh
            LCD_SetData ( 0x03 );
            LCD_PulseEnable();
            LCD_PulseEnable();
            LCD_PulseEnable();
            LCD_SetData ( 0x02 );
            LCD_PulseEnable();
            LCD_PutCmd ( 0x2C );
            LCD_PutCmd ( 0b00001100);
            LCD_PutCmd ( 0x06 );
            LCD_PutCmd ( 0x01 );
            }

            #separate void LCD_SetPosition ( unsigned int cX )
            {
            /* this subroutine works specifically for 4-bit Port A */
            LCD_SetData ( swap ( cX ) | 0x08 );
            LCD_PulseEnable();
            LCD_SetData ( swap ( cX ) );
            LCD_PulseEnable();
            }

            #separate void LCD_PutChar ( unsigned int cX )
            {
            /* this subroutine works specifically for 4-bit Port A */
            output_high ( LCD_RS );
            LCD_PutCmd( cX );
            output_low ( LCD_RS );
            }

            #separate void LCD_PutCmd ( unsigned int cX )
            {
            /* this subroutine works specifically for 4-bit Port A */
            LCD_SetData ( swap ( cX ) ); /* send high nibble */
            LCD_PulseEnable();
            LCD_SetData ( swap ( cX ) ); /* send low nibble */
            LCD_PulseEnable();
            }
            #separate void LCD_PulseEnable ( void )
            {
            output_high ( LCD_EN );
            delay_us ( 3 ); // was 10
            output_low ( LCD_EN );
            delay_ms ( 3 ); // was 5
            }

            #separate void LCD_SetData ( unsigned int cX )
            {
            output_bit ( LCD_D4, cX & 0x01 );
            output_bit ( LCD_D5, cX & 0x02 );
            output_bit ( LCD_D6, cX & 0x04 );
            output_bit ( LCD_D7, cX & 0x08 );
            }
            Ethernet-RS232, PIC Webserver, RFID Reader
            CallerID, Cảnh báo BTS, ...
            0988006696
            linhnc308@gmail.com
            http://linhnc308.blogspot.com

            Comment


            • #21
              // register definitions - def_877a.h

              #define W 0
              #define F 1

              // register files
              #byte INDF =0x00
              #byte TMR0 =0x01
              #byte PCL =0x02
              #byte STATUS =0x03
              #byte FSR =0x04
              #byte PORTA =0x05
              #byte PORTB =0x06
              #byte PORTC =0x07
              #byte PORTD =0x08
              #byte PORTE =0x09

              #byte EEDATA =0x10C
              #byte EEADR =0x10D
              #byte EEDATH =0x10E
              #byte EEADRH =0x10F
              #byte ADCON0 =0x1F
              #byte ADCON1 =0x9F
              #byte ADRESH =0x9F
              #byte ADSESL =0x9F

              #byte PCLATH =0x0a
              #byte INTCON =0x0b
              #byte PIR1 =0x0c
              #byte PIR2 =0x0d
              #byte PIE1 =0x8c
              #byte PIE2 =0x8d

              #byte OPTION_REG =0x81
              #byte TRISA =0x85
              #byte TRISB =0x86
              #byte TRISC =0x87
              #byte TRISD =0x88
              #byte TRISE =0x89

              #byte EECON1 =0x18C
              #byte EECON2 =0x18D

              //DINH NGHIA BIT
              #bit ra5 =0x05.5
              #bit ra4 =0x05.4
              #bit ra3 =0x05.3
              #bit ra2 =0x05.2
              #bit ra1 =0x05.1
              #bit ra0 =0x05.0

              #bit rb7 =0x06.7
              #bit rb6 =0x06.6
              #bit rb5 =0x06.5
              #bit rb4 =0x06.4
              #bit rb3 =0x06.3
              #bit rb2 =0x06.2
              #bit rb1 =0x06.1
              #bit rb0 =0x06.0

              #bit rC7 =0x07.7
              #bit rC6 =0x07.6
              #bit rC5 =0x07.5
              #bit rC4 =0x07.4
              #bit rC3 =0x07.3
              #bit rC2 =0x07.2
              #bit rC1 =0x07.1
              #bit rC0 =0x07.0

              #bit rD7 =0x08.7
              #bit rD6 =0x08.6
              #bit rD5 =0x08.5
              #bit rD4 =0x08.4
              #bit rD3 =0x08.3
              #bit rD2 =0x08.2
              #bit rD1 =0x08.1
              #bit rD0 =0x08.0

              #bit rE2 =0x09.2
              #bit rE1 =0x09.1
              #bit rE0 =0x09.0


              #bit trisa5 =0x85.5
              #bit trisa4 =0x85.4
              #bit trisa3 =0x85.3
              #bit trisa2 =0x85.2
              #bit trisa1 =0x85.1
              #bit trisa0 =0x85.0

              #bit trisb7 =0x86.7
              #bit trisb6 =0x86.6
              #bit trisb5 =0x86.5
              #bit trisb4 =0x86.4
              #bit trisb3 =0x86.3
              #bit trisb2 =0x86.2
              #bit trisb1 =0x86.1
              #bit trisb0 =0x86.0

              #bit trisc7 =0x87.7
              #bit trisc6 =0x87.6
              #bit trisc5 =0x87.5
              #bit trisc4 =0x87.4
              #bit trisc3 =0x87.3
              #bit trisc2 =0x87.2
              #bit trisc1 =0x87.1
              #bit trisc0 =0x87.0

              #bit trisd7 =0x88.7
              #bit trisd6 =0x88.6
              #bit trisd5 =0x88.5
              #bit trisd4 =0x88.4
              #bit trisd3 =0x88.3
              #bit trisd2 =0x88.2
              #bit trisd1 =0x88.1
              #bit trisd0 =0x88.0

              #bit trise2 =0x89.2
              #bit trise1 =0x89.1
              #bit trise0 =0x89.0

              // INTCON Bits for C
              #bit gie = 0x0b.7
              #bit peie = 0x0b.6
              #bit tmr0ie = 0x0b.5
              #bit int0ie = 0x0b.4
              #bit rbie = 0x0b.3
              #bit tmr0if = 0x0b.2
              #bit int0if = 0x0b.1
              #bit rbif = 0x0b.0

              // PIR1 for C
              #bit pspif = 0x0c.7
              #bit adif = 0x0c.6
              #bit rcif = 0x0c.5
              #bit txif = 0x0c.4
              #bit sspif = 0x0c.3
              #bit ccp1if = 0x0c.2
              #bit tmr2if = 0x0c.1
              #bit tmr1if = 0x0c.0

              //PIR2 for C
              #bit cmif = 0x0d.6
              #bit eeif = 0x0d.4
              #bit bclif = 0x0d.3
              #bit ccp2if = 0x0d.0

              // PIE1 for C
              #bit adie = 0x8c.6
              #bit rcie = 0x8c.5
              #bit txie = 0x8c.4
              #bit sspie = 0x8c.3
              #bit ccp1ie = 0x8c.2
              #bit tmr2ie = 0x8c.1
              #bit tmr1ie = 0x8c.0

              //PIE2 for C
              #bit osfie = 0x8d.7
              #bit cmie = 0x8d.6
              #bit eeie = 0x8d.4

              // OPTION Bits
              #bit not_rbpu = 0x81.7
              #bit intedg = 0x81.6
              #bit t0cs = 0x81.5
              #bit t0se = 0x81.4
              #bit psa = 0x81.3
              #bit ps2 = 0x81.2
              #bit ps1 = 0x81.1
              #bit ps0 = 0x81.0

              // EECON1 Bits
              #bit eepgd = 0x18c.7
              #bit free = 0x18C.4
              #bit wrerr = 0x18C.3
              #bit wren = 0x18C.2
              #bit wr = 0x18C.1
              #bit rd = 0x18C.0

              //ADCON0
              #bit CHS0 =0x1F.3
              #bit CHS1 =0x1F.4
              #bit CHS2 =0x1F.5
              Ethernet-RS232, PIC Webserver, RFID Reader
              CallerID, Cảnh báo BTS, ...
              0988006696
              linhnc308@gmail.com
              http://linhnc308.blogspot.com

              Comment


              • #22
                Còn nhiều đề tài nữa sẽ pót lên sau. Nhấn mạnh lại một điều, tất cả các đề tài này đều đã làm mạch thật và chạy ổn định.
                Chúc sớm thàn công với PIC.
                Ethernet-RS232, PIC Webserver, RFID Reader
                CallerID, Cảnh báo BTS, ...
                0988006696
                linhnc308@gmail.com
                http://linhnc308.blogspot.com

                Comment


                • #23
                  Chào các bạn, nhưng ai quan tâm đến VDK. Thời gian qua vì bận cho việc trường lớp nên tôi ko chăm sóc đc cho chuyên mục này, mong các bạn thông cảm. Về việc các bài viết bị thiếu code va hình vẽ, tôi sẽ cập nhật lại trogn thời gian sớm nhất (chắc đến khoảng tối mai) và sẽ đưa thêm một số đề tài mới à tôi đã phát triển thành công thời gian qua. Các code trên sẽ đều đc viết trên CCS, mạch điện vẽ trên ORCad.
                  Các chương trình code viết bằng HT PIC16 + 18 và trên MPLAB C18 tôi kô hỗ trợ mã nguồn, tuy nhiên về lập trình có vấn đề thắc mắc các bạn co thể mail cho tôi. linhnc308@yahoo.com linhnc308@gmail.com
                  Về PIC18F và dòng USB tôi ko thể free code dc. Tuy nhiên để tìm hiểu về chúng các bạn dưa và datasheet và sách USB Complete.. Chắc chắn sẽ thành công. MicroChip cũng hỗ trợ free về code USB.

                  Chúc các bạn thành công với VDK. VDK chỉ là công cụ và chúng ta nên biết nhiều loại.
                  Ethernet-RS232, PIC Webserver, RFID Reader
                  CallerID, Cảnh báo BTS, ...
                  0988006696
                  linhnc308@gmail.com
                  http://linhnc308.blogspot.com

                  Comment


                  • #24
                    Một số mạch PIC

                    Như đã hứa, hôm nay tôi up lại các mạch PIC mà tôi đã tưng làm trước đấy. Trong mỗi file đã bao gồm code và Sơ đồ vẽ bằng Orcad9. Chương trình dịch là CCS, trong mỗi chương trình có khai báo file *.h. Nếu khi dịch mà thiếu thì bạn tìm lại trong các file tôi gửi.

                    Chúc thành công!
                    Attached Files
                    Ethernet-RS232, PIC Webserver, RFID Reader
                    CallerID, Cảnh báo BTS, ...
                    0988006696
                    linhnc308@gmail.com
                    http://linhnc308.blogspot.com

                    Comment


                    • #25
                      Tiếp theo...
                      Attached Files
                      Ethernet-RS232, PIC Webserver, RFID Reader
                      CallerID, Cảnh báo BTS, ...
                      0988006696
                      linhnc308@gmail.com
                      http://linhnc308.blogspot.com

                      Comment


                      • #26
                        Xin hoan nghênh việc làm của Bác LINH, anh em sẽ có nhiều tài liệu và chương trình bổ ích để: Tức khắc khai ngộ, tức thời nắm bắt kiến thức về vi điều khiển. Chúc bác sẽ có nhiều thành công và đề án hay cho anh chị em học hỏi và trao dồi nâng cao thêm tri kiến.

                        Comment


                        • #27
                          ai có vài đề tài để làm luận văn tốt nghiệp mà dùng pic không, em giờ đang muốn kiếm 1 đề tài để làm luận văn

                          Comment


                          • #28
                            Có một bài toán, một bạn gửi mail hỏi tôi: Thiết Kế Máy tính điện tử (Thực hiện + - * /). Cái này không khó lắm, phần cứng có bàn phím HEX 4x4, 8 Led7, PIC16F877A. Trước đây tôi làm cho AT89 rồi, dạo này bận thi nên ko thể pót trả lời ngay dc, anh e ai đã có rồi hướng dẫn qua cho mọi người.
                            Sau này tôi sẽ pót toàn bộ code lên sau. Kỳ cuối rồi, chuẩn bị để ra trường cái đã.
                            Ethernet-RS232, PIC Webserver, RFID Reader
                            CallerID, Cảnh báo BTS, ...
                            0988006696
                            linhnc308@gmail.com
                            http://linhnc308.blogspot.com

                            Comment


                            • #29
                              Nguyên văn bởi linhnc308 Xem bài viết
                              Có một bài toán, một bạn gửi mail hỏi tôi: Thiết Kế Máy tính điện tử (Thực hiện + - * /). Cái này không khó lắm, phần cứng có bàn phím HEX 4x4, 8 Led7, PIC16F877A. Trước đây tôi làm cho AT89 rồi, dạo này bận thi nên ko thể pót trả lời ngay dc, anh e ai đã có rồi hướng dẫn qua cho mọi người.
                              Sau này tôi sẽ pót toàn bộ code lên sau. Kỳ cuối rồi, chuẩn bị để ra trường cái đã.
                              Vào chương trình proteus , phần Samples , lấy luôn ở trong đó ra cho nhanh ... Hí hí . Rất tiện lợi , đầy đủ cả mã nguồn , sơ đồ .
                              Học phải biết tận dụng chứ ...? Không phải ai cũng biết tận dụng đâu , làm ngay đi thôi ...
                              OK rồi nhé .
                              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                              Comment


                              • #30
                                Bác Quế Dương nhanh thật đấy.Đúng là anh em không để ý cái đó lắm

                                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