Tải bản đầy đủ (.docx) (18 trang)

ĐIỀU KHIỂN LED 7 THANH sử DỤNG CỔNG nối TIẾP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (418.75 KB, 18 trang )

Khoa Điện Tử
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ

ĐỒ ÁN MÔN HỌC : ĐO
LƯỜNG VÀ ĐIỀU KHIỂN BẰNG
MÁY TÍNH
ĐỀ TÀI : ĐIỀU KHIỂN LED 7
THANH SỬ DỤNG CỔNG NỐI TIẾP
GVHD : VŨ THỊ THU HƯƠNG
SVTH : NGUYỄN VĂN TRUNG
ĐẶNG VĂN TÍN
VŨ VĂN THÁI
LỚP : ĐIỆN TỬ 4_K5

LỜI NÓI ĐẦU
Trong các máy tính thế hệ hiện nay có một số thiết bị ngoài thông dụng như:
Màn hình, bàn phím, chuột, máy in…với các thiết bị ngoài đó máy tính đều có
khối ghép nối tương ứng và chúng được tích hợp luôn trên một bo mạch gọi là
main board. Tuy nhiên máy tính không chỉ dừng lại với thiết bị ngoại vi nói trên
mà có những yêu cầu cao hơn, như kết nối với các máy móc trong công nghiệp…
và đã được các nhà sản xuất lưu tâm tới và họ để trống vô số các con đường có thể
ghép nối với bus của máy tính như: RS232, LPT, COM, USB, các khe PCI …Đây
chính là con đường ai muốn nghiên cứu mở rộng phạm vi kết nối của máy tính kết
ĐLĐK bằng máy tính Page 1
Khoa Điện Tử
hợp sử dụng với bộ vi điều khiển có thể lập trình được. Qua nội dung môn học
được nghe cô giảng dạy và tìm hiểu tài liệu, và trong phạm vi đồ án nhỏ này chúng
em thực hiện việc kết nối với máy tính qua cổng COM với bo mạch ngoài, cụ thể
là bo mạch ngoài dùng vi điều khiển để đo dòng điện rồi hiển thị kết quả đo được


trên máy tính thông qua cổng COM.
Mục đích của đề tài hướng đến: Tạo ra bước đầu cho sinh viên thử nghiệm ứng
dụng vi điều khiển để giao tiếp với máy tính.
Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham
khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót. Vì vậy
nhóm rất mong được sự góp ý của thầy cô và các bạn.
Chúng em xin chân thành cảm ơn!
ĐLĐK bằng máy tính Page 2
Khoa Điện Tử
LỜI NHẬN XÉT






















MỤC LỤC
Phần I. Giới thiệu khái quát 5
I.Giới thiệu tổng quan về vi điều khiển 5
1.Sơ đồ khối AT89C52 5
2.Những đặc trưng cơ bản AT89C52 6
3.Sơ đồ chân 6
II.Giới thiệu về cổng COM 10
1.Khái quát 10
2.Một số thuộc tính MSComm 11
Phần II. Thiết kế đề tài 16
ĐLĐK bằng máy tính Page 3
Khoa Điện Tử
1.Code Vi điều khiển 16
2.Giao diện và code VB 19
3.Mô phỏng trên Proteus 23

PHẦN I: GIỚI THIỆU KHÁI QUÁT
I.Giới thiệu tổng quan về họ vi điều khiển 8051
Họ vi điều khiển 8051 là một trong những họ vi điều khiển thông dụng nhất . Đây
là họ vi điều khiển được sản xuất theo công nghệ CMOS . Có tốc độ cao và công
suất thấp, bộ nhớ Flash có thể lập trình được .
ĐLĐK bằng máy tính Page 4
Khoa Điện Tử
1. Sơ đồ khối của AT89C52

2.Những đặc trưng của AT89C52
• 4 Kbyte bộ nhớ Flash có thể lập trình lặp vơi 1000 chu kỳ đọc xoá
• Hoạt động tĩnh đầy đủ : Từ 0 HZ đến 24 MHZ
• Khoá bộ nhớ chương trình ba cấp

• 128x8 bit RAM nội
• 32 đường xuất nhập lập trình được
• Hai timer / counter khoong bit
• Một port nối tiếp sang công có thể lập trình được
• Mạch đồng hồ và bộ dao động trên chíp
3. Sơ đồ chân và chức năng của AT89C52
ĐLĐK bằng máy tính Page 5
Khoa Điện Tử
Như vậy theo sơ đồ trên AT89s52 có 40 chân .mỗi chân có chức năng như các
đường I/O (xuất nhập ) , trong đó 24 chân có công dụng kép, môi x đường có thể
hoạt động như một đường I/O hoặc như đường điều khiển hoặc như thành phần của
bus điều khiển và bus dữ liệu.
a. Port 0 ( P0.0- P0.7)
Port 0 gồm 8 chân, ngoài các chức năng xuất nhập, Port 0 còn là bus đa hợp
dữ liệu và địa chỉ(AD0-AD7), chức năng này sẽ được sử dụng khi 8051 giao tiếp
với các thiết bị ngoài có kiến trúc bus như các vi mạch nhớ, mạch nhớ PIO…
b. Port 1 ( P1.0- P1.7)
ĐLĐK bằng máy tính Page 6
Khoa Điện Tử
Port 1 có chức năng xuất nhập theo bit và byte. Ngoài ra, ba chân P1.5, P1.6,
P1.7 được dùng để nạp ROM theo chuẩn ISP, hai chân P1.0, và P1.1 được dùng
cho bộ Timer 2.
c. Port 2 (P2.0-P2.7)
Là một port có công dụng kép, là đường xuất nhập hoặc là byte cao của bus địa
chỉ đối với các thiết bị đồng bộ nhớ mở rộng.
d.
Port 3 (P3.0- P3.7)
Mỗi chân trên Port 3 ngoai chức năng xuất nhập còn có chức năng riêng,
cụ thể như sau :
Bit Tên Chức năng

P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu truyền cho port nối tiếp
P3.2 INT0 Ngắt bên ngoài 0
P3.3 INT1 Ngắt bên ngoài 1
P3.4 T0 Ngõ vào của Timer/counter 0
P3.5 T1 Ngõ vào của Timer/ counter 1
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài.
e. Chân /PSEN ( Program store Enable)
/PSEN là chân điều khiển đọc chương trình ở bộ nhớ ngoài, nó được nối với chân
/OE để cho phép đọc các byte mã lệnh trên ROM ngoài . /PSEN sẽ ở mức thấp
ĐLĐK bằng máy tính Page 7
Khoa Điện Tử
trong thời gian đọc mã lệnh . Mã lẹnh được đọc từ bộ nhơ s ngoài qua bus dữ liệu
(Port 0) thanh ghi ệnh để được giải mã . Khi thực hiện chương trình trong ROM
nội thì /PSEN ở mức cao.
f. Chân ALE (Address Latch Enable)
ALE là tín hiệu điều chỉnh chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi
điều khiển. tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như
74373, 74573 chốt byte địa chỉ thấp ra khỏi bus đa hợp địa chỉ / dữ liệu (Port 0).
g. Chân /EA (External Access)
Tín hiệu /EA cho phép chọn bộ nhớ chương trình là bộ nhớ trong hay ngoài vi
điều khiển . Nếu EA ở mức cao (nối với vcc), thì vi điều khiển thi hành chương
trình trong ROM nội . Nếu /EA ở mức thấp (nối với GND), thì vi điều khiển thi
hành chương trình từ bộ nhớ ngoài .
h. RST (Reset)
Ngõ vào RST trên chân 9 là ngõ Reset của 8051. Khi tín hiệu này được đưa lên
mức cao , các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để
khởi động hệ thống .
i. XTAL1, XTAL2

AT89C52 có một bộ dao động trên chíp, nó thường được nối với với bộ dao
động bằng thạch anh có tần số lớn nhất là 33MHZ, thông thường là 12MHZ.
j. Vcc, GND
AT89s52 dùng nguồn điện áp một chiều có dải điện áp từ 4v đến 5,5v được cấp
qua chân 20 và 40.
II.Cổng COM
1.Khái quát
RS232 là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối nhiều
nhất là với 2 thiết bị, chiều dài kết nối lớn nhất cho phép để đảm bảo dữ liệu là 50 – 100
feet ( 12.7 đến 25.4 m), tốc độ 20kBít/s đôi khi là tốc độ 115 k Bit/s với một số thiết bị
đặc biệt.
Sơ đồ chân cổng Com :
ĐLĐK bằng máy tính Page 8
Khoa Điện Tử
Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry
Associations).Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến
-25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng
cung cấp dòng từ 10 mA đến 20 mA.
Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
ĐLĐK bằng máy tính Page 9
Khoa Điện Tử
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps,
9600 bps và 19200 bps .
2.Một số các thuộc tính của Mscomm trong VB:
MSComm là một điều khiển ActiveX dùng trong truyền thông nối tiếp. Các tính
chất của điều khiển này được dùng để thiết lập giao tiếp với các thiết bị ngoại vi
qua cổng RS232.
Điều khiển MSComm trong Visual Basic
Thiết lập tham số cho cổng:

+ CommPort: dạng object.CommPort = value. Value là chỉ số của cổng Com có giá
trị từ 1 ‐> 16 và mặc định có giá trị =1.
+ InBuferSize: thiết lập hoặc trả lại kích thước của bộ đệm nhận, tính = byte. Mặc
định là 1024 byte. Khác với đặc tính InBufferCount là số byte đang chờ trong bộ
đệm nhận.
+ InputLen : object.InputLen [ = value ] thiết lập hoặc trả lại số byte mỗi lần thuộc
tính Input đọc trong bộ đệm nhận. Mặc định giá trị Value=0 tức là thuộc tính Input
sẽ đọc hết nội dung của bộ đệm nhận khi thuộc tính này được gọi. Nếu số kí tự
trong bộ đệm nhận không = InputLen thì thuộc tính Input sẽ trả lại kí tự rỗng “ ”.
+ InputMode: object.InputMode [ = value ] . Value = 0 hay = comInputModeText
dữ liệu nhận được dạng văn bản kiểu kí tự theo chuẩn ANSI. Dữ liệu nhận được sẽ
là một xâu. Value=1 hay = comInputModeBinary dùng nhận mọi kiểu dữ liệu như
kí tự điều khiển nhúng, kí tự NULL, Giá trị nhận được từ Input sẽ là một mảng
kiểu Byte.
+ NullDiscard: object.NullDiscard [ = value ] tính chất này quyết định kí tự trống
có được truyền từ cổng đến bộ đệm nhận hay không. Nếu value= True kí tự này
không được truyền. value = false kí tự trống sẽ được truyền. Kí tự trống được định
nghía theo chuẩn ASCII là kí tự 0 – chr$(0).
+ OutBuferSize: giống như InBuferSize, mặc định là 512.
ĐLĐK bằng máy tính Page 10
Khoa Điện Tử
+ ParityReplace: thiết lập và trả lại kí tự thay thế kí tự không đúng trong lỗi giống
nhau.
+ PortOpen: thiết lập và trả lại tính trạng của cổng(đóng hoặc mở).
object.PortOpen [ = value ]. value = true cổng mở. value =false cổng đóng
và xóa toàn bộ dữ liệu trong bộ đệm nhận và truyền.
+ RthresHold: object.Rthreshold [ = value ] value kiểu số nguyên. Thiết lập số kí
tự nhận được trước khi gây lên sự kiện comEvReceive. Mặc định = 0 tức là không
có sự kiện OnComm khi nhận được dữ liệu. Thiết lập = 1 tức là sự kiện OnComm
xảy ra khi bất kì kí tự nào được chuyển đến bộ đệm nhận.

+ Settings: object.Settings [ = value ] thiết lập hoặc trả lại các thông số tần số baud,
bít dữ liệu, bít chẵn lẻ, bít stop.
+ SThreshold: thiết lập và trả lại số kí tự nhỏ nhất được cho phép trong bộ đệm gửi
để xảy ra sự kiện OnComm = comEvSend . Theo mặc định giá trị này = 0 tức là
khi truyền sẽ không gây ra sự kiện OnComm. Nếu thiết lập thông số này =1 thì sự
kiện OnComm xảy ra khi bộ đệm truyền rỗng. Sự kiện OnComm = comEvSend chỉ
xảy ra khi mà số kí tự trong bộ đệm truyền nhỏ hơn hoặc = Sthreshold. Nếu số kí
tự trong bộ đệm này luôn lớn hơn Sthreshold thì sự kiện này không thể xảy ra.
Truyền nhận dữ liệu:
+ CommEvent: trả lại phần lớn sự kiện giao tiếp hoặc có lỗi.
+ InBufferCout: trả lại số kí tự đang có trong bộ đệm nhận Ta có thể xoá bộ đệm
nhận bằng cách đặt thuộc tính này =0 . Không nhầm với thuộc tính InBufferSize là
tổng kích thước của bộ đệm nhận.
+ Input: nhận và xoá dữ liệu trong bộ đệm nhận.
Nếu InputMode là comInputModeText thì giá trị trả về sẽ là một xâu tức có kiểu
String , dữ liệu dạng text trong một biến kiểu Variant. Nếu InputMode =
comInputModeBinary thì thuộc tính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng
một mảng kiểu byte trong một biến Variant.
+ OutBufferCount: trả lại số kí tự trong bộ đệm truyền.
+ Output: ghi dữ liệu vào bộ đệm truyền. có thể truyền kiểu text hoặc kiểu nhị
phân. Nếu truyền bằng kiểu text thì cho một biến Variant = kiểu String, nếu truyền
kiểu nhị phân thì cho cho Output= variant = một mảng kiểu Byte.
+ Break : thiết lập hoặc xoá tín hiệu. object.Break [ = value] value = true hoặc
false. Khi set value= true thì thông số Break này sẽ gửi một tín hiệu break. Tín hiệu
break trì hoàn việc truyền dữ liệu và đưa đường truyền vào trạng thái break tới khi
mà value = false.
+ CDHolding: quết định xem sự truyền này đến đâu bằng cách truy vấn đường CD(
Carrier Detect). Carrier Detect là tín hiệu gửi từ modem tới máy tính kết nối với nó
thống báo rằng nó đang online. Nếu giá trị = true thì nó đường CD đang ở mức
cao, nếu = false thì đường dây này đang ở mức thấp. Tính chất này không có trong

ĐLĐK bằng máy tính Page 11
Khoa Điện Tử
lúc thiết kế chỉ có trong khi chạy chương trình.Carrier Detect được biết như là
Receive Line Signal Detect (RLSD).
+ CTSHolding: quết định khi nào bạn gửi dữ liệu bằng cách truy vấn trạng thái
đường Clear To Send (CTS). Thông thường tín hiệu CTS được gửi từ modem tới
máy tính kết nối với nó để báo rằng đang quá trình truyền dữ liệu. Thuộc tính
Readonly chỉ xuất hiện khi chạy chương trình. Đường Clear To Send dùng trong
RTS/CTS (Request To Send/Clear To Send) bắt tay phần cứng. CTSHolding cho
bạn một cách để tự tay dò đường Clear To Send nếu bạn cần biết trạng thái của nó.
+ DSRHolding: biết trạng thái của đường Data Set Ready (DSR). Tín hiệu Data Set
Ready truyền từ modem tới máy tính nối với nó để thông báo rằng modem đã sẵn
sàng hoạt động. Tính chất này dùng khi viết Data Set Ready/Data Terminal Ready
handshaking routine cho máy Data Terminal Equipment (DTE)‐ máy trang bị đầu
cuối dữ liệu.
+ DTREnable: tính chất này quyết định khi nào cho phép đường Data Terminal
Ready (DTR) trong truyền thông. Tín hiệu DTR gửi từ máy tính tới modem đẻ báo
rằng máy tính sẵn sàng là nơi nhận dữ liệu. Khi DTREnable = true thì đường Data
Terminal Ready set lên cao khi cổng mở, và thấp khi cổng đóng. Nếu DTREnable
= false thì đường đó luôn mức thấp. Trong phần lớn trường hợp set đường Data
Terminal Ready thành thấp để hang up telephone.
+ InBufferCout: trả lại số kí tự đang có trong bộ đệm nhận Bạn có thể xoá bộ đệm
nhận bằng cách đặt thuộc tính này =0 . Không nhầm với thuộc tính InBufferSize là
tổng kích thước của bộ đệm nhận.
+ Input: nhận và xoá dữ liệu trong bộ đệm nhận.
Nếu InputMode là comInputModeText thì giá trị trả về sẽ là một xâu tức có kiểu
String , dữ liệu dạng text trong một biến kiểu Variant. Nếu InputMode =
comInputModeBinary thì thuộc tính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng
một mảng kiểu byte trong một biến Variant.
+ OutBufferCount: trả lại số kí tự trong bộ đệm truyền.

+ Output: ghi dữ liệu vào bộ đệm truyền. có thể truyền kiểu text hoặc kiểu nhị
phân. Nếu truyền bằng kiểu text thì cho một biến Variant = kiểu String, nếu truyền
kiểu nhị phân thì cho cho Output= variant = một mảng kiểu Byte.
+ Break : thiết lập hoặc xoá tín hiệu. object.Break [ = value] value = true hoặc
false. Khi set value= true thì thông số Break này sẽ gửi một tín hiệu break. Tín hiệu
break trì hoàn việc truyền dữ liệu và đưa đường truyền vào trạng thái break tới khi
mà value = false.
+ CDHolding: quết định xem sự truyền này đến đâu bằng cách truy vấn đường CD(
Carrier Detect). Carrier Detect là tín hiệu gửi từ modem tới máy tính kết nối với nó
thống báo rằng nó đang online. Nếu giá trị = true thì nó đường CD đang ở mức
cao, nếu = false thì đường dây này đang ở mức thấp. Tính chất này không có trong
ĐLĐK bằng máy tính Page 12
Khoa Điện Tử
lúc thiết kế chỉ có trong khi chạy chương trình.Carrier Detect được biết như là
Receive Line Signal Detect (RLSD).
+ CTSHolding: quết định khi nào bạn gửi dữ liệu bằng cách truy vấn trạng thái
đường Clear To Send (CTS). Thông thường tín hiệu CTS được gửi từ modem tới
máy tính kết nối với nó để báo rằng đang quá trình truyền dữ liệu. Thuộc tính
Readonly chỉ xuất hiện khi chạy chương trình. Đường Clear To Send dùng trong
RTS/CTS (Request To Send/Clear To Send) bắt tay phần cứng. CTSHolding cho
bạn một cách để tự tay dò đường Clear To Send nếu bạn cần biết trạng thái của nó.
+ DSRHolding: biết trạng thái của đường Data Set Ready (DSR). Tín hiệu Data Set
Ready truyền từ modem tới máy tính nối với nó để thông báo rằng modem đã sẵn
sàng hoạt động. Tính chất này dùng khi viết Data Set Ready/Data Terminal Ready
handshaking routine cho máy Data Terminal Equipment (DTE)‐ máy trang bị đầu
cuối dữ liệu.
+ DTREnable: tính chất này quyết định khi nào cho phép đường Data Terminal
Ready (DTR) trong truyền thông. Tín hiệu DTR gửi từ máy tính tới modem đẻ báo
rằng máy tính sẵn sàng là nơi nhận dữ liệu. Khi DTREnable = true thì đường Data
Terminal Ready set lên cao khi cổng mở, và thấp khi cổng đóng. Nếu DTREnable

= false thì đường đó luôn mức thấp. Trong phần lớn trường hợp set đường Data
Terminal Ready thành thấp để hang up telephone.
+ RTSEnable: quết định khi nào cho phép đường Request To Send (RTS), Tín hiệu
RTS từ máy tính tới modem để yêu cầu được tryền dữ liệu. Khi RTSEnable = true
thì đường RTS mức cao khi cổng mở, tích mức thấp khi cổng đóng. Và hiển nhiên
khi RTSEnable thì đường RTS luôn mức thấp.
II- Phần lập trình :
1- Code vi điều khiển :
#include<reg52.h>
#include<stdio.h>
#include<math.h>
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
unsigned long int nghin,tram,chuc,donvi,i,j,num;
ĐLĐK bằng máy tính Page 13
Khoa Điện Tử
unsigned char temp, quet=0;
unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(int t)
{
for (i=1;i<=t;i++);
}
void timer0(void) interrupt 1
{
TH0=0xf8;
TL0=0x40;
switch(quet)
{

case 0:
LED2=LED3=LED4=0;
P2=M[donvi];
LED1=1;
break;
case 1:
LED1=LED3=LED4=0;
P2=M[chuc];
LED2=1;
break;
case 2:
LED2=LED1=LED4=0;
P2=M[tram];
LED3=1;
break;
case 3:
LED2=LED3=LED1=0;
P2=M[nghin];
LED4=1;
break;
}
if (++quet==4) quet=0;
}
void main ()
{
SCON=0x52;
TMOD=0x21;
ĐLĐK bằng máy tính Page 14
Khoa Điện Tử
TH1=TL1=-24;

TR1=1;
TH0=0xF8;
TL0=0x30;
TR0=1;
IE=0x83;
IP=0x02;
temp=0;
num =0;
while(1)
{
do
temp =_getkey();
while (temp!='@');
temp=_getkey();
num=temp;
temp=_getkey();
num=temp*256 +num;
nghin=num/1000;
tram=(num%1000)/100;
chuc=((num%1000)%100)/10;
donvi=((num%1000)%100)%10;
}
}
2- Code VB :
ĐLĐK bằng máy tính Page 15
Khoa Điện Tử
Private Sub Command2_Click()
Dim i As Integer
i = Text1.Text
send ("@")

send (Chr(i Mod 256))
send (Chr(i \ 256))
End Sub
Private Sub Command1_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End
End Sub
Private Sub Command3_Click()
i = Text1.Text
j = i + 1
ĐLĐK bằng máy tính Page 16
Khoa Điện Tử
If j = 10000 Then j = 0
Text1.Text = j
send ("@")
send (Chr(j Mod 256))
send (Chr(j \ 256))
End Sub
Private Sub Command4_Click()
Text1.Text = 0
send ("@")
send (Chr(0 Mod 256))
send (Chr(0 \ 256))
End Sub
Private Sub Command5_Click()
i = Text1.Text
j = i - 1
If j = -1 Then j = 9999

Text1.Text = j
send ("@")
send (Chr(j Mod 256))
send (Chr(j \ 256))
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "1200,N,8,1"
MSComm1.InputMode = 1
MSComm1.SThreshold = 1
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If (MSComm1.PortOpen) Then
MSComm1.PortOpen = False
End If
End Sub
Sub send(buffer As String)
ĐLĐK bằng máy tính Page 17
Khoa Điện Tử
If MSComm1.PortOpen = True Then
MSComm1.Output = buffer
End If
End Sub
Private Sub Text1_Click()
Text1.Text = ""
End Sub
3.Mô phỏng:

A1
A3
TX1
TX1
RX1
A0
A2
RX1
A
B
C
D
E
F
G
D7
A
B
C
D
E
F
G
A 3
A 2
A 1
A 0
XTAL2
18
XTAL1

19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0/T2
1
P1.1/T2EX
2
P1.2

3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8

21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C52
T1IN
11
R1OUT
12
T2IN
10
R2OUT
9
T1OUT
14
R1IN
13
T2OUT
7
R2IN

8
C2+
4
C2-
5
C1+
1
C1-
3
VS+
2
VS-
6
U3
MAX232
ERROR
TXD
3
RXD
2
CTS
8
RTS
7
DSR
6
DTR
4
DCD
1

RI
9
P1
COMPIM
U4
NOT
U5
NOT

ĐLĐK bằng máy tính Page 18

×