Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 169 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
169
Dung lượng
3,33 MB
Nội dung
2 LỜI NÓI ĐẦU Với phát triển thành công ngành vi mạch bán dẫn kỹ thuật truyền thông cho đời khái niệm Kết nối vạn vật (Internet of Things) Trong công nghệ này, máy tính đa dụng (general purpose computer) thu nhỏ thành máy tính có chức xác định (specific purpose computer) nhúng vào thiết bị thu nhỏ nhằm để tính tốn xử lý liệu Nhờ đó, thiết bị trở nên thơng minh có hỗ trợ xử lý máy tính dễ dàng kết nối với máy tính loại hỗ trợ chuẩn truyền thông nhằm trao đổi liệu trước sau trình xử lý Việc khảo sát máy tính có chức xác định vi điều khiển thực cần thiết sinh viên ngành Kỹ thuật Máy tính nói riêng sinh viên ngành Kỹ thuật Điện tử nói chung Tài liệu nhằm hướng dẫn người đọc khảo sát dạng máy tính chip vi điều khiển họ 8051 Qua đó, tài liệu trình bày nét sơ lược chung mặt kiến trúc phần cứng vi điều khiển ghi, kích thước liệu, phương pháp đánh địa mở rộng nhớ thể cụ thể qua ứng dụng minh họa câu hỏi ơn tập Ngồi ra, chuẩn truyền thơng máy tính đa đụng máy tính chip UART trình bày, từ người đọc hiểu phương pháp giao tiếp điều khiển từ máy tính Phương pháp tiếp cận tài liệu hướng dẫn người đọc xem xét khái niệm lý thuyết thông qua câu hỏi thực hành đoạn mã nguồn sử dụng ngôn ngữ hợp ngữ (assembly) mã nguồn cấp cao (C) kiến trúc máy tính xác định Bên cạnh đó, phương pháp giao tiếp vi điều khiển thiết bị ngoại vi nhớ giúp người đọc dễ tiếp cận khía cạnh sử dụng máy tính chip để điều khiển thiết bị xử lý thông tin đơn giản Tác giả TS Phạm Văn Khoa LỜI CẢM ƠN Để hoàn thành sách này, tác giả nhận hỗ trợ nhiều từ bạn bè, đồng nghiệp, Khoa Điện - Điện tử Trường Đại học Sư phạm Kỹ thuật trình giảng dạy nghiên cứu Tác giả TS Phạm Văn Khoa MỤC LỤC PHẦN I: Khảo sát kiến trúc phần cứng 8051 ngôn ngữ hợp ngữ PHẦN II: Khảo sát tập lệnh hỗ trợ vi điều khiển họ 8051 19 Bài thực hành số 1: Chương trình di chuyển trao đổi liệu 20 Bài thực hành số 2: Chương trình tính tốn số học 26 Bài thực hành số 3: Chương trình lệnh xử lý luận lý đếm 32 Bài thực hành số 4: Chương trình chuyển đổi giá trị hệ thống số 38 PHẦN III: Lập trình giao tiếp 8051 ngoại vi sử dụng ASM 41 Bài thực hành số 1: Lệnh tính số học để thiết kế cộng/trừ số nhị phân 42 Bài thực hành số 2: Bộ định thời tạo xung dao động tần số xác định 46 Bài thực hành số 3: Ngắt ngồi để giao tiếp với bàn phím ma trận 51 Bài thực hành số 4: Thiết kế máy tính để cộng/trừ số có chữ số 60 PHẦN IV: Lập trình giao tiếp 8051 ngoại vi sử dụng C 75 Bài thực hành số 1: Giao tiếp LED đơn 84 Bài thực hành số 2: Giao tiếp LED đoạn 89 Bài thực hành số 3: Giao tiếp bàn phím ma trận 100 Bài thực hành số 4: Giao tiếp hình tinh thể lỏng LCD 114 Bài thực hành số 5: Giao tiếp chuyển đổi tương tự sang số ADC 125 Bài thực hành số 6: Giao tiếp truyền thông nối tiếp UART 133 Bài thực hành số 7: Giao tiếp nhớ RAM/ROM 138 Phụ lục 153 Tài liệu tham khảo 169 PHẦN I: KHẢO SÁT PHẦN CỨNG 8051 VÀ NGÔN NGỮ HỢP NGỮ Mục đích chung phần nhằm giúp người học ơn tập số vấn đề kiến trúc máy tính từ việc sử dụng thiết kế máy tính chip vi điều khiển họ 8051 Bên cạnh đó, kiến trúc tập lệnh hỗ trợ cho họ vi điều khiển khái quát sơ lược thông qua số câu hỏi ôn tập Việc khảo sát ngôn ngữ hợp ngữ ý nghĩa trình biên dịch mã nguồn thành mã máy trình bày phần Trong kiến trúc máy tính, ghi sử dụng để lưu trữ thơng tin cách tạm thời, thơng tin liệu theo byte xử lý, trỏ địa trỏ đến liệu nạp Đối với máy tính chip họ 8051, ghi hầu hết 8-bit Nó thể hình đây, D0 LSB D7 MSB Hình 1: Thanh ghi 8-bit Cũng giống kiến trúc máy tính thơng thường, vi điều khiển (máy tính chip) có ghi thơng dụng thể hình sau đây: Hình 2: Các ghi đa dụng hỗ trợ họ 8051 10 Trong đó, chức ghi liệt kê sau: Thanh ghi A Được sử dụng cho hầu hết lệnh toán học logic Thanh ghi DPTR Là trỏ liệu (data pointer) Thanh ghi PC Là đếm chương trình (program counter) Thanh ghi B, R0, R1, R2, Là ghi đa dụng R3, R4, R5, R6, R7 Khảo sát cấu trúc phần cứng vi điều khiển họ 8051 sử dụng phần mềm mô 8051 (EdSim51DITM Keil) để trả lời câu hỏi sau: Chỉ số lượng bit (8 16) cho ghi sau: PC = A= B= R0 = R1 = R2 = R7 = Chỉ giá trị lớn (hệ 10) mà ghi sau chứa bao nhiêu? PC = A= B= R0 = R1 = R2 = R7 = Chỉ giá trị lớn (hệ 16) mà ghi sau chứa bao nhiêu? PC = A= B= R0 = R1 = R2 = R7 = Hãy tập tin sau tạo từ đâu? Ý nghĩa tập tin sau gì? asm lst obj abs hex 11 Bước 12: Để nạp file vào vi điều khiển, phần mềm Proteus, click chuột phải lên vi điều khiển, chọn Edit Properties Tiếp đến, cửa sổ cho phép chỉnh sửa thuộc tính vi điều khiển lên, bạn tiến hành tìm tới đường dẫn file HEX chứa mã nguồn muốn mô 156 157 157 158 II Hướng lập trình tạo giao diện điều khiển từ máy tính sử dụng ngơn ngữ lập trình C# Để thực giao tiếp truyền nhận máy tính đa dụng (PC) với máy tính chip (MCU) cơng cụ C# cài đặt máy tính phải hỗ trợ NetFrameWork 2.0 để cung cấp đặc tính truyền nhận nối tiếp (Serial Communication) Đặc tính NetFrameWork có tên là: namespace “system.IO.Ports” bao gồm nhiều lớp quan trọng lớp “SerialPort” Lớp cung cấp việc đồng kiểm soát kiện I/O qua chân thiết bị cổng COM Các khả hỗ trợ “system.IO.Ports”: - Khả truy xuất cổng nối tiếp PC Giao tiếp với thiết bị ngoại vi qua cổng nối tiếp (Serial Port) Đặc tính truyền dẫn: dùng giao diện RS 232 chuẩn DB9 để thực giao tiếp chế độ Full-Duplex 158 156 RTS & DTR ngõ tín hiệu số, đặt tay DCD, DSR, CTS, and RI bit vào đọc RX & TX hai chân nhằm kiểm sốt UART khơng đặt Nguồn điện áp cổng ±15V ngõ khoảng +5 đến +15 -5 đến -15 điện áp ngõ vào khoảng +3 đến +15 -3 đến 15 Điện áp ngõ vào khoảng -3 đến +3V ngõ khoảng -5 đến +5V vùng khơng xác định Các bước lập trình phần mềm: Xác định chế giao tiếp qua RS 232, thông số cổng COM: - Địa cổng (Port Name) - Tốc độ baud (baudrate) - Số bít khung liệu (data bits) - Số bit dừng khung liệu (stop bit) - Bít kiểm tra chẵn lẻ (parity bit) Đối với việc giao tiếp quan tâm đến giao thức truyền liệu hướng dẫn sử dụng chuẩn: 9600,8N1 (tức tốc độ baud 9600 bps, bit data, no parity bit stop) Trong phần mềm sử dụng với cổng ảo (được hỗ trợ qua phần mền Virtual Com) cổng Com thực tế, nên có chế độ lấy thông tin cổng Com giao tiếp qua cổng người dùng lựa chọn qua chế độ “Select port” Xây dựng giao diện C# Windows Form Visual Studio 157 159 Chọn ứng dụng Windows Application 160 158 Xây dựng giao diện điều khiển có dạng sau: Trong có sử dụng chức Serial Port Toolbox để tạo thuộc tính giao tiếp cổng COM chương trình Chọn chế độ mặc định cho cổng COM như: tốc độ baud 9600 bps, 8-bit data, không bit parity bit stop phần properties, sau thiết kế giao diện sau: 159 161 Hoặc cấu hình trực tiếp sử dụng lệnh sau; serialPort1.PortName="COM1"; serialPort1.BaudRate=9600; serialPort1.DataBits=8; serialPort1.Parity=Parity.None; serialPort1.StopBits= StopBits.One; Tạo giao diện cho phần About Help: 162 160 Viết chương trình giao tiếp - Đưa namespace vào chương trình using System.IO.Ports; - Khởi tạo cổng com có hệ thống hệ thống sử dụng cổng com ảo hay com thật thiết bị nên phải quét tất cổng com có hệ thống Một số hàm cần ý SerialPort.IsOpen(): Trả lại trang thái cổng đóng hay mở SerialPort.Open(): Mở cổng với thơng số cài đặt SerialPort.Close(): Đóng cổng public Form1() { InitializeComponent(); string[] ports = SerialPort.GetPortNames(); // quét tất port kết nối vào PC foreach (string port in ports) // đưa tất port vào mục chọn combobox { cmbBoxPort.Items.Add(port); } } Do thông số cổng COM thiết lập mặc định nên cần chọn cổng (ở địa COM1: 3F8) để kết nối private void cmbBoxPort_SelectedIndexChanged(object sender, EventArgs e) { if (port.IsOpen) port.Close(); port.PortName = cmbBoxPort.SelectedItem.ToString(); // lưu nhận tên port chọn 161 163 stsStatusPort.Text = "You choose :" + port.PortName + ": 9600,8N1"; MessageBox.Show ("You choose : " + port.PortName + " ? "," Note :"); try { port.Open(); // thực mở port chọn } catch // không thực mở port đưa thơng báo lỗi { MessageBox.Show("Serial port " + port.PortName + " cannot be opened!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); cmbBoxPort.SelectedText = ""; stsStatusPort.Text = "Select serial port!"; } } Sau chọn cổng com kết nối Thực giao tiếp lấy thông tin từ thiết bị truyền lên đưa thông tin xuống thiết bị (Hướng dẫn nhằm lấy thông tin byte từ vi điều khiển đưa lên truyền byte xuống vi điều khiển) Để thực việc đọc thông tin từ vi điều khiển đưa lên có cách sau: 164 Thường xuyên kiểm tra cổng xem liệu có truyền đến khơng (để kiểm tra dùng Timer định thời gian) Phải bắt kiện liệu đến, liệu đến ta gọi hàm xử lý 162 Trong ứng dụng dùng phương pháp thứ hai lấy kiện liệu truyền đến “SerialDataReceivedEvent.” Khi có kiện ta đọc xử lý liệu từ đệm cổng this.port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(th is.port_DataReceived_1); Trong đó, port_DataReceived_1 hàm gọi đến có kiện liệu nhận Một số hàm để đọc liệu từ đệm: SerialPort.ReadExisting (): Đọc string từ đệm cổng SerialPort.ReadChar(): Đọc giá trị kiểu char từ đệm cổng SerialPort.ReadByte(): Đọc giá trị kiểu Byte từ đệm cổng // kiện nhận liệu buffer lấy thông tin liệu public void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e) { InputData = port.ReadExisting(); // thực đọc string từ đệm cổng if (InputData != String.Empty) { SetText(InputData); // gọi hàm xuất liệu } } public void SetText(string text) { if (this.temp.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { text }); } else { 163 165 this.temp.Text = ConvertToHex(text); // mã xuất mã ASCII } } public string ConvertToHex(string asciiString) // thực chuyển ASCII sang Hex để hiển thị { string hex = ""; foreach (char c in asciiString) { int tmp = c; hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()) ); } return hex; } Kết sau đưa chuỗi hex hiển thị thông tin nhiệt độ đo Sử dụng hàm SerialPort.WriteLine, kiện truyền kích hoạt có nút bấm người dùng private void btnon_Click(object sender, EventArgs e) { port.WriteLine("a"); stsdevice.Show(); stsdevice.Text = "Device is opened "; //các hàm để xử lý kiện nút bấm private void exit_Click(object sender, EventArgs e) { MessageBox.Show("Do you want to 166 164 Close the MiniApp ? "," Exit "); port.Close(); Close(); } About a = new About(); Help b = new Help(); private void about_Click(object sender, EventArgs e) { a.ShowDialog(); } private void Info_Click(object sender, EventArgs e) { b.ShowDialog(); } Xử lý việc truyền liệu có kiện bấm: private void btnon_Click(object sender, EventArgs e) { port.WriteLine("a"); stsdevice.Show(); stsdevice.Text = "Device is opened "; } private void btnoff_Click(object sender, EventArgs e) { port.WriteLine("b"); stsdevice.Show(); stsdevice.Text = "Device is interrupted "; 167 165 Thiết lập chế độ đặt nhiệt độ tự động (lưu ý cần khai báo toàn cục: public int set) public void btnset_Click(object sender, EventArgs e) { timerset.Enabled = true; timerset.Start(); } private void timerset_Tick(object sender, EventArgs e) { set = int.Parse(settemp.Text); if (set > 64) { timerset.Enabled = false; MessageBox.Show(" Temperature < 64 ", " Report !!! "); return ; } setsts.Enabled = true; setsts.Text = settemp.Text; int b = int.Parse(temp.Text); if (set == b) { timerset.Enabled = false; Temperature is MessageBox.Show(" balance ", " Report !!! "); } if (settemp.Text.Trim().Length == 0) return; } private void btnreset_Click(object sender, EventArgs e) { set = 0; setsts.Clear(); } 168 166 TÀI LIỆU THAM KHẢO Tiếng Việt Ngô Diên Tập, “Vi điều khiển với Lập trình C”, NXB Khoa học Kỹ thuật, 2006 Tống Văn On, “Họ vi điều khiển 8051”, NXB Lao động - Xã hội, 2007 Hồ Trung Mỹ, “Vi xử lý”, NXB ĐHQG-HCM, 2013 Tiếng Anh Thomas W Schultz, “C and the 8051 Hardware, Modular Programming & Multitasking”, Prentice Hall, 1997 Mazidi and McKinlay, “The 8051 Microcontroller and Embedded Systems”, Newnes, 2003 Dogan Ibrahim “Microcontroller Projects in C for the 805”, Newnes, 2000 David Calcutt, Frederick Cowan, Hassan Parchizadeh, “8051 Microcontroller - An Applications Based Introduction”, Newnes, 2004 Salvador Pinillos Gimenez “8051 Microcontrollers_ Fundamental Concepts, Hardware, Software and Applications in Electronics”, Springer, 2018 169 ... máy tính có chức xác định vi điều khiển thực cần thiết sinh viên ngành Kỹ thuật Máy tính nói riêng sinh viên ngành Kỹ thuật Điện tử nói chung Tài liệu nhằm hướng dẫn người đọc khảo sát dạng máy. .. CỨNG 8051 VÀ NGƠN NGỮ HỢP NGỮ Mục đích chung phần nhằm giúp người học ôn tập số vấn đề kiến trúc máy tính từ việc sử dụng thiết kế máy tính chip vi điều khiển họ 8051 Bên cạnh đó, kiến trúc tập... câu hỏi ơn tập Ngồi ra, chuẩn truyền thơng máy tính đa đụng máy tính chip UART trình bày, từ người đọc hiểu phương pháp giao tiếp điều khiển từ máy tính Phương pháp tiếp cận tài liệu hướng dẫn