Điều khiển tốc độ động cơ ENCODER giao tiếp qua RS232 với PIC (Phần 2)

Hôm nay electronic sẽ gửi đến các bạn phần tiếp theo về điều khiển tốc độ động cơ và hiển thị lên giao diện Visual.

Phần 1: Code CCS

Mã CCS:
/* Phan Hoang Thinh MSSV: 1413072 */
#include <baitapdoluonglythuyet.h>
#fuses HS NOWDT, NOPROTECT, NOLVP, NOBROWNOUT
// # sử dụng fast_io (d)
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <lcd.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
// # sử dụng delay (clock = 20000000)
RS232 #use (baud = 9600, parity = N, xmit = PIN_C6, RCV = PIN_C7, bit = 8)
//DINH NGHIA CAC LED
#define LED1 PIN_D0
#define LED2 PIN_D1
#define LED3 PIN_D2
#define LED4 PIN_D3
#define LED5 PIN_D4
#define LED6 PIN_D5
#define LED7 PIN_D6
#define LED8 PIN_D7
//DINH NGHIA CAC CHAN NUT NHAN HOAC 02 CHAN ENCODER
#define SW1 PIN_B0 //NGAT NGOAI 
#define SW2 PIN_B4
//DINH NGHIA CHAN TU CAM BIEN LM35
#define LM35 PIN_A1
//DINH NGHIA CHAN DIEU KHIEN DONG CO DUNG L298
#define DIR1 PIN_C0 // IN1
#define PWM PIN_C2 //CHAN DIEU RONG XUNG, ENA
#define dir2 PIN_C1 // IN2
//DINH NGHIA CAC BIEN 
//BIEN NHAN DU LIEU
// unsigned int16 SoXungDangDem = 0;
// unsigned int16 SoXungDoDuoc = 0;
char c_start,c_stop,c_tem; //bien tam luu ma bat dau và ket thúc
char s1[9]; //bi?n t?m luu d? li?u nh?n du?c t? máy tính
int k; // bi? N ch? S? cho m? ng d? li? u nh? n du? c
int biennhan; // bi?n báo hi?u dã nh?n d? li?u xong
// BIÊN MA LED
char sled1[] = "l1"; // mã d? sáng/t?t led1
char sled2 [] = "l2"; // LED2
char sled3 [] = "l3"; // LED3
char sled4 [] = "L4"; // LED4
char sled5 [] = "l5"; // led5
char sled6 [] = "l6"; // led6
char sled7 [] = "l7"; // led7
char sled8 [] = "L8"; // led8
unsigned char led1_on; // bi?n tr?ng thái sáng t?t led 1
unsigned char led2_on;
unsigned char led3_on;
unsigned char led4_on;
unsigned char led5_on;
unsigned char led6_on;
unsigned char led7_on;
unsigned char led8_on;
//BIEN MA NHIET DO
char snhietdo[] = "nd"; //yeu cau nhiet do
// MOTOR BIÊN MA
char smthuan [] = "mt"; // dongcoquaythuan
int co_thuan; // bi?n báo tr?ng thái d?ng co quay thu?n
char smnghich [] = "mn"; // dongcoquaynghich
int co_nghich; //bi?n báo tr?ng thái d?ng co quay ngh?ch
char smstop [] = "ms"; // dongcongungchay
// luu y: neu nhan ma @td+"xxx"+x 
char smpwm [] = "td"; // ma_nap_pwm
// CŨNG PWM
long ppwm; // bien luu giá tri %PWM nhan duoc tu máy tính
//BIEN SW - NGAT NGOAI
int ngat;//báo tr?ng thái ng?t ngoài
signed int32 TSW=0; //bien dem cho hai SW1 va SW2
int bien_goinhietdo;
int dem_t; // bien luu nên l? Nd m timer1?

///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH NGAT RS232
//NEU DUNG MA SE LUU VAO S1, BIEN NHAN = 1, 
//NEU KHONG DUNG MA BIEN NHAN = 0
#int_rda
khoảng trống RDA_isr (void)
{
   c_tem=getc();//NHAN TUNG KI TU
   if (c_tem == '@') // xet ki tu bat dau "@"
   {
   c_start = c_tem;
   k = 0;
   s1 [k] = c_start;
   }
   if (c_tem=='x') //xet ki tu ket thuc "x"
   {
   c_stop = c_tem;
   s1 [k] = c_stop;
   }
   if (c_start == '@' && c_stop == 'x')
   {
   k = 0;
   biennhan=1;//bao hieu da nhan dung ma dau-cuoi
   c_start = 0;
   c_stop = 0;
    }
   khác
   {
   s1[k]=c_tem;
   a ++;
   if (k> = 9) {k = 0;}
   }
}
///////////////////////////////////////////////////////////////////////////////
// chuong trinh ngat ngoài
#INT_RB
khoảng trống RB_isr (void)
{  
  if (!input(SW1)) //có tác dong nút nhan SW1
  {
  while (đầu vào (SW1)!);
  TSW + = 1; // tang nên
  ngat=1; //báo trang thái ngat
  }
  if (!input(SW2)) //có tác dong nút nhan SW2
  {
  while (đầu vào (SW2)!);
  TSW--; //giam so dem
  ngat=1; //báo trsng thái ngat
  }
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH CON DAOLED
void daoled1() //sáng t?t led 1
{
led1_on = ~ led1_on;
output_bit (LED1, led1_on);
printf ( "% s \ n \ r", "@ dao dẫn 1x"); // g? Id? li? uv? your computer
}
khoảng trống daoled2 ()
{
led2_on = ~ led2_on;
output_bit (LED2, led2_on);
printf ( "% s \ n \ r", "@ dao dẫn 2x");
}
khoảng trống daoled3 ()
{
led3_on = ~ led3_on;
output_bit (LED3, led3_on);
printf ( "% s \ n \ r", "@ dao dẫn 3x");
}
khoảng trống daoled4 ()
{
led4_on = ~ led4_on;
output_bit (LED4, led4_on);
printf ( "% s \ n \ r", "@ dao dẫn 4x");
}
khoảng trống daoled5 ()
{
led5_on = ~ led5_on;
output_bit (LED5, led5_on);
printf ( "% s \ n \ r", "@ dao dẫn 5x");
}
khoảng trống daoled6 ()
{
led6_on = ~ led6_on;
output_bit (LED6, led6_on);
printf ( "% s \ n \ r", "@ dao dẫn 6x");
}
khoảng trống daoled7 ()
{
led7_on = ~ led7_on;
output_bit (LED7, led7_on);
printf ( "% s \ n \ r", "@ dao dẫn 7x");
}
khoảng trống daoled8 ()
{
led8_on = ~ led8_on;
output_bit (LED8, led8_on);
printf ( "% s \ n \ r", "@ dao dẫn 8x");
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH DOC NHIET DO
khoảng trống goinhietdo ()
{
nổi adcndo;
// ADC dài;
delay_ms (10);
// bo ADC 10 bit = 1024
// Vref- = 0, Vref + = 1,5 1500 mV - 1024, // 10mV - 1 làm C
// adcndo = (1520 * (float) read_adc () / 1023);
// ADC = read_adc ();
//nhiet=adc*0.488;
adcndo = (2000f * (float) read_adc () / 1023);
// printf ( "% s% u% s \ n \ r", "a", nhiet, "s");
printf("%s %3.2f %s\n\r","@ND",adcndo,"x"); //goi du lieu ve máy tính theo quy d?nh
}
//NGAT TIMER 1
# INT_TIMER1
khoảng trống ngattimer1 ()
{
//Th?ch anh 20000000, chu ki máy 0.2us
//Timer1 16 bit, tràn khi dem toi: 0.2*65535*8 = 104856 us, voi 8 là so scale khi cài d?t
// timer: DIV_BY_8
// SoXungDoDuoc = SoXungDangDem;
// SoXungDangDem = 0;
 //viet chuong trinh ngat
set_timer1 (4856); // timer dơi dau dem tu 4856
dem_t++; //moi lan tang khi timer 1 tran, tuong ung voi 100000 us
if (dem_t==10) //dem toi 10 thì tuong ung voi chu ki 1s 
{
bien_goinhietdo=1; //báo chu ki 1s
}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH DIEU KHIEN MOTOR
//CHUONG TRINH NHAN %PWM TU MAY TINH
khoảng trống nappwm ()
{
char SPWM [3];
spwm[0]=s1[4]; //lay giá tri %PWM tu bien nhan theo quy dinh
SPWM [1] = s1 [5];
SPWM [2] = s1 [6];
PWM = atoi (PWM);
printf ( "% s% Lu% s \ n \ r", "@ Toc làm:", ppwm, "% x");
}
//CHUONG TRINH MOTOR STOP
khoảng trống motostop ()
{
set_pwm1_duty (0);
// output_bit (PWM, 0);
output_bit(DIR1,0); // motor ngung khi Dir 1 và 2 = 0
output_bit (DIR2,0);
setup_ccp1(CCP_OFF); //ngung xuat PWM
co_thuan=0; //reset tr?ng thái ch?y thu?n ngh?ch
co_nghich=0;
printf ( "% s \ n \ r", "@ mstopx");
}
//CHUONG TRINH MOTOR CHAY THUAN
//Luu y ve cach tinh do rong xung
// pwm_chuki = [PR2 + 1] * 4 * T_daodong * Tmr2
//tmr2: 16,4,1===>dua vao chu ky xung mong muon, xac dinh pr2
//tu pr2 xac dinh 100% la gia tri bao nhieu (x)
//tu do nap gia tri dieu rong xung vao. vidu: 50% la x*50%
//vi du thach anh 20.000.000 Hz, tao xung 2440hz, tinh ra pr2=127
//tinh ra chu ky xung pwm la 512 ung voi 100%
//////////////Ngat cho toc do dong co/***********/
/************************************************/
khoảng trống quaythuan ()
{
nổi pwm_t;
// nổi tocdo;
pwm_t = (float) ppwm * 512/100;
// pwm_t = (float) ppwm;
setup_ccp1(CCP_PWM); //cho phep xuat PWM kenh 1
output_bit (DIR1,1); // chon huong quay
output_bit (DIR2,0);
set_pwm1_duty ((int32) pwm_t); // nap xung PWM
co_thuan=1;
printf ( "% s \ n \ r", "@ mthuanx");
/**************************/
// xungthinh = set_pwm1_duty ((int32) pwm_t); // nap xung PWM
nổi tocdo = ((1000f / 25F) * pwm_t * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
// printf ( "% s% 3.2f% s \ n \ r", "@ NĐ", adcndo, "x");
/*****************************/
}
//CHUONG TRINH MOTOR CHAY NGHICH
khoảng trống quaynghich ()
{
nổi pwm_n;
pwm_n = (float) ppwm * 512/100;
setup_ccp1 (CCP_PWM);
output_bit (DIR1,0);
output_bit (DIR2,1);
set_pwm1_duty ((int16) pwm_n);
co_nghich=1;
printf ( "% s \ n \ r", "@ mnghichx");
/****************************/
nổi tocdo = ((1000f / 25F) * pwm_n * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
/***********************/
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH XOA BIEN NHAN
khoảng trống xoanhan ()
{
int j;
for (j = 0; j <= 9; j ++) {s1 [j] = 0;}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH CON XET MA NHAN DUOC
khoảng trống xetma ()
{
   if ((biennhan) && (Ngát == 0))
   {
   if (strncmp (strstr (s1, sled1), sled1,2) == 0) {daoled1 ();} // n u = “l1”
   if (strncmp (strstr (s1, sled2), sled2,2) == 0) {daoled2 ();} // n u =”l2”
   if (strncmp (strstr (s1, sled3), sled3,2) == 0) {daoled3 ();}
   if (strncmp (strstr (s1, sled4), sled4,2) == 0) {daoled4 ();}
   if (strncmp (strstr (s1, sled5), sled5,2) == 0) {daoled5 ();}
   if (strncmp (strstr (s1, sled6), sled6,2) == 0) {daoled6 ();}
   if (strncmp (strstr (s1, sled7), sled7,2) == 0) {daoled7 ();}
   if (strncmp (strstr (s1, sled8), sled8,2) == 0) {daoled8 ();}
   if (strncmp (strstr (s1, snhietdo), snhietdo, 2) == 0) {goinhietdo ();} // n u = “nd”
   if (strncmp (strstr (s1, smthuan), smthuan, 2) == 0) {quaythuan ();} // nau = “mt”
   if (strncmp (strstr (s1, smnghich), smnghich, 2) == 0) {quaynghich ();} // nau = “mn”
   if (strncmp (strstr (s1, smstop), smstop, 2) == 0) {motostop ();} // nau = “ms”
   if (strncmp (strstr (s1, smpwm), smpwm, 2) == 0) // nau = “td”
       { 
          nappwm ();
          if (co_thuan) {quaythuan ();}
           if (co_nghich) {quaynghich();}
       }
   xoanhan();
   biennhan = 0;
   }
}
///////////////////////////////////////////////////////////////////////////////
// DOCNUTNHAN
khoảng trống nutnhan ()
{
char sodem [8];
char sf [8] = "@ SD";
char duong[3]="+";
char ssl [3] = "x";
if ((Ngát) && (biennhan == 0))
{
if (TSW> 0)
{
itoa (TSW, 10, sodem); // dai sa đập thành dang chuai
strcat(sodem,ssl);//ghép sa dam voi ss1
strcat(sf,duong); //ghép chuoi
strcat(sf,sodem);// ghép chuoi
}
if (TSW <= 0)
{
itoa (HƯƠNG, 10, sodem);
strcat (sodem, ssl);
strcat (sf, sodem);
}
printf ( "% s \ n \ r", sf);
ngat=0;
}
}
///////////////////////////////////////////////////////////////////////////////
//CHUONG TRINH CHINH
void main ()
{

ext_int_edge(H_TO_L ); //quy dinh ngat ngoài tích cuc muc thap = canh xuong
enable_interrupts(INT_RB0);//khai bao INT0, canh xuong
enable_interrupts(INT_RB4);//khai bao INT4, canh xuong
enable_interrupts(INT_RDA);//cho phep ngat truyen thong
enable_interrupts(INT_TIMER1); // cho phép ngat timer1
//enable_interrupts(INT_TIMER0); // cho phép ngat timer1
enable_interrupts(GLOBAL); //cho phép ngat toàn cuc
setup_adc_ports(VREF_VREF);//quy dinh áp nguong so sánh ADC
setup_adc_ports (san1);
setup_adc (ADC_CLOCK_INTERNAL); // Built-in A / D chức năng thiết lập
set_adc_channel(1); //chon ADC kênh 1
setup_timer_2(T2_DIV_BY_16,127,1);//cài dat timer2
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); // cài dat timer1
set_timer1 (4865);
delay_ms (10);
while (true)
{
xetma();//goi chuong trình xét mã nhan duoc tu máy tính
nutnhan(); //goi chuong trình nhan nút nhan  
if (bien_goinhietdo==1) //goi nhiet do dua vào chu ki xap xi 1s dã thiet lap tu ngat timer1
{
goinhietdo ();
bien_goinhietdo = 0;
dem_t = 0; 
}
}
}
…………………………………………………………………………………………………………………………………………………….
Phần code gửi tốc độ động cơ lên giao diện :
//CHUONG TRINH MOTOR CHAY THUAN
khoảng trống quaythuan ()
{
nổi pwm_t;
// nổi tocdo;
pwm_t = (float) ppwm * 512/100;
// pwm_t = (float) ppwm;
setup_ccp1(CCP_PWM); //cho phep xuat PWM kenh 1
output_bit (DIR1,1); // chon huong quay
output_bit (DIR2,0);
set_pwm1_duty ((int32) pwm_t); // nap xung PWM
co_thuan=1;
printf ( "% s \ n \ r", "@ mthuanx");
/**************************/
// xungthinh = set_pwm1_duty ((int32) pwm_t); // nap xung PWM
nổi tocdo = ((1000f / 25F) * pwm_t * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
// printf ( "% s% 3.2f% s \ n \ r", "@ NĐ", adcndo, "x");
/*****************************/
}
//CHUONG TRINH MOTOR CHAY NGHICH
khoảng trống quaynghich ()
{
nổi pwm_n;
pwm_n = (float) ppwm * 512/100;
setup_ccp1 (CCP_PWM);
output_bit (DIR1,0);
output_bit (DIR2,1);
set_pwm1_duty ((int16) pwm_n);
co_nghich=1;
printf ( "% s \ n \ r", "@ mnghichx");
/****************************/
nổi tocdo = ((1000f / 25F) * pwm_n * 60F) / 136;
printf ( "% s% 3.0lf% s \ r \ n", "@ DC", tocdo / 60 "x"); // vong / giay
/***********************/
}

/////////////////////////////////////////////////////////////////////////////// 



CODE trên Visual :

nhập khẩu Hệ thống
nhập khẩu System.ComponentModel
nhập khẩu System.IO.Ports

Công Lớp GiaodienHoangThinh
    không nhietdo
    không bodemnhan
    không tocdo
    Private Sub GiaodienHoangThinh_Load (người gửi Như Object , e Như EventArgs ) Xử lý MyBase Load
        Baotrangthai.Text = "Mời bạn mở cổng COM"
        MoCongCOM.Enabled = Đúng
        DongCOM.Enabled = False
        goi.Enabled = False
        Nhan.Enabled = False
        led_1.Enabled = False
        led_2.Enabled = False
        led_3.Enabled = False
        led_4.Enabled = False
        led_5.Enabled = False
        led_6.Enabled = False
        led_7.Enabled = False
        led_8.Enabled = False
    End Sub

    Private Sub MoCongCOM_Click (người gửi Như Object , e Như EventArgs ) Xử lý MoCongCOM.Click
        Nếu (CongCOM.IsOpen) Sau đó,
            Exit Sub
        End If
        với CongCOM
            .PortName = "COM1"
            .BaudRate = 9600
            .Parity = IO.Ports. chẵn lẻ .None
            .StopBits = IO.Ports. StopBits .Một
            .DataBits = 8
            .ReceivedBytesThreshold = 1
        End Với
        Thử
            CongCOM.Open ()
            MoCongCOM.Enabled = False
            DongCOM.Enabled = Đúng
            goi.Enabled = Đúng
            Nhan.Enabled = True
            led_1.Enabled = Đúng
            led_2.Enabled = Đúng
            led_3.Enabled = Đúng
            led_4.Enabled = Đúng
            led_5.Enabled = Đúng
            led_6.Enabled = Đúng
            led_7.Enabled = Đúng
            led_8.Enabled = Đúng
            Baotrangthai.Text = "Cổng COM đã mở"
        Catch ex Như ngoại lệ
        End Try
    End Sub

    Private Sub DongCOM_Click (người gửi Như Object , e Như EventArgs ) Xử lý DongCOM.Click
        CongCOM.Close ()
        MoCongCOM.Enabled = Đúng
        DongCOM.Enabled = False
        goi.Enabled = False
        Nhan.Enabled = False
        led_1.Enabled = False
        led_2.Enabled = False
        led_3.Enabled = False
        led_4.Enabled = False
        led_5.Enabled = False
        led_6.Enabled = False
        led_7.Enabled = False
        led_8.Enabled = False
        Baotrangthai.Text = "Mời bạn mở cổng COM"
    End Sub

    Private Sub Thoat_Click(sender As Object, e As EventArgs) Handles Thoat.Click
        If MsgBox("Bạn có muốn thoát khỏi chương trình?",
MsgBoxStyle .YesNo + MsgBoxStyle .Question, "Exit" ) =
MsgBoxResult .Yes Sau đó,
            Gần()
        EndIf
    End Sub

    Private Sub led_1_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_1.Click
        CongCOM.Write ( "@ L1x" )
    End Sub

    Private Sub DATA_RECEIVED (người gửi Như Object , e Như IO.Ports. SerialDataReceivedEventArgs ) Xử lý CongCOM.DataReceived
        Dim v_start Như Integer
        Dim v_stop Như Integer
        Dim v_nhietdo Như Integer
        Dim v_tocdo Như Integer
        Thử
            CheckForIllegalCrossThreadCalls = False
            bodemnhan + = CongCOM.ReadExisting
            Nếu bodemnhan.Contains ( "@" ) Sau đó,
                Nếu bodemnhan.EndsWith ( "x" ) Sau đó,
                    CongCOM.DiscardInBuffer ()
                    v_start = bodemnhan.IndexOf ( "@" )
                    v_stop = bodemnhan.IndexOf ( "x" )
                    Nếu bodemnhan.Contains ( "NĐ" ) Sau đó,
                        v_nhietdo = bodemnhan.IndexOf ( "NĐ" )
                        nhietdo = bodemnhan.Substring (v_nhietdo + 2, v_stop - (v_nhietdo + 1) - 1) + "oC"
                    ElseIf bodemnhan.Contains("DC") Then                  //nhận giá trị tốc độ
                        v_tocdo = bodemnhan.IndexOf ( "DC" )
                        tocdo = bodemnhan.Substring (v_tocdo + 2, v_stop - (v_tocdo + 1) - 1) + "Vọng / s"
                    khác
                        Onhan.Text = bodemnhan.Substring (v_start + 1, v_stop - 1 - v_start)
                    EndIf
                    Nếu bodemnhan.Contains ( "+" ) Sau đó,
                        sw1.BackColor = Màu .Green
                    khác
                        sw1.BackColor = Màu .Red
                    EndIf
                    Nếu bodemnhan.Contains ( "-" ) Sau đó,
                        sw2.BackColor = Màu .Green
                    khác
                        sw2.BackColor = Màu .Red
                    EndIf
                    bodemnhan = ""
                EndIf
            EndIf
        Catch ex Như ngoại lệ

        End Try

    End Sub

    Private Sub Nhan_Click(sender As Object, e As EventArgs) Handles Nhan.Click
        laymau.Start ()
    End Sub

    Private Sub led_2_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_2.Click
        CongCOM.Write ( "@ L2x" )

    End Sub

    Private Sub led_3_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_3.Click
        CongCOM.Write ( "@ l3x" )

    End Sub

    Private Sub led_4_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_4.Click
        CongCOM.Write ( "@ L4x" )

    End Sub

    Private Sub led_5_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_5.Click
        CongCOM.Write ( "@ L5X" )

    End Sub

    Private Sub led_6_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_6.Click
        CongCOM.Write ( "@ L6x" )

    End Sub

    Private Sub led_7_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_7.Click
        CongCOM.Write ( "@ L7x" )

    End Sub

    Private Sub led_8_Click (người gửi Như Object , e Như EventArgs ) Xử lý led_8.Click
        CongCOM.Write ( "@ l8x" )

    End Sub

    Private Sub laymau_Tick (người gửi Như Object , e Như EventArgs ) Xử lý laymau.Tick
        Thử
            Nếu CongCOM.IsOpen Sau đó,
                onhietdo.Text = nhietdo
                nhandongco.Text = tocdo
            EndIf
        Catch ex Như ngoại lệ

        End Try
    End Sub

    Private Sub goi_Click (người gửi Như Object , e Như EventArgs ) Xử lý goi.Click
        CongCOM.Write ( "@" + ogoi.Text + "x" )
     
    End Sub

    Private Sub quaythuan_Click (người gửi Như Object , e Như EventArgs ) Xử lý quaythuan.Click
        CongCOM.Write ( "@mtx" )
    End Sub

    Private Sub quaynghich_Click (người gửi Như Object , e Như EventArgs ) Xử lý quaynghich.Click
        CongCOM.Write ( "@mnx" )
    End Sub

    Private Sub SetTocDo_Click (người gửi Như Object , e Như EventArgs ) Xử lý SetTocDo.Click
        CongCOM.Write ( "@ td +" + caidattocdo.Text + "x" )
    End Sub

    Private Sub button_stop_Click (người gửi Như Object , e Như EventArgs ) Xử lý button_stop.Click
        CongCOM.Write ( "@msx" )
    End Sub
End Lớp

…………………………………………………………………………………………………………………………………………………….
Phần nhận tốc độ động cơ trên Visual :
                    ElseIf bodemnhan.Contains("DC") Then                  //nhận giá trị tốc độ
                        v_tocdo = bodemnhan.IndexOf ( "DC" )
                        tocdo = bodemnhan.Substring (v_tocdo + 2, v_stop - (v_tocdo + 1) - 1) + "Vọng / s"


PHẦN THỰC HIỆN KẾT NỐI ĐÃ ĐƯỢC HƯỚNG DẪN PHẦN TRƯỚC, CÁC BẢN HÃY XEM LẠI PHẦN TRƯỚC NHÉ !!!.
Giờ vào phần chính nào : 


Phần LED :


Nút nhấn :



 Ô gửi dữ liệu :


 Nhiệt độ :

Động cơ :
Ta chọn tốc độ cho động cơ:




 Động cơ quay thuận :



 Động cơ quay nghịch:




Like và theo dõi những kiến thức và tài liệu mới nhé. !!!

Previous
Next Post »