- Yêu cầu và thiết lập phần cứng
- N76E003 LED và mạch giao diện nút nhấn
- Sơ đồ chân ra N76E003
- Chương trình điều khiển GPIO đơn giản cho N76E003
- Lập trình N76E003 và xác minh đầu ra
Trong hướng dẫn trước của chúng tôi, chúng tôi đã sử dụng chương trình nhấp nháy đèn LED cơ bản để bắt đầu với hướng dẫn N76E003, chúng tôi đã học cách cấu hình Keil IDE và thiết lập môi trường để lập trình đơn vị vi điều khiển nuvoton N76E003. Đã đến lúc tiến xa hơn một chút và sử dụng giao diện GPIO cơ bản để điều khiển phần cứng bổ sung. Nếu bạn quan tâm, bạn cũng có thể xem các hướng dẫn GPIO vi điều khiển khác được liệt kê bên dưới-
- STM32 Nucleo64 với CubeMx và TrueSTUDIO - Điều khiển LED
- STM8S với Cosmic C GPIO Control
- PIC với MPLABX LED nhấp nháy Hướng dẫn
- MSP430 với Code Composer Studio - Điều khiển đèn LED đơn giản
Vì trong hướng dẫn trước của chúng tôi, chúng tôi chỉ sử dụng đèn LED để nhấp nháy bằng cách sử dụng chân IO làm đầu ra. Trong hướng dẫn này, chúng ta sẽ học cách sử dụng một chân IO khác làm đầu vào và điều khiển một đèn LED bổ sung. Không mất nhiều thời gian, hãy đánh giá loại thiết lập phần cứng mà chúng tôi yêu cầu.
Yêu cầu và thiết lập phần cứng
Vì cần sử dụng công tắc làm đầu vào, điều đầu tiên chúng tôi yêu cầu là một nút nhấn. Chúng tôi cũng yêu cầu một đèn LED bổ sung được điều khiển bằng nút nhấn đó. Ngoài hai điều này, chúng tôi cũng yêu cầu một điện trở để giới hạn dòng LED và một điện trở bổ sung cho các mục đích kéo xuống trên nút nhấn. Điều này sẽ được chứng minh thêm trong phần sơ đồ. Các thành phần chúng tôi yêu cầu -
- Một nút nhấn (bất kỳ loại công tắc tạm thời nào cụ thể - Công tắc xúc giác)
- Bất kỳ màu nào của đèn LED
- Điện trở 4,7k cho mục đích kéo xuống
- Điện trở 100R
Chưa kể, ngoài các thành phần trên, chúng ta cần board phát triển dựa trên vi điều khiển N76E003 cũng như Nu-Link Programmer. Ngoài ra, breadboard và dây hookup cũng được yêu cầu để kết nối tất cả các thành phần như hình dưới đây.
N76E003 LED và mạch giao diện nút nhấn
Như chúng ta có thể thấy trong sơ đồ bên dưới, đèn LED Kiểm tra bên trong bảng phát triển được kết nối trên cổng 1.4 và một đèn LED bổ sung được kết nối trên cổng 1.5. Điện trở R3 được sử dụng để giới hạn dòng LED.
Ở chân 1.6, một nút nhấn có tên SW được kết nối. Bất cứ khi nào nút được nhấn, chốt sẽ trở nên cao. Nếu không, nó sẽ trở nên thấp bởi điện trở kéo xuống 4,7K R1. Bạn có thể tìm hiểu thêm về điện trở kéo lên và kéo xuống nếu bạn chưa quen với khái niệm này.
Chân cũng là một chân liên quan đến chương trình được truy cập bởi lập trình viên. Nó được sử dụng để gửi dữ liệu chương trình. Tuy nhiên, chúng ta sẽ xem lý do đằng sau việc chọn các chân đó cũng như có được thông tin hợp lý về ánh xạ chân của N76E003.
Sơ đồ chân ra N76E003
Các sơ đồ pin của N76E003 có thể được nhìn thấy trong dưới image-
Như chúng ta thấy, mỗi pin có nhiều chức năng và có thể được sử dụng cho các mục đích khác nhau. Hãy lấy một ví dụ. Chân 1.7 có thể được sử dụng như một đầu vào ngắt, hoặc tương tự hoặc như một hoạt động đầu vào - đầu ra có mục đích chung. Do đó, nếu bất kỳ chân nào được sử dụng làm chân I / O, thì chức năng tương ứng sẽ không khả dụng.
Do đó, chân 1.5 được sử dụng làm chân đầu ra LED, nó sẽ mất PWM và các chức năng khác. Nhưng đó không phải là vấn đề vì một chức năng khác không cần thiết cho dự án này. Lý do đằng sau việc chọn chân 1.5 làm đầu ra và chân 1.6 làm đầu vào, vì sự sẵn có gần nhất của các chân GND và VDD để kết nối dễ dàng.
Tuy nhiên, trong vi điều khiển này trong số 20 chân, 18 chân có thể được sử dụng như một chân GPIO. Chân 2.0 được sử dụng chuyên dụng cho đầu vào Đặt lại và nó không thể được sử dụng làm đầu ra. Ngoài chân này, tất cả các chân có thể được cấu hình ở chế độ được mô tả bên dưới.
Theo biểu dữ liệu, PxM1.n và PxM2.n là hai thanh ghi được sử dụng để xác định hoạt động điều khiển của cổng I / O. Bây giờ, việc viết và đọc một cổng GPIO là một điều hoàn toàn khác. Bởi vì việc ghi vào thanh ghi điều khiển cổng sẽ thay đổi trạng thái chốt của cổng, trong khi việc đọc cổng sẽ nhận được trạng thái của trạng thái logic. Nhưng để đọc một cổng, nó phải được đặt ở chế độ đầu vào.
Chương trình điều khiển GPIO đơn giản cho N76E003
Chương trình hoàn chỉnh được sử dụng trong hướng dẫn này có thể được tìm thấy ở cuối trang này, giải thích về mã như sau.
Đặt ghim làm đầu vào
Hãy bắt đầu với đầu vào trước. Như đã thảo luận ở phần trước, để đọc trạng thái của một cổng, nó cần được đặt làm đầu vào. Do đó, vì chúng tôi đã chọn P1.6 làm chân chuyển đổi đầu vào của mình, chúng tôi đã biểu thị nó thông qua dòng mã bên dưới.
#define SW P16
Cùng một chân này cần được đặt làm đầu vào. Do đó, trên chức năng thiết lập, chân được đặt làm đầu vào bằng dòng bên dưới.
thiết lập void (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Dòng này P16_Input_Mode; được định nghĩa trong tệp tiêu đề Function_define.h trong “Thư viện bao gồm BSP” đặt bit ghim là P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Các SET_BIT6 cũng được định nghĩa trong file header cùng như-
#define SET_BIT6 0x40
Đặt chân làm đầu ra
Giống như chân đầu vào, chân đầu ra được sử dụng bởi Đèn LED kiểm tra trên bo mạch và đèn LED1 bên ngoài cũng được xác định trong phần đầu tiên của mã với các mã PIN tương ứng.
#define Test_LED P14 #define LED1 P15
Các chân đó được đặt làm đầu ra trong chức năng thiết lập bằng các dòng bên dưới.
thiết lập void (void) { P14_Quasi_Mode; // Xuất P15_Quasi_Mode; // Xuất P16_Input_Mode; }
Các dòng này cũng được xác định trong tệp tiêu đề Function_define.h , nơi nó đặt bit ghim là P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Các SET_BIT6 cũng được định nghĩa trong file header cùng như-
#define SET_BIT4 0x10
Vòng lặp Infinite While
Một Phần cứng, nếu được kết nối với nguồn điện và hoạt động hoàn hảo sẽ cho đầu ra liên tục, ứng dụng không bao giờ dừng. Nó làm điều tương tự trong thời gian vô hạn. Ở đây có chức năng của vòng lặp while vô hạn. Ứng dụng bên trong vòng lặp while chạy vô hạn.
trong khi (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
Vòng lặp while ở trên nhấp nháy đèn led theo giá trị sw_delay và cũng kiểm tra trạng thái của SW. Nếu công tắc được nhấn, P1.6 sẽ ở mức cao, và do đó khi nó được nhấn, trạng thái đọc sẽ là 1. Trong tình huống này, trong một thời gian, công tắc được nhấn và cổng P1.6 vẫn ở mức cao, LED1 sẽ phát sáng.
Lập trình N76E003 và xác minh đầu ra
Khi bắt đầu với hướng dẫn N76E003, chúng tôi đã học cách lập trình N76E003 rồi, vì vậy chúng tôi sẽ chỉ lặp lại các bước tương tự ở đây để lập trình bảng của chúng tôi. Mã được biên dịch thành công và trả về 0 cảnh báo và 0 Lỗi và nhấp nháy bằng phương pháp nhấp nháy mặc định của Keil.
Như bạn có thể thấy trong hình trên, đèn LED bên ngoài của chúng tôi sẽ bật khi tôi nhấn nút nhấn. Hoạt động hoàn chỉnh của dự án có thể được tìm thấy trong video được liên kết bên dưới. Hy vọng bạn thích hướng dẫn và học được điều gì đó hữu ích nếu bạn có bất kỳ câu hỏi nào, hãy để lại chúng trong phần bình luận bên dưới. Bạn cũng có thể sử dụng diễn đàn của chúng tôi để hỏi các câu hỏi kỹ thuật khác.