BÀI tập lớn GIAO TIẾP máy TÍNH sử DỤNG CHUẨN TRUYỀN RS232

14 638 0
BÀI tập lớn GIAO TIẾP máy TÍNH sử DỤNG CHUẨN TRUYỀN RS232

Đ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

Ketnooi.com nghiệp giáo dục TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM KHOA CƠ KHÍ Bài tập lớn KỸ THUÂÂT GIAO TIẾP MÁY TÍNH Sinh viên : LÊ TRUNG KHOA Lớp 20701122 PHẠM BÁ THỌ 20702358 ĐỒ NGUYỄN TIẾN THÔNG 20702358 : CK07CD2 TP HCM, 12-2010 ĐỀ BÀI Sử dụng chuẩn truyền RS232, thiết kế mạch giao tiếp cổng COM máy tính vi điều khiển Máy tính: Viết chương trình xuất/nhập liệu để điều khiển cấu chấp hành gắn với board vi điều khiển KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục Vi điều khiển: Vi điều khiển gắn với 01 hình LCD 01 bàn phím 16 nút Nguyên tắc hoạt động: Khi user gõ vào chữ chuỗi kí tự máy tính bấm nút Send chữ chuỗi kí tự lên LCD Khi user nhấn phím bàn phím 16 nút kết phím nhấn hiển thị LCD giao diện chương trình máy tính PHẦN THỰC HIỆN Cấu trúc cổng nối tiếp Cổng nối tiếp sử dụng để truyền liệu hai chiều máy tính ngoại vi, có ưu điểm sau: - Khoảng cách truyền xa truyền song song KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục - Số dây kết nối - Có thể truyền không dây dùng hồng ngoại - Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device) - Cho phép nối mạng - Có thể tháo lắp thiết bị lúc máy tính làm việc - Có thể cung cấp nguồn cho mạch điện đơn giản Các thiết bị ghép nối chia thành loại: DTE (Data Terminal Equipment) DCE (Data Communication Equipment) DCE thiết bị trung gian MODEM DTE thiết bị tiếp nhận hay truyền liệu máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua chân RxD (nhận) TxD (truyền) Các tín hiệu lại có chức hỗ trợ để thiết lập điều khiển trình truyền, gọi tín hiệu bắt tay (handshake) Ưu điểm trình truyền dùng tín hiệu bắt tay kiểm soát đường truyền Tín hiệu truyền theo chuẩn RS-232 EIA (Electronics Industry Associations) Chuẩn RS-232 quy định mức logic ứng với điện áp từ -3V đến -25V (mark), mức logic ứng với điện áp từ 3V đến 25V (space) có khả cung cấp dòng từ 10 mA đến 20 mA Ngoài ra, tất ngõ có đặc tính chống chập mạch Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps cáp truyền đủ ngắn lên đến 115.200 bps Các phương thức nối DTE DCE: - Đơn công (simplex connection): liệu truyền theo hướng - Bán song công ( half-duplex): liệu truyền theo hướng, thời điểm truyền theo hướng - Song công (full-duplex): số liệu truyền đồng thời theo hướng Định dạng khung truyền liệu theo chuẩn RS-232 sau: Khi không truyền liệu, đường truyền trạng thái mark (điện áp -10V) Khi bắt đầu truyền, DTE đưa xung Start (space: 10V) sau truyền từ D0 đến D7 Parity, cuối KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục xung Stop (mark: -10V) để khôi phục trạng thái đường truyền Dạng tín hiệu truyền mô tả sau (truyền ký tự A): Tín hiệu truyền ký tự ‘A’ Các đặc tính kỹ thuật chuẩn RS-232 sau: Các tốc độ truyền liệu thông dụng cổng nối tiếp là: 1200 bps, 4800 bps, 9600 bps 19200 bps KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục Sơ đồ chân cổng nối tiếp Cổng COM có hai dạng: đầu nối DB25 (25 chân) đầu nối DB9 (9 chân) mô tả hình Ý nghĩa chân mô tả sau: Truyền thông hai nút Các sơ đồ kết nối dùng cổng nối tiếp: KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục Kết nối đơn giản truyền thông nối tiếp Khi thực kết nối trên, trình truyền phải bảo đảm tốc độ đầu phát thu giống Khi có liệu đến DTE, liệu đưa vào đệm tạo ngắt Ngoài ra, thực kết nối hai DTE, ta dùng sơ đồ sau: Kết nối truyền thông nối tiếp dùng tín hiệu bắt tay Khi DTE1 cần truyền liệu cho DTR tích cực  tác động lên DSR DTE2 cho biết sẵn sàng nhận liệu cho biết nhận sóng mang MODEM (ảo) Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS DTE2 cho biết DTE1 nhận liệu Khi thực kết nối DTE DCE, tốc độ truyền khác nên phải thực điều khiển lưu lượng Quá trinh điều khiển thực phần mềm hay phần cứng Quá trình điều khiển phần mềm thực hai ký tự Xon Xoff Ký tự Xon DCE gởi rảnh (có thể nhận liệu) Nếu DCE bận gởi ký tự Xoff Quá trình điều khiển phần cứng dùng hai chân RTS CTS Nếu DTE muốn truyền liệu gởi RTS để yêu cầu truyền, DCE có khả nhận liệu (đang rảnh) gởi lại CTS Truy xuất trực tiếp thông qua cổng: KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục Các cổng nối tiếp máy tính đánh số COM1, COM2, COM3, COM4 với địa sau: Một số giá trị thông dụng xác định tốc độ truyền cho sau: SBCB (Set Break Control Bit) =1: cho phép truyền tín hiệu Break (=0) khoảng thời gian lớn khung PS (Parity Select): STB (Stop Bit) = 0: bit stop, =1: 1.5 bit stop (khi dùng bit liệu) hay bit stop (khi dùng 6, 7, bit liệu) WLS (Word Length Select): Giao tiếp với vi điều khiển KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục Khi thực giao tiếp với vi điều khiển, ta phải dùng thêm mạch chuyển mức logic từ TTL Æ 232 ngược lại Các vi mạch thường sử dụng MAX232 Maxim hay DS275 Dallas Mạch chuyển mức logic mô tả sau: Mạch chuyển mức logic TTL ↔ RS232 Tuy nhiên, sử dụng mạch chuyển mức logic dùng vi mạch đòi hỏi phải dùng chung GND máy tính vi mạch → có khả làm hỏng cổng nối tiếp xảy tượng chập mạch mạch Do đó, ta dùng thêm opto 4N35 để cách ly điện Sơ đồ mạch cách ly mô tả sau: Mạch chuyển mức logic TTL ↔ RS232 cách ly Khi giao tiếp, vi điều khiển DTE nên nối RxD máy tính với TxD vi điều khiển ngược lại Mạch kết nối vi điều khiển máy tính sau: KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục Trong sơ đồ mạch chân 25,26 nối với max232 để giao tiếp với máy tính Code chương trình điều khiển: #include #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7) #include //#include char const kitu[]=" 1234567890*#"; int key=0,vitri=0; int k=10; int ram[16]; void memory(int value,vitri) KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục { ram[vitri]=value; } #INT_TIMER1 void SendData() { char c; fprintf("Online\n\r"); putc(c); delay_ms(100); } #INT_RDA VOID RECEVICE() { char y; y=getc(); fprintf(y); } void quet() { int b=10; while(1) { output_d(0); output_high(pin_D5); if (input(PIN_D1)) if (input(PIN_D2)) if (input(PIN_D3)) if (input(PIN_D4)) output_d(0); output_high(pin_D6); if (input(PIN_D1)) if (input(PIN_D2)) if (input(PIN_D3)) if (input(PIN_D4)) output_d(0); output_high(pin_D7); if (input(PIN_D1)) if (input(PIN_D2)) if (input(PIN_D3)) if (input(PIN_D4)) b ; } 10 {key=1;break;} { key=4;break;} { key=7;break;} { key=11;break;} { { { { key=2;break;} key=5;break;} key=8;break;} key=10;break;} { { { { key=3;break;} key=6;break;} key=9;break;} key=12;break;} KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục } void main() { enable_interrupts(global); enable_interrupts(INT_RDA); enable_interrupts(INT_TIMER1); setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); set_timer1(15536); lcd_init(); while(true) { quet(); lcd_putc(kitu[key]); delay_ms(15); } } Thiết kế giao diện máy tính Ta sử dụng ngôn ngữ lập trình C# để thiết kế giao diện Đầu tiên, ta tạo giao diện (form) sau: Và code giao diện trên: using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Drawing.Drawing2D; System.Linq; System.Text; System.Windows.Forms; System.IO.Ports; namespace RS232 { 11 KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục public partial class Form1 : FORM { private int[] values = new int[200]; private int count = 0; private int maxVal = 200; public Form1() { InitializeComponent(); } private void Form1_Load_1(object sender, EventArgs e) { if (serialPort1.IsOpen) serialPort1.Close(); serialPort1.Open(); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { if (serialPort1.IsOpen) serialPort1.Close(); } private void btnWrite_Click(object sender, EventArgs e) { byte data = (byte)Convert.ToInt16(txtWrite.Text, 10); serialPort1.Write(new byte[] { data }, 0, 1); drawLine(); } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte nhan = (byte)serialPort1.ReadByte(); object[] para = { nhan }; txtRead.BeginInvoke(new deleFunc(Display), para); } // Hàm hiển thị liệu private delegate void deleFunc(byte nhan); private void Display(byte nhan) { string receive = Convert.ToString(nhan, 10); txtRead.AppendText(receive + " "); values[count++] = (int)nhan; redraw(); } private void txtWrite_TextChanged(object sender, EventArgs e) { } private void btnClear_Click(object sender, EventArgs e) { txtRead.Text = " "; } 12 KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com nghiệp giáo dục // hàm ve thi private void redraw() { Graphics g = panel1.CreateGraphics(); int width = panel1.Width; int height = panel1.Height; int space = 10; g.FillRectangle(Brushes.White, 0, 0, width, height); g.DrawRectangle(Pens.Black, space, space, width - space * 2, height - space * 2); double yFactor = (height - space) / (maxVal + 1.0f); g.SmoothingMode = SmoothingMode.HighQuality; float x, y, lastX, lastY; y = (float)((maxVal - (float)Int32.Parse(txtWrite.Text)) * yFactor); g.DrawLine(Pens.DarkBlue, space, y, width - space, y); // -Vẽ vạch trục Y // float yFactorDefault = (height - space * 2) / 20; for (float j = 0; j [...]... setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); set_timer1(15536); lcd_init(); while(true) { quet(); lcd_putc(kitu[key]); delay_ms(15); } } 5 Thiết kế giao diện trên máy tính Ta sử dụng ngôn ngữ lập trình C# để thiết kế giao diện Đầu tiên, ta tạo 1 giao diện (form) như sau: Và đây là code của giao diện trên: using using using using using using using using using using System; System.Collections.Generic; System.ComponentModel;... System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Drawing.Drawing2D; System.Linq; System.Text; System.Windows.Forms; System.IO.Ports; namespace RS232 { 11 KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com vì sự nghiệp giáo dục public partial class Form1 : FORM { private int[] values = new int[200]; private int count = 0; private int maxVal = 200; public Form1() { InitializeComponent();... values[count++] = (int)nhan; redraw(); } private void txtWrite_TextChanged(object sender, EventArgs e) { } private void btnClear_Click(object sender, EventArgs e) { txtRead.Text = " "; } 12 KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com vì sự nghiệp giáo dục // hàm ve do thi private void redraw() { Graphics g = panel1.CreateGraphics(); int width = panel1.Width; int height = panel1.Height; int space = 10; g.FillRectangle(Brushes.White,... height); g.DrawRectangle(Pens.Black, space, space, width - space * 2, height - space * 2); double yFactor = (height - space) / (maxVal + 1.0f); g.SmoothingMode = SmoothingMode.HighQuality; 13 KỸ THUẬT GIAO TIẾP MÁY TÍNH Ketnooi.com vì sự nghiệp giáo dục yFactor); float y = (float)((maxVal - (float)Int32.Parse(txtWrite.Text)) * g.DrawLine(Pens.DarkBlue, space, y, width - space, y); g.Dispose(); } private void... private void textBox15_TextChanged(object sender, EventArgs e) { } private void label1_Click(object sender, EventArgs e) { } private void label2_Click(object sender, EventArgs e) { } } } 14 KỸ THUẬT GIAO TIẾP MÁY TÍNH

Ngày đăng: 03/06/2016, 14:21

Tài liệu cùng người dùng

Tài liệu liên quan