BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB CHUONG 1: MO PHONG GIAO TIEP MAY TINH SU DUNG PROTEUS VA KEILC 1.1 Chương trình hỗ trợ tạo công Com ảo Virtual Seria
Trang 1
————=<s- *›e>*<Se©C— OD _
TRƯỜNG ĐẠI HỌC VĂN HIẾN KHOA DIEN TU - VIEN THONG
œa2EHlca
Bài Tập Lớn: Môn Truyên Số Liệu
GIAO TIEP MAY TINH - VDK
Trang 2Mục lục CHƯƠNG 1: MÔ PHỎNG GIAO TIẾP MÁY TÍNH SỬ DỤNG PROTEUS VÀ KEIL C 3
1.1 Chương trình hỗ trợ tạo công Com ảo -+ +- + s52 k+E+E+EEEEEEEEEEeEErEerkerkrrrrsrre 3 1.2 Mạch mô phỏng vi điều khiển giao tiếp máy tính . 2-5 2s z+szEz+s+szxzszes 3
1.3.1 Các bước xây dựng dự án KelÏ C + 1S TH ng ng ng 6 1.3.2 Cấu trúc cơ bản một chương trình C cho VĐK trong Keil C 18
CHƯƠNG 2: SỬ DỤNG VISUAL BASIC 6.0 GIAO TIẾP VI ĐIÊU KHIÉN 34 2.1 Thiết kế giao diện - set T1E13 1111 1151111115111 21111 ckrkrkd 34 2.2 Viết chương trình thực thi 2 2+ k+E<+EEEE+EEEEEEEEEEEEEEEEEEEEEEEEEkrkrrkrkrrrred 44 CHƯƠNG3: SỬ DỤNG VISUAL C# GIAO TIẾP VĐK -s-5s252ccscsecsecsersrre 48 CHƯƠNG 4: CÁC VÍ DỤ GIAO TIẾP MÁY TÍNH VÀ VĐK . cccce sec 69
4.1 Giao tiếp máy tính điều khiển động cơ bước bằng C# - 5 + cxcxerrkerred 69
4.2.2 Viết chương trình Keil C cho VĐ(K ¿s55 ket SEk€EEEEEEeEkeEerkrkerereerered 72
4.2.3 Giao diện C# điều khiển trên máy tính - s+s+ s+keEs£keErkekerkerrkrxee 75 4.3 Giao tiếp máy tính điều khiển LCD 4 dòng bằng VB - -Gccxcrerreerred 76
4.3.3 Giao điện VB điều khiển trên máy tính - + cx+cx+keEsrkererkekerkerrkrxee 79
44 Giao tiếp máy tính điều khiển 8 LED đơn bằng VB (5S cterreerred 79
4.4.2 Viết chương trình Keil C cho VEĐK -¿- + s+2+E+Ek+EEEkeEkerkrserkrrerrrred 79 4.4.3 Giao điện VB điều khiển trên máy tính - + ck+sx+keEsEkererkrkerkersrkrxee 80 4.5 Giao tiếp máy tính điều khiển LED ma trận DC bằng C# - 5< cscserscxd 81
4.5.2 Viét chuong trinh Keil C cho VDK.u cssceccscsssssessessssessessesessesssssssessessssnsseeseeees 81 4.5.3 Giao diện C# điều khiển trên máy tính -¿- 2 + s+xx+sz£x+xx+serszrrrsred 84
Trang 3BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
CHUONG 1: MO PHONG GIAO TIEP MAY TINH SU DUNG PROTEUS VA KEILC
1.1 Chương trình hỗ trợ tạo công Com ảo
Virtual Serial Port Driver là chương trình giúp bạn tạo ra những cặp cổng com ảo,
vào nỗi chúng với nhau tạo một kết nỗi ảo để thực hiện truyền dữ liệu
Sau khi cài đặt chương trình, bạn khởi động chương trình vào tạo một hoặc nhiều công
com ảo cho việc mô phỏng giao tiếp máy tính và vi điều khiển
G & Virtual Serial Port Driver 6.9 by Eltima Software Ke = ll mr mi
Port pairs Options Help
Serial ports explorer
fq Virtual Serial Port Driver
=|- [i] Physical ports
m- Other virtual ports
Manage ports Fort access list Custom pinout
VSPD by Etima can create virtual senal ports with any names you like
$0 you are not limited to COM names only However, please, make sure that programs working with these ports support custom port names
a All virtual serial pairs will be
&? removed from your system Please, make sure all ports are closed
| Delete all
Chọn 2 công com mà bạn muốn kết nối và Click nút Add pair Bạn sẽ có những cặp
công com được nối với nhau, như COMI1 + COM2, COM4 + COM5
For help press Fl
1.2 Mạch mô phóng vi điều khiến giao tiếp máy tính
Khởi động chương trình mô phỏng mạch Proteus, lẫy các linh kiện cần thiết và vẽ mạch như hình dưới đây
Trang 3
Trang 4Đây là mạch mô phỏng giao tiếp máy tính và vi điều khiển cơ bản nhất, tương
tác điều khiển led đơn, từ đây bạn có thể thay led thành các role để điều khiến động cơ
DC, động cơ bước (đảo chiều), "
Đề thực hiện gửi và nhận dữ liệu giữa máy tính va vi điều khiến, bạn cần thiết
lập tần số thạch anh cho vi điều khiến, tùy chọn tên cổng com cho công com ảo Các
bước thực hiện như sau
Click đúp vào vi điều khiến bạn sẽ thấy hộp thoại Edit Component, ở đòng thông số
Clock Frequency, bạn nhập vào 11.0592MHz như hình dưới đây, và click OK
Trang 4
Trang 5BT Lớn Môn Truyền Số Liêu Giao tiếp máy tính - VĐK sử dụng C# và VB
a 2 3
Component Reference: si Hiddzr: ' -
Component Value: JATESC52 Kidder: | -
PCB Package: IpIL40 xi |Hids All Data
Clock Frequency: (11.05382MHz | Hide al
Cancel | Advanced Properties:
Simulate Program Fetches 1 |Ro | | Hide All
Other Properties:
| Exclude from Simulation | Attach hierarchy module
| Exclude from PCE Layout [Hide commer pins
| Edit all properties as text
Tho ưa: sai
fh ice ù ee
Component Reference: |P1 Hidden: |
Component Yalu: |E0M PIM Hidden: | ise |
VSE Model: [COMPIM.DLL ÍHidzAll + Bay |
Physical port: (eae =| Hide Al *
| Physical Baud Rate }9600 x) Hide >|
Physical Data Bits; | 3 | | Hide Al)
Physical Parity: |NONE | Hide All |
Virtual Baud Rate: | 9600 | | Hide All 7)
Virtual Data Bits: |8 xi Hide All 7)
Virtual Franity: |NDHE | Hide Al vì
Advanced Properties:
| Physical Stop Bits iii wj|Hisal xi
Other Properties:
a
Exclude from Simulation | Attach hierarchy module
— Exeludz tam PEB Lauaut [Ƒ Hins camrnnn nine
| Edit all properties as text
Trang 5
Trang 6Tại dòng Physical port, ta chọn tên công com phù hợp Việc chọn tên công com
tùy thuộc vào chương trình tạo công com ảo Ở đây ta chọn COM2, vì trước đó ta có
kết nối đã được thiết lập giữa COM1 và COM2 bằng Virtual Serial Port Driver Tương
ứng để gửi nhận đữ liệu giữa vi điều khiển và Máy tính, trong giao chương trình Giao tiếp bằng C# hay VB ta phải chọn công com còn lại của cặp này là COMI
1.3 Lập trình cho VDK sw dung Keil C
1.3.1 Các bước xây dựng dự án Keil C
Sau khi khởi động Kell C, giao diện chương trình sẽ như hình sau
Fie felt Sie Project Debus Plgih Kia 1aeiv gies Window Help
Dé tao dy 4n mdi, ta vao menu Project > New Project
Trang 6
Trang 7BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
1 Dã Làn) BÁy Decurnerestficeane E im dieu kien!) hac hank VDI) Trapan mai tước Bài mang tBai rang LIVŸ
eC Red SEs rk Hello Heth
BCA SR CSL earch Fa caer neared
E2 KSFLYLLEhTinm¿7ErmrgletTrrHir:Trvfr L2 Crate Wien SE Rin CSL Ee erecta barely Bley PV
aL GC Reh CID Ewa rgb San pl eo ple
Trang 8rhe Icons Images
cents aces : 4 | File folder & File folder
File name: es Froisr+ |
Save as type: [Project Files Cuv2) | Cancel
Sau đó hộp thoại Select Device for Target hiện ra yêu cầu bạn phải chọn phân cứng —
loại IC mà bạn viết chương trình cho nó Ở đây minh chon IC AT89C51 cia hang Atmel, ho MSC-51 (8051) Va click OK
Select Device for Target'Target & ef = leet
Trang 9BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
Device: ATS9C51 [Use Extended Linker (LX51) instead of BL51
Toolset: C51 I ee tended fesenibles (ait pac
Data base Daseriptian :
oi ATEĐC1051 [+ 8051-based Fullly Static 24MHz CMOS controller with 32 1/0 Lines,
Lf ATBSC1O51U 2 Timers/Counters, 6 Interupts/2 Pronty Levels, UART,
3 ATS8C2051 x Three-Level Program Memory Lock 4K Bytes Fash Memory,
L.£T ATBSC4051 Li 12% Bytes On-chip RAM
eK ATS9C5115
oof) ATBIC5130
if ATBIC5130A ef] ATSSC5131
Các bước khởi tạo dự án mới đã xong, bây giờ bạn bắt đầu thêm file vào dự án
của mình để có thể viết chương trình và biên địch file hex nạp cho VĐK
Vào menu File > New, một file mới đã được tạo Tiếp theo bạn vào menu File > Save
để lưu file mới này
Trang 9
Trang 10‘Ela Esit Vom reject: sing: Flash Prjphersbe Toole VCS Wirdew Hales
aem@ ieee oct e as eae Sale
Trang 11BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
|E| EiE View Project: Getuy Fnh Prlphons [cdh SUCE Window Hels
l:|rt 49 3K m[ rlA“
Lai ange
ESE em Web abst eT
CAR Hal HELE
Gy Fr Irons L} Bai giang_Opt.Bak
Images |_| Bai giang_Uv2.Bak Recent Places |_| Bai giang | Last Loaded Bai giang.DBK
[ L] Bai giang._i L New Project.plg
= ¡ Bai giang.c “New Praject
Desktop ©) Bai giang L_ STARTUP.AS1
== j Bai giang.hex |_| STARTUP.LST aan _] Bai giang.|np |_) STARTUP.OBI branes _| Bai giang LST
Saveastype: [AI Fies (.) x| Cancel |
Trang 11
Trang 12Tiếp theo sau khi lưu file mới, bạn click phải chuột vào cây thư mục của dự án, chọn
Add Files to Group ‘Source Group 1’ dé thém file méi vao dy an
- Tỳme+ Ha Rưnañ
ae | Dewfile.c - th Up Eb ERLàs8I elmer erste ime esas i
Trang 13BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
Sau khi hoàn tất thao tác trên bạn sẽ được như hình đưới này
Trang 14
OB New trưng - = san = -TồNHiorieetaly 0pcirtent2E9phuEt FRCP abe khi Ta hãnh TRC Tha eo, [=
[Ey Ede Exit ieee Project Debug Ags Danmphainh Torts SCS findow Help —-/}a| x]
|(2 TST ST oan 4 Sung ] Bọn Fe 7 ei fel
Hộp thoại Option for Target
"Options fa for Target “Target r
Device | Target Output | Listing| User | C51 | A51 | BLS1 Locate | BLS1 Mise | Debug | Lhities |
Select Folderfor Objects
1 hién ra ban thiét cập! như hình bên dưới
( Create Executable: \New Project
Create Library: New Project-LIB | Create Batch File
Trang 15BT Lớn Môn Truyền Số Liệu Giao tiếp máy tinh - VDK sir dung C# va VB
Bay gio ta sé tiễn hành biên dịch dự án của mình, sau khi thực hiện tất cả bước trên và
lưu ý là bạn đã viết chương trình vào file dự án của mình
k¿| Merwe Frogect - gWnien3 - [DALErmnazldy Didier i nan Filet chim khai Thar hanh E1 Truyen rc [oS | SẼ j#6-908
| Ej rae: gat wee [Preyectl petog Ash Peiphenh Jools Guts Window Help a le| x
KES Badal target
4 EEBi4H II Iaripger tấez
ay | ,
B | a Ne ii Trang le rÍLitr te DpnrurremirPogiuai FileriMI đai then Thee hah VOR Tien aioe Fiep: EM Ly:
#! 1L (Librmeiikfy EraurrmririFrziuan Film li che bho Tho ham VO) Tryarr nee bap) Boe quencher Pr
: 1EB-0LiErwiez.NRW IữrrurresrlSiPrelie=s FEZ/ýÌ tếu heen Titer hath VUSCLTTUxð1 ide ep Boe peg Be iy
i J 0S CS Beer pl as Hal be) Hei LY
Ci eel = h Beat 9g Ce ee Beer ples ees Wee ne, LIZ
ee l §C::Ksữ S1 iPxTimy.Eemnpiar' Traển cil ithe WV
Két quả biên dịch được Keil C báo cáo như hình bên dưới File hex tương ứng đã được tạo ra trong thư mục của dự án
"nem iirg 23T TP Ãzn sïn
: corp Deo cow he ic | |
Progcram Sice: deteeliSod edeatee’ coden 5
cpeetiogs Sea File Prom “Sew ErciecL"_ _—
"Baw Ercim7L"” ~ 9 Error |s],; 3 Nharr:=g|m| =
Trang 16Program Sine; data
Í[ | arearvrg hen file |( Execution Profiling L
Vao menu Peripherals > I/O-Ports va danh dau vao cac port cua vi điêu khiên mà bạn
muốn xem mức logic khi thực thi chương trình của bạn
irs [eit = id d#1ley consigned char sire) |
rl ene 8 while trime——i |
fz ere ou nñ#iqmad har § = 1261
Trang 17BT Lớn Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dụng C# và VB
Click vào đoạn chương trình bất kì, Bắm phím F11 để chạy từng dòng lệnh mà ta đã việt, xem kết quả xuât ra Port cua vi điêu khiên
F st
Parallel Port 1 ——
Port 1
Pins: |OxFF [gjgwlFivlegK
Trang 17
Trang 181.3.2 Cấu trúc cơ bản một chương trình C cho VĐK trong Keil C
a Phần đầu tiên là liệt kê các header file mà các bạn dùng bằng từ khóa
trong thư mục cài đặt KeIlC
Viết theo cách thứ hai thì trình biên dịch sẽ tìm luôn trong thư mục /INC luôn
Đề có thể sử dụng đúng các file h cho các vi điều khiển của mình thì bạn nên mở thư
muc /inc trong thư mục này có các thư mục con như tên của hãng sản xuất Ví dụ như của Atmel thì bạn tìm trong thư mục /Atmel thì sẽ thấy được file reg5l.h , Bạn mở
từng file nên mà khám phá sẽ có nhiều điều hay đấy
b Định nghĩa các macro cho chương trình sáng sủa Việc định nghĩa này được dùng bằng từ khóa #define
Vi dụ: bạn định nghĩa ledI là PI_0 tức là ledl được nối với chân 0 của Port 1
Code:
#define led1 P1 0
c Các hàm ngắt như ngắt timer0, timer1, ngắt nối tiếp, ngắt ngoài
Ví dụ bạn dùng ngắt nối tiếp là ngắt 4 trong bảng vector ngắt thì hàm sẽ có dạng như
Sau:
Trang 18
Trang 19
BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
Code:
void inter_4(void) interrupt 4 using 2 {
// lam gi thi lam 6 day
void delay( unsigned char time) {
//code viet & đây
1 file thôi, nên không đưa biến toàn cục vào đây
Kết luận, chương trình của chúng ta sẽ có dạng như sau:
Code:
Trang 19
Trang 20
// liệt kê header file
#inlucde"tén header file"
// cac marco
#define led1 P1 0
// cac ham ngat
void inter_1 interrupt 1 using 3 {
// cac ham binh thuong
void delay( unsigned char time) {
Có lẽ việc lập trình cho vi điều khiến một hàm không thể thiếu đó là trễ: như trễ khi
nháy led chẳng hạn (ví dụ đơn giản nhất),
Trang 20
Trang 21BT Lớn Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dụng C# và VB
Việc gây trễ trong Keil C có thê có nhiều cách khác nhau:
Hàm đelay có tham số là thời gian cần gây trễ tính theo ms
1 Dung vong lap while, for
Dùng kiểu nào thì cũng đơn giản chỉ là vòng lặp mà thôi Trong vòng lặp nảy ta sé chăng làm gì cả nên vi điều khiển sẽ bị mất thời gian trong các vòng lặp này Với tần số thạch anh 11.0582 MHz thì mỗi vòng lặp khi các bạn debug sẽ thấy là chúng ta mắt thời gian thực khoảng 8.28 us Do đó để có thể gây trễ 1ms thì các bạn
cân dùng xấp xỉ 121 vòng lặp kiểu này
unsigned char temp = 121;
while(temp ); // chang lam gi ca
Việc chuyên đổi giữa vòng for với while trong trường hợp này rất đơn giản Nhưng khi
đó bạn lại phải khai báo thêm một biến đếm như thế sẽ tốn bộ nhớ Chương trình trên
là tối ưu nhất rồi
2 Dung timerO, timer]
Tiếp tục với hàm đelay() theo cách dùng bộ định thời
Các bạn đọc bài ở trên cũng thấy được là ta lập trình với các thanh ghi tương tự như
trong ASM
TMOD là thanh ghi 8 bít dùng để thiết lập bộ định thời , các bạn xem lại thanh ghi này Dùng bộ định thời có 3 chế độ: chế độ 0, chế độ 1, chế độ 2 Chúng ta sẽ sử dụng chế
độ khởi động bộ định thời bằng phần mềm tức TMOD.3 và TMOD.7 = 0
Việc xác định chế độ nào phụ thuộc vào giá trị của 2 bit TMI1 và TM0 của từng timer
(xem định nghĩa từng bít trong thanh ghi TMOD)
Trang 21
Trang 22Chế độ 0 là chế độ 13 bít tương tự như chế độ 1 nhưng giá tri chi tăng đến Ox1FFF Chế độ 2, chế độ 8 bít tự nạp lại
Tiếp theo là ta tính thời gian của mỗi lần tăng bộ định thời Tấn số của bộ định thời bằng 1/12 tần số của thạch anh, do đó với tần số 11,0592MHz thì chu kì máy bằng
1.085us
Do vậy với chế độ 1 tối đa chúng ta sẽ gây trễ được là 65536*1.085 = 71106.56 us =
71.10656 ms
Ché d6 2 max = 256 *1.085 =277.76 us
Chi can gay tré 1ms = 1000 us>277.76 nên dùng timer0( 16 bit) ở chế độ 0 thì ta tính
toán gia tri nap cho tinerÔ0 như sau:
thời gian tré = (65536 - giá trị nạp vào TH,TL+ 1) * 1.085 Sau đó đôi giá tri ra sé hex Dung Calculator cua windows để đối
TMOD = 0x01; // dùng timer0 ở chế độ 1( 16 bit)
THO OxFC;// nap gia tri cho timer
Trang 23BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB
Có lẽ người dùng Keil C lần đầu tiên gặp trở ngại khi dùng #include đó là không biết
liệt kê các header file nào cân thiết cho ứng dụng của mình
Đề có thê biết được header file nào dùng cho vi điều khiển của mình thì các bạn mở
thư mục cài Keil C ra, tìm đến thư mục C51/INC bạn sẽ thay mot loat cac thu muc cua các hãng như Atmel,Dalas, Tôi xin lay vi du mot file regx51.h trong thu muc /Atmel
Bạn mở file đó lên sẽ thấy đầu đề của nó như sau:
Code:
AT89X51.H
Header file for the low voltage Flash Atmel AT89C51 and AT89LV51
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc All rights reserved
Trang 25BT Lon Môn Truyền Số Liệu Giao tiếp máy tính - VĐK sử dung C# và VB