- Màn hình LCD chữ và số 16x2
- Thư viện CCS LCD 16x2 cho MSP430
- Chức năng LCD cho Màn hình LCD 16x2 trên MSP430
- Sơ đồ mạch đến màn hình LCD giao diện với MSP430
- Lập trình MSP430 bằng Code Composer Studio cho màn hình LCD
Bài viết này là phần tiếp theo của loạt bài hướng dẫn lập trình MSP430 bằng Code Composer Studio của chúng tôi. Hướng dẫn trước dựa trên các ngắt bên ngoài trên MSP430 sử dụng các chân GPIO. Hướng dẫn này là về cách kết nối màn hình với MSP430, khi nói đến màn hình LCD 16 * 2, đây là lựa chọn hàng đầu cho bất kỳ người yêu thích điện tử nào. Trước đây, chúng tôi cũng đã giao tiếp LCD với MSP430 bằng Arduino IDE, trong hướng dẫn này, chúng tôi sẽ sử dụng nền tảng studio Code Composer gốc thay vì sử dụng Arduino IDE, với tư cách là một nhà thiết kế, chúng tôi sẽ linh hoạt hơn.
Để tìm hiểu thêm về màn hình LCD 16x2 và sử dụng nó với các bộ vi điều khiển khác, vui lòng xem hướng dẫn bên dưới.
- Giao diện LCD với ATmega16
- Giao diện LCD với Raspberry Pi
- Giao diện LCD với Vi điều khiển PIC
- Giao diện LCD với ARM7-LPC2148
- Giao diện LCD với NodeMCU
- Giao diện LCD với STM32
- Giao diện LCD với MSP430G2
- Giao diện LCD với STM8
Nó có một vi mạch hd44780 tích hợp có thể lưu trữ lệnh và dữ liệu được chuyển cho nó. Mô-đun LCD có khoảng 16 chân. 8 trong số đó là chân dữ liệu, 4 trong số đó là chân cấp nguồn cho đèn nền LED và toàn bộ mô-đun LCD, 3 chân để điều khiển hoạt động và 1 chân để điều chỉnh độ tương phản. Hướng dẫn dựa trên thư viện do Dennis Eichmann tạo ra. Rất dễ dàng sử dụng một thư viện với các chức năng riêng biệt để in các kiểu dữ liệu khác nhau. Nó cũng có các điều khoản để hiển thị dữ liệu ở các dạng khác nhau với các số 0 đứng đầu, trống và xóa. Nó là một thư viện khá mở rộng và toàn diện và có thể cấu hình cho các kết nối khác nhau. Ở đây, tệp tiêu đề được sửa đổi để phù hợp với cấu hình song song 8 chân để giao tiếp dữ liệu.
Màn hình LCD chữ và số 16x2
Màn hình 16x2 thông thường có một vi mạch hd44780 có sẵn (khoanh đỏ bên dưới), có thể lưu trữ lệnh và dữ liệu được chuyển đến nó. Mô-đun LCD có khoảng 16 chân. 8 trong số đó là chân dữ liệu, 4 trong số đó là chân cấp nguồn cho đèn nền LED và toàn bộ mô-đun LCD, 3 chân để điều khiển hoạt động và 1 chân để điều chỉnh độ tương phản.
Mô-đun LCD này được hiển thị ở trên linh hoạt và sử dụng chân cắm tối thiểu so với các LCD được phân khúc khác. Nếu bạn tò mò muốn biết chính xác cách thức hoạt động của tất cả điều này, bạn nên kiểm tra hoạt động của màn hình LCD 16x2, nơi chúng ta đã thảo luận chi tiết về cách thức hoạt động của màn hình LCD.
RS Pin: RS = 1 sẽ kích hoạt thanh ghi dữ liệu trên LCD, được sử dụng để ghi các giá trị vào thanh ghi dữ liệu trong LCD. RS = 0 sẽ kích hoạt thanh ghi lệnh của màn hình LCD.
Bật ghim: Đã kích hoạt cạnh phủ định; khi chân được chuyển từ trạng thái CAO sang trạng thái THẤP, LCD sẽ được nhắc ghi vào các chân dữ liệu. Đã kích hoạt cạnh tích cực; khi chân được chuyển từ trạng thái THẤP sang trạng thái CAO, LCD sẽ được nhắc đọc từ các chân dữ liệu.
Chân R / W: R / W = 0 sẽ ghi vào thanh ghi lệnh hoặc thanh ghi dữ liệu theo lựa chọn của chân RS. R / W = 1 sẽ đọc từ IR hoặc DR theo lựa chọn của chân RS.
Hoạt động RS R / W
0 0 Ghi IR như một hoạt động bên trong (hiển thị rõ ràng, v.v.)
0 1 Đọc cờ bận (DB7) và bộ đếm địa chỉ (DB0 đến DB6)
1 0 Ghi DR dưới dạng hoạt động bên trong (DR sang DDRAM hoặc CGRAM)
1 1 DR đọc như một hoạt động bên trong (DDRAM hoặc CGRAM thành DR)
Các chân D0-D7: Dữ liệu được chuyển đến và đi từ các thanh ghi lệnh và dữ liệu thông qua các chân này.
Các chân cấp nguồn: Các chân V ss, V dd dùng để cấp nguồn cho Module LCD. Chân A, K sẽ cấp nguồn cho đèn nền LED. Chân V 0 dùng để điều khiển độ tương phản.
Thư viện CCS LCD 16x2 cho MSP430
Hướng dẫn dựa trên thư viện do Dennis Eichmann tạo ra. Rất dễ dàng sử dụng một thư viện với các chức năng riêng biệt để in các kiểu dữ liệu khác nhau. Nó cũng có các điều khoản để hiển thị dữ liệu ở các dạng khác nhau với các số 0 đứng đầu, trống và xóa. Nó là một thư viện khá mở rộng và toàn diện và có thể cấu hình cho các kết nối khác nhau. Ở đây, tệp tiêu đề được sửa đổi để phù hợp với cấu hình song song 8 chân để giao tiếp dữ liệu. Thư viện có thể được tải về từ liên kết bên dưới, sau khi tải về bạn làm theo các bước dưới đây để thêm thư viện vào CCS.
Tải xuống Thư viện 16x2 cho MSP430 - Code Composer Studio
Bước 1: Tạo tệp và dự án
Một dự án CCS mặc định được tạo bằng menu tệp. Trong hộp thoại Tạo dự án, chọn thiết bị và đặt hd44780 làm tên dự án. Trong loại Dự án và chuỗi công cụ, hãy chọn loại đầu ra là thư viện Tĩnh và tạo dự án.
Trong làn Project Explorer (bên trái), tạo tệp tiêu đề trong thư mục bao gồm và đặt tên là hd44780.h . Sau đó sao chép nội dung của tệp hd44780.h đã tải xuống vào tệp mới tạo này.
Bây giờ, hãy tạo dự án chính bằng cách thay đổi kiểu đầu ra thành tệp thực thi và tạo một dự án có tên CCS_LCD .
Bước 2: Đưa các Đường dẫn Tìm kiếm vào Dự án Chính
Trong hộp thoại thuộc tính của dự án hd44780 và bên trong các tùy chọn bao gồm cho trình biên dịch MSP430, hãy thêm thư mục bao gồm vào tệp đường dẫn tìm kiếm.
Sau đó, xây dựng dự án này để tạo các tệp trình liên kết cần thiết như tệp.lib . Việc xây dựng này sẽ tạo tệp hd44780.lib bên trong thư mục gỡ lỗi.
Bước 3: Bao gồm các Đường dẫn Tìm kiếm cho Trình liên kết
Trong hộp thoại thuộc tính cho dự án CCS_LCD và trong đường dẫn tìm kiếm tệp của tab Trình liên kết MSP430, hãy bao gồm hd44780.lib nằm bên trong thư mục gỡ lỗi của dự án hd44780. Thư mục gỡ lỗi cũng được bao gồm trong đường dẫn tìm kiếm tệp.
Thư mục bao gồm một lần nữa được thêm vào các tùy chọn bao gồm của trình biên dịch MSP430 của dự án CCS_LCD .
Thư viện được biên dịch thành công và được thêm vào trình liên kết của dự án chính.
Chức năng LCD cho Màn hình LCD 16x2 trên MSP430
void hd44780_timer_isr (void): Điều này được gọi định kỳ trong ISR của Bộ định thời A. Bộ định thời A được sử dụng để thực hiện định kỳ các chức năng của LCD như xóa màn hình, đặt con trỏ và hiển thị dữ liệu. Chức năng sẽ được sử dụng trong ISR. Nó không trả lại gì.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Nó sẽ ghi chuỗi được chỉ định trong đối số đầu tiên.
char * ch__string: Chuỗi được ghi vào bộ đệm dữ liệu (bên trong hàm hd44780_timer_isr ). Dữ liệu sẽ được sao chép vào thanh ghi dữ liệu và thanh ghi lệnh của IC LCD khi hd44780_timer_isr được gọi định kỳ.
uint8_t u8__row: Nó xác định hàng mà chuỗi sẽ được viết.
uint8_t u8__column: Nó xác định cột mà chuỗi sẽ được viết.
uint8_t u8__cr_lf: Nếu nó được đặt 1, hàng sẽ được chuyển sang hàng tiếp theo. Nếu nó là 0, việc in sẽ dừng ở cùng một hàng.
void hd44780_clear_screen (void): Chức năng này sẽ xóa toàn bộ màn hình. Nó không trả lại gì.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Hàm sẽ hiển thị giá trị trên màn hình LCD 16-bit chưa được đánh dấu.
uint16_t u16__value: Số nguyên được hiển thị được đưa ra trong đối số đầu tiên.
uint8_t u8__leading_zero_handling: Nếu 0 được chuyển qua, các số 0 đứng đầu sẽ được hiển thị cho giá trị số nguyên sẽ được hiển thị. Nếu 1 được vượt qua, các số 0 sẽ bị bỏ trống. Nếu 2 được chuyển dưới dạng tham số, chỉ các chữ số có nghĩa mới được hiển thị.
uint8_t u8__row: Hàng hiển thị số nguyên được chọn.
uint8_t u8__column: Cột sẽ in được chọn bằng cách sử dụng đối số.
uint8_t u8__cr_lf: Nếu nó được đặt 1, hàng sẽ được chuyển sang hàng tiếp theo. Nếu nó là 0, việc in sẽ dừng ở cùng một hàng.
Sơ đồ mạch đến màn hình LCD giao diện với MSP430
Sơ đồ mạch hoàn chỉnh được minh họa trong hình ảnh dưới đây. Như bạn có thể thấy, các kết nối phần cứng rất đơn giản và chúng tôi đã cấp nguồn cho bo mạch hoàn chỉnh bằng cách sử dụng bộ chuyển đổi 5V.
Các kết nối được thực hiện theo bản phác thảo trên. Vui lòng xem bảng dưới đây để biết các kết nối chi tiết.
Vss | Mặt đất của nguồn điện 5V |
Vdd | 5V |
V0 | Đầu ra chiết áp |
RS | P2.1 |
R / W | Đất |
E | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
A | Điện trở 220 Ohm |
K | Đất |
Cực dương của đèn nền LED không thể kết nối trực tiếp với nguồn 5V. Nó phải được kết nối với một điện trở để giảm thiểu dòng điện chạy qua Mô-đun LCD. Tôi đã thực hiện các kết nối của mình bằng cách sử dụng bảng điều khiển perf để hàn màn hình LCD và sau đó sử dụng dây jumper để kết nối màn hình LCD với bảng MSP430, thiết lập của tôi trông giống như bên dưới nhưng bạn cũng có thể chỉ cần sử dụng bảng mạch để tạo kết nối của mình.
Lập trình MSP430 bằng Code Composer Studio cho màn hình LCD
Mã hoàn chỉnh được sử dụng trong dự án này được đưa ra ở cuối trang này. Giải thích về việc sử dụng mã như sau. Đầu tiên, mở tệp tiêu đề (hd44780.h) và bao gồm số bộ phận vi điều khiển trong phần đầu của tệp.
#include "msp430g2553.h"
Bộ đếm thời gian của cơ quan giám sát phải được dừng trước. Thanh ghi điều khiển DCOCTL và BCSCTL1 được sử dụng để cấu hình bộ dao động của vi điều khiển. Các dòng bên dưới sẽ cấu hình MCLK là 1MHZ.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Các chân của cổng 1 phải được đề cập là đầu ra, được sử dụng cho các chân dữ liệu. Chân 0 và chân 1 cũng phải được đề cập là đầu ra trong cổng 2, sẽ được sử dụng cho chân RS và R / W.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Bộ đếm thời gian có sẵn đang được sử dụng để hiển thị các giá trị theo định kỳ. Bộ hẹn giờ A được chọn với SMCLK (1MHZ) làm nguồn xung nhịp và chế độ liên tục là chế độ hoạt động.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Các ngắt cho các kênh so sánh 1 và 2 và ngắt tràn bộ định thời chia sẻ cùng một vectơ ngắt ( TIMER0_A1_VECTOR ) với các địa chỉ bắt đầu khác nhau. Kênh so sánh Capture 1 (CCR1) sử dụng 2 làm địa chỉ, được sử dụng trong trường hợp chuyển mạch.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); phá vỡ; } } }
Khi bạn đã biên dịch mã của mình, bạn có thể tải nó lên bảng MSP430, như được giải thích trong phần bắt đầu với hướng dẫn MSP430. Nếu mọi thứ diễn ra như mong đợi, bạn sẽ thấy màn hình LCD của mình hiển thị một số độ tương phản như hình dưới đây.
Nếu thử nghiệm của bạn rất mờ, bạn có thể thử điều chỉnh chiết áp để có được độ tương phản tốt hơn. Hoạt động hoàn chỉnh của dự án cũng 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 dự án và cảm thấy thú vị khi xây dựng của riêng bạn. Nếu có bất kỳ thắc mắc nào, hãy để lại trong phần bình luận bên dưới. Bạn cũng có thể viết tất cả các câu hỏi kỹ thuật của mình trên các diễn đàn để được giải đáp hoặc bắt đầu thảo luận.