1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ Án Môn Học Đo Lường Và Điều Khiển Bằng Máy Tính – ĐH Công Nghiệp Hà Nội

24 692 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 472,5 KB

Nội dung

Sự trao đổi các đường dẫn tín hiệu: thái 1 CD Carrier detect Tín hiệu phát hiện mang dữ liệu Vào 3 TD Tranfer data Truyền dữ liệu 4 DTR Data terminal ready Dữ liệu đầu cuối sẵn sàng Ra 6

Trang 1

Phần I Cơ Sở Lý Thuyết:

1- CỔNG NỐI TIẾP (COM/ RS232)

Đặc trưng của cổng nối tiếp:

vì lý do kinh tế nên ngày nay thường có 2 cổng là Com 1 và Com 2

Com 1 địa chỉ cơ bản : 3F8H, Com 2 địa chỉ cơ bản : 2F8H, Com 3 địa chỉ cơ bản : 3E8H, Com 4 địa chỉ cơ bản : 2E8H

Sự trao đổi các đường dẫn tín hiệu:

thái

1 CD Carrier detect Tín hiệu phát hiện mang dữ

liệu

Vào

3 TD Tranfer data Truyền dữ liệu

4 DTR Data terminal

ready

Dữ liệu đầu cuối sẵn sàng Ra

6 DSR Data set ready Dữ liệu sẵn sàng được gửi Vào

7 RTS Request to send Tín hiệu yêu cầu gửi Ra

8 CTS Clear to send Tín hiệu yêu cầu xóa để gửi

Trang 2

Trên máy tính có 1 vi mạch đảm bảo việc truyền nhận dữ liệu qua cổng nối tiếp vi mạch đó gọi là UART ( Universal Asynchronous Receive/Transmiter) Bộ truyền nhận nối tiếp không đồng bộ UART phổ biến nhất là vi mạch 8250 của Intel và các phiên bản cao hơnnhư 16450, 16550,16570… Việc trao đổi dữ liệu qua cổng nối tiếp thực chất là việc truy xuất các thanh ghi của vi mạch này.

- Thanh ghi điều khiển modem ( Địa chỉ cơ sở + 4):

Trạng thái của 2 bít D0 & D1 có liên quan trực tiếp đến các đường dẫn RTS và DTR

D0=D1=1 thì trên 2 chân RTS & DTR sẽ có mức điện áp tương ứng là mức 1 -12V và ngược lại

LOOP =1 thì 8250 hoạt động ở chế độ vòng TXD nối với RXD cho phép kiểm tra đường truyền nhận cổng com trên PC

- Thanh ghi trạng thái modem ( Địa chỉ cơ sở +6)

Thông báo về trạng thái các đường dẫn bắt tay

- Thanh ghi điều khiển đường truyền ( địa chỉ cơ sở +3)

Chức năng đặt thông số đường truyền:

1: có kiểm tra

1: parity chẵnC5 Bít đánh dấu khung cần kiểm tra chẵn

lẻ (Stick bit)

0: không có Stick bit1: Stick bitC6 Bít điều khiển đường truyền( Break bit 0: truyền nhận bình

thường ( mức cao -12V)1: không truyền nhậnDLAB Divisor Latch Access Bit: Bít phân chia truy nhập cho các thanh

ghi có cùng địa chỉ ( 8250 có 3 địa chỉ nhưng có 9 thanh ghi)

- Thanh ghi trạng thái đường truyền ( Địa chỉ cơ sở +5)

Phản ánh trạng thái của đường truyền nối tiếp:

Trang 3

S0 =1 khi có 1 byte mới nhận được

S1 =1 khi ký tự trước chưa được đọc, ký tự mới đến sẽ xóa ký tự cũ trong bộ đệm

S2=1 khi có lỗi chẵn lẻ

S3= 1 khi có lỗi khung truyền

S4 =1 khi có gián đoạn đường truyền

S5= 1 khi bộ truyền rỗng cổng nối tiếp có thể truyền nhận

S6= 1 khi bộ đệm rỗng

- Thanh ghi đệm đọc/ghi ( Địa chỉ cơ sở):

Lưu trữ tạm thời dữ liệu truyền nhận từ 2 chân TXD & RXD

- Thanh ghi chứa số chia tốc độ Baud ( byte thấp- Địa chỉ cơ sở)

Gồm 8 bít, chứa phần thấp số chia tốc độ baud

Số chia tốc độ baud = 1843200/(16*tốc độ baud thiết lập)

VD: Tốc độ baud là 9600 thì số chia tương úng là 3, khi đó byte thấp của số chia tốc độ baudđược nạp là 3, byte cao là 0

- Thanh ghi chứa số chia tốc độ Baud ( byte cao- địa chỉ cơ sở +1)

- Thanh ghi chỉ phép ngắt ( địa chỉ cơ sở +1)

D2: đặt ngắt khi thay đổi trạng thái đường truyền

D3: đặt ngắt khi thay đổi trạng thái modem

- Thanh ghi nhận dạng ngắt ( Địa chỉ cơ sở +2)

D2 D1 D0 Mức ưu tiên Nguồn gây ngắt Đặt lại ngắt

0 0 1 Không kiểm tra ngắt

1 1 0 Cao nhất Lỗi đường nhận dữ

liệu Đọc thanh ghi trạng thái đường truyền

1 0 0 Thứ 2 Có nhận dữ liệu Đọc thanh ghi đệm

Do mức logic của bộ vi điều khiển và ở

cổng COM khác nhau Khắc phục vấn đề này

người ta sử dụng vi mạch MAX232 để chuyển

Trang 4

đổi mức điện áp giữa hai chuẩn Vi mạch này chứa 2 bộ chuyển đổi mức logic từ TTL sang RSMAX232 và ngược lại

Bảng so sánh diện áp của các mức logic giưa RS232 và TTL:

Đối Tượng Mức logic Mức điện áp tương ứng

Trang 5

Dải điện áp ra dương Vs+: -0.3V÷15V

Dải điện áp ra âm Vs-: -0.3V÷-15V

Dải điện áp vào Vi: Driver: -0.3V ÷ Vcc +0.3v

Receive: ±30VDải điện áp ra Vo: T1out, T2out: Vs 0.3V ÷ Vs++0.3V

R1out, R2out: -0.3V ÷ Vcc +0.3V

3-Vi Điều Khiển AT89S52:

Sơ Đồ Chân AT89S52:

Sơ Đồ Khối AT89S52:

Trang 6

P1.0 (T2): cửa vào Bộ đếm thời gian/Bộ đếm 2

P1.1 (T2EX): Bộ thời gian/ Bộ đếm 2 bắt/tải lại trigger và điều khiển hướng

P1.5 (MOSI): sử dụng cho chương trình hệ thống bên trong

P1.6 (MISO): sử dụng cho chương trình hệ thống bên trong

P1.7 (SCK): sử dụng cho chương trình hệ thống bên trong

Port 2: (P2.0-> P2.7):

Trang 7

Là cổng vào/ra hai chiều 8 bit

Cổng P2 cũng nhận các bit địa chỉ có yêu cầu cao và một số tín

hiệu điều khiển cho chương trình Flash và sự xác nhận.

Port 3: (P3.0-> P3.7):

Là cổng vào/ra hai chiều 8 bit

Ngoài ra:

P3.0: RXD (serial input port - cổng vào nối tiếp)

P3.1: TXD (serial input port - cổng vào nối tiếp)

P3.2: INT0 (external interrupt 0 - Ngắt ngoài 0)

P3.3: INT1 (external interrupt 1 - Ngắt ngoài 1)

P3.4: T0 (timer 0 external input - cổng vào bên ngoài timer 0)

P3.5: T1 (timer 1 external input - cổng vào bên ngoài timer 1)

P3.6: WR (external data memory write strobe)

P3.7: RD (external data memory read strobe

RST: Reset - Tích cực ở mức cao

ALE/PROG:

Chốt địa chỉ ở mức cao, chạy chương trình Flash ở mức thấp

PSEN: Cho phép lưu trữ chương trình để đọc mẫu từ bộ nhớ chương trình ngoài EA/VPP: Cho phép truy nhập từ bên ngoài.

XTAL1: Lối vào của bộ khuếch đại dao động đảo và là lối vào của mạch tạo xung

Trang 8

Chân số Ký hiệu Vào/Ra Chức năng

Trang 9

1.53 s

1.53 s

định dịch hiển thị các thao tác này đợc thực hiện khi

Trang 10

2 dũng N=0 :Hiển thị 1 dũng F=1 :Hiển thị 5*10 điểm F=0 :Hiển thị 5*7 điểm

AC3

AC2

AC1

AC

0 Cài đặt địa chỉ CGRAM trong địa chỉ bộ đếm.

A C4

A C3

A C2

A C1

A C0

Cài đặt địa chỉ DDRAM trong địa chỉ bộ đếm.

A C4

A C3

A C2

A C1

A C0

Cờ bận đọc (BF) báo hoạt

động bên trong

đang đợc thực hiện và đọc nội dung bộ đếm

BF=1: busy state

BF= 0 : Realdy

0 s s

Trang 11

state Ghi

I/F=0: Giảm DDRAM: Display Data RAM

S=1: Bật hiển thị dịch CGRAM: Character Generator RAM

D=1: Bật hiển thị ACG: Character Generator RAM Address

C=1: Bật hiển thị con trỏ ADD: Display Data RAM Address

B=1: Bật con trỏ nhấp nháy AC: Address counter

Trang 12

Phần II : Trình Tự Và Nội Dung Thiết Kế:

1 SƠ ĐỒ NGUYÊN LÝ MẠCH ĐỒNG HỒ:

Trang 13

1 2 9

1 1

1 0

1 3 8

1 4 7

Trang 14

2-Sơ Đồ Mạch In:

3-Chương Trình Thực Hiện:

// Chuong trinh hien thi thoi gian thuc tren LCD

// Giao tiep voi may tinh qua cong COM

#include <at89s52.h>

#include <stdio.h>

#define LCD_DATA P0

sbit LCD_RS = P1^0; // RS LCD

sbit LCD_E = P1^1; // ENABLE LCD

unsigned int n,chedo,dk;

unsigned int i,So1,So2,So3,So4;

unsigned char x,bien;

Trang 15

void Write_cmd_lcd(char bien){

// Hien thi ki tu len LCD

void Write_data_lcd(char datax)

Trang 16

{

Write_cmd_lcd(0X03); // Cho phep hien thi dich

Write_cmd_lcd(0X38); // Truyen 8 bit, 2 dong ki tu, 5x7

Write_cmd_lcd(0X06); // Cho phep con tro tang

Write_cmd_lcd(0X0C); // tat hien thi con tro

Write_cmd_lcd(0x01); // Xoa hien thi

} // Chuong trinh ngat de nhan tin hieu tu cong noi tiep void Ngat_COM(void) interrupt 4 { if(RI) {

RI=0; TI=0; sbuff[dk] = SBUF; if ((sbuff[dk]=='@')&(dk>0)) {

sbuff[0] = '@'; dk = 1; }

else {

dk++; sbuff[dk] = SBUF; if(dk>6) {

if(sbuff[6]=='#') {

chedo = sbuff[1]; So1 = sbuff[2]; So2 = sbuff[3]; So3 = sbuff[4]; So4 = sbuff[5];

}

dk = 0; }

}

Trang 17

}

void main()

{

EA = 1; // Cho phep ngat toan bo

ES = 1; // Cho phep ngat cong COM

SCON = 0x50; // Dat cong COM 8bit,n,1

sprintf(&message[0],"\1Thoi gian thuc\nGiaotiep com,usb");

Write_str_lcd(&message[0]); // Hien thi chuoi ra LCD

if ( chedo == 1)sprintf(&message[0],"\1CheDo Gio-Phut");

else if ( chedo == 2)sprintf(&message[0],"\1CheDo Phut-Giay");

else if ( chedo == 3)sprintf(&message[0],"\1CheDo Ngay-Thang");

else if ( chedo == 4)sprintf(&message[0],"\1CheDo Thang-Nam");

hien_thi = 0;

}

if ( chedo == 1)

{sprintf(&message[0],"\n %d%d : %d%d ",So1,So2,So3,So4);

Write_str_lcd(&message[0]); // Hien thi chuoi ra LCDchedo = 0;

}

if ( chedo == 2)

Trang 18

{sprintf(&message[0],"\n %d%d : %d%d ",So1,So2,So3,So4);

Write_str_lcd(&message[0]); // Hien thi chuoi ra LCDchedo = 0;

}

if ( chedo == 3)

{sprintf(&message[0],"\n %d%d - %d%d ",So1,So2,So3,So4);

Write_str_lcd(&message[0]); // Hien thi chuoi ra LCDchedo = 0;

}

if ( chedo == 4)

{sprintf(&message[0],"\n %d%d - 20%d%d ",So1,So2,So3,So4);

Write_str_lcd(&message[0]); // Hien thi chuoi ra LCDchedo = 0;

}}

Trang 19

Private Sub Command1_Click()

Private Sub MyHour_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ' 0-9 & Backspace

Case Else

KeyAscii = 0

Trang 20

End Select

End Sub

Private Sub MyMin_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ' 0-9 & Backspace

Case Else

KeyAscii = 0

End Select

End Sub

Private Sub MySec_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ' 0-9 & Backspace

Case Else

KeyAscii = 0

End Select

End Sub

Private Sub MyDay_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ' 0-9 & Backspace

Case Else

KeyAscii = 0

End Select

End Sub

Private Sub MyMon_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ' 0-9 & Backspace

Case Else

KeyAscii = 0

End Select

End Sub

Private Sub MyYear_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ' 0-9 & Backspace

Case Else

KeyAscii = 0

End Select

End Sub

Trang 21

Private Sub Start_Click()

If MSComm.PortOpen = False Then

Private Sub Stop_Click()

If MSComm.PortOpen = True Then

Trang 22

Private Sub Timer_Timer()

NgayGio.Caption = "Time : " & Format(Now, "hh:nn:ss") & " - Date : " & Format(Now,

"dd/mm/yyyy")

End Sub

Private Sub Timer1_Timer()

If Val(MyHour.Text) > 23 Then MyHour.Text = 0

If Val(MyMin.Text) > 59 Then MyMin.Text = 0

If Val(MySec.Text) > 59 Then MySec.Text = 0

If Val(MyMon.Text) > 12 Then MyMon.Text = 1

If Val(MyDay.Text) > 31 Then MyDay.Text = 1

If Cdo1.Value = True Then

Chedo = 1

So1 = Hour(Time) \ 10

So2 = Hour(Time) Mod 10

So3 = Minute(Time) \ 10

So4 = Minute(Time) Mod 10

Hthi.Caption = "Che do Gio va Phut : " & Val(So1) & Val(So2) & ":" & Val(So3) & Val(So4)

Trang 23

So4 = Second(Time) Mod 10

Hthi.Caption = "Che do Phut va Giay : " & Val(So1) & Val(So2) & ":" & Val(So3) & Val(So4)

So4 = Month(Date) Mod 10

Hthi.Caption = "Che do Ngay va Thang : " & Val(So1) & Val(So2) & "/" & Val(So3)

So2 = Month(Date) Mod 10

So3 = (Year(Date) Mod 100) \ 10

So4 = (Year(Date) Mod 100) Mod 10

Trang 24

MyTime = TimeSerial(Val(MyHour.Text), Val(MyMin.Text), Val(MySec.Text))

Time = MyTime ' Thay doi thoi gian cua may tinh

MyDate = DateSerial(Val(MyYear.Text), Val(MyMon.Text), Val(MyDay.Text))

Date = MyDate ' Thay doi ngay cua may tinh

End Sub

Private Sub Exit_Click()

If MSComm.PortOpen = True Then MSComm.PortOpen = False

Giúp sinh viên thực hành khả năng lập trình và rèn luyện kỹ năng thiết kế mạch

Là bước đệm cho các công việc thiết kế và lập trình sau này

2:Nhược Điểm:

Những mô hình tạo ra chỉ có tác dụng trong phòng thực hành

Hiện nay do các máy tính đơn giản không còn cồng kềnh nên cổng Com gần như

không còn được sử dụng nhiều, vì vậy ứng dụng của nó bị hạn chế

3 :Hướng phát triển:

Thay vì sử dụng cổng Com nhóm chúng em sử dụng thêm cổng USB, vì hiện nay cổng này được sử dụng nhiều trên máy tính và rất tiện cho người sử dụng

Đối với mô hình này cổng USB vừa được sử dụng để giao tiếp thay vì sử dụng cổng

Com Đồng thời sử dụng làm nguồn cấp cho mô hình khi sử dụng cổng Com của máy tính

Ngày đăng: 16/05/2016, 21:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w