ADC12bit giao tiếp với máy tính qua cổng COM

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • hphong23
    Nhập môn đệ tử
    • May 2005
    • 9

    #1

    ADC12bit giao tiếp với máy tính qua cổng COM

    Mình mới học PIC và thử làm một mạch biến đổi ADC giao tiếp với máy tính qua cổng Com. Vì vậy còn nhiều thứ mình làm rất củ chuối . Mong mọi người đọc và nhận xét giúp mình để có thể hoàn thiện hơn nhé. Con ADC mình dùng là ICL7107 (độ phân giải tương đương 12bit), còn PIC 16F877A thì dùng để giao tiếp nối tiếp.
    Nguyên tắc hoạt động của mạch là PIC sẽ nhận giá trị từ máy tính sau đó xuất ra cổng D để thực hiện việc chọn kênh vào (trên 4051) và chọn 74LS245 (dùng để mở rộng cổng). Giá trị vào sẽ được đọc vào từ cổng B và chuyển lại vào máy tính để giải mã và xuất kết quả ra.
    Mạch nguyên lý mình post lên có khác so với mạch thực tế nên cách lập trình hơi khác. Mình chỉ nêu cách hoạt động của mạch thôi. Cám ơn mọi người đã đọc nhé. Chúc vui vẻ!

    Đây là đoạn code cho PIC (viet bang C):
    Code:
       while(1)
          {
             while (!kbhit()&&(++timeout<50000)) delay_us(10);
             if (kbhit()) i=getc();
             output_D(i);
             delay_us(10);
             o=input_B();
             delay_us(10);
             putc(o);
             delay_us(10);
    
    
          }
    Còn đây là đoạn code viet bang Delphi để chọn kênh vào, điều khiển 74ls245 và giải mã giá trị nhận được

    Code:
    function read(k:byte):integer;
    var x,ra,d0,d1,d2,vao,tam:byte;
        Input,sign,n:Integer;
    
    
    function dv(data:byte):byte;   { giai ma hang don vi}
    begin
           case data of
              8: dv:=0;
              94:dv:=1;
              36:dv:=2;
              20:dv:=3;
              82:dv:=4;
              17:dv:=5;
              1: dv:=6;
              92:dv:=7;
              0: dv:=8;
              16:dv:=9;
    
         end;
    
    end;
    
    
    function ch(data:byte):byte;  { giai ma hang chuc}
    begin
           case data of
              4:  ch:=0;
              79:ch:=1;
              33: ch:=2;
              3:  ch:=3;
              74: ch:=4;
              18: ch:=5;
              16: ch:=6;
              71: ch:=7;
              0:  ch:=8;
              2:  ch:=9;
    
         end;
    
    end;
    
    function tr(data:byte):byte;    { giai ma hang tram}
    begin
           case data of
              2:  tr:=0;
              151:tr:=1;
              65: tr:=2;
              5:  tr:=3;
              148:tr:=4;
              36: tr:=5;
              32: tr:=6;
              135:tr:=7;
              0:  tr:=8;
              4:  tr:=9;
    
         end;
    
    end;
    
    begin
    
    case k of    {chon gia tri de phan kenh cho 4051}
    1: x:=226;
    2: x:=227;
    3: x:=234;
    4: x:=235;
    5: x:=242;
    6: x:=243;
    7: x:=250;
    8: x:=251;
    9: x:=228 ;
    10:x:=229 ;
    11:x:=236;
    12:x:=237;
    13:x:=244;
    14:x:=245;
    15:x:=252;
    16:x:=253;
    end;
    
    ra:=(223 and x); {ket hop gia tri chon kenh voi gia tri de dieu khien 74ls245}
    sendbyte(ra);
    vao:=readbyte();
    d0:=dv(vao);
    
    ra:=(191 and x); {ket hop gia tri chon kenh voi gia tri de dieu khien 74ls245}
    sendbyte(ra);
    vao:=readbyte();
    tam:=(vao and $7f); {che bit dau cua ICL7107}
    d1:=ch(tam);
    if (vao and $80)= $80 then sign:=1  else sign:=-1;
    
    ra:=(127 and x);  {ket hop gia tri chon kenh voi gia tri de dieu khien 74ls245}
    sendbyte(ra);
    vao:=readbyte();
    tam:=(vao and $f7); {che bit hang nghin cua ICL7107}
    d2:=tr(tam);
    if (vao and $8)=$8 then n:=0 else n:=1;
    
    read:=sign*(n*1000+d2*100+d1*10+d0);  {gia tri dien ap tinh bang mV}
    
    
    end;
  • nguoimientrung
    Nhập môn đệ tử
    • Nov 2005
    • 1

    #2
    Bạn có thể đua lên sơ đồ nguyên lý được không

    Comment

    • hphong23
      Nhập môn đệ tử
      • May 2005
      • 9

      #3
      Xin lỗi các bạn vì mình bận quá nên quên mất là chưa đưa sơ đồ nguyên lý. Mong các bạn đóng góp ý kiến cho mình với
      Attached Files
      Last edited by hphong23; 21-11-2005, 11:22 AM.

      Comment

      • cthang
        Nhập môn đệ tử
        • Jun 2017
        • 1

        #4
        cảm ơn ạ

        Comment

        Working...