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# - Pdf 13

Bài thảo luận lập trình windows
MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 3
DANH MỤC HÌNH ẢNH 4
CHƯƠNG 1 : PHÂN TÍCH BÀI TOÁN 5
3.3.1.Yêu cầu hệ thống 5
3.3.1.Giới thiệu hệ thống 5
1.1.Lựa chọn vi điều khiển 5
1.2.Khối hiển thị LCD 6
1.3.Phần mềm truyền nhận dữ liệu với vi điều khiển trên PC 7
1.4.Chuẩn giao tiếp RS232 7
CHƯƠNG 2 : GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C# 9
2.1.Giới thiệu 9
2.2.Đặc điểm của ngôn ngữ lập trình C# 9
2.2.1.Ưu điểm 9
2.2.2.Nhược điểm 10
2.2.3.So sánh C# và C++ 10
CHƯƠNG 3 : THIẾT KẾ HỆ THỐNG 11
3.1.Sơ đồ khối hệ thống 11
3.2.Lưu đồ thuật toán chương trình của vi xử lý 11
3.3.Thiết kế hệ thống 12
3.3.1.Mạch mô phỏng trên proteus 12
3.3.1.Giao diện chương trình truyền nhận dữ liệu trên máy tính. 12
GVHD : Nguyễn Tuấn Linh Page 1
Bài thảo luận lập trình windows
3.4.Một số hình ảnh mô phỏng của hệ thống 13
3.5. Thư viện và mã nguồn lập trình 16
3.5.1.Thư viện hỗ trợ lập trình giao tiếp qua cổng nối tiếp 16
3.5.2.Xây dựng lớp đối tượng NewCOM 17
3.5.3. Chương trình chính 18

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.
GVHD : Nguyễn Tuấn Linh Page 3
Bài thảo luận lập trình windows
DANH MỤC HÌNH ẢNH
GVHD : Nguyễn Tuấn Linh Page 4
Bài thảo luận lập trình windows
CHƯƠNG 1 : PHÂN TÍCH BÀI TOÁN
3.3.1. 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.
3.3.1. 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.
1.1. 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

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.
GVHD : Nguyễn Tuấn Linh Page 7
Bài thảo luận lập trình windows
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
Liên kết
điểm
Liên kết
bus
Giao diện
Điện áp
không
Điện áp
đối xứng
Điện áp
đối xứng
Chống
nhiễu
Thấp Cao Cao
Số bộ đệm
cực đại

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.
2.2. Đặ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.
2.2.1. Ư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.

CHƯƠNG 3 : THIẾT KẾ HỆ THỐNG
3.1. Sơ đồ khối hệ thống
Hình 3 : Sơ đồ hệ thống
3.2. 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ý
GVHD : Nguyễn Tuấn Linh Page 11
Khối LCDMáy Tính Vi Điều Khiển
RS232
Bài thảo luận lập trình windows
3.3. Thiết kế hệ thống
3.3.1. Mạch mô phỏng trên proteus
Hình 5: Sơ đồ mô phỏng trên proteus
3.3.1. 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
GVHD : Nguyễn Tuấn Linh Page 12
Bài thảo luận lập trình windows
Hình 7 : Giao diện chương trình truyền dữ liệu trên máy tính
3.4. 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
GVHD : Nguyễn Tuấn Linh Page 13
Bài thảo luận lập trình windows
Hình 9 : Hoạt động của chương trình khi nhận được dữ liệu
GVHD : Nguyễn Tuấn Linh Page 14
Bài thảo luận lập trình windows
Hình 10 : Hoạt động truyền nhận trên phần mềm
GVHD : Nguyễn Tuấn Linh Page 15
Bài thảo luận lập trình windows
3.5. Thư viện và mã nguồn lập trình
3.5.1. 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

//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
}
}

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)
{
GVHD : Nguyễn Tuấn Linh Page 18
Bài thảo luận lập trình windows
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);
}

{
//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);
GVHD : Nguyễn Tuấn Linh Page 19
Bài thảo luận lập trình windows
_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();

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);

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 : ";

}
//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)
{
GVHD : Nguyễn Tuấn Linh Page 23
Bài thảo luận lập trình windows
StreamReader _StreamReader = new
StreamReader(_Open.FileName);
richTextBox1.Multiline = true;
richTextBox1.ForeColor = Color.Black;
richTextBox1.Text=_StreamReader.ReadToEnd();
_StreamReader.Close();

- 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
4.2. 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.
GVHD : Nguyễn Tuấn Linh Page 25


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