Tổng quan về giáo trình
Giáo trình Cơ sở lập trình vi điều khiển (Mã học phần: CNC111030) là tài liệu học tập chính khóa được biên soạn bởi tập thể giảng viên Văn Quốc Kiệt và Trần Quốc Trung thuộc Trường Cao đẳng Công nghệ Thủ Đức (nghiệm thu và ban hành năm 2021). Trong chương trình đào tạo trình độ Cao đẳng các ngành Công nghệ Kỹ thuật Điện tử - Truyền thông và Điện tử Công nghiệp, môn học này được bố trí giảng dạy tại học kỳ 2. Đây là môn học cơ sở ngành, cung cấp nền tảng tư duy thuật giải và kỹ năng cú pháp phần mềm nhằm chuẩn bị cho sinh viên tiếp cận các môn học chuyên sâu về kiến trúc vi điều khiển, kỹ thuật ghép nối và lập trình hệ thống nhúng trong các giai đoạn tiếp theo.
Mục tiêu học tập của giáo trình được xác định rõ trên ba phương diện chuẩn đầu ra:
- Về kiến thức: Sinh viên trình bày được các quy tắc lập trình cơ bản, cấu trúc chương trình nguồn, hệ thống kiểu dữ liệu, các phép toán số học - logic, cấu trúc điều khiển (tuần tự, phân nhánh, lặp), kỹ thuật tổ chức hàm, cùng cấu trúc dữ liệu mảng (1 chiều, 2 chiều) và chuỗi ký tự trong ngôn ngữ lập trình C/C++.
- Về kỹ năng: Sinh viên có khả năng phân tích bài toán kỹ thuật theo quy trình Nhập - Xử lý - Xuất (Input - Process - Output), thiết lập lưu đồ thuật toán (Flowchart), soạn thảo, biên dịch, gỡ lỗi và thực thi chương trình trên môi trường Microsoft Visual C++.
- Về năng lực tự chủ và trách nhiệm: Hình thành phương pháp thu thập, phân tích tài liệu kỹ thuật độc lập; rèn luyện tác phong làm việc khoa học, chính xác và nghiêm túc trong môi trường thực hành kỹ thuật.
Cấu trúc giáo trình gồm 7 chương trọng tâm, tiếp cận theo trình tự sư phạm từ tư duy thuật giải tổng quát đến cú pháp chi tiết và tổ chức dữ liệu nâng cao. Điểm đặc thù của giáo trình là việc định hướng các bài toán lập trình gắn liền với logic điều khiển thiết bị ngoại vi (đèn LED, động cơ, hệ thống chuyển mạch) thường gặp trong lĩnh vực kỹ thuật điện tử.
Nội dung kiến thức cốt lõi
Các chương và chủ đề chính
Giáo trình phân bổ kiến thức qua 7 chương lý thuyết và bài tập ứng dụng với tính logic phát triển liên tục:
- Chương 1: Tổng quan (Trang 8–15): Thiết lập nền tảng lý thuyết về thuật toán, chương trình và ngôn ngữ lập trình. Định nghĩa bản chất của thuật giải qua công thức $\text{Thuật giải} = \text{Logic} + \text{Điều khiển}$ và $\text{Chương trình} = \text{Thuật toán} + \text{Cấu trúc dữ liệu}$. Chương này chuẩn hóa quy trình phân tích I-P-O và quy ước xây dựng lưu đồ thuật toán theo Bảng 1 (sử dụng các khối chức năng chuẩn: Bắt đầu/Kết thúc, Vào/Ra dữ liệu, Khối xử lý, Khối quyết định điều kiện và Điểm ghép nối).
- Chương 2: Ngôn ngữ lập trình C (Trang 15–26): Trình bày lịch sử phát triển của ngôn ngữ C từ hệ điều hành UNIX (Dennis Ritchie). Hướng dẫn thiết lập môi trường lập trình Microsoft Visual C++ dạng Win32 Console Application. Định nghĩa các thành phần cơ bản: tập từ khóa chuẩn, quy tắc đặt tên định danh (tối đa 32 ký tự, không trùng từ khóa, phân biệt hoa - thường), 4 kiểu dữ liệu cơ sở (
char, int, float, double), phân loại biến (toàn cục, cục bộ, biến tĩnh static), cùng hệ thống toán tử số học, toán tử quan hệ và toán tử logic (&&, ||, !).
- Chương 3: Nhập – Xuất dữ liệu trong C (Trang 26–39): Giới thiệu các thư viện chuẩn gồm
<stdio.h>, <conio.h>, <math.h>, <alloc.h>. Khai thác chi tiết hàm xuất có định dạng printf() với các mã định dạng (%c, %s, %d, %f, %e, %x, %u, %o, tiền tố l), kỹ thuật định dạng độ rộng trường in (%4d, %-4d, %02d), ký tự điều khiển (\n, \t, \r, \a). Trình bày hàm nhập dữ liệu scanf() kèm toán tử địa chỉ &, các hàm thao tác ký tự trực tiếp từ bàn phím getch(), getche(). Đồng thời, chương này mở rộng sang luồng vào/ra chuẩn của C++ thông qua thư viện <iostream> với toán tử cout <<, cin >>, hàm getline() và kiểu string.
- Chương 4: Các cấu trúc điều khiển (Trang 39–65): Phân tích 3 dạng cấu trúc điều khiển cơ sở:
- Cấu trúc tuần tự (Sequence): Khối lệnh thực thi tuyến tính từ trên xuống.
- Cấu trúc lựa chọn (Selection): Câu lệnh
if khuyết, if-else đầy đủ, cấu trúc else if nhiều nhánh, cấu trúc if lồng nhau; câu lệnh rẽ nhánh đa hướng switch-case (dạng khuyết, dạng có default, cấu trúc switch lồng nhau ứng dụng trong xây dựng menu điều khiển phân cấp).
- Cấu trúc lặp và lệnh nhảy: Các vòng lặp (
for, while, do-while) cùng các câu lệnh điều khiển luồng đặc biệt (break, continue, goto, return).
- Chương 5: Các vấn đề cơ bản về hàm (Trang 65–78): Định nghĩa cấu trúc hàm con, hàm trả về giá trị và hàm kiểu
void. Phân biệt tầm vực biến toàn cục (global) và biến cục bộ (local). Phân tích hai cơ chế truyền tham số: truyền theo giá trị (Call by Value) và truyền theo địa chỉ/tham biến (Call by Reference). Sử dụng chỉ thị tiền xử lý #define, các lệnh kết thúc hàm return và thoát chương trình exit.
- Chương 6: Lập trình với Mảng (Trang 79–85): Định nghĩa mảng là tập hợp các phần tử cùng kiểu dữ liệu được lưu trữ liên tiếp trong bộ nhớ. Hướng dẫn khai báo, khởi tạo, truy xuất chỉ số và duyệt mảng một chiều, mảng hai chiều (ma trận).
- Chương 7: Lập trình với Chuỗi (Trang 85–91): Bản chất của chuỗi là mảng ký tự kết thúc bằng ký tự rỗng
\0. Hướng dẫn các thao tác nhập xuất chuỗi ký tự và sử dụng các hàm xử lý chuỗi chuẩn trong thư viện <string.h>.
Kiến thức nền tảng được xây dựng
Giáo trình cung cấp hệ thống lý thuyết cốt lõi phục vụ lập trình nhúng:
- Mô hình xử lý thông tin I-P-O: Xác định rõ ràng dữ liệu đầu vào (Input), giải thuật biến đổi xử lý (Process) và tín hiệu kết quả đầu ra (Output), tạo nền tảng cho việc đọc tín hiệu cảm biến và xuất tín hiệu điều khiển.
- Nguyên lý phân định bộ nhớ và kiểu dữ liệu: Quản lý dung lượng bộ nhớ thông qua kích thước dữ liệu (1 byte cho
char, 2 byte cho int, 4 byte cho float, 8 byte cho double), hệ thống mã ASCII và miền giá trị có dấu/không dấu (signed/unsigned).
- Tổ chức chương trình dạng module: Kỹ thuật chia nhỏ chương trình thành các hàm chuyên biệt độc lập, quản lý vòng đời của biến trong bộ nhớ ngăn xếp (Stack) và vùng nhớ tĩnh.
Kỹ năng phát triển
Thông qua nội dung các chương, sinh viên hình thành các nhóm năng lực cụ thể:
- Kỹ năng kỹ thuật: Cài đặt mã nguồn trên môi trường Microsoft Visual C++; biên dịch chương trình bằng tổ hợp phím
Ctrl + F7, liên kết và chạy chương trình bằng Ctrl + F5; xử lý và sửa đổi các lỗi cú pháp (Syntax errors) cũng như lỗi liên kết (Linker errors).
- Kỹ năng phân tích: Chuyển đổi mô tả bài toán thực tế thành sơ đồ khối thuật toán; tối ưu hóa cấu trúc rẽ nhánh để giảm thiểu độ phức tạp khi thực thi.
- Kỹ năng ứng dụng điều khiển: Viết các module phần mềm xử lý logic đảo trạng thái (Toggle), đếm sự kiện, phân luồng menu chức năng và xuất chuỗi thông báo trạng thái hoạt động của hệ thống.
Phương pháp giảng dạy và học tập
Giáo trình áp dụng phương pháp sư phạm tích hợp lý thuyết gắn liền với minh họa trực quan. Tiến trình truyền đạt một khái niệm mới luôn tuân thủ cấu trúc chuẩn:
- Định nghĩa khái niệm và ý nghĩa kỹ thuật: Nêu rõ mục đích sử dụng trong chương trình.
- Mô tả cú pháp chuẩn: Trình bày dạng tổng quát kèm theo các từ khóa quy ước viết thường.
- Sơ đồ hóa logic: Sử dụng lưu đồ thuật toán để biểu diễn luồng dữ liệu trước khi viết lệnh.
- Ví dụ mã nguồn cụ thể: Đi kèm phần phân tích chi tiết từng dòng mã (Line-by-line analysis) và hiển thị chính xác kết quả xuất ra màn hình điều khiển (Console output).
Hệ thống bài tập và nghiên cứu tình huống trong tài liệu được xây dựng từ đơn giản đến phức tạp:
- Bài toán tính toán số học đại cương: Giải phương trình bậc nhất $ax + b = 0$, phương trình bậc hai $ax^2 + bx + c = 0$, tính diện tích hình chữ nhật, tính tiền lương công nhân dựa trên lương căn bản và ngày công.
- Bài toán điều khiển logic kỹ thuật: Mô phỏng hoạt động điều khiển đèn LED (nhập phím 1: Led 1 sáng; phím 2: Led 2 sáng; phím 3: tắt cả hai Led); mô phỏng chu trình hoạt động của động cơ motor (nhập ký tự 'a' lần 1: motor nghỉ; lần 2: motor hoạt động; lần 3: đảo trạng thái nghỉ); xây dựng hệ thống menu lựa chọn chức năng hai cấp độ thông qua cấu trúc
switch-case lồng nhau.
+-----------------------------------------------------------------------+
| QUY TRÌNH 5 BƯỚC TỰ HỌC VÀ LẬP TRÌNH |
+-----------------------------------------------------------------------+
| Bước 1: Phân tích bài toán, xác định các thành phần I - P - O |
| | |
| v |
| Bước 2: Xây dựng giải pháp thuật toán, vẽ lưu đồ Flowchart ra giấy |
| | |
| v |
| Bước 3: Cài đặt viết mã nguồn C trên IDE (Microsoft Visual C++) |
| | |
| v |
| Bước 4: Biên dịch chương trình (Ctrl+F7), kiểm tra và sửa lỗi cú pháp|
| | |
| v |
| Bước 5: Chạy chương trình (Ctrl+F5), thử nghiệm các bộ số liệu biên |
+-----------------------------------------------------------------------+
Về phương pháp đánh giá, sinh viên được kiểm tra định kỳ thông qua mức độ chuẩn xác của lưu đồ thuật toán, khả năng viết mã nguồn tối ưu, kỹ năng sửa lỗi trực tiếp trên máy tính và kết quả chạy thử nghiệm với các bộ dữ liệu kiểm chứng. Đối với việc tự học, giáo trình yêu cầu người học phải thực hiện đầy đủ quy trình 5 bước: phân tích vấn đề trên giấy trước khi thao tác trực tiếp trên máy tính để tránh lỗi tư duy giải thuật.
Điểm nổi bật và cập nhật
Giáo trình Cơ sở lập trình vi điều khiển được biên soạn năm 2021 dựa trên chương trình đào tạo theo định hướng ứng dụng thực hành của Trường Cao đẳng Công nghệ Thủ Đức. Nội dung tài liệu thể hiện một số đặc điểm kỹ thuật cập nhật:
- Tích hợp công cụ phát triển trực quan: Tài liệu dành riêng các mục hướng dẫn chi tiết từng bước thao tác giao diện trên phần mềm Microsoft Visual C++ (từ khởi tạo
Win32 Console Application, chọn chế độ An Empty project, thiết lập tệp mã nguồn .cpp, đến cách sử dụng các phím tắt biên dịch Ctrl + F7 và chạy chương trình Ctrl + F5).
- Mở rộng so sánh giữa ngôn ngữ C và C++: Bên cạnh việc tập trung vào chuẩn lập trình hướng cấu trúc của ngôn ngữ C thuần túy (dùng thư viện
<stdio.h>, <conio.h>), giáo trình chủ động tích hợp kiến thức mở rộng của C++ thông qua thư viện <iostream> (các lệnh cin, cout, endl) và thư viện chuỗi <string>. Điều này giúp sinh viên hiểu rõ tính tương thích giữa hai chuẩn ngôn ngữ và linh hoạt xử lý luồng dữ liệu vào/ra.
- Gắn kết trực tiếp với các ứng dụng kỹ thuật phần cứng: Khác với các tài liệu lập trình C đại cương cho ngành công nghệ thông tin thuần túy (thường thiên về xử lý thuật toán sắp xếp hoặc cấu trúc dữ liệu trừu tượng), giáo trình này chọn lọc các ví dụ gắn liền với tư duy điều khiển thiết bị: phân tích trạng thái đóng/mở công tắc, điều khiển tín hiệu ngõ ra cho đèn và động cơ, quản lý bàn phím chức năng.
- Hệ thống bảng tra cứu chuẩn hóa: Giáo trình tích hợp trực tiếp bảng mã ASCII, bảng phân loại kích thước và miền giá trị các kiểu dữ liệu, danh mục hàm toán học trong
<math.h> (như sqrt, pow, abs, fabs, ceil, floor, round, fmax, fmin), giúp người học tra cứu thông số kỹ thuật nhanh chóng trong quá trình thực hành.
Đối tượng sử dụng giáo trình
Giáo trình được thiết kế phục vụ các nhóm đối tượng cụ thể trong đào tạo và nghiên cứu kỹ thuật:
| Nhóm đối tượng |
Phạm vi và mục đích sử dụng |
| Sinh viên chính quy |
Sinh viên năm thứ nhất (Học kỳ 2) bậc Cao đẳng các ngành Công nghệ Kỹ thuật Điện tử - Truyền thông, Điện tử Công nghiệp và Kỹ thuật Điều khiển - Tự động hóa. Giáo trình là tài liệu học tập bắt buộc cho học phần CNC111030. |
| Giảng viên chuyên ngành |
Sử dụng làm đề cương chuẩn để biên soạn bài giảng lý thuyết, thiết kế bài tập thực hành phòng máy và xây dựng ngân hàng đề thi đánh giá năng lực lập trình cơ sở ngành. |
| Người tự học & Kỹ thuật viên |
Kỹ thuật viên ngành Điện - Điện tử cần bổ sung kiến thức lập trình vi điều khiển; người tự học muốn nắm vững cú pháp ngôn ngữ C có cấu trúc để chuyển tiếp sang lập trình firmware trên các dòng chip vi điều khiển (8051, PIC, AVR, STM32). |
Yêu cầu điều kiện tiên quyết (Prerequisites): Để tiếp thu hiệu quả nội dung giáo trình, người học cần có kiến thức cơ bản về Tin học đại cương (thao tác tệp tin, hệ điều hành), kiến thức Toán học phổ thông (đại số, phương trình) và hiểu biết cơ bản về mạch điện tử - logic số.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với đối tượng nào?
Giáo trình được biên soạn chuyên biệt cho sinh viên hệ Cao đẳng ngành Công nghệ Kỹ thuật Điện tử Truyền thông và Điện tử Công nghiệp học ở Học kỳ 2, đồng thời phù hợp cho kỹ thuật viên và người tự học muốn tiếp cận lập trình C ứng dụng trong kỹ thuật phần cứng.
2. Cần chuẩn bị kiến thức nền tảng nào trước khi học?
Người học chỉ cần nắm vững kiến thức toán học cơ bản, kỹ năng sử dụng máy tính căn bản và các khái niệm logic số cơ sở. Giáo trình hướng dẫn từ các khái niệm sơ khởi về thuật giải, do đó không yêu cầu phải có kinh nghiệm lập trình từ trước.
3. Điểm khác biệt của giáo trình so với tài liệu lập trình C thông thường?
Tài liệu tập trung vào tư duy lập trình nhúng và điều khiển thiết bị kỹ thuật điện tử. Hệ thống ví dụ và bài tập được định hướng giải quyết các bài toán đóng ngắt logic, điều khiển động cơ, đèn tín hiệu và tạo menu tương tác console, thay vì các bài toán thuần túy về xử lý văn bản hay quản trị cơ sở dữ liệu.
4. Phương pháp tự học giáo trình như thế nào để đạt hiệu quả cao?
Người học nên tuân thủ quy trình 5 bước được nêu trong Chương 1: phân tích rõ mô hình I-P-O và vẽ lưu đồ thuật toán ra giấy trước khi gõ mã nguồn. Cần trực tiếp thực hiện việc biên dịch, dò lỗi trên phần mềm Microsoft Visual C++ và làm toàn bộ các bài tập lập trình ở cuối mỗi chương.
5. Giáo trình có tài liệu bổ trợ và bảng tra cứu nào kèm theo?
Tài liệu cung cấp đầy đủ hệ thống biểu bảng kỹ thuật gồm: Bảng ký hiệu lưu đồ thuật toán (Bảng 1), Bảng các hàm toán học trong thư viện <math.h> (Bảng 2), Bảng mã định dạng xuất nhập dữ liệu, Bảng ký hiệu điều khiển đặc biệt, Bảng kích thước/miền giá trị kiểu dữ liệu và Phụ lục bảng mã ASCII chuẩn.
Kết luận
Giáo trình Cơ sở lập trình vi điều khiển của Trường Cao đẳng Công nghệ Thủ Đức (Văn Quốc Kiệt, Trần Quốc Trung, 2021) là tài liệu học thuật cơ sở, cung cấp hệ thống kiến thức toàn diện về thuật toán và kỹ thuật lập trình C/C++ có cấu trúc.
Lộ trình học tập đề xuất:
- Nắm vững tư duy phân tích I-P-O và biểu diễn lưu đồ thuật toán (Chương 1).
- Làm chủ các thành phần ngôn ngữ, kiểu dữ liệu và cấu trúc điều khiển rẽ nhánh/lặp (Chương 2, 3, 4).
- Hoàn thiện kỹ năng module hóa phần mềm và cấu trúc dữ liệu nâng cao thông qua hàm, mảng và chuỗi (Chương 5, 6, 7).
Nền tảng kỹ thuật thu nhận từ giáo trình này là bước đệm trực tiếp để người học tiến tới việc lập trình trực tiếp trên các họ vi điều khiển chuyên dụng trong các học phần tiếp theo của chương trình đào tạo kỹ thuật điện tử.