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