Giáo trình mô đun Lập trình ghép nối máy tính
BÀI MỞ ĐẦU: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH TRUYỀN
THÔNG
Mã bài : MĐ38-01
Giới thiệu
Bài mở đầu nhằm giới thiệu cho học sinh một cách tổng quan về ngôn ngữ
được sử dụng để lập trình giao tiếp với máy tính, việc lập trình Visual có thể hiểu
là dùng các điều khiển có sẵn, chúng ta sẽ dùng chuột với những thao tác để lấy
những điều khiển cần dùng từ hộp công cụ đưa vào Form để thiết kế chương
trình, xác lập các thuộc tính cho chúng và sau đó là viết lệnh cho những điều
khiển đó.
Mục tiêu
- Nhận biết được tổng thể của ngôn ngữ lập trình truyền thông
- Trình bày chính xác các điều khiển truyền thông, đặc tính, các sự kiện
- Sử dụng gọi được các hàm API trong lập trình truyền thông và một số
ứng dụng trong lập trình truyền thông.
- Cẩn thận, tự giác, chính xác.
- Tuân thủ, đảm bảo an toàn cho người và thiết bị
- Có tinh thần trách nhiệm cao trong học tập và làm việc
Nội dung chính
A. LÝ THUYẾT
1. Giới thiệu về ngôn ngữ truyền thông
Mục tiêu :
- Hiểu được khái niệm về ngôn ngữ lập trình Visual Basic
- Thực hiện được một số thao tác cơ bản trên phần mềm Visual Basic 6
1.1. Giới thiệu Visual Basic
Visual Basic là một ngôn ngữ lập trình cấp cao 32 bit được sử dụng
để viết các chương trình chạy trong môi trường Windows. Visual Basic sử
dụng kiểu lập trình Visual hay RAD( Rapid Application Development) trong đó
việc tạo các cửa sổ, các Điều khiển và cách ứng xử của các cửa sổ cũng như các
Điều khiển được thực hiện một cách dễ dàng nhanh chóng chỉ bằng các thao tác
với mouse không cần phải khai báo, tính toán với nhiều câu lệnh phức tạp.
Visual Basic là một ngôn ngữ lập trình theo kiểu hướng đối tượng. Nó
khác với kiểu lập trình cũ là kiểu Top Down.
- Lập trình Top Down: chương trình được bố trí và thực thi từ trên xuống.
Với kiểu
lập trình này, việc bố trí sẽ trở nên rất khó khăn đối với các chương trình lớn.
- Lập trình hướng đối tượng OOP (object-oriented programming): Các
thành phần được phân thành các đối tượng (Object) và viết cách ứng xử
riêng cho mỗi đối tượng sau đó kết hợp chúng lại tạo thành chương trình.
1.2. Bắt đầu với Visual Basic
1.2.1. Khởi động Visual Basic:
Sau khi khởi động VB, một hộp thoại (Dialog) “New Project” xuất hiện
cho phép lựa chọn 1 trong các loại ứng dụng mà bạn muốn tạo. VB6 cho phép
tạo 13 loại ứng dụng khác nhau ở Tab6
“New”, tuy nhiên ở mức độ căn bản và thông thường, Standard EXE
(một loại chương trình tự chạy tiêu chuẩn) sẽ được chọn.

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Giáo trình mô đun Lập trình ghép nối máy tính
tám lối ra số, tám lối vào
số, một lối vào analog và một lối và đếm. Toàn bộ ba thanh ghi dịch dùng để
nhập vào và xuất ra có thể được điều khiển bằng một đường dẫn giữ nhịp và
đồng bộ (strobe) chung.
Hình 6.1: Một giao diện nối tiếp đa năng
Việc nhập vào và xuất ra có thể được thực hiện đồng thời, bởi vì một
đường dẫn giữ nhịp chung được sử dụng cho tất cả các vi mạch. Thủ tục “Trao
đổi” trong đoạn chương trình 6.1 đảm nhận việc truyền dữ liệu theo hai hướng.
Mỗi lời gọi lại phục hồi trạng thái lối ra của vi mạch 4094 và đồng thời đọc ra
122
các trạng thái của các lối vào số và bộ biến đổi A/D. Tất cả dữ liệu sắp xếp trong
các biến toàn cục Dout (lối ra sô), Din (lối vào số) và Ain (lối vào analog)
Ngoài ra, lối vào tự do CTS được sử dụng để đo tần số. Ở đây thời gian
mở cổng được thiết lập cố định là 100 ms, vì vậy có thể nhận được độ phân giải
về tần số bằng 10 Hz. Khi ta đấu vào trước đó một bộ biến đổi điện áp/ Tần số,
thì giao diện có thể được sử dụng với hai lối vào analog.
Đoạn chương trình 8-1: Chương trình cơ sở dùng cho giao diện đa năng nối tiếp
Unit Unil
Interface
Uses PORTINC
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
Type
Tform1 = class (TForm)
CheckBox1 : TcheckBox;
CheckBox2 : TcheckBox;
CheckBox3 : TcheckBox;
CheckBox4 : TcheckBox;
CheckBox5 : TcheckBox;
CheckBox6 : TcheckBox;
CheckBox7 : TcheckBox;
CheckBox8 : TcheckBox;
Labell : TLabel;
Label2 : TLabel;
Label3: TLabel;
Label4 : TLabel;
Label5 : TLabel;
Label6 : TLabel;
Label7 : TLabel;
Label8 : TLabel;
Timer1 : TTimer;
Label9 : TLabel;
CheckBox10 : TCheckBox;
CheckBox11 : TCheckBox;
CheckBox12 : TCheckBox;
CheckBox13 : TCheckBox;
CheckBox14 : TCheckBox;
CheckBox15 : TCheckBox;
CheckBox16 : TCheckBox;
Label10 : TLabel;
Edit1 : TEdit;
Label11 : TLabel;
Edit2 : TEdit;
123
Label12 : TLabel;
Procedure FromCreate(Sender : TObject);
Procedure Timer1TTimer(Sender : TObject);
End;
Var
Form1: TForm1;
Dout, Din, Ain: Byte;
Implementation
{$R *.DFM}
Procedure Trao_doi;
Var Vi_tri, Vi_triAD, r, m : Integer;
Begin
RTS(1);
Delayus(20);
RTS(0);
Vi_tri := 1;
Vi_triAD := 128;
Din := 0;
Alin := 0;
For n:=1 to 8 do begin
If ((Dout AND Vi_tri) > 0) then
TXD (1) {xuất ra dữ liệu}
Else TXD (0);
If DCD = 1 { đọc dữ liệu}
Then Din := Din + Vi_tri;
If DSR = 1 then {đọc A/D}
Alin := Alin + Vi_triAD;
DTR (1); {Clock tới}
Delayus (20); {Gây trễ}
DTR (0); {Clock tắt}
Vi_tri := Vi_tri *2;
Vi_triAD :=Vi_triAD div 2;
End;
RTS(1); {Strobe tới}
Delayus(20) {Gây trễ}
RTS(0); {Strobe}
End;
Function Tan_so:Integer;
Var Bo_dem, Cu, Nhap_vao:Integer; Cu:Cũ
Begin
Bo_dem:=0;
ReCuime (true);
TimeInitus;
Cu:=CTS;
124
While TimeReadus<(100000) do begin
Nhap_vao:=CTS;
If Nhap_vao>Cu then Bo_dem:=Bo_dem +1;
Cu:=Nhap_vao;
End;
Tan_so:=Bo_dem;
ReCuime (false);
End;
Procedure TForm1.FormCreate (Sender: TObject);
Begin
OpenCom (pchar (‘com2:9600, N, 8, 1’))
Timer1.Interval :=100;
Timer1.Enabled :=true;
End;
Procedure TForm1.Timer1Timer(Sender: TObject);
Var Gia_tri: Word;
Dien_ap: Real;
Begin
Dout :=0;
If CheckBox1.Checked Then Dout := Dout +1;
If CheckBox2.Checked Then Dout := Dout +2;
If CheckBox3.Checked Then Dout := Dout +4;
If CheckBox4.Checked Then Dout := Dout +8;
If CheckBox5.Checked Then Dout := Dout +16;
If CheckBox6.Checked Then Dout := Dout +32;
If CheckBox7.Checked Then Dout := Dout +64;
If CheckBox8.Checked Then Dout := Dout +128;
Trao_doi;
CheckBox9.Checked := ((Din And 1)>0);
CheckBox10.Checked := ((Din And 2)>0);
CheckBox11.Checked := ((Din And 4)>0);
CheckBox12.Checked := ((Din And 8)>0);
CheckBox13.Checked := ((Din And 16)>0);
CheckBox14.Checked := ((Din And 32)>0);
CheckBox15.Checked := ((Din And 64)>0);
CheckBox16.Checked := ((Din And 128)>0);
Dien_ap :=Alin/255*5;
Edit1.Text :=FloatToStrF (Dien_ap, ffGeneral,3,2) +’ V’;
Edit2.Text :=FloatToStrF (Tan_so*10, ffGeneral,4,0) +’ Hz’;
End;
End;
125
2. Thiết lập chương trình đo lường
Mục tiêu:
- Biết được các phần mềm sử dụng trong phòng thí nghiệm điện tử
- Sử dụng được phần mềm COMPACT vào đo lường các thiết bị
Để có được những phần mềm sử dụng trong phòng thí nghiệm điện tử như
một công cụ, nhiều công ty đã viết ra các phần mềm mô phỏng hoặc điều hành
thực sự một mạch ghép nối và giới thiệu tính năng trên nhiều tạp chí chuyên
ngành. Có thể kể ra hàng loạt các phần mềm quen thuộc như: Daisy, DASYLab,
DaqView, DIAdem, ChartView, LogView, WaveView, vvViệc mua trực
tiếp các phần mềm loại này thường tốn kém về kinh phí. Nhưng việc tham khảo
tính năng cũng như giao diện của phần mềm có thể cho ta những thông tin rất bổ
ích khi đánh giá cũng như khi trực tiếp viết ra các phần mềm ghép nối
Dưới đây xin giới thiệu phần mềm COMPACT, được viết bằng ngôn ngữ
Delphi. Bằng phần mềm COMPACT, tất cả các lối vào/ra của khối ghép nối đa
năng đều được điều khiển và cho phép thu thập các số liệu đo lường một cách
linh hoạt. Người sử dụng có thể lựa chọn cổng COM khi khởi động chương
trình.
Sau khi khởi động chương trình, trên màn hình hiện lên một thực đơn với
nhiều chức năng. Trong thực đơn con “Overview” ta nhận được khả năng truy
nhập trực tiếp lên tất cả các lối vào và lối ra. Cả hai lối vào analog dùng cho
điện áp và tần số đều được mô tả trên các dụng cụ chỉ kim. Ngoài ra, trong
trường hợp đo điện áp cũng xuất hiện một bộ hiển thị số, chỉ ra số byte được bộ
biến đổi A/D cung cấp. Cả hai máy đo đều có thể sử dụng trực tiếp cho các phép
thử và tìm kiếm lỗi
Ngoài ra các lối vào analog, ta cũng có được khả năng truy cập lên các lối
vào/ra số của giao diện đa năng. Tám lối vào số đều được hiển thị bằng các LED
ảo (vì chỉ là ảnh của một LED trên màn hình) và đồng thời qua bộ hiển thị số
như là byte giữa 0 và 255. Ta cũng có thể giám sát trực tiếp các trạng thái của
một mạch điện số. Các đường dẫn lối ra số được thay đổi bằng các phím gạt ảo.
Trong một bộ chỉ thị số ta quan sát trạng thái của một mạch điện số. Các đường
dẫn lối ra số được thay đổi bằng các phím gạt ảo. Trong một bộ chỉ thị số ta
quan sát thấy trạng thái chung của cổng
Hình 6.4: Quan sát trực tiếp tất cả các lối vào và lối ra.
126
Hình 6.6: Máy tự ghi xy.
Chức năng ‘overview” về cơ bản là tương ứng với chưng trình UNI1.EXE
đã được giới thiệu trước đây . trong khi các khản năng bổ sung thêm được thể
hiện ra các thiết bị ghi khác nhau của chương trình.
Thiết bị ghi TY vẽ ra môt hoặc hai đại lượng lôi vào analog theo thời
gian. Nhờ vậy mà việc quan sat sự thay đổi theo thời gian của các đại lượng này
trở lên đơn giản hơn. Dải đo có thể lữa chon được môt trong giới hạn rộng từ
một giây đến 24h.
Đa số các đại lượng analong đều có sự phù thuộc qua lai.vì thế việc sử
dụng một máy ghi XY tỏ ra là đặc biệt thuận tiện trong phần mềm COMPACT,
điện áp được biểu diển theo tần số.cách mô tả này đặc biệt thích hợp đối với các
phép đo theo sự thay đổi của tần số.Khi đó tín hiệu từ một bộ tạo hàm(máy phát
chức năng) điều khiển đồng thời lối vào tần số của giao diện đa năng và lối vào
của một mạch cần khảo sát.tín hiệu lối ra của mạch kiểm tra được đưa đến lối
vào analog của khối ghép nối của một bộ chỉnh lưu dùng trong đo lường. dãi tần
số đáng quan tâm có thể được quét bằng tay, để vẽ ra quá trình diễn biến khi
thay đổi tần số.
Thiết bị ghi theo bit (bit-plotter), đoi khi còn gọi là bộ phận tích logic, tỏ
ra là thích hợp với các ứng dụng thuần tuy số. cho đến 8 trạng thái số có thể
được quan sát trực tiếp trong một khỏng thời gian lựa chon được. Thiết bị này ở
đây là thiết bị ảo vì được tạo ra bằng một hàm hocawcj một số hàm. Có khả
năng hổ trợ chẳng hạn cho việc kiểm tra lỗi trong các mạch số.
Một chức năng thuận tiện khác của chương trình là bộ định thời (Timer).
Bộ định thời cho phép đo chính xác thời gian ở các xung, được đưa đến lối vào
CTS. Ở đây cũng có thể đấu vào một công tắc kiểu nhấn phím lên nguồn +5 V.
3. Kiểm tra hoạt động của các vi mạch
Mục tiêu:
127
- Viết được chương trình kiểm tra dùng cho một vi mạch CMOS loại 4011
Khối ghép nối đa năng có đủ các lối vào và lối ra để có thể kiểm tra các
khả năng làm việc bình thường của các vi mạch số đơn giản. Đặc tính này có thể
được minh họa thông qua thí dụ về vi mạch NAND kép bốn, loại 4011 (xem
hình 6.9). Nguyên tắc kiểm tra là so sánh bảng chân lý của vi mạch với các trạng
thái đo được trên vi mạch. Cụ thể là: qua khối ghép nối, máy tính PC tạo ra các
trạng thái lối vào xác định và đọc các trạng thái lối ra tương ứng của vi mạch.
Ngoài ra, dòng tiêu thụ của vi mạch thử cũng được đo để kiểm tra, bởi vì các vi
mạch CMOS hỏng thường có dòng tiêu thụ lớn hơn bình thường.
Đoạn chương trình 6.2 chỉ ra một thí dụ về một chương trình có thể được
dùng để kiểm tra. Tám lối ra số của khối ghép nối (giao diện) được đếm tiến
theo hệ nhị phân. Mỗi một trong số 256 trạng thái lối vào có thể của vi mạch cần
kiểm tra đều được tạo ra một lần, để kiểm tra trạng thái đáp ứng ở các lối ra vi
mạch. Thủ tục “Trao đổi” cần được gọi theo cách lặp lại hai lần kế tiếp nhau, bởi
vì trong lần gọi đầu tiên câu trả lời đọc được là ứng với trạng thái vừa có trước
đấy.
Hình 6.9: Kiểm tra một vi mạch CMOS bằng giao diện đa năng
Những phép tính tốn kém thời gian để suy ra trạng thái đứng của lối ra có
thể được né tránh, khi ta làm việc với một bảng so sánh. Bảng này được tạo ta
bằng cách nhấn phím “New” khi một vi mạch được đưa vào làm đối tượng kiểm
tra. Một bảng với đầy đủ các dữ liệu cần thiết có thể được lưu trữ và nạp giống
như một tệp nhị phân, chẳng hạn với tên là CD4011.BIN. Phương pháp kiểm tra
này có thể dễ dàng mở rộng ra cho các vi mạch khác, trong đó ta sắp xếp các tệp
dữ liệu cụ thể thích hợp với vi mạch đó. Với một đế cắm vi mạch thích hợp ta có
thể kiểm tra các vi mạch thuộc những loại khác nhau. Mỗi sai lệch khỏi diễn
biến bình thường được nhận biết đều dẫn đến một thông báo lỗi. Trong số đó
phải kể cả trường hợp dòng tiêu thụ vượt quá 0,2 mA.
128
B. CÂU HỎI VÀ BÀI TẬP
Câu 1: Trình bày cách xây dựng phần cứng và điều khiển?
Câu 2: Nêu phương pháp thiết lập chương trình đo lường?
Câu 3: Nêu phương pháp kiểm tra hoạt động của các vi mạch?
Câu 4: Viết chương trình điều khiển giao diện đa năng?
Câu 5: Viết chương trình kiểm tra dùng cho một vi mạch CMOS loại 4011?
Hướng dẫn viết đoạn mã:
Chương trình kiểm tra dùng cho một vi mạch CMOS loại 4011.
Unit ICtest;
Interface
Uses PORTNC;
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, Extctrls, StdCtrls, Menus;
Type
TForm1 = class (TForm)
Edit1 : TEdit;
Button1 : TButton;
Button2 : TButton;
Timer1 :TTimer;
OpenDialog1 : TOpenDialog;
SaveDialog1 : TSaveDialog;
MainMenu1 : TMainMenu;
File1 : TMenuItem;
SaveAs1 : TMenuItem;
Open1 : TmenuItem;
New1 : TmenuItem;
Procedure FormCreate (Sender : Tobject);
Procedure Button3click (Sender : Tobject);
Procedure Button2click (Sender : Tobject);
Procedure Button1click (Sender : Tobject);
Procedure Timer1Timer (Sender : Tobject);
Procedure Open1Click (Sender : Tobject);
Procedure SaveAsClick (Sender : Tobject);
End;
Var
Form1 : Tform1;
Dout, Din, Alin: byte;
n: integer;
Lci_ra : Array [0..255] of Byte;
Testfile : File of byte;
Ten_tep : string;
Implementation
{SR *.DFM}
129
Procedure Trao_doi;
Var Vi_tri, Vi_triAD, n, m : Integer;
Begin
RTS (1); { Strobe an}
Delayus (20); { Gây trễ }
RTS (0); { Strobe cắt}
Vi_tri := 1;
Vi_triAD := 129;
Din := 0;
Ain := 0;
For n:=1 to 8 do begin
If ((Dout AND Vi_tri)>0) then
TXD (1) {xuất ra dữ liệu}
Else TXD (0);
If DCD = 1 { đọc dữ liệu}
Then Din := Din + Vi_tri;
If DSR = 1 then { đọc A/D}
Ain := Ain + Vi_triAD;
DTR (1); {Clock tới}
Delayus (20); { Gây trễ}
DTR (0); { Clock tắt}
Vi_tri := Vi_tri * 2;
Vi_triAD := Vi_triAD div 2;
End;
RTS (1); {Clock tới}
Delayus (20); { Gây trễ}
RTS (0); { Clock tắt}
End;
Procedure Tform1.Formcreate(Sender:Tobject);
Begin
Opencom(pchar(‘com2:9600, n, 2, 8, 1’));
End;
Proceduer Tform1.Button3click(sender : Tobject);
Var n: integer;
Begin
(Ten_tep := OpenDialog.FileName;}
Ten_tep := ‘TEST.BIN’;
AssignFile (Testfile, Ten_tep);
{$I-} Rewrite (Testfile) {$I+};
For n:=0 to 255 do bein;
Write (Testfile, Loi_ra[n]);
End;
Closefile (Testfile);
130
End;
Procedure Tform1.Buttom2Click(Sender:Tobject);
Var Gia_tri: Word;
Dien_ap, Fehler: Real;
Begin
Timer1.Enable := false;
Fehler := 0;
Edit1.Text := ‘Text ...’;
For n:=1 to 255 do begin
Dout := n;
Trao_doi;
Delay (1);
Trao_doi;
If (Ain>10) or (Din Loi_ra[n]) then begin
Fehler := Fehler + 1;
Dien_ap := Ain/255*5;
Edit1.Text := FloatToStr(N) + ‘, ‘ +
floatToStr(Din) + ‘’ + FloatToStr (Loi_ra[n])
+’ ‘+ FloatToStrF(Dien_ap, ffGeneral, 3, 2) + ‘mA’;
End;
End;
If Fehler = 0 then Edit1.Text := ‘Test O.K’;
Timer1.Interval := 2000;
Timer1.Enabled := true;
End;
Procedure Tform1.ButtonClick(Sender : Tobject);
Var n:integer;
Begin
{Ten_tep := OpenDialog.FileName;}
Timer1.Enable := false;
For n:=0 to 255 do begin;
Dout := n;
Trao_doi;
Delay (1);
Trao_doi;
Loi_ra[n] := Din;
End;
Edit1.text:= ‘Fertig’;
Timer1.Enable := true;
End;
Procedure Tform1.Timer1Timer(Sender: Tobject);
Begin
Edit1.Text := ‘bereit’;
Timer1.Enabled := false
131
End;
Procedure Tform1.Open1Click(Sender:Tobject);
Begin
OpenDialog1.FileName := ‘*.bin’;
OpenDialog1.Execute;
Ten_tep := OpenDialog1.FileName;
If Ten_tep > ‘ ‘ then begin
AssignFile (Testfile, Ten_tep);
{$I-} Reset (Testfile) {$I+};
For n:=0 to 255 do read (Testfile, Loi_ra[n]);
Closefile (Testfile);
End;
End;
Procedure Tform1.SaveAslClick(Sender : Tobject);
Var n:integer;
Begin
SaveDialog1.FileName := ‘*.bin’;
OpenDialog1.Execute;
If Ten_tep > ‘ ‘ then begin
AssignFile (Testfile, Ten_tep);
{$I-} Rewrite (Testfile) {$I+};
For n:=0 to 255 do write (Testfile, Loi_ra[n]);
Closefile (Testfile);
End;
End; End.
132
TÀI LIỆU THAM KHẢO
1. Ngô Diên Tập. Kỹ thuật ghép nối máy tính. Nhà xuất bản: Khoa học và Kỹ
thuật, năm 2005.
2. Ngô Diên Tập. Lập Trình Ghép Nối Máy Tính Trong Windows. Nhà xuất bản:
Khoa học và Kỹ thuật, năm 2005.
3. Trần Quang Vinh. Nguyên lý phần cứng và kỹ thuật ghép nối máy tính. NXB
Giáo dục
4. Phạm Hữu Khang. Giáo trình nhập môn lập trình VB6. NXB Lao động - Xã
hội, năm 2005
5. Phạm Hữu Khang. Kỹ xảo lập trình VB6. NXB Lao động - Xã hội, năm 2004
File đính kèm:
giao_trinh_mo_dun_lap_trinh_ghep_noi_may_tinh.pdf

