Thông báo

Collapse
No announcement yet.

Giúp code giao tiếp giữa PIC và rs232 với máy tính qua VB6 !!

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

  • Giúp code giao tiếp giữa PIC và rs232 với máy tính qua VB6 !!

    Hiện tại mình có làm 1 đồ án với đề tài là điều khiển động cơ bằng máy tính qua giao diện Visual Basic 6. Nội dung như sau:
    Phần cứng gồm:
    + 2 con led 7 đoạn để hiển thị tốc độ động cơ
    + 6 nút nhấn gồm có: bắt đầu, ON/OFF, nhanh dần, chậm dần, quay thuận và quay nghịch
    giao diện VB cũng có 6 command button như 6 nút nhấn trên, chỉ thêm 1 command button là Cài đặt động cơ, nút này cho phép nhập tốc độ động cơ và sau đó hiển thị tốc độ trên led 7 đoạn.
    Dưới đây là code C của mình, hok biết sai chổ nào mà nó hok nhận giữ liệu từ máy tính cũng như nút nhấn. Sơ đồ nguyên lý mình kèm theo ở dưới luôn:
    #include <16f877a.h>
    #fuses hs,nowdt,noprotect,nolvp,put // cau hinh cho Pc
    #use delay (clock=4000000)
    #use RS232(baud = 9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
    #use fast_io(b)
    #use fast_io(c)
    #use fast_io(d)
    #use fast_io(e)
    #byte portb = 0x6
    #byte portc = 0x7
    #byte portd = 0x8
    #byte porte = 0x9
    #byte timer11 = 0xE
    #byte timer1h = 0xF
    #byte t1con = 0x10
    #byte intcon =0x0b
    #bit congat=intcon.2
    #bit p0 = t1con.0
    #bit p1 = t1con.1
    #bit p2 = t1con.2
    #bit p3 = t1con.3
    #bit p4 = t1con.4
    #bit p5 = t1con.5
    #bit b0 = portb.0
    #bit b1 = portb.1
    #bit b2 = portb.2
    #bit b3 = portb.3
    #bit b4 = portb.4
    #bit b5 = portb.5
    #bit c0 = portc.0
    #bit c1 = portc.1
    #bit c2 = portc.2
    #bit c3 = portc.3
    #bit c4 = portc.4
    #bit c5 = portc.5
    #bit d1 = portd.1
    #bit d2 = portd.2
    #bit d3 = portd.3
    #bit d4 = portd.4
    #bit d5 = portd.5
    #bit e1 = porte.1
    #bit e2 = porte.2
    Int16 value,speed; //KHAI BIEN TOAN CUC
    Int8 sansang,Hngan,Htram,Hchuc,HDonVi,x,data,tam,i;
    char z;
    #Int_rda //data nhan tu rs232 san sang

    void ngat1()

    {

    z = getc();//nhan du lieu z
    if(z!='a' && z!='b' && z!='c' && z!='d' && z!='e' && z!='f') // z khac a,b,c..
    {

    data= z;
    if(c3 == 0 && e1 ==0)//kiem tra quay thuan va quay nghich
    {
    c3 = 1;
    e1= 0;
    setup_ccp2(ccp_pwm); // xuat xung pwm2 ra chan c1
    set_pwm2_duty(x);//x=m,Th=m*gia tri chia tan
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);// cho chan c2 ve muc thap( dong co quay thuan)
    setup_timer_2(t2_div_by_4,255,1);
    }
    if(c3 == 1 && e1 ==0)//kiem tra nut nhan
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(x);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    }
    if(c3 == 0 && e1 == 1)
    {
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(x);
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    }
    }
    else
    {
    if(z = 'f')
    {
    z=0;
    sansang = !sansang;
    if(sansang ==1)
    e2 = 1;
    else
    {
    e2 = 0;
    c3 = e1 = 0;
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    x = 10;
    while(true);
    }
    }
    }
    }
    #INT_TIMER0 //ngat timer 0

    void ngat()
    {
    value = (timer1h*256)+(timer11%256);
    set_timer0(15280);
    timer11 = 0;
    timer1h = 0;
    p1 = 1;
    p2 = 0;
    p3 = 0;
    p4 = 0;
    p5 = 0;
    p0 = 1;// ON
    congat = 0;
    }

    Void hienthi();

    Void main()

    {
    enable_interrupts(INT_RDA);
    enable_interrupts(INT_TIMER0);
    enable_interrupts(GLOBAL);
    ext_int_edge(L_TO_H);//chon cach lay xung canh len
    set_tris_b(0b111111);
    set_tris_c(0b10000001);
    set_tris_d(0);
    set_tris_e(0b00);
    portb=portc=portd=porte=0;
    setup_timer_0(RTCC_DIV_256| RTCC_INTERNAL);//
    set_timer0(15280);// delay 50ms
    timer11 = 0;
    timer1h = 0;
    p1 = 1;
    p2 = 0;
    p3 = 0;
    p4 = 0;
    p5 = 0;
    p0 = 1; // On
    value = 0;
    sansang = 0;
    tam = 1;
    speed = 20;
    data = 20;
    x = 120;
    while(1)
    {
    speed = (value*20)/400;
    Hchuc = speed/10;
    HDonVi = speed%10;
    putc(Hchuc+48);
    putc(HDonVi+480);

    hienthi();
    if(b0==0)
    {
    do
    {}
    while(b0==0);
    putc('#');
    putc('4');
    sansang=!sansang;
    if(sansang==1)
    e2=1;
    else
    {
    e2=0;
    c3 = e1 = 0;
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    x =10;
    while(true);
    }
    }
    if(sansang==1)
    {
    if(b1==0 || z=='a')
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    x =10;
    while(true);

    delay_ms(500);
    z=0;
    c3=1;
    e1=0;
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(x);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    putc('#');
    putc('1');
    }
    if(b2=0 || z=='b')
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    x =10;
    while(true);

    delay_ms(500);
    z=0;
    c3=0;
    e1=1;
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    putc('#');
    putc('2');
    }
    if(b3==0 ||z=='c')
    {
    z=0;
    c3=e1=0;
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    putc('#');
    putc('3');
    x =10;

    }
    if(b4==0 ||z=='d')
    {
    do
    {
    }
    while(b4==0);

    delay_ms(500);
    if(data>=2)
    data=data-1;
    z= 0;
    }
    if(b5==0 || z=='e')
    {
    do
    {
    }
    while(b5==0);

    delay_ms(50);
    x =10;
    if(data<=34)
    data=data+1;
    z =0;
    }
    if(speed>data && x>=1)
    {
    x=x-1;
    if(c3==1 && e1==0)
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(x);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    }
    if(c3==0 && e1==1)
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(x);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    }
    }
    if(speed<data && x<=254)
    {
    x=x+1;
    if(c3 ==1 &&e1 ==0)
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(x);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(0);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    }
    if(c3 ==0 && e1 ==1)
    {
    setup_ccp2(ccp_pwm);
    set_pwm2_duty(0);
    setup_ccp1(ccp_pwm);
    set_pwm1_duty(x);
    setup_timer_2(t2_div_by_4,255,1);
    while(true);
    }
    }
    }
    }
    }

    Void hienthi()
    {
    For(i=0;i<=2;i++)
    {
    Int ht[10]={192,249,164,176,153,146,130,248,128,144};
    portd=ht[Hchuc];
    c5=0;
    c4=1;

    delay_ms(10);
    portd=ht[HDonVi];
    c5=1;
    c4=0;
    delay_ms(10);
    }
    }
    file sơ đồ nguyên lý: Free Cloud Storage - MediaFire

  • #2
    hok ai giúp được àh ?

    Comment


    • #3
      mắc cười quá - tự bạn viết được bao nhiêu đây câu lệnh bài bản vậy mà ko biết tại sao giao tiếp máy tính / trong khi đó lệnh giao tiếp chỉ có 3 line là xong . trả lời bạn là xem lại công tắc nguồn đã ON chưa kaka
      Đang thất nghiệp 0988-010-486

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      • mèomướp
        Trả lời cho Sửa bộ nguồn DC 60V 45A
        bởi mèomướp
        Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
        hôm nay, 13:11
      • tuyennhan
        Trả lời cho Sửa bộ nguồn DC 60V 45A
        bởi tuyennhan
        Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
        hôm nay, 09:25
      • tuyennhan
        Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
        bởi tuyennhan
        Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
        Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
        hôm nay, 09:10
      • Ng.Phuong.5
        Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
        bởi Ng.Phuong.5
        Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
        Mấy con...
        Hôm qua, 19:44
      • viettinh
        Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
        bởi viettinh
        Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
        Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
        Hôm qua, 18:12
      • nguyendinhvan
        Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
        bởi nguyendinhvan
        Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
        Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
        Cách đơn giản...
        Hôm qua, 00:04
      • mèomướp
        Trả lời cho Sửa bộ nguồn DC 60V 45A
        bởi mèomướp
        Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
        08-01-2025, 19:02
      • tuyennhan
        Trả lời cho Sửa bộ nguồn DC 60V 45A
        bởi tuyennhan
        Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
        08-01-2025, 15:43
      • tuyennhan
        Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
        bởi tuyennhan
        Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
        08-01-2025, 15:28
      • mèomướp
        Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
        bởi mèomướp
        Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
        08-01-2025, 11:44
      Đang tải...
      X