Chương trình giao tiếp PIC18F452 và máy tính qua cổng com sử dụng ngôn ngữ lập trình C#

Các máy tính, vi điều khiển đều hỗ trợ các modul truyền thông qua cổng cổng com. Các modul này đã được nâng cấp cải tiến đi rất nhiều nhằm đáp ứng nhu cầu của người sử dụng. Việc kết nối, tùy biến chúng là công việc của các kỹ sư thiết kế. Để có thể thiết kế được các sản phẩm có chất lượng tốt yêu cầu các kỹ sư phải hiểu tường tận hệ thống mình đang xây dựng và các tính năng đã được hỗ trợ, xây dựng sẵn của các modul, linh kiện trong hệ thống.

doc26 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3128 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Chương trình giao tiếp PIC18F452 và máy tính qua cổng com sử dụng ngôn ngữ lập trình C#, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC LỜI NÓI ĐẦU Ngày nay, các máy tính đã được cải tiến, nâng cấp để đạt tốc độ nhanh và giá thành rẻ. Trong những thập niên qua, máy tính đã được áp dụng khắp mọi nơi, thay thế các hệ thống cũ nhiều nhược điểm. Đặc biệt trong lĩnh vực công nghiệp, máy tính đã được ứng dụng ngày càng nhiều, mang lại nhiều tính năng ưu việt cho hệ thống. Trong các ứng dụng đó, ứng dụng đo lường và điều khiển bằng máy tính đang ngày càng phát triển. Để có thể thiết kế và vận hành các hệ thống đó, các kỹ sư cần nắm vững về kỹ thuật máy tính, cách viết các chương trình, ghép nối thiết bị ngoại vi, xử lý tín hiệu và điều khiển số… Trong khuôn khổ bài thảo luận môn lập trình windows. Chúng em xin trình bày các kết quả đã nghiên cứu của đề tài : “Sử dụng ngôn ngữ lập trình C# và các kiến thức liên quan thiết kế modul truyền thông tin từ máy tính xuống vi điều khiển và hiển thị nên màn hình LCD”. Vì nhiều lý do khác nhau nên chúng em sẽ tiến hành thực hiện đề tài bằng vệc mô phỏng trên máy trính. Bài thảo luận được chia làm 4 chương : Chương 1 : Phân tích bài toán Trong chương này sẽ trình bày các ràng buộc của bài toán, các yêu cầu cần đạt được của đề tài. Chương 2 : Giới thiệu ngôn ngữ lập trình C# Trong chương này sẽ giới thiệu nền tảng, các tính năng nổi bật của ngôn ngữ lập trình c#. Chương 3 : Thiết kế hệ thống Chương này sẽ trình bày sơ đồ nguyên lý của hệ thống, giao diện chương trình đã thiết kế. Chương 4 : Kết quả và hướng phát triển của đề tài Chương này trình bày các kết quả đã đạt được. Các kết quả của quá trình mô phỏng. Giới thiệu hướng phát triển của đề tai. DANH MỤC HÌNH ẢNH Hình 1 : Vi điều khiển PIC18F452 6 Hình 2 : Màn hình LCD 40x2 chuẩn HD44780U 6 Hình 3 : Sơ đồ hệ thống 11 Hình 4 : Sơ đồ thuật toán xử lý dữ liệu trên vi xử lý 11 Hình 5: Sơ đồ mô phỏng trên proteus 12 Hình 6 : Giao diện chương trình nhận dữ liệu trên máy trính 12 Hình 7 : Giao diện chương trình truyền dữ liệu trên máy tính 13 Hình 8 : Hoạt động của chương trình khi chưa gửi dữ liệu 13 Hình 9 : Hoạt động của chương trình khi nhận được dữ liệu 14 Hình 10 : Hoạt động truyền nhận dữ liệu trên phần mềm 15 CHƯƠNG 1 : PHÂN TÍCH BÀI TOÁN Yêu cầu hệ thống Từ thực tế và lý thuyết đã học trong các môn : vi xử lý, hệ thống nhúng và lập trình windows. Hệ thống chỉ hoạt động được nếu đáp ứng được các yêu cầu sau đây : Máy tính có thể xuất thông tin người dùng đã nhập ra cổng COM Vi điều khiển có thể nhận dữ liệu từ cổng COM do máy tính đã truyền xuống và hiển thị lên LCD. Vi điều khiển có thể gửi dữ liệu đã nhận được trở lại máy tính. Giới thiệu hệ thống Các máy tính, vi điều khiển đều hỗ trợ các modul truyền thông qua cổng cổng com. Các modul này đã được nâng cấp cải tiến đi rất nhiều nhằm đáp ứng nhu cầu của người sử dụng. Việc kết nối, tùy biến chúng là công việc của các kỹ sư thiết kế. Để có thể thiết kế được các sản phẩm có chất lượng tốt yêu cầu các kỹ sư phải hiểu tường tận hệ thống mình đang xây dựng và các tính năng đã được hỗ trợ, xây dựng sẵn của các modul, linh kiện trong hệ thống. Hệ thống chúng em đang trình bày gồm các thành phần sau : máy tính, phần mềm gửi dữ liệu từ máy tính viết bằng ngôn ngữ lập trình C#, vi điều khiển, màn hình LCD, chuẩn truyền thông giữa máy tính và vi điều khiển là RS232. Lựa chọn vi điều khiển Vi điều khiển được sử dụng trong hệ thống là PIC18F452. Đây là vi điều khiển chúng em đã được nghiên cứu trong môn học hệ thống nhúng. Việc sử dụng PIC18F452 cũng là để vận dụng các kiến thức đã học trong môn hệ thống nhúng. Các tính năng của PIC18F452 hỗ trợ cho các yêu cầu của đề tài : Hỗ trợ chuẩn RS232 và RS485 Hình 1 : Vi điều khiển PIC18F452 Khối hiển thị LCD LCD sử dụng trong hệ thống là LCD 40x2 chuẩn HD44780U. LCD có 16 chân, gồm : 14 chân điều khiển, 2 chân nguồn. LCD là một trong các thiết bị hiển thị phổ biến nhất trong các hệ thống nhúng. Chúng em đã chọn LCD 40x2 với mục đích có thể thể hiện tốt nhất thông tin đã nhận được từ máy tính, kiểm chứng lại lý thuyết đã học. Hình 2 : Màn hình LCD 40x2 chuẩn HD44780U Phần mềm truyền nhận dữ liệu với vi điều khiển trên PC Phần mềm truyền nhận dữ liệu được viết trên visual studio 2010 và C# 4.0. một trong những môi trường tích hợp tốt nhất cho việc phát triển các ứng dụng trên nền windows. Chuẩn giao tiếp RS232 Ghép nối qua cổng nối tiếp là một trong những kỹ thuật được sử dụng nhiều nhất để ghép nối các thiết bị ngoại vi với máy tính. Số lượng và chủng loại thiết bị ngoại vi ghép nối qua cổng nối tiếp đứng hàng đầu trong các khả năng ghép nối với máy tính. Cách truyền thông theo kiểu nối tiếp, nghĩa là tại 1 thời điểm chỉ có 1 bit được gửi đi dọc theo đường truyền. Chuẩn giao tiếp RS232 ban đầu chỉ là một chuẩn giao tiếp không chính thức được nhiều công ty máy tính và thiết bị đo lường chấp nhận. Năm 1962, nó được xây dựng thành một chuẩn chính thức bởi EIA (Electronics Industry Asociations). Ghép nối qua chuẩn RS232 là một trong những kỹ thuật được sử dụng rộng rãi nhất để ghép nối các thiết bị ngoại vi với máy tính. Qua cổng nối tiếp có thể ghép nối chuột, modem, máy in (APPLE), các thiết bị đo lường… Ưu điểm : ghép nối dễ dàng với các thiết bị ngoại vi, như vi điều khiển, PLC, Modem.. Nhược điểm : tốc độ truyền thấp, khoảng cách truyền tối đa là 20m. So sánh một số chuẩn giao tiếp USART : RS232C RS422 RS485 Chức năng Liên kết điểm điểm Liên kết điểm điểm Liên kết bus Giao diện Điện áp không đối xứng Điện áp đối xứng Điện áp đối xứng 3 trạng thái Chống nhiễu Thấp Cao Cao Số bộ đệm cực đại 1 1 32 Số bộ nhận cực đại 1 1 32 Độ dài đường truyền cực đại 15m 1200m 1200m Tốc độ truyền cực đại 20Kbaud 10Mbaud 10Mbaud Điện áp bộ đệm(không tải/có tải) ±15/±5 V ±5/±2 V ±5/±1.5 V Điện trở nối ra bộ đệm (KΩ) 3-7 100 54-60 Điện trở nối vào bộ nhận(KΩ) 3-7 >4 >12 Độ nhạy bộ nhận ±3V ±200mV ±200mV CHƯƠNG 2 : GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C# Giới thiệu C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường. Microsoft phát triển C# dựa trên C++ và Java. C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java. C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC. C# là một trong rất nhiều ngôn ngữ lập trình được hỗ trợ bởi .NET Framework (như C++, Java,VB…). Có thể hiểu đơn giản đây là một trung tâm biên dịch trong đó tất cả các ngôn ngữ được hỗ trợ bởi .NET Framework sẽ được chuyển đổi ra MSIL (một dạng mã trung gian) rồi từ đấy mới được biên dịch tức thời (Just in time Compiler – JIT Compiler) thành các file thực thi như exe. Một thành tố quan trong nữa trong kiến trúc .NET Framework chính là CLR (.NET Common Language Runtime), khối chức năng cung cấp tất cả các dịch vụ mà chương trình cần giao tiếp với phần cứng, với hệ điều hành. Đặc điểm của ngôn ngữ lập trình C# C#, theo một hướng nào đó, là ngôn ngữ lập trình phản ánh trực tiếp nhất đến .NET Framework mà tất cả các chương trình .NET chạy, và nó phụ thuộc mạnh mẽ vào Framework này. Mọi dữ liệu cơ sở đều là đối tượng, được cấp phát và hủy bỏ bởi trình dọn rác Garbage-Collector (GC), và nhiều kiểu trừu tượng khác chẳng hạn như class, delegate, interface, exception, v.v, phản ánh rõ ràng những đặc trưng của .NET runtime. Ưu điểm C# được kế thừa những ưu điểm của C/C++, bỏ đi những dư thừa không cần thiết gây khó khăn cho người sử dụng. Câu lệnh C# đơn giản, ít từ khóa. Tính năng debug rất thuận tiện. Ngôn ngữ lập trình C# được đánh giá là dễ học và kết hợp được nhiều ưu điểm của các ngôn ngữ lập trình hướng đối tượng Java và C++. Do đó ngôn ngữ C# đang đựơc ưu chuộng nhất. Ngôn ngữ C# là cơ sở để phát triển các ứng dụng windows Form, ASP.NET, Web service… Hổ trợ nhiều thư viện hàm có sẵn giúp cho người lập trình lấy hàm dễ dàng và thuận tiện. Nhược điểm C# chỉ có thể chạy được trên nền Windows và .NET Famework. Vì vậy nó hạn chế phạm các ứng dụng của C#. Đó là nhược điểm lớn nhất của C# với các ngông ngữ lập trình khác. So sánh C# và C++ Các con trỏ chỉ có thể được sử dụng trong chế độ không an toàn. Hầu hết các đối tượng được tham chiếu an toàn, và các phép tính đều được kiểm tra tràn bộ đệm. Các con trỏ chỉ được sử dụng để gọi các loại kiểu giá trị; còn những đối tượng thuộc bộ thu rác (garbage-collector) thì chỉ được gọi bằng cách tham chiếu. Các đối tượng không thể được giải phóng tường minh. Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng (abstract interfaces). Chức năng này làm đơn giản hóa sự thực thi của thời gian thực thi. C# thì an-toàn-kiểu (typesafe) hơn C++. Cú pháp khai báo mảng khác nhau("int[] a = new int[5]" thay vì "int a[5]"). Kiểu thứ tự được thay thế bằng tên miền không gian (namespace). C# không có tiêu bản. Có thêm Properties, các phương pháp có thể gọi các Properties để truy cập dữ liệu. Có reflection. CHƯƠNG 3 : THIẾT KẾ HỆ THỐNG RS232 Vi Điều Khiển Máy Tính Khối LCD Sơ đồ khối hệ thống Hình 3 : Sơ đồ hệ thống Lưu đồ thuật toán chương trình của vi xử lý Hình 4 : Sơ đồ thuật toán xử lý dữ liệu trên vi xử lý Thiết kế hệ thống Mạch mô phỏng trên proteus Hình 5: Sơ đồ mô phỏng trên proteus Giao diện chương trình truyền nhận dữ liệu trên máy tính Hình 6 : Giao diện chương trình nhận dữ liệu trên máy trính Hình 7 : Giao diện chương trình truyền dữ liệu trên máy tính Một số hình ảnh mô phỏng của hệ thống Hình 8 : Hoạt động của chương trình khi chưa gửi dữ liệu Hình 9 : Hoạt động của chương trình khi nhận được dữ liệu Hình 10 : Hoạt động truyền nhận trên phần mềm 3.5. Thư viện và mã nguồn lập trình Thư viện hỗ trợ lập trình giao tiếp qua cổng nối tiếp .Net Famework 4 đã xây dựng sẵn cho người dùng lớp Serialport để xây dựng các chương trình giao tiếp với các thiết bị ngoại vi qua cổng nối tiếp. Người dùng có thể thay đổi, tùy biến các thành phần của lớp. Ở đây, chúng em xin đưa ra cú pháp, thuộc tính, các phương thức được sử dụng trong chương trình. Cú pháp : public class SerialPort : Component Khai báo : Serialport _Serialport=New SerialPort(); Thuộc tính : BaudRate Bausrate mà đối tượng Serialport đã tạo sử dụng Databits databits mà đối tượng Serialport đã tạo sử dụng IsOpen Trả về true nếu cổng đã tạo được mở Parity Parity mà đối tượng Serialport đã tạo sử dụng PortName Tên mà đối tượng Serialport đã tạo sử dụng Stopbits Stopbits mà đối tượng Serialport đã tạo sử dụng Phương thức Close Đóng đối tượng Serialport đang chọn GetPortNames Lấy tên của các port đang sử dụng Open Mở đối tượng Serialport đang sử dụng ReadExisting Đọc dữ liệu từ bộ đệm cổng Write((String) Ghi một chuỗi ra cổng được chọn Xây dựng lớp đối tượng NewCOM Do các thuộc tính của lớp Serialport là các kiểu dữ liệu được xây dựng sẵn, như : PortName là kiểu string, Baudrate là kiểu int, parity là kiểu Enum, Databits là kiểu int, Stopbits là kiểu Enum. Trong khi các sữ liệu đầu vào của chúng ta là string vì vậy ta cần xây dựng lại một lớp đối tượng mới từ lớp Serialport. class NewCom : SerialPort //tạo lớp NewCom dẫ xuất từ lớp Serialport { public void _SetPortName(string text) { PortName = text; //thiết lập tên port } public void _SetBaudrate(string text) { int n=int.Parse(text); BaudRate = n; //thiết lập baudrate } public void _SetParity(string text) { Parity = (Parity)Enum.Parse(typeof(Parity), text); //thiết lập patity } public void _SetDataBits(string text) { int n=int.Parse(text); DataBits = n; //thiết lập databits } public void _SetStopBits(string text) { StopBits = (StopBits)Enum.Parse(typeof(StopBits), text); //thiết lập stopbits } } 3.5.3. Chương trình chính using System; using System.IO.Ports; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ProjectLapTrinhWinDows; using System.IO; namespace ProjectLapTrinhWinDows { public partial class Form1 : Form { public Form1() { InitializeComponent(); _defaulseting(); } static NewCom _NewCom = new NewCom(); static string _sglobal; //hàm khởi tạo các thông số khi bắt đầu chạy chương trình public void _defaulseting() { //kiểm tra và liệt kê các port foreach (var item in SerialPort.GetPortNames()) { ComboBox1.Items.Add(item); } //chọn port mặc định ComboBox1.SelectedIndex = 0; //liệt kê hiển thị baurate int[] _baudrate = new int[] { 75, 110, 134, 300, 600, 1200, 1800, 2400, 4800, 7200, 9600, 14400, 19200, 38400 }; foreach (var item in _baudrate) { comboBox2.Items.Add(item); } //chọn baurate mặc định comboBox2.SelectedIndex = 10; //liệt kê các kiểu parity string[] _parity = new string[] { "Even", "Odd", "None", "Mark", "Space" }; foreach (var item in _parity) { comboBox3.Items.Add(item); } //chọn parity mặc định comboBox3.SelectedIndex = 2; //liệt kê databit uint[] _databit = new uint[] { 4, 5, 6, 7, 8, 9}; foreach (var item in _databit) { comboBox4.Items.Add(item); } //chọn databit mặc định comboBox4.SelectedIndex = 4; //liệt kê stopbit string[] _topbit = new string[] { "1", "1.5", "2" }; foreach (var item in _topbit) { comboBox5.Items.Add(item); } //chọn stopbit mặc định comboBox5.SelectedIndex = 0; //dòng thông báo thông điệp đã gửi richTextBox1.AppendText("Chưa có thông điệp nào được gửi đi"); //chọn mày chữ richTextBox1.ForeColor = Color.DarkGray; //dòng thông báo nơi gõ thông diệp textBox1.Text = "Nhập thông điệp cần gửi tại đây"; textBox1.ForeColor = Color.DarkGray; } //Mở cổng private void button2_Click(object sender, EventArgs e) { try { if (_NewCom.IsOpen == true) { _NewCom.Close(); button2.Text = "Opent Port"; label6.Text = "Cổng bạn chọn đã đóng"; } else { //thiết lập thông số của cổng rồi mở cổng _NewCom._SetPortName(ComboBox1.Text); _NewCom._SetBaudrate(comboBox2.Text); _NewCom._SetParity(comboBox3.Text); _NewCom._SetDataBits(comboBox4.Text); _NewCom._SetStopBits(comboBox5.Text); _NewCom.Open(); label6.Text = "Cổng bạn chọn đã mở"; button2.Text = "Close Port"; } } catch (System.Exception) { //xử lý ngoại lệ label6.Text = "Các thông số của cổng không hợp lệ, hãy nhập lại trước khi thực hiện hành động mày"; } } //Đóng cổng private void button3_Click(object sender, EventArgs e) { _NewCom.Close(); } //Thoát khỏi chương trình private void menuItem10_Click(object sender, EventArgs e) { Application.Exit(); } // gửi dữ liệu private void button1_Click(object sender, EventArgs e) { try { if (textBox1.Text != "") { if (textBox1.Multiline == true) { textBox1.Clear(); textBox1.ForeColor = Color.Black; label6.Text = "Bạn phải soạn thông điệp vào textbox ở trên"; textBox1.Multiline = false; } else { _NewCom.Write(textBox1.Text); if (richTextBox1.Multiline == false) { richTextBox1.Text = "Các thông điệp đã gửi :"; richTextBox1.Multiline = true; } richTextBox1.ForeColor = Color.Black; DateTime _NowDateTime = DateTime.Now; string _s = _NowDateTime.ToString(); richTextBox1.AppendText("\n" + _s + " : " + textBox1.Text); textBox1.Clear(); textBox1.ForeColor = Color.Black; label6.Text = "Thông điệp đã được gửi thành công"; label8.Text = "Số ký tự : 0"; } } else { label6.Text = "Thông điệp không có nội dung"; } } catch (System.Exception ex) { label6.Text = ex.Message; if (ex.Message == "The port is closed.") { label6.Text = "Cổng bạn chọn đang đóng, bạn phải mở cổng để thực hiện hành động này"; } else { label6.Text = ex.Message; } } } //Save File private void menuItem8_Click(object sender, EventArgs e) { SaveFileDialog _Save = new SaveFileDialog(); _Save.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); _Save.Title = "Save"; _Save.Filter = "Text file(*.txt)|*.txt|All file(*.*)|*.*"; _Save.DefaultExt = "txt"; _Save.FileName = "message"; DialogResult _DialogResult = _Save.ShowDialog(); try { if (_DialogResult == DialogResult.OK) { StreamWriter _StreamWriter = new StreamWriter(_Save.FileName); _StreamWriter.WriteLine(richTextBox1.Text); _StreamWriter.Close(); } else { } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw; } } //even when click to textbox1 private void textBox1_MouseClick(object sender, MouseEventArgs e) { if (textBox1.Multiline==true) { textBox1.Clear(); textBox1.Multiline = false; } } //đếm ký tự private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { button1_Click(sender, e); } else { label8.Text = "Số ký tự : " + textBox1.Text.Length; } } //xóa nội dung đã gửi private void menuItem18_Click(object sender, EventArgs e) { if (richTextBox1.Multiline==false) { } else { _sglobal = richTextBox1.Text; richTextBox1.Clear(); richTextBox1.ForeColor = Color.DarkCyan; richTextBox1.Text = "Các thông điệp đã gửi : "; } } //thông tin tác giả private void menuItem6_Click(object sender, EventArgs e) { About _About = new About(); _About.ShowDialog(this); } //Update port private void menuItem21_Click(object sender, EventArgs e) { ComboBox1.Items.Clear(); comboBox2.Items.Clear(); comboBox3.Items.Clear(); comboBox4.Items.Clear(); _defaulseting(); } //Unclear Message private void menuItem17_Click(object sender, EventArgs e) { richTextBox1.Text = _sglobal; _sglobal = ""; } //check Form private void menuItem15_Click(object sender, EventArgs e) { CheckInPut _CheckInPut = new CheckInPut(); _CheckInPut.Show(); } //clear message private void menuItem4_Click(object sender, EventArgs e) { _sglobal=""; richTextBox1.Clear(); richTextBox1.AppendText("Chưa có thông điệp nào được gửi đi"); } //open a file private void menuItem7_Click(object sender, EventArgs e) { OpenFileDialog _Open = new OpenFileDialog(); _Open.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); _Open.Title = "Open"; _Open.Filter = "Text files(*.txt)|*.txt" + "|All files(*.*)|*.*"; _Open.DefaultExt = "txt"; DialogResult _DialogResult = _Open.ShowDialog(); try { if (_DialogResult == DialogResult.OK) { StreamReader _StreamReader = new StreamReader(_Open.FileName); richTextBox1.Multiline = true; richTextBox1.ForeColor = Color.Black; richTextBox1.Text=_StreamReader.ReadToEnd(); _StreamReader.Close(); } else { } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw; } } //Save as private void menuItem9_Click(object sender, EventArgs e) { menuItem8_Click(sender,e); } } } CHƯƠNG 4 : KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI Những kết quả đã đạt được Với các phương án thiết kế về phần cứng và phần mềm đã trình bày. Chúng em đã hoàn thành được những kết quả sau : Về phần mềm : xây dựng xong các chương trình Chương trình truyền, nhận dữ liệu dữ liệu qua cổng COM trên máy tính sử dụng ngôn ngữ lập trình C#. Chương trình truyền, nhận dữ liệu với máy tính theo chuẩn RS232 Hiển thị thông điệp nhận được từ máy tính lên LCD Về phần cứng : Xây dựng xong mạch mô phỏng chương trình trên proteus. Hệ thống chạy tốt trên phần mềm mô phỏng Hướng phát triển của đề tài Đề tài của chúng em chỉ gói gọn trong việc truyền và nhận dữ liệu giữa máy tính và vi điều khiển. Nhưng với các chức năng trên, chúng ta hoàn toàn có thể phát triển đề tài để giải quyết các bài toán thực tế có yêu cầu truyền thông với máy tính : Các ứng dụng khảo sát, thông kê dữ liệu thực tế Các ứng dụng đo lường điều khiển bằng máy tính Truyền thông dữ liệu giữa máy tính với máy tính, máy tính với các thiết bị ngoại vi. TÀI LIỆU THAM KHẢO Giáo trình : Bài giảng lập trình windows – GV Nguyễn Tuấn Linh Bài giảng ghép nối và điều khiển thiết bị ngoại vi – GV Nguyễn Văn Minh Trí. Website : Tiếng anh : Tiếng việt : www.dientuvietnam.net

Các file đính kèm theo tài liệu này:

  • docChương trình giao tiếp PIC18F452 và máy tính qua cổng com sử dụng ngôn ngữ lập trình C#.doc