Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
883,4 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP HCM KHOA CƠ KHÍ Bài tập lớn K H AO Í H KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐỀ 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 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 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com PHẦN THỰC HIỆN Cấu trúc cổng nối tiếp KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 - 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 cịn 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 sốt đường truyền Tín hiệu truyền theo chuẩn RS-232 EIA (Electronics Industry Associations) KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 Ngồ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 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): KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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: KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 10 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 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: 12 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 ngồi 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 13 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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: 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: 14 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com #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) { ram[vitri]=value; } #INT_TIMER1 void SendData() { char c; 15 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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)) {key=1;break;} if (input(PIN_D2)) { key=4;break;} 16 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com if (input(PIN_D3)) { key=7;break;} if (input(PIN_D4)) { key=11;break;} output_d(0); output_high(pin_D6); if (input(PIN_D1)) { key=2;break;} if (input(PIN_D2)) { key=5;break;} if (input(PIN_D3)) { key=8;break;} if (input(PIN_D4)) { key=10;break;} output_d(0); output_high(pin_D7); if (input(PIN_D1)) { key=3;break;} if (input(PIN_D2)) { key=6;break;} if (input(PIN_D3)) { key=9;break;} if (input(PIN_D4)) { key=12;break;} b ; } } void main() { enable_interrupts(global); enable_interrupts(INT_RDA); enable_interrupts(INT_TIMER1); setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); 17 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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: 18 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace RS232 { public partial class Form1 : FORM { private int[] values = new int[200]; private int count = 0; private int maxVal = 200; public Form1() { InitializeComponent(); } 19 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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(); 20 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 = " "; 21 KỸ THUẬT GIAO TIẾP MÁY TÍNH LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com } // 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