- Các thành phần cần thiết và thiết lập phần cứng
- Sơ đồ mạch Nuvoton N76E003 để đọc điện áp tương tự
- Thông tin về GPIO và Chân tương tự trong N76E003
- Thông tin về ADC ngoại vi trong N76E003
- Lập trình N76E003 cho ADC
- Nhấp nháy mã và đầu ra
Bộ chuyển đổi tương tự sang kỹ thuật số (ADC) là tính năng phần cứng được sử dụng nhiều nhất trên vi điều khiển. Nó nhận điện áp tương tự và chuyển nó thành giá trị kỹ thuật số. Vì bộ vi điều khiển là thiết bị kỹ thuật số và hoạt động với chữ số nhị phân 1 và 0 nên nó không thể xử lý dữ liệu tương tự trực tiếp. Do đó, một bộ ADC được sử dụng để lấy điện áp tương tự và chuyển đổi nó thành giá trị số tương đương mà bộ vi điều khiển có thể hiểu được. Nếu bạn muốn biết thêm về Bộ chuyển đổi từ Analog sang Digital (ADC), bạn có thể kiểm tra bài viết được liên kết.
Có các cảm biến khác nhau có sẵn trong thiết bị điện tử cung cấp đầu ra Analog, như cảm biến khí MQ, cảm biến gia tốc kế ADXL335, v.v. Do đó, sử dụng bộ chuyển đổi Analog sang Digital, các cảm biến đó có thể được giao tiếp với một bộ vi điều khiển. Bạn cũng có thể xem các hướng dẫn khác được liệt kê bên dưới, để sử dụng ADC với các bộ vi điều khiển khác.
- Làm thế nào để sử dụng ADC trong Arduino Uno?
- Giao tiếp ADC0808 với Vi điều khiển 8051
- Sử dụng Mô-đun ADC của Vi điều khiển PIC
- Hướng dẫn sử dụng Raspberry Pi ADC
- Cách sử dụng ADC trong MSP430G2 - Đo điện áp tương tự
- Cách sử dụng ADC trong STM32F103C8
Trong hướng dẫn này, chúng tôi sẽ sử dụng thiết bị ngoại vi ADC có sẵn của bộ vi điều khiển N76E003, vì vậy hãy đánh giá loại thiết lập phần cứng mà chúng tôi yêu cầu cho ứng dụng này.
Các thành phần cần thiết và thiết lập phần cứng
Để sử dụng ADC trên N76E003, chúng ta sẽ sử dụng bộ chia điện áp bằng chiết áp và đọc điện áp trong khoảng từ 0V-5.0V. Điện áp sẽ được hiển thị trên LCD 16x2 Character, nếu bạn mới sử dụng LCD và N76E003, bạn có thể kiểm tra cách giao diện LCD với Nuvoton N76E003. Do đó, thành phần chính cần thiết cho dự án này là Màn hình LCD ký tự 16x2. Đối với dự án này, chúng tôi sẽ sử dụng các thành phần dưới đây-
- Ký tự LCD 16x2
- Điện trở 1k
- Chiết áp hoặc nồi cắt 50k
- Vài dây Berg
- Vài dây nối
- Breadboard
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. Một bộ cấp nguồn bổ sung 5V cũng được yêu cầu vì màn hình LCD có đủ dòng điện mà bộ lập trình không thể cung cấp.
Sơ đồ mạch Nuvoton N76E003 để đọc điện áp tương tự
Như chúng ta có thể thấy trong giản đồ, cổng P0 được sử dụng cho kết nối liên quan đến LCD. Ở phía bên trái, kết nối giao diện lập trình được hiển thị. Chiết áp hoạt động như một bộ chia điện áp và được cảm nhận bởi đầu vào tương tự 0 (AN0).
Thông tin về GPIO và Chân tương tự trong N76E003
Hình ảnh dưới đây minh họa các chân GPIO có trên bộ vi điều khiển N76E003AT20. Tuy nhiên, trong số 20 chân, Đối với kết nối liên quan đến LCD, Cổng P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 và P0.7) được sử dụng. Các chân Analog được đánh dấu bằng màu ĐỎ.
Như chúng ta có thể thấy, Cổng P0 có tối đa các chân tương tự nhưng chúng được sử dụng cho giao tiếp liên quan đến LCD. Do đó, P3.0 và P1.7 có sẵn dưới dạng các chân đầu vào Analog AIN1 và AIN0. Vì dự án này chỉ yêu cầu một chân analog, P1.7 là kênh đầu vào Analog 0, được sử dụng cho dự án này.
Thông tin về ADC ngoại vi trong N76E003
N76E003 cung cấp ADC SAR 12 bit. Đó là một tính năng rất tốt của N76E003 là nó có độ phân giải ADC rất tốt. Bộ ADC có đầu vào 8 kênh ở chế độ một đầu. Giao diện ADC khá đơn giản và dễ hiểu.
Bước đầu tiên là chọn đầu vào kênh ADC. Có sẵn đầu vào 8 kênh trong vi điều khiển N76E003. Sau khi chọn các đầu vào ADC hoặc các chân I / O, tất cả các chân được yêu cầu phải được đặt cho hướng trong mã. Tất cả các chân được sử dụng cho đầu vào Analog đều là chân đầu vào của bộ vi điều khiển do đó tất cả các chân cần được đặt ở chế độ Chỉ đầu vào (trở kháng cao). Chúng có thể được thiết lập bằng cách sử dụng thanh ghi PxM1 và PxM2. Hai thanh ghi này thiết lập các chế độ I / O trong đó x là viết tắt của số Cổng (Ví dụ: Cổng P1.0 thì thanh ghi sẽ là P1M1 và P1M2, đối với P3.0 sẽ là P3M1 và P3M2, v.v.) được nhìn thấy trong hình ảnh dưới đây-
Việc cấu hình ADC được thực hiện bởi hai thanh ghi ADCCON0 và ADCCON1. Mô tả Đăng ký ADCCON0 được hiển thị bên dưới.
4 bit đầu tiên của thanh ghi từ bit 0 đến bit 3 được sử dụng để thiết lập lựa chọn Kênh ADC. Vì chúng tôi đang sử dụng kênh AIN0, lựa chọn sẽ là 0000 cho bốn bit này.
Các bit thứ 6 và 7 là những bit quan trọng. ADCS được yêu cầu đặt 1 để bắt đầu chuyển đổi ADC và ADCF sẽ cung cấp thông tin về chuyển đổi ADC thành công. Nó cần được đặt 0 bởi phần sụn để bắt đầu chuyển đổi ADC. Đăng ký tiếp theo là ADCCON1-
Thanh ghi ADCCON1 chủ yếu được sử dụng cho chuyển đổi ADC được kích hoạt bởi các nguồn bên ngoài. Tuy nhiên, đối với các hoạt động liên quan đến thăm dò thông thường, ADCEN bit đầu tiên được yêu cầu đặt 1 để bật mạch ADC.
Tiếp theo, đầu vào của kênh ADC cần được điều khiển trong thanh ghi AINDIDS nơi có thể ngắt kết nối các đầu vào kỹ thuật số.
N là viết tắt của bit kênh (Ví dụ, kênh AIN0 sẽ cần được điều khiển bằng cách sử dụng bit P17DIDS đầu tiên của thanh ghi AINDIDS). Đầu vào kỹ thuật số cần được kích hoạt, nếu không, nó sẽ đọc là 0. Tất cả đều là cài đặt cơ bản của ADC. Bây giờ, Xóa ADCF và thiết lập ADCS, chuyển đổi ADC có thể được bắt đầu. Giá trị được chuyển đổi sẽ có sẵn trong các đăng ký bên dưới-
Và
Cả hai thanh ghi đều là 8-bit. Vì ADC cung cấp dữ liệu 12 bit, ADCRH được sử dụng là đầy đủ (8 bit) và ADCRL được sử dụng như một nửa (4 bit).
Lập trình N76E003 cho ADC
Mã hóa cho một mô-đun cụ thể mọi lúc là một công việc bận rộn, do đó, một thư viện LCD đơn giản nhưng mạnh mẽ được cung cấp sẽ rất hữu ích cho giao tiếp LCD 16x2 ký tự với N76E003. Thư viện LCD 16x2 có sẵn trong kho Github của chúng tôi, bạn có thể tải xuống từ liên kết bên dưới.
Tải xuống Thư viện LCD 16x2 cho Nuvoton N76E003
Vui lòng có thư viện (bằng cách sao chép hoặc tải xuống) và chỉ bao gồm các tệp lcd.c và LCD.h trong dự án Keil N76E003 của bạn để dễ dàng tích hợp màn hình LCD 16x2 vào ứng dụng hoặc dự án mong muốn. Thư viện sẽ cung cấp các chức năng hữu ích liên quan đến hiển thị-
- Khởi tạo màn hình LCD.
- Gửi lệnh đến màn hình LCD.
- Ghi vào màn hình LCD.
- Đặt một chuỗi vào màn hình LCD (16 ký tự).
- In ký tự bằng cách gửi giá trị hex.
- Cuộn các tin nhắn dài có hơn 16 ký tự.
- In các số nguyên trực tiếp vào màn hình LCD.
Mã hóa cho ADC rất đơn giản. Trong chức năng thiết lập Enable_ADC_AIN0; được sử dụng để thiết lập ADC cho đầu vào AIN0 . Điều này được xác định trong tệp.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Vì vậy, dòng trên đặt chân làm đầu vào và cấu hình thanh ghi ADCCON0, ADCCON1 cũng như thanh ghi AINDIDS . Hàm dưới đây sẽ đọc ADC từ thanh ghi ADCRH và ADCRL nhưng với độ phân giải 12 bit.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; bộ_ADCS; while (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; trả về adc_value; }
Bit được dịch sang trái 4 lần và sau đó được thêm vào biến dữ liệu. Trong chức năng chính, ADC đang đọc Dữ liệu và in trực tiếp trên màn hình. Tuy nhiên, điện áp cũng được chuyển đổi bằng cách sử dụng một tỷ lệ hoặc mối quan hệ giữa điện áp chia cho giá trị bit.
Bộ ADC 12 bit sẽ cung cấp 4095 bit trên đầu vào 5.0V. Như vậy chia 5,0V / 4095 = 0,0012210012210012V
Vì vậy, 1 chữ số thay đổi bit sẽ bằng những thay đổi ở 0,001V (Khoảng). Điều này được thực hiện trong chức năng chính được hiển thị bên dưới.
void main (void) { int adc_data; thiết lập(); lcd_com (0x01); while (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("Dữ liệu ADC:"); adc_data = ADC_read (); lcd_print_number (adc_data); tage = adc_data * bit_to_voltage_ratio; sprintf (str_voltage, "Volt:% 0.2fV", điện áp); lcd_com (0xC0); lcd_puts (str_voltage); Timer0_Delay1ms (500); } }
Dữ liệu được chuyển đổi từ giá trị bit sang điện áp và sử dụng hàm sprintf , đầu ra được chuyển đổi thành chuỗi và gửi đến màn hình LCD.
Nhấp nháy mã và đầu ra
Mã trả về 0 cảnh báo và 0 Lỗi và được Keil nhấp nháy bằng phương pháp nhấp nháy mặc định, bạn có thể xem thông báo nhấp nháy bên dưới. Nếu bạn chưa quen với Keil hoặc Nuvoton, hãy xem phần bắt đầu với bộ vi điều khiển Nuvoton để hiểu những điều cơ bản và cách tải lên mã.
Quá trình xây dựng lại bắt đầu: Dự án: timer Xây dựng lại mục tiêu 'Mục tiêu 1' lắp ráp STARTUP.A51… biên dịch main.c… biên dịch lcd.c… biên dịch Delay.c… liên kết… Kích thước chương trình: data = 101.3 xdata = 0 code = 4162 tạo tệp hex từ ". \ Objects \ timer"… ". \ Objects \ timer" - 0 (Các) lỗi, 0 Cảnh báo. Thời gian xây dựng đã trôi qua: 00:00:02 Tải "G: \\ n76E003 \\ Display \\ Objects \\ timer" Đã hoàn tất Xóa Flash. Flash Write Done: 4162 byte được lập trình. Flash Verify Done: Đã xác minh 4162 byte. Tải Flash xong lúc 11:56:04
Hình ảnh bên dưới cho thấy phần cứng được kết nối với nguồn điện bằng bộ chuyển đổi DC và màn hình hiển thị đầu ra điện áp được đặt bởi chiết áp ở bên phải.
Nếu chúng ta vặn chiết áp, điện áp cấp cho chân ADC cũng sẽ thay đổi và chúng ta có thể nhận thấy giá trị ADC và điện áp Analog hiển thị trên màn hình LCD. Bạn có thể xem video dưới đây để biết cách làm việc hoàn chỉnh của hướng dẫn này.
Hy vọng bạn thích bài viết và học được điều gì đó hữu ích, nếu bạn có câu hỏi, hãy để lại chúng trong phần bình luận bên dưới, hoặc bạn có thể sử dụng diễn đàn của chúng tôi để đăng các câu hỏi kỹ thuật khác.