Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




Komunikace DMM a PC po sériové lince - Laboratorní úloha

DOC
Stáhnout kompletní materiál zdarma (314.5 kB)

Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu DOC.

1. Název úlohy:

Komunikace DMM a PC po sériové lince

2. Úkol měření:

  1. Napište program realizující přenos dat z DMM po sériové lince a zobrazující data průběžně na monitoru počítače. Funkci programu ověřte.

  2. Uskutečněte měření časové závislosti napětí na kondenzátoru při jeho nabíjení a vybíjení přes rezistor. Pro měření použijte program, který po 1s zobrazuje naměřené údaje na obrazovce a ukládá je do souboru.

  3. Naměřené závislosti vytiskněte, určete z nich časovou konstantu obvodu a kapacitu kondenzátoru.

3. Měřicí metoda:

  1. Programování komunikace PC s DMM

Propojení počítače s multimetrem

Pro uskutečnění přenosu dat musí být výstup RTS udržován na log 1, zatímco výstup DTR je třeba přepnout do log 0 (té odpovídá kladné napětí). DMM vyšle blok dat po přijetí příkazu “D“ (tj. ASCII kódu znaku D z počítače. Před vyžádáním dalších dat je třeba zařadit malé zpoždění (asi 100 ms).

Parametry přenosu

- počet datových bitů: 7

- parita: bez parity

- počet stop bitů: 2

- rychlost přenosu: 1200 Bd

Formát dat vysílaných multimetrem (14 ASCII znaků)

1 2 3 4 5 6 7 8 9 10 11 12 13 14

D C - 1 . 9 9 9 V CR

1 . 9 9 9 M o h m CR

Přístup k registrům komunikačního obvodu

V jazyce Pascal použijeme pro zápis do registru příkaz

Port[adr_reg]:= …;

a pro čtení z registru příkaz

prom:=Port[adr_reg];

Chceme-li vyslat znak, musíme nejdříve zjistit testováním bitu 5 registru Line Status, zda je vyrovnávací registr vysílače prázdný (předchozí znak byl již odeslán). Registr je prázdný, je-li v bitu 5 registru Line Status jednička:

begin

repeat

until port[BA+5]and 32 = 32; {pokračuj v testování 5 registru Line}

port[BA]:= znak; {Status dokud nebude bit 5 = 1}

end;

(BA je bázová adresa komunikačního obvodu, BA+5 je adresa registru Line Status; vyjádříme-li číslo 32 v dvojkovém tvaru, získáme 00100000)Podobně při příjmu znaku testujeme bit 0 registru Line Status. Přečíst znak z vyrovnávacího registru přijímače můžeme až tehdy, bude-li v bitu 0 registru Line Status jednička

Program pro snímání hodnot na počítači:

Program komunikace;

uses CRT, DOS;

const

ba=$2f8;

var

i: integer;

udaj: string;

delitel: word;

F: text;

vteriny:integer;

const

pren_rychl=1200;

parametry=$06;

begin

vteriny:=0;

delitel:=trunc(115200/pren_rychl);

Port[ba+3]:=128;

Port[ba]:=Lo(delitel);

Port[ba+1]:=Hi(delitel);

Port[ba+3]:=parametry;

Port[ba+4]:=$01;

Port[ba+2]:=$0;

clrscr;

writeln('Pro ukonceni programu stiskni libovolnou klavesu');

Textcolor(white);

writeln('Prave probiha transmise dat z mericiho pristroje: ');

Assign(F,'vystup.txt');

Rewrite(F);

repeat

udaj [0]:= #13;

i:= 1;

port [ba+5]:= port [ba+5] and $fe;

repeat

until port [ba+5] and 32 = 32;

port [ba]:= ord('D');

for i:=1 to 14 do begin

repeat

until port[ba+5] and 1 = 1;

if port[ba] <> 13 then

udaj [i] :=char(port[ba])

else udaj [i] := ' ';

end;

Writeln(F,vteriny,' ', udaj);

Témata, do kterých materiál patří