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

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


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

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

+ 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.

Đ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.

= 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)
{

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 ("@")

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:

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

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

RI
9
P1
COMPIM
U4
NOT
U5
NOT

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


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status