BÀI MỞ ĐẦU 1 TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giảng 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[.]
LÝ THUYẾT LIÊN QUAN
Các thành phần cơ bản của ngôn ngữ C
2.3 Cấu Trúc của chương trình C đơn giản
2.4 Các thành phần khác của chương trình C
Giới thiệu về Arduino
Module màn hình Led
5.1 Định nghĩa về Module LED
5.4 Màn hình quảng cáo ngoài trời
5.5 Màn hình cho nhà hàng, tiệc cưới
5.6 Màn hình sân khấu, sự kiện
5.7 Màn hình cho hội trường, phòng họp
5.8 Màn hình cho quán karaoke, quán bar
5.9 Lắp đặt màn hình LED ngoài trời
2 Chương 2: Nội dung công việc thực hành 258 3 254 1
1 Các tiêu chí thực hiện công việc 1 1
2 Thí dụ về lắp đặt màn hình LED 2 2
CHƯƠNG 1: LÝ THUYẾT LIÊN QUAN
Mã chương: MH28-01 Giới thiệu:
Trong kỹ thuật lập trình vi điều khiển, ngôn ngữ lập trình được chia thành hai loại chính: ngôn ngữ bậc thấp và ngôn ngữ bậc cao Ngôn ngữ bậc cao như C, Basic, Pascal giúp việc lập trình trở nên dễ dàng hơn vì chúng gần gũi với ngôn ngữ con người, giảm tải cho lập trình viên trong việc nghiên cứu các tập lệnh và xây dựng cấu trúc giải thuật Trong đó, ngôn ngữ C là ngôn ngữ phổ biến và thông dụng nhất trong kỹ thuật vi điều khiển, góp phần nâng cao hiệu quả lập trình và tối ưu hóa quá trình phát triển hệ thống.
- Ôn tập những kiến thức cơ bản về vi điều khiển mà học sinh đã được học tại trường
- Giới thiệu thêm về các loại vi điều khiển phổ biến tại doanh nghiệp và đồng thời cung cấp cho học sinh về đặc tính kỹ thuật của chúng
- Hệ thống được những kiến về vi điều khiển đã được học để áp dụng vào thực tiễn
- Có khả năng định hướng, chọn lựa phương pháp tiếp cận thích nghi với các nội dung học tập
Trình biên dịch PIC-C là công cụ chính để biên dịch mã nguồn C cho các họ vi điều khiển PIC đa dạng Với phần mềm biên dịch PIC-C, người dùng có thể lập trình và biên dịch mã nguồn C dễ dàng để thao tác với các thiết bị PIC Quá trình cài đặt và sử dụng phần mềm này được hướng dẫn rõ ràng trong tài liệu thực hành vi điều khiển, giúp người dùng nắm vững cách lập trình, biên dịch và nạp mã lên vi điều khiển PIC một cách hiệu quả.
Khi lập trình cho vi điều khiển PIC dùng PIC-C, các thành phần cơ bản giống như các loại vi điều khiển khác nhưng khác biệt chính nằm ở phần cứng của từng loại Các lệnh liên quan đến phần cứng được trình bày theo đặc điểm của phần cứng đó, ví dụ như khi khảo sát port thì có các lệnh PIC-C phù hợp với port, còn khi làm việc với timer/counter thì có các lệnh PIC-C tương ứng với timer/counter.
Khi lập trình vi điều khiển PICPIC18F4550 bằng phần mềm PIC-C, cần khai báo thư viện để định nghĩa các thành phần của vi điều khiển Nếu tên các thành phần không có trong file này, người lập trình có thể tự định nghĩa thêm để phù hợp với dự án Phần mềm PIC-C hỗ trợ nhiều thư viện giúp viết chương trình gọn hơn, tối ưu hóa quá trình phát triển ứng dụng.
2 Các thành phần cơ bản của ngôn ngữ C
Trong lập trình, biến thường được khai báo để lưu trữ và xử lý dữ liệu theo đúng loại dữ liệu phù hợp, như là bit, byte, word hoặc long word Các loại biến này của vi xử lý tương ứng với dữ liệu 1 bit, 8 bit, 16 bit và 32 bit, giúp tối ưu hóa bộ nhớ và hiệu suất xử lý Việc chọn đúng loại biến là yếu tố quan trọng trong phát triển phần mềm, đảm bảo tính chính xác và hiệu quả của chương trình.
Các kiểu dữ liệu cơ bản trong lập trình phụ thuộc vào phần mềm sử dụng Vi điều khiển PIC hỗ trợ nhiều phần mềm biên dịch như PIC-C, MIKRO-C, MPLAB Trong bài viết này, chúng ta sẽ tập trung trình bày về phần mềm PIC-C, một trong những lựa chọn phổ biến để lập trình cho vi điều khiển PIC.
Bảng 1.1: Các kiểu dữ liệu của phần mềm PIC-C
TT Kiểu dữ liêu Số bit Giới hạn
4 signed int hay signed int8 8 -128-127
5 unsigned int hay unsigned int8 8 0-255
Ví dụ: Khai báo các biến
Intl TT; //khai báo biến trạng thái thuộc kiểu dữ liệu bit
Biến đếm (dem) được khai báo dưới dạng unsigned char (kiểu ký tự không dấu 8bit), giúp quản lý số lần lặp hoặc đếm chính xác Trong lập trình PIC-C, phần mềm không phân biệt chữ hoa và chữ thường, điều này cần lưu ý khi viết mã để đảm bảo tính nhất quán trong xử lý dữ liệu Việc hiểu rõ đặc điểm kiểu dữ liệu và cách xử lý chữ hoa chữ thường sẽ giúp viết mã hiệu quả hơn và tối ưu hóa chương trình cho các ứng dụng điều khiển trong hệ thống nhúng.
Các toán tử là thành phần quan trọng trong lập trình, để lập trình thì chúng ta cần phải hiểu rõ ràng chức năng của các loại toán tử
Bảng 1.2: Các toán tử phổ biến trong ngôn ngữ C
TT Toán tử Chức năng Ví dụ
2 += Toán tử cộng và gán x+=y tương đương với x=x+y
3 &= Toán tử and và gán x&=y tương đương với x=x&y
6 A= Toán tử ex-or và gán x A =y tương đương với x=x A y
8 |= Toán tử or và gán x|=y tương đương với x=x|y
9 I Toán tử or nhiều đại lượng với nhau thành 1
Ví dụ or nhiều bit trong 1byte với nhau
11 /= Toán tử chia và gán x/=y tương đương với x=x/y
13 == Toán tử bằng dùng để so sánh
15 >= Toán tử lớn hơn hay bằng
17 * Toán tử truy xuất gián tiếp, đi trước con trỏ
19 y
33 -> Toán tử con trỏ cấu trúc
34 -= Toán tử trừ và gán x - = y tương đương với x=x- y
36 Sizeof Xác định kích thước theo byte của toán tử a Toán tử gán (=)
Dùng để gán một giá trị nào đó cho một biến
Ví dụ: A = 5; Gán biến A bằng 5
Có chức năng gán biến b bằng 5 rồi cộng với 2 và gán cho biến A, kết quả B 5 và A = 7 b Toán tử số học (+, -, *, /, %)
Có 5 toán tử để thực hiện các phép toán cộng, trừ, nhân, chia và chia lấy phần dư
Gán A bằng 24, B gán số dư của A chia cho 5, kết quả B bằng 4
Tổng quát cho toán tử gán phức hợp: biến += giá_trị tương đương với biến biến + giá_trị
Ví dụ: A+=5; tương đương với A = A +5;
B *= X + 1; tương đương B = B * (X+1); c Toán tử tăng và giảm (++, )
Tổng quát cho toán tử gán phức hợp: biến += giá_trị tương đương với biến biến + giá_trị
Ví dụ: A++;tương đương với A = A +1 hay A+=1;
A=B++; kết quả A bằng B và bằng 3, B tăng lên 1 bằng 4
Sự khác nhau là “++” đặt trước thì tính trước rồi mới gán, đặt sau thì gán trước rồi mới tính d Toán tử quan hệ (==, !=, >, < >=, 4)) and 2 điều kiện lại với nhau và kết quả là true f Toán tử xử lý bit (&, |,A, ~, )
Các toán tử xử lý bit với bit, các toán tử trên tương đương là AND, OR, XOR,
NOT, SHL (dịch trái), SHR (dịch phải)
X = A & B; // X bằng A and với B, kết quả X = 0100 0001B = 0X41
Y = A | B; // Y bằng A or với B, kết quả Y = 1111 llllB = 0XFF
Z = A A B; // Z bằng A xor với B, kết quả Z = 1011 1110B = 0XBE
A= (A