Giáo trình Cơ sở Lập trình Vi điều khiển cho CĐ Điện tử & Công nghiệp

Giáo trình cơ sở lập trình vi điều khiển cho bậc cao đẳng ngành điện tử truyền thông, giúp sinh viên nắm vững kiến thức và kỹ năng cần thiết.

Trường đại học

Trường Cao Đẳng Nghề Điện Tử Truyền Thông

Người đăng

Ẩn danh

Thể loại

Giáo Trình
94
2
0

Phí lưu trữ

35 Point

Mục lục chi tiết

DANH MỤC CÁC TỪ VIẾT TẮT

DANH MỤC BIỂU BẢNG SỐ LIỆU

1. CHƯƠNG 1: TỔNG QUAN

1.1. Các khái niệm cơ bản

1.2. Cấu trúc chung của một chương trình

2. CHƯƠNG 2: NGÔN NGỮ LẬP TRÌNH C

2.1. Khái niệm cơ bản

2.2. Các thành phần cơ bản của ngôn ngữ C

2.3. Kiểu dữ liệu và phép toán trong ngôn ngữ lập trình C

2.3.1. Các kiểu dữ liệu

2.3.2. Các phép toán số học

3. CHƯƠNG 3: NHẬP — XUẤT DỮ LIỆU TRONG C

3.1. Các thư viện chuẩn

3.2. Các hàm toán học

3.3. Các hàm nhập xuất trong C

3.3.1. Đầu ra chuẩn trong C++ (cout)

3.3.2. Đầu vào chuẩn trong C++ (cin)

4. CHƯƠNG 4: CÁC CẤU TRÚC ĐIỀU KHIỂN

4.1. Cấu trúc tuần tự

4.2. Cấu trúc phân nhánh (cấu trúc lựa chọn)

4.2.1. Cấu trúc else if

4.2.2. Cấu trúc if lồng

4.2.3. Lệnh switch

4.3. Cấu trúc lặp

4.4. Câu lệnh đặc biệt (break, continue, goto)

4.4.1. Câu lệnh return

4.4.2. Câu lệnh goto

4.5. Bài tập áp dụng

5. CHƯƠNG 5: CÁC VẤN ĐỀ CƠ BẢN VỀ HÀM

5.1. Khái niệm

5.2. Định nghĩa hàm

5.3. Sử dụng hàm

5.4. Biến toàn cục và biến cục bộ

5.5. Cách thức truyền tham số

5.5.1. Truyền bằng trị

5.5.2. Truyền bằng biến

5.6. Dùng dẫn hướng #define

5.7. Câu lệnh return và exit

6. CHƯƠNG 6: CÁCH LẬP TRÌNH VỚI MẢNG

6.1. Mảng một chiều

6.2. Mảng hai chiều

7. CHƯƠNG 7: CÁCH LẬP TRÌNH VỚI CHUỖI

7.1. Khái niệm

7.2. Các hàm xử lý chuỗi

7.3. Bài tập

TÀI LIỆU THAM KHẢO

PHỤ LỤC BẢNG MÃ ASCII

Tóm tắt

I. Tổng quan giáo trình cơ sở lập trình vi điều khiển CĐ

Giáo trình cơ sở lập trình vi điều khiển là nền tảng cốt lõi dành cho sinh viên cao đẳng các ngành Điện tử truyền thôngĐiện tử công nghiệp. Môn học này không chỉ trang bị kiến thức về ngôn ngữ lập trình mà còn xây dựng tư duy logic để giải quyết các bài toán kỹ thuật thực tế. Trong bối cảnh công nghệ bán dẫn phát triển vượt bậc, vi điều khiển đã trở thành trái tim của hầu hết các thiết bị điện tử, từ dân dụng đến công nghiệp. Do đó, việc nắm vững cách lập trình để điều khiển chúng là một kỹ năng không thể thiếu. Giáo trình này tập trung vào ngôn ngữ lập trình C, một ngôn ngữ mạnh mẽ, linh hoạt và được sử dụng phổ biến nhất trong lĩnh vực lập trình nhúng. Nội dung được biên soạn bài bản, đi từ các khái niệm cơ bản như thuật giải, cấu trúc chương trình, đến các thành phần phức tạp hơn như hàm, mảngchuỗi. Mục tiêu của học phần là giúp sinh viên không chỉ trình bày được các khái niệm lý thuyết mà còn có khả năng vận dụng để viết các chương trình đơn giản, điều khiển việc nhập-xuất dữ liệu, và sử dụng thành thạo các cấu trúc điều khiển. Như tài liệu gốc của Văn Quốc Kiệt và Trần Quốc Trung đề cập, giáo trình được xây dựng để "trang bị kiến thức cơ sở ngành, là nền tảng cho sinh viên phát triển nghề nghiệp vững chắc". Việc tiếp cận một cách có hệ thống thông qua giáo trình giúp sinh viên định hình rõ ràng quy trình xử lý của máy tính theo mô hình I-P-O (Input-Process-Output), từ đó xây dựng các giải pháp kỹ thuật hiệu quả. Giáo trình nhấn mạnh vào việc thực hành, giúp người học chuyển đổi từ lý thuyết sang kỹ năng lập trình thực tiễn, một yêu cầu quan trọng của thị trường lao động hiện nay.

1.1. Tầm quan trọng của lập trình vi điều khiển hiện nay

Vi điều khiển là thành phần trung tâm trong các hệ thống nhúng, điều khiển hoạt động của các thiết bị điện tử. Từ những thiết bị gia dụng thông minh đến các hệ thống tự động hóa công nghiệp phức tạp, tất cả đều cần chương trình để vận hành. Vì vậy, kỹ năng lập trình vi điều khiển là một trong những yêu cầu cơ bản và quan trọng nhất đối với kỹ sư ngành Điện tử truyền thôngĐiện tử công nghiệp. Việc thành thạo kỹ năng này mở ra nhiều cơ hội nghề nghiệp trong các lĩnh vực như thiết kế mạch, tự động hóa, IoT, và sản xuất thiết bị điện tử. Nắm vững cơ sở lập trình giúp sinh viên có khả năng đọc hiểu, phân tích và phát triển các chương trình điều khiển phức tạp sau này.

1.2. Mục tiêu chính của giáo trình cơ sở lập trình CĐ

Mục tiêu của học phần, theo tài liệu gốc, được chia rõ thành kiến thức và kỹ năng. Về kiến thức, sinh viên cần trình bày được các khái niệm về ngôn ngữ lập trình C, cấu trúc điều khiển, hàm, mảng, và chuỗi. Về kỹ năng, sinh viên phải vận dụng được các kiến thức này để viết, dịch và chạy thử các chương trình hoàn chỉnh. Cụ thể, người học cần "lập trình được việc nhập — xuất dữ liệu", "vận dụng được các cấu trúc điều khiển để viết chương trình", và xử lý được các bài toán cơ bản với mảng và chuỗi. Giáo trình này đóng vai trò là môn học nền tảng, cung cấp "kiến thức cơ sở ngành" để sinh viên tiếp tục học các môn chuyên ngành sâu hơn.

1.3. Tại sao ngôn ngữ lập trình C là lựa chọn hàng đầu

Ngôn ngữ lập trình C được chọn làm trọng tâm vì tính phổ biến, hiệu suất cao và khả năng tương tác trực tiếp với phần cứng. C là một ngôn ngữ lập trình hệ thống "rất mạnh và rất mềm dẻo", cho phép tối ưu hóa tài nguyên hệ thống như bộ nhớ và tốc độ xử lý, điều cực kỳ quan trọng trong các hệ thống nhúng có tài nguyên hạn chế. Hơn nữa, C cung cấp một thư viện chuẩn phong phú với nhiều hàm được tạo sẵn, giúp người lập trình giải quyết vấn đề nhanh chóng. Việc học C cũng tạo nền tảng vững chắc để tiếp cận các ngôn ngữ lập trình khác như C++ hay Python trong tương lai.

II. Những thách thức khi học lập trình vi điều khiển cơ bản

Việc tiếp cận cơ sở lập trình vi điều khiển đặt ra không ít thách thức cho sinh viên, đặc biệt là những người mới bắt đầu. Thách thức lớn nhất đến từ việc chuyển đổi tư duy từ mô tả thông thường sang tư duy logic, cấu trúc của máy tính. Sinh viên phải học cách chia nhỏ một vấn đề lớn thành các bước thực thi tuần tự, rõ ràng, một quá trình được gọi là xây dựng thuật giải. Theo tài liệu, "Thuật giải = Logic + Điều khiển", trong đó phần logic đòi hỏi kiến thức chuyên môn và phần điều khiển là cách thức tiến hành. Nhiều sinh viên gặp khó khăn ngay từ bước đầu tiên này. Một rào cản khác là sự phức tạp của cú pháp ngôn ngữ lập trình C. Mặc dù mạnh mẽ, C đòi hỏi sự chính xác tuyệt đối trong từng câu lệnh, từ dấu chấm phẩy, cặp ngoặc nhọn, đến cách khai báo biến. Những lỗi cú pháp nhỏ có thể khiến chương trình không thể biên dịch, gây nản lòng cho người mới học. Hơn nữa, các khái niệm như kiểu dữ liệu, biến toàn cục, biến cục bộ, và cách thức truyền tham số cho hàm cũng là những kiến thức trừu tượng, cần thời gian để hiểu và vận dụng đúng. Thách thức cuối cùng và quan trọng nhất là kết nối giữa lý thuyết lập trình và hoạt động thực tế của phần cứng. Viết một đoạn mã xuất ra màn hình dòng chữ "Hello World" khác hoàn toàn với việc viết mã để làm một đèn LED nhấp nháy hay đọc giá trị từ một cảm biến. Việc thiếu các bộ công cụ thực hành (kit phát triển) hoặc không hiểu rõ về kiến trúc vi điều khiển có thể tạo ra một khoảng cách lớn, khiến kiến thức của sinh viên chỉ dừng lại ở mức lý thuyết suông.

2.1. Rào cản về tư duy logic và xây dựng thuật giải

Xây dựng thuật giải là bước đầu tiên và quan trọng nhất trong quy trình lập trình. Nó đòi hỏi khả năng phân tích vấn đề, xác định Input (đầu vào), Process (xử lý), và Output (đầu ra). Nhiều sinh viên quen với suy nghĩ trực quan thường gặp khó khăn trong việc hệ thống hóa các bước giải quyết vấn đề theo một trình tự logic chặt chẽ. Việc hình dung luồng hoạt động của chương trình thông qua lưu đồ (flowchart) cũng là một kỹ năng cần rèn luyện. Thiếu tư duy thuật toán khiến việc viết mã trở nên mò mẫm, thiếu cấu trúc và khó sửa lỗi.

2.2. Khó khăn với cú pháp và quy tắc của ngôn ngữ C

Ngôn ngữ C có những quy tắc nghiêm ngặt về cú pháp. Việc đặt tên biến, khai báo kiểu dữ liệu, hay sử dụng các toán tử đều phải tuân thủ chuẩn. Ví dụ, tài liệu chỉ rõ "tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tự chữ, số và dấu gạch dưới" và "ký tự đầu của tên phải là chữ hoặc dấu gạch dưới". Những quy tắc này, cùng với việc phân biệt chữ hoa và chữ thường, dễ gây nhầm lẫn. Các khái niệm như biến toàn cục (global), biến cục bộ (local) và biến tĩnh (static) cũng là những điểm dễ gây ra lỗi logic trong chương trình nếu không được hiểu cặn kẽ.

2.3. Khoảng cách giữa code trên máy tính và mạch điện tử

Mục tiêu cuối cùng của lập trình vi điều khiển là điều khiển phần cứng. Tuy nhiên, giáo trình cơ sở chủ yếu tập trung vào các khái niệm lập trình chung trên môi trường giả lập như Microsoft Visual C++. Điều này tạo ra một khoảng cách kiến thức. Sinh viên có thể viết thành công một chương trình tính toán nhưng lại lúng túng khi phải áp dụng các cấu trúc điều khiển như if-else hay vòng lặp for, while để điều khiển một thiết bị ngoại vi. Việc liên kết các hàm trong thư viện chuẩn như stdio.h với các thanh ghi, cổng I/O của vi điều khiển đòi hỏi các môn học chuyên sâu hơn, và đây chính là thử thách cần vượt qua sau khi hoàn thành học phần cơ sở này.

III. Phương pháp tiếp cận lập trình vi điều khiển hiệu quả

Để vượt qua các thách thức, giáo trình cơ sở lập trình vi điều khiển đề xuất một phương pháp tiếp cận từng bước, xây dựng nền tảng vững chắc trước khi đi vào các vấn đề phức tạp. Cốt lõi của phương pháp này là tuân thủ quy trình 5 bước lập trình: Phân tích vấn đề, Lập giải pháp, Cài đặt, Chạy thử, và Kiểm chứng. Trước khi viết bất kỳ dòng mã nào, sinh viên được hướng dẫn cách phân tích bài toán thông qua mô hình I-P-O (Input-Process-Output). Đây là kỹ thuật cơ bản giúp xác định rõ ràng dữ liệu đầu vào, quá trình xử lý cần thực hiện, và kết quả đầu ra mong muốn. Sau khi xác định được I-P-O, bước tiếp theo là xây dựng thuật giải và biểu diễn nó bằng lưu đồ (flowchart). Tài liệu cung cấp các ký hiệu chuẩn cho lưu đồ, giúp sinh viên trực quan hóa luồng xử lý của chương trình. Việc này giúp giảm thiểu lỗi logic và làm cho mã nguồn trở nên dễ hiểu hơn. Khi đã có thuật giải, sinh viên bắt đầu làm quen với các thành phần cơ bản của ngôn ngữ lập trình C. Giáo trình giới thiệu chi tiết về các từ khóa, quy tắc đặt tên biến, các kiểu dữ liệu cơ bản (int, float, char), và các phép toán số học, logic. Việc nắm vững các khái niệm này là điều kiện tiên quyết để viết được những chương trình đơn giản. Các ví dụ minh họa và bài tập thực hành giúp củng cố kiến thức, chẳng hạn như "viết câu lệnh khai báo các biến sử dụng để giải phương trình bậc nhất ax+b=0". Cách tiếp cận này đảm bảo sinh viên hiểu được "cái gì" và "tại sao" trước khi học "làm thế nào".

3.1. Xây dựng tư duy với thuật giải và lưu đồ Flowchart

Giáo trình nhấn mạnh tầm quan trọng của việc xây dựng thuật giải trước khi lập trình. Một chương trình được định nghĩa là "Thuật toán + Cấu trúc dữ liệu". Sinh viên được học cách sử dụng lưu đồ để mô tả các bước xử lý một cách trực quan, từ bắt đầu, nhập liệu, xử lý, quyết định (rẽ nhánh), cho đến kết thúc. Ví dụ, tài liệu minh họa cách vẽ lưu đồ cho bài toán tính lương công nhân, giúp người học hình dung rõ ràng các bước cần thực hiện. Kỹ năng này giúp hệ thống hóa suy nghĩ và là nền tảng để giải quyết các bài toán phức tạp hơn.

3.2. Nắm vững thành phần cơ bản của ngôn ngữ lập trình C

Chương 2 của giáo trình tập trung vào các thành phần cơ bản của ngôn ngữ C. Sinh viên được giới thiệu về bộ ký tự, từ khóa (if, else, int, float), và các quy tắc đặt tên. Một phần quan trọng là hiểu về các kiểu dữ liệu cơ bản như char, int, float, double và miền giá trị của chúng. Việc khai báo biến đúng kiểu dữ liệu là cực kỳ quan trọng để chương trình hoạt động chính xác và tối ưu bộ nhớ. Các ví dụ thực tế giúp sinh viên phân biệt tên biến đúng và sai, cũng như cách khai báo và gán giá trị ban đầu cho biến.

3.3. Thực hành nhập xuất dữ liệu với thư viện stdio.h

Giao tiếp với người dùng là một phần cơ bản của mọi chương trình. Giáo trình dành riêng Chương 3 để hướng dẫn về nhập-xuất dữ liệu trong C. Sinh viên học cách sử dụng thư viện chuẩn stdio.h với hai hàm phổ biến nhất là printf() để xuất dữ liệu ra màn hình và scanf() để nhập dữ liệu từ bàn phím. Nội dung đi sâu vào cách sử dụng "chuỗi định dạng" và các mã định dạng như %d (số nguyên), %f (số thực), %c (ký tự) và %s (chuỗi). Việc hiểu rõ cách hoạt động của các hàm này giúp sinh viên xây dựng các chương trình tương tác đơn giản, làm tiền đề cho các ứng dụng phức tạp hơn.

IV. Bí quyết làm chủ các cấu trúc điều khiển trong lập trình

Các cấu trúc điều khiển là xương sống của mọi chương trình, quyết định luồng thực thi của các câu lệnh. Giáo trình cơ sở lập trình vi điều khiển dành một chương lớn (Chương 4) để trình bày chi tiết về ba loại cấu trúc cơ bản: tuần tự, lựa chọn (phân nhánh), và lặp. Cấu trúc tuần tự là dạng đơn giản nhất, nơi các lệnh được thực hiện lần lượt từ trên xuống. Tuy nhiên, để giải quyết các bài toán thực tế, chương trình cần có khả năng đưa ra quyết định. Đây là lúc cấu trúc lựa chọn phát huy tác dụng. Giáo trình giới thiệu chi tiết về lệnh if-else, bao gồm dạng thiếu (if), dạng đủ (if-else), và dạng đa lựa chọn (else if). Các ví dụ như tìm số lớn nhất trong 3 số hay giải phương trình bậc hai giúp sinh viên hiểu rõ cách áp dụng. Bên cạnh đó, lệnh switch được giới thiệu như một giải pháp thay thế linh hoạt và rõ ràng hơn cho cấu trúc else if trong nhiều trường hợp. Lệnh switch đặc biệt hữu ích khi cần kiểm tra một biến với nhiều giá trị hằng số, ví dụ như xây dựng menu lựa chọn. Cấu trúc lặp, bao gồm các vòng lặp for, while, và do-while, cho phép thực hiện lặp lại một khối lệnh nhiều lần. Đây là công cụ mạnh mẽ để xử lý các tác vụ như tính tổng một dãy số, xử lý dữ liệu trong mảng, hay chờ đợi một sự kiện từ người dùng. Giáo trình giải thích rõ sự khác biệt giữa các vòng lặp, giúp sinh viên lựa chọn cấu trúc phù hợp cho từng bài toán cụ thể. Cuối cùng, các câu lệnh nhảy như break, continue, và goto được trình bày như những công cụ để kiểm soát luồng chương trình một cách linh hoạt hơn bên trong các cấu trúc lặp và lựa chọn.

4.1. Cấu trúc lựa chọn Câu lệnh if else và switch case

Cấu trúc lựa chọn cho phép chương trình rẽ nhánh dựa trên một điều kiện logic. Lệnh if kiểm tra một biểu thức, nếu đúng thì thực hiện một khối lệnh. Lệnh if-else cung cấp thêm một phương án thực thi khi điều kiện sai. Giáo trình cũng trình bày về cấu trúc if lồng nhau để xử lý các điều kiện phức tạp. Lệnh switch cung cấp một cách tiếp cận khác, so sánh giá trị của một biến với các hằng case và thực thi khối lệnh tương ứng. Lệnh break thường được dùng để thoát khỏi switch sau khi một case đã được thực hiện, tránh việc thực thi tiếp các case phía sau.

4.2. Cấu trúc lặp Vận dụng vòng lặp for và while

Cấu trúc lặp là công cụ không thể thiếu để tự động hóa các tác vụ lặp đi lặp lại. Vòng lặp for thường được sử dụng khi biết trước số lần lặp. Nó bao gồm ba phần: khởi tạo, điều kiện lặp, và cập nhật biến đếm. Vòng lặp while kiểm tra điều kiện trước khi thực hiện khối lệnh, phù hợp khi số lần lặp không xác định trước. Vòng lặp do-while tương tự while nhưng đảm bảo khối lệnh được thực hiện ít nhất một lần. Việc hiểu rõ đặc điểm của từng loại vòng lặp giúp tối ưu hóa thuật giải và làm cho mã nguồn hiệu quả hơn.

4.3. Các câu lệnh nhảy break continue và lệnh goto

Các câu lệnh nhảy cho phép thay đổi luồng thực thi mặc định của chương trình. Lệnh break được dùng để thoát ngay lập tức khỏi vòng lặp (for, while) hoặc cấu trúc switch. Lệnh continue bỏ qua các câu lệnh còn lại trong lần lặp hiện tại và chuyển sang lần lặp tiếp theo. Lệnh goto cho phép nhảy đến một nhãn bất kỳ trong cùng một hàm. Mặc dù linh hoạt, giáo trình cũng lưu ý rằng việc lạm dụng goto có thể làm cho chương trình khó đọc và khó bảo trì, do đó cần sử dụng một cách cẩn trọng.

V. Ứng dụng hàm mảng và chuỗi trong lập trình thực tiễn

Sau khi nắm vững các cấu trúc điều khiển, giáo trình cơ sở lập trình vi điều khiển tiếp tục giới thiệu các khái niệm nâng cao hơn nhưng vô cùng cần thiết: hàm, mảng, và chuỗi. Đây là những công cụ giúp tổ chức và quản lý dữ liệu một cách hiệu quả, tạo ra các chương trình có cấu trúc, dễ bảo trì và tái sử dụng. Hàm (function) được định nghĩa là một đoạn mã độc lập, thực hiện một công việc cụ thể. Thay vì viết lặp đi lặp lại một đoạn mã, người lập trình có thể đóng gói nó vào một hàm và gọi lại khi cần. Điều này giúp chương trình trở nên gọn gàng, rõ ràng và dễ gỡ lỗi. Giáo trình trình bày cách định nghĩa hàm, truyền tham số, và sử dụng lệnh return để trả về giá trị. Các khái niệm về biến cục bộ, biến toàn cục cũng được giải thích để sinh viên hiểu rõ phạm vi hoạt động của biến. Mảng (array) là một cấu trúc dữ liệu cho phép lưu trữ một tập hợp các phần tử có cùng kiểu dữ liệu. Đây là công cụ không thể thiếu khi cần xử lý danh sách dữ liệu, ví dụ như điểm số của sinh viên hay giá trị đọc từ cảm biến. Giáo trình hướng dẫn cách khai báo, truy xuất và thao tác trên mảng một chiều và mảng hai chiều. Chuỗi (string), về bản chất là một mảng các ký tự, được sử dụng để xử lý dữ liệu văn bản. Sinh viên được học cách khai báo chuỗi, truy xuất từng ký tự và sử dụng các hàm thư viện chuẩn để thực hiện các thao tác phổ biến như sao chép, nối chuỗi hay so sánh chuỗi. Việc kết hợp hàm, mảng, và chuỗi cho phép xây dựng các chương trình phức tạp và có tính ứng dụng cao.

5.1. Kỹ thuật tổ chức mã nguồn bằng hàm Function

Hàm là đơn vị cơ bản để xây dựng một chương trình theo hướng module hóa. Tài liệu gốc nêu rõ: "Hàm là đoạn mã lệnh độc lập được đặt tên và thực hiện một công việc xác định khi được gọi đến". Việc sử dụng hàm giúp chia nhỏ một bài toán lớn thành các bài toán con dễ quản lý hơn. Sinh viên học cách định nghĩa một hàm, bao gồm kiểu trả về, tên hàm và danh sách tham số. Các phương thức truyền tham số như truyền bằng giá trị và truyền bằng địa chỉ (tham biến) cũng được giới thiệu, giúp hiểu rõ cách hàm tương tác với dữ liệu bên ngoài.

5.2. Quản lý dữ liệu tập trung với cấu trúc mảng

Mảng là cách hiệu quả để lưu trữ và quản lý một dãy các giá trị cùng kiểu. Thay vì phải khai báo nhiều biến riêng lẻ, ta có thể dùng một mảng duy nhất. Giáo trình hướng dẫn cách khai báo mảng một chiều (int arr[10];) và mảng hai chiều (int matrix[3][4];). Sinh viên được thực hành cách dùng vòng lặp for để duyệt qua các phần tử của mảng, thực hiện các thao tác như nhập, xuất, tìm kiếm giá trị lớn nhất/nhỏ nhất, hay tính tổng các phần tử. Đây là kỹ năng nền tảng cho việc xử lý dữ liệu hàng loạt trong các ứng dụng vi điều khiển.

5.3. Xử lý văn bản với chuỗi ký tự và các hàm liên quan

Chuỗi ký tự là một dạng dữ liệu đặc biệt, được biểu diễn bằng một mảng ký tự kết thúc bởi ký tự null (\0). Việc xử lý chuỗi rất phổ biến trong các ứng dụng giao tiếp, ví dụ như hiển thị thông báo lên màn hình LCD hay nhận lệnh từ người dùng qua giao diện UART. Giáo trình giới thiệu các hàm xử lý chuỗi thông dụng trong thư viện <string.h> như strcpy() (sao chép chuỗi), strcat() (nối chuỗi), strlen() (lấy độ dài chuỗi), và strcmp() (so sánh chuỗi). Vận dụng thành thạo các hàm này giúp việc xử lý văn bản trở nên đơn giản và hiệu quả.

VI. Kết luận và định hướng phát triển từ giáo trình cơ sở

Việc hoàn thành giáo trình cơ sở lập trình vi điều khiển cung cấp cho sinh viên ngành Điện tử truyền thôngĐiện tử công nghiệp một bộ công cụ kiến thức và kỹ năng nền tảng vô giá. Đây không chỉ là việc học một ngôn ngữ lập trình C, mà là quá trình rèn luyện tư duy logic, khả năng phân tích và giải quyết vấn đề một cách có hệ thống. Từ việc xây dựng thuật giải, biểu diễn bằng lưu đồ, đến việc hiện thực hóa bằng mã nguồn sử dụng các cấu trúc điều khiển, hàm, mảngchuỗi, sinh viên đã được trang bị đầy đủ hành trang để tiếp cận các công nghệ phức tạp hơn. Kiến thức từ giáo trình này là tiền đề bắt buộc cho các môn học chuyên ngành như Vi xử lý - Vi điều khiển, Hệ thống nhúng, Lập trình Giao diện Người-Máy (HMI), và các dự án Internet of Things (IoT). Sinh viên có thể tự tin áp dụng các vòng lặp for, while để đọc dữ liệu từ cảm biến, sử dụng lệnh if-else để điều khiển động cơ, hay dùng chuỗi để gửi và nhận dữ liệu qua các giao thức truyền thông. Như mục tiêu của giáo trình đã nêu, đây là "nền tảng cho sinh viên phát triển nghề nghiệp vững chắc". Với nền tảng này, sinh viên có thể tiếp tục tự học, nghiên cứu các dòng vi điều khiển phổ biến như PIC, AVR, ARM và tham gia vào các dự án thực tế, từ đó nâng cao năng lực cạnh tranh và sẵn sàng đáp ứng yêu cầu của thị trường lao động trong cuộc cách mạng công nghiệp 4.0.

6.1. Tổng kết các kỹ năng cốt lõi sau khi hoàn thành môn học

Sau khi học xong giáo trình, sinh viên sẽ nắm vững các kỹ năng chính: (1) Phân tích bài toán kỹ thuật và xây dựng thuật giải theo mô hình I-P-O. (2) Sử dụng thành thạo ngôn ngữ lập trình C để viết, biên dịch và gỡ lỗi chương trình. (3) Áp dụng linh hoạt các cấu trúc điều khiển (lựa chọn, lặp) để kiểm soát luồng chương trình. (4) Tổ chức mã nguồn một cách khoa học bằng cách sử dụng hàm. (5) Quản lý và xử lý các tập dữ liệu hiệu quả với mảngchuỗi. Đây là những kỹ năng không thể thiếu để trở thành một kỹ sư điện tử chuyên nghiệp.

6.2. Hướng đi tiếp theo cho sinh viên ngành điện tử

Từ nền tảng cơ sở lập trình, sinh viên nên bắt đầu áp dụng kiến thức vào các board mạch phát triển thực tế như Arduino, STM32, hay Raspberry Pi. Đây là cách tốt nhất để kết nối lý thuyết với thực hành. Các hướng phát triển chuyên sâu bao gồm: (1) Lập trình hệ thống nhúng thời gian thực. (2) Phát triển các thiết bị IoT. (3) Tự động hóa và điều khiển trong công nghiệp. (4) Xử lý tín hiệu số (DSP). Việc liên tục cập nhật kiến thức và tham gia các dự án thực tế sẽ giúp sinh viên xây dựng một hồ sơ năng lực ấn tượng, sẵn sàng cho các cơ hội nghề nghiệp trong ngành điện tử công nghiệpđiện tử truyền thông.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI. Nếu bạn thấy nội dung không chính xác hoặc có vấn đề, vui lòng Báo lỗi nội dung.

16/07/2025
Giáo trình cơ sở lập trình vi điều khiển dành cho bậc cao đẳng ngành điện tử truyền thông điện tử công nghiệp

Trích đoạn nội dung tài liệu

GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 2 TUYEN BO BAN QUYEN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử đụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cắm. LỜI GIỚI THIỆU Trong những thập niên cuối thế kỉ XX, từ sự ra đời của công nghệ bán dân, kĩ thuật điện tử đã có sự phát triển vượt bậc. Tiếp theo đó vi điều khiển ra đời và được sử dụng phố biến để điều khiến các thiết bị điện tử.

Để vi điều khiển hoạt động cân có chương trình kèm theo, các chương trình này điều khiển các mạch logic và từ đó vi điều khiển xử lý các đữ liệu cân thiết theo yêu câu. Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ. Theo đó, giáo trình được biên soạn dựa trên chương trình môn học Cơ sở lập trình vỉ điều khiển dành cho hệ Cao đẳng chuyên ngành CNKT Điện tử truyền thông và Điện tử công nghiệp của trường Cao đẳng Công nghệ Thủ Đức. Giáo trình được sắp xếp gôm 7 chương với các nội dung chính như sau: —_ Giới thiệu tổng quan về các ngôn ngữ lập trình — Trình bày về ngôn ngữ lập trình C — Hướng dân người học cách nhập — xuất đữ liệu trong C —_ Giải thích các cấu trúc điều khiển — Néu cdc van dé co ban vé ham — Cách lập trình với mảng — Cách lập trình với chuỗi Giáo trình được biên soạn, tổng hợp từ những tài liệu về ngôn ngữ lập trình C cùng vốn kiến thức và kinh nghiệm thực tế giảng dạy của nhóm tác giả, đây cũng là lần đầu tiên biên soạn của nhóm tác giả về môn học này nên sẽ không tránh khỏi những thiếu sót, rất mong nhận được sự đóng góp ý kiến quí báu của Quy đồng nghiệp và bạn đọc.

Xin trân trọng và cảm ơn! Thủ Đức, ngày. năm 2021 Tham gia biên soạn 1. Van Quốc Kiệt 2. Trân Quốc Trung Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 3 MỤC LỤC A.

DANH MỤC CÁC VIẾT VIET TẮT. DANH MỤC BIEU BẢNG SỐ LIỆỆU. 6 CHUONG 1: TONG QUAN. Các khái HIỆM CƠ ĐỎẢIH.

Cấu trúc chung của một chương fFÌNÌh. Án To TT ch 0 ve 14 CHƯƠNG 2: NGÔN NGỮ LẬP TRÌNH C. Khái niIỆH CƠ ĐỞNH. Các thành phần cơ bản của ngôn ngữ C.

+ ¿ca Set EEESEEEEkEEErkrrkee 21 2. Kiểu dữ liệu và phép toán trong ngôn ngữ lập trình C. Các kiểu dữ liệu.--- «tt HH HH HH 23 2. Các phép toán SỐ HỌC.

-- HH HH TT 000 25 CHUONG 3: NHẬP — XUẤT DỮ LIỆU TRONG C. Cc ther vient CHUGN. CAC HAM tOGN NOC wicieececcccccccscsssscsssscssssssssssssssssssssssssssssssssssssesssssssssssssssssssssssssssssseaes 26 3. Cac ham nhéip xudt trong Corceeccccssssssvssscsssscevsssevsvsssessscscsvsvensavavsssesssassvsveneecavacess 27 `.

Đấu ra chuẩn trong C-+-T (€Oi). - «+ 5s Skk+Esk$EEEkEEEESEEEEEEEEEESEEEEEEEEEESErerkred 33 3. Đấu vào chuẩn trong C-++ (ŒỈH) .-- -sc+c xe cEteterrkekrksrsrsrerereersrsreeered 36 »“/,n,nne. 36 CHƯƠNG 4: CÁC CẤU TRÚC ĐIẾU KHIỂN .--5-57ccScccsreererreererrrred 39 Nô, TT.

Cấu trúc phân nhánh (cấu trúc lựa €QH|).00 40 Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 4 '»SNHM?,,. CG tric €18€ if cecececsccesssssssssssssssssssscscssssesssssscssessscsssasscsseavsesssassessssssesssasstaseaesess 43 4. CU tric if LONG cecccescscsssscscsscsssssscsssssscsssssscsssssscssssssssssssssscssscsssessssesessssesensesssens 45 4. LEnh SWitch icceccccccccscsssssvsececcccecccccccccccssssssescecccscccccesesssssssssecsececescecensensssssssseseseeees 47 4.

Cau tric switch. Cau tric switch. Câu lệnh đặc biét (break, CONINUC, ZOO). ClâU lỆHH: PCÍLIFTH.4, CGU TENN Ot 76 neee.

62 AS, BOL UGD.ccccccscccessccessccsssccssscecsscecsseecsscecssnecsenscseneceesseseaseceasessusecsusecsuaeceaeeeeaeeeseeeseeeesgs 63 CHUONG 5: CAC VAN DE CO BAN VE HAM u. KAA NiEML cece ccccesssccccccccssssccccccccsssscccccccccsssscecccccsssescecccsseseccescescsesscescccscscscesceeescsssees 65 F. Dirth Nghia WAM wirccccccccccccccssccccccsscccsccsssecsessssccssssssesessasseceessssecesseausecsesaeseseesesseeseeaas 66 F. SUP AUN VGN.

Bién todin CUC Va DIEN CUC DG veccececcscsscsssssesesscsesssessssssssscssscsscscscssessssseacacscscaeesees 72 5. Cách thức truyén tham 86 vrccccccscecsscssscsssssssscsssssscsssssscsssssssssssssssssscsssssssssssscsesesens 72 5. Truyén Dang tri ccccscscsssssssssssssssssssscsverssvsvscsssreacavsnsnsessvscsesseseasavansnsusasacseeneneneas 72 5. Truyền bằng Dien vcccecccscssssssessssssssscsssssscssscscsssssscsssasscsssacsesssassesssassessssssessaesen 74 5.

Dùng dẫn hướng #defINE vacceececesececsevssessessssssscscsssssssscsssssssssscsvssessasscssssavsssescsseseas 74 5. Câu lệnh F€fMY VÀ €XỈÍ. Mảng một ChiỄĂM. 55s se S3 SEEEEEE TT EEEEETETETEEEEEEEETETkTEEEEETerkrkreererererered 79 6.

Maing hai ChIQU 0/nnẺẼ080 66. 80 Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 5 Ni. KWAI HI ỆÌTH. - << 6k SE EEEEEEEEEEEEEESEEEEEKEKEEEHH TT TT 111111 111kg 85 7.

Các hàm xt I) CRUGi sececccscsssesesssesesvsvsssssssscscscsvscsescsvevensssavavacacavacscsusecenensesscasacaeas 86 7. TT TT TT TH TH TH TH TH HH HH gi 90 E. TÀI LIỆU THAM K HẢ O. PHỤ LỤC BẢNG MÃ A.- - 2 + Sẻ +k‡EEEk‡EEEEEEEEEEEEEEEEEEEEEEEErkkrkrrererrered 92 A.

DANH MUC CAC VIET VIET TAT BEL: Bell — chuéng. - char: Character - kiéu ki tu. - int: Integer - kiéu s6 nguyén. - J-P-O: Input- Process- Output, Ng6 vao — Xử lý — Ngõ ra.

- VD: vi du. Từ khóa Hàm, mảng, chuỗi, thuật giải, chương trình, lưu đô, ÿÝ, for, while, return, gofo B. DANH MUC BIEU BANG SO LIEU Bảng 1: Dạng lưu đô chương trinnh vecccccccccscscsssscsssvessssscscscsssssscsssssvssscscsseasssscssesessacaes Il ï;121/1-82060//s. DANH MỤC CÁC HÌNH Hình 1: Cửa số chương trình Microsoft Visuall C-++.

16 Hình 3: Chọn loại cửa số soan thảo cho pTOj€Cf.- - - set k+k+EEe+Eeketeesrexerereeree 17 [;0/1/5. 17 Hình 5: Chọn ngôn ngữ thd(O ÍÁC. 0 1t ch 18 Hình 6: Màn hình soạn thảo chương ẨrÌH. in gi ng nhu 18 Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 6 D.

PHẢN NỘI DUNG GIÁO TRÌNH HỌC PHẢN Tên học phan: CO SO LAP TRINH VI DIEU KHIEN Mã học phần: CNC111030 Vị trí, tính chất, ý nghĩa và vai trò của học phần: - VỊ trí: Học ở học kỳ 2 - Tính chất: + Nội dung học phần cung cấp cho sinh viên kiến thức cơ bản về các khái niệm cơ bản về ngôn ngữ lập trình, ngôn ngữ cấp thấp, cấp cao, các loại ngôn ngữ lập trình. Trình bày được các kiểu dữ liệu, các cấu trúc điều khiển, hàm, con trỏ, kiểu cấu trúc + Môn học hướng trọng tâm vào ngôn ngữ lập trình C là ngôn ngữ rất phố biến hiện nay. - Ý nghĩa và vai trò của môn học/mô đun: Trang bị kiến thức cơ sở ngành, là nền tảng cho sinh viên phát triển nghề nghiệp vững chắc. Mục tiêu của học phân: - Về kiến thức: + Trình bày được các khái niệm, các quy tắt lập trình và cầu trúc chung của một chương trình.

+ Trình bày được các khái niệm, các thành phần cơ bản trong ngôn ngữ C. + Trình bày được cách nhập - xuất dữ liệu trong ngôn ngữ C. + Trình bày được cấu trúc điều khiển trong ngôn ngữ C như: cấu trúc tuần tự, cầu trúc phân nhánh, cấu trúc lặp. + Trình bày được các vấn đề cơ bản về hàm trong ngôn ngữ C.

+ Trình bày được các vẫn đề cơ bản về mảng trong ngôn ngữ C như: Khái niệm mảng, cách khái báo mảng 1 chiều và mảng 2 chiêu. + Trình bày được các vấn đề cơ bản về chuỗi trong ngôn ngữ C như: khái niệm về chuỗi, truy xuất chuỗi và các hàm về chuỗi. - Về kỹ năng: + Viết được cấu trúc chung của một chương trình. Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 7 + Vận dụng được các thành phần cơ bản trong C để viết 1 chương trình đơn giản.

Lập trình được việc nhập — xuất đữ liệu trong ngôn ngữ C. + Vận dụng được các cấu trúc điều khiển để viết chương trình. + Vận dụng được các kiến thức về hàm để viết chương trình. + Vận dụng được kiến thức về mảng để viết chương trình.

+ Vận dụng được các kiến thức về chuỗi để viết chương trình. + ê năng lực tự chủ và trách nhiệm: “<< Kỹ năng thu thập, tra cứu, phân tích và xử lý thông tin để tiếp thu kiến thức tích + cực, chủ động. Kỹ năng thảo luận nhóm, thuyết trình và trả lời vẫn đáp linh hoạt, tự chủ, sáng + tạo và đúng yêu câu kiên thức của môn học. + Rèn luyện thái độ làm việc nghiêm túc, chủ động, tích cực.

Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 8 CHUONG 1: TONG QUAN Muc tiéu: % Kiến thức: Trình bày các khái niệm cơ bản vê ngôn ngữ lập trình, ngôn ngữ cấp thấp, cấp cao, các loại ngôn ngữ lập trình, một số quy tắc lập trình. Giải thích về cấu trúc chung của một chương trình và môi trường lập trình. * Kỹ năng: Phân biệt được các loại ngôn ngữ lập trình, viễt ra được cấu trúc chung của một chương trình. s* Thái độ: Có tác phong và thai độ nghiêm túc trong học tập.

Các khái niệm cơ bản + Thuat giai (Algorithm): Thuật toán là một dãy các thao tác xác định trên một đối tượng, sao cho sau khi thực hiện một số hữu hạn các bước thì đạt được mục tiêu. Ban chat của thuật giải: Thuật giải = Logic + Điều khiến Logic là phần khá quan trọng, nó trả lời câu hỏi "Thuật giải làm gì, giải quyết vẫn đề gì?", những yếu tô trong bài toán có quan hệ với nhau như thế nào v. Ở đây bao gồm những kiến thức chuyên môn mà ta phải biết để có thể tiến hành giải bài toán.1: Đề giải một bài toán tính diện tích hình cầu, mà ta không còn nhớ công thức tính hình cầu thì ta không thể viết chương trình cho máy để giải bài toán này được. Điều khiến là thành phân trả lời câu hỏi: giải thuật phải làm như thế nào?.

Chính là cách thức tiến hành áp dụng thành phân logic để giải quyết vẫn dé. + Chuong trinh (Program): Chương trình là một tập hợp các mô tả, các phát biểu, năm trong một hệ thống qui ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển máy tính làm việc. Chương trình = Thuật toán + Cấu trúc dữ liệu Các thuật toán và chương trình đều có cấu trúc dựa trên 3 cấu trúc điều khiển cơ bản: .„_ Tuân fự (Sequential): Các bước thực hiện tuần tự một cách chính xác từ trên xuống, mỗi bước chỉ thực hiện đúng một lần. « Chon loc (Selection): Chon 1 trong 2 hay nhiéu thao tac dé thuc hién.

« Lap lai (Repetition): Mét hay nhiều bước được thực hiện lặp lại một số lần. Để viết một chương trình trên máy tính, chúng ta cần làm theo các bước sau: Giảng viên biên soạn: Văn Quốc Kiệt — Trân Quốc Trung GIÁO TRÌNH CƠ SỞ LẬP TRÌNH VI ĐIỀU KHIỂN 9 Tìm, xây dựng thuật giải (trên giấy) —> viết chương trình trên máy —> dịch chương trình —> chạy và thử chương trình + Ngôn ngữ lập trình (Programming language) Ngôn ngữ lập trình là hệ thống các ký hiệu tuân theo các qui ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng thành các chương trình cho máy tính. Một chương trình được viết bằng một ngôn ngữ lập trình cụ thể (ví dụ Pascal, C.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ