1. Sơ đồ chân của text LCD
Tên chân và chức năng:
Thứ Tự | Tên | Chức năng |
1 | Vss (GND) | 0 V |
2 | Vdd (VCC) | 5 VDC |
3 | Vee | Điều chỉnh độ tương phản, nguồn từ 0-5VDC |
4 | RS | Lựa chọn thanh ghi (Thanh ghi lệnh và thanh ghi dữ liệu) RS=0 : Thanh ghi lệnh (khi ghi) tức là data trên chân D0-D7 là lệnh RS=1 : Thanh ghi dữ liệu (Khi ghi và đọc): tức là data trên chân D0-D7 là dữ liệu |
5 | R/W | R/W=0 : Ghi dữ liệu (vi điều khiển ->LCD) R/W=1 : Đọc dữ liệu (LCD-> Vi điều khiển) |
6 | E | E=0 : Vô hiệu hóa LCD E=1 : LCD hoạt động E chuyển từ 1->0: Bắt đầu ghi/ đọc LCD |
7 | D0 | Chân dữ liệu bit 0 |
8 | D1 | Chân dữ liệu bit 1 |
9 | D2 | Chân dữ liệu bit 2 |
10 | D3 | Chân dữ liệu bit 3 |
11 | D4 | Chân dữ liệu bit 4 |
12 | D5 | Chân dữ liệu bit 5 |
13 | D6 | Chân dữ liệu bit 6 |
14 | D7 | Chân dữ liệu bit 7 |
16 | A | Cực dương led nền LCD |
17 | K | Cực âm led nền LCD |
IC lái LCD HD4478U
Trong các text LCD loại 1 dòng và hai dòng trên thị trường hiện nay thường tích hợp chip lái HD44780U hoặc chip tương thích với chíp lái này.
Sơ đồ khối của HD4478U
Thanh ghi trong HD4478U:
HD4478U có hai thanh ghi 8 bit: Thanh ghi lệnh (IR) và thanh ghi dữ liệu (DR)
Thanh ghi IR lưu trữ mã lệnh: Như xóa hiện thị và dịch con trỏ, và chứa thông tin địa chỉ cho vùng RAM dữ liệu hiển thị (DDRAM) và vùng RAM tạo ký tự CGRAM. IR chỉ có thể ghi từ vi điều khiển.
Thanh ghi DR dùng để lưu trữ tạm thời dữ liệu để ghi đến DDRAM hoặc CGRAM và dữ liệu lưu trữ tạm thời có thể đọc từ DDRAM hoặc CGRAM. Dữ liệu được ghi đến thanh ghi DR, dữ liệu đó sẽ tự động được truyền đến DDRAM hoặc CGRAM một cách tự động. Thanh ghi DR cũng là vùng lưu trữ dữ liệu tạm thời khi ta muốn đọc dữ liệu DDRAM hoặc CGRAM. Khi các thông tin về địa chỉ được ghi đến thanh ghi IR, dữ liệu được từ DDRAM hoặc CGRAM được đọc và lưu trữ vào DR một cách tự động bởi LCD. Khi đó ta tiến hành đọc dữ liệu lưu trữ ở thanh ghi DR. Sau khi đọc, dữ liệu trong DDRAM hoặc CGRAM tại địa chỉ kế tiếp được đưa đến thanh ghi DR để sẳn sàng cho lần đọc kế tiếp từ vi điều khiển. Nhờ tín hiệu lựa chọn thanh ghi (RS), khi đó ta thể lựa chọn giữa hai thanh ghi IR và DR
Cờ bận (BF):
Khi cờ bận =1 , LCD đang bận xử lý, và lệnh tiếp theo sẽ không được chấp nhận. Khi RS=0 và R/W=1, cờ bận được xuất ra chân DB7. Lệnh tiếp theo chỉ có thể được viết sau khi cờ bận =0;
Bộ đếm địa chỉ (AC):
Bộ đếm địa chỉ (AC) sẽ gán địa chỉ đến cả hai DDRAM và CGRAM. Khi địa chỉ của một lệnh được viết đến IR , thông tin địa chỉ được gửi từ IR đến AC . Lựa chọn của một trong hai DDRAM hoặc CGRAM cũng được xác định đồng thời bởi lệnh.
Sau khi ghi (Hoặc đọc từ) DDRAM hoặc CGRAM, AC sẽ tự động tăng lên 1 hoặc giảm 1. Dữ liệu AC được xuất ra chân DB0 đến DB6 khi RS=0 và R/W =1
Bộ nhớ trong HD44780U
HD44780U có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển thị DDRAM (Display Data RAM), bộ nhớ chứa ROM chứa bộ font tạo ra ký tự CGROM (Character Generator ROM) và bộ nhớ RAM chứa bộ font tạo ra các symbol tùy chọn CGRAM (Character Generator RAM). Để điều khiển hiển thị Text LCD chúng ta cần hiểu tổ chức và cách thức hoạt động của các bộ nhớ này:
2.1 DDRAM.
DDRAM là bộ nhớ tạm chứa các ký tự cần hiển thị lên LCD, bộ nhớ này gồm có 80 ô được chia thành 2 hàng, mỗi ô có độ rộng 8 bit và được đánh số từ 0 đến 39 cho dòng 1; từ 64 đến 103 cho dòng 2. Mỗi ô nhớ tương ứng với 1 ô trên màn hình LCD. Như chúng ta biết LCD loại 16x2 có thể hiển thị tối đa 32 ký tự (có 32 ô hiển thị), vì thế có một số ô nhớ của DDRAM không được sử dụng làm các ô hiển thị. Để hiểu rõ hơn chúng ta tham khảo hình 3 bên dưới
Tổ chức của DDRAM.
Chỉ có 16 ô nhớ có địa chỉ từ 0 đến 15 và 16 ô địa chỉ từ 64 đến 79 là được hiển thị trên LCD. Vì thế muốn hiển thị một ký tự nào đó trên LCD chúng ta cần viết ký tự đó vào DDRAM ở 1 trong 32 địa chỉ trên. Các ký tự nằm ngoài 32 ô nhớ trên sẽ không được hiển thị.
2.2 CGROM.
CGROM là vùng nhớ cố định chứa định nghĩa font cho các ký tự. Chúng ta không trực tiếp truy xuất vùng nhớ này mà chip HD44780U sẽ tự thực hiện khi có yêu cầu đọc font để hiện thị. Một điều đáng lưu ý là địa chỉ font của mỗi ký tự vùng nhớ CGROM chính là mã ASCII của ký tự đó. Ví dụ ký tự ‘a’ có mã ASCII là 97, tham khảo tổ chức của vùng nhớ CGROM trong hình 4 bạn sẽ nhận thấy địa chỉ font của ‘a’ có 4 bit thấp là 0001 và 4 bit cao là 0110, địa chỉ tổng hợp là 01100001 = 97.
CGROM và DDRAM được tự động phối hợp trong quá trình hiển thị của LCD. Giả sử chúng ta muốn hiển thị ký tự ‘a’ tại vị trí đầu tiên, dòng thứ 2 của LCD thì các bước thực hiện sẽ như sau: trước hết chúng ta biết rằng vị trí đầu tiên của dòng 2 có địa chỉ là 64 trong bộ nhớ DDRAM (xem hình 3), vì thế chúng ta sẽ ghi vào ô nhớ có địa chỉ 64 một giá trị là 97 (mã ASCII của ký tự ‘a’). Tiếp theo, chip HD44780U đọc giá trị 97 này và coi như là địa chỉ của vùng nhớ CGROM, nó sẽ tìm đến vùng nhớ CGROM có địa chỉ 97 và đọc bảng font đã được định nghĩa sẵn ở đây, sau đó xuất bản font này ra các “chấm” trên màn hình LCD tại vị trí đầu tiên của dòng 2 trên LCD. Đây chính là cách mà 2 bộ nhớ DDRAM và CGROM phối hợp với nhau để hiển thị các ký tự. Như mô tả, công việc của người lập trình điều khiển LCD tương đối đơn giản, đó là viết mã ASCII vào bộ nhớ DDRAM tại đúng vị trí được yêu cầu, bước tiếp theo sẽ do HD44780U đảm nhiệm.
CGROM và DDRAM được tự động phối hợp trong quá trình hiển thị của LCD. Giả sử chúng ta muốn hiển thị ký tự ‘a’ tại vị trí đầu tiên, dòng thứ 2 của LCD thì các bước thực hiện sẽ như sau: trước hết chúng ta biết rằng vị trí đầu tiên của dòng 2 có địa chỉ là 64 trong bộ nhớ DDRAM (xem hình 3), vì thế chúng ta sẽ ghi vào ô nhớ có địa chỉ 64 một giá trị là 97 (mã ASCII của ký tự ‘a’). Tiếp theo, chip HD44780U đọc giá trị 97 này và coi như là địa chỉ của vùng nhớ CGROM, nó sẽ tìm đến vùng nhớ CGROM có địa chỉ 97 và đọc bảng font đã được định nghĩa sẵn ở đây, sau đó xuất bản font này ra các “chấm” trên màn hình LCD tại vị trí đầu tiên của dòng 2 trên LCD. Đây chính là cách mà 2 bộ nhớ DDRAM và CGROM phối hợp với nhau để hiển thị các ký tự. Như mô tả, công việc của người lập trình điều khiển LCD tương đối đơn giản, đó là viết mã ASCII vào bộ nhớ DDRAM tại đúng vị trí được yêu cầu, bước tiếp theo sẽ do HD44780U đảm nhiệm.
Hình 4. Vùng nhớ CGROM.
2.3 CGRAM.
CGRAM là vùng nhớ chứa các symbol do người dùng tự định nghĩa, mỗi symbol được có kích thước 5x8 và được dành cho 8 ô nhớ 8 bit. Các symbol thường được định nghĩa trước và được gọi hiển thị khi cần thiết. Vùng này có tất cả 64 ô nhớ nên có tối đa 8 symbol có thể được định nghĩa.
Các kiểu hiển thị:
3. Mô tả lệnh khi giao tiếp LCD
Lệnh | RS | RW | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Thời gian thực thi |
---|---|---|---|---|---|---|---|---|---|---|---|
Clear display | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1.64mS |
Cursor home | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | x | 1.64mS |
Entry mode set | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | 40uS |
Display on/off control | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | U | B | 40uS |
Cursor/Display Shift | 0 | 0 | 0 | 0 | 0 | 1 | D/C | R/L | x | x | 40uS |
Function set | 0 | 0 | 0 | 0 | 1 | DL | N | F | x | x | 40uS |
Set CGRAM address | 0 | 0 | 0 | 1 | CGRAM address | 40uS | |||||
Set DDRAM address | 0 | 0 | 1 | DDRAM address | 40uS | ||||||
Read "BUSY" flag (BF) | 0 | 1 | BF | DDRAM address | - | ||||||
Write to CGRAM or DDRAM | 1 | 0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 40uS |
Read from CGRAM or DDRAM | 1 | 1 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 40uS |
I/D 1 = Increment (by 1) R/L 1 = Shift right 0 = Decrement (by 1) 0 = Shift left S 1 = Display shift on DL 1 = 8-bit interface 0 = Display shift off 0 = 4-bit interface D 1 = Display on N 1 = Display in two lines 0 = Display off 0 = Display in one line U 1 = Cursor on F 1 = Character format 5x10 dots 0 = Cursor off 0 = Character format 5x7 dots B 1 = Cursor blink on D/C 1 = Display shift 0 = Cursor blink off 0 = Cursor shift |
Clear Display (Xóa hiển thị): Xóa hiển thị là viết mã khoảng trắng 20H vào tất cả địa chỉ DDRAM. Khi đó thiết lập bộ đếm địa chỉ bằng 0. Nói cách khác khi đó tất cả các hiển thị sẽ biến mất và con trỏ hoặc nhấp nháy sẽ nằm ở góc trái màn hình (ở dòng đầu tiên nếu là LCD hai dòng).
Cursor Home (Đưa con trỏ về vị trí đầu): Thiết lập bộ đếm địa chỉ bằng 0, và trả hiển thị về trạng thái gốc nếu nó bị dịch. Dữ liệu trong DDRAM không bị thay đổi. Con trỏ hoặc nhấp nháy sẽ nằm ở góc trái màn hình (ở dòng đầu tiên nếu là LCD hai dòng).
Entry Mode Set:
I/D: Tăng (I/D=1) hoặc giảm (I/D=0) địa chỉ DDRAM lên 1 khi mã ký tự được viết đến hoặc đọc từ DDRAM
Con trỏ hoặc nhấp nháy di chuyển sang phải khi tăng lên 1 và sang trái khi giảm đi 1. Giống nhau cho cả việc đọc và viết đến CGRAM.
S: Dịch mục hiển thị sang phải (I/D=0) hoặc sang trái (I/D=1) khi S là 1. Hiển thị sẽ không dịch nếu S=0.
S/C | R/L | |
0 | 0 | Dịch vị trí con trỏ sang trái (AC giảm 1) |
0 | 1 | Dịch vị trí con trỏ sang phải(AC tăng 1) |
1 | 0 | Dịch mục hiển thị sang trái. Con trỏ theo dịch theo hiển thị |
1 | 1 | Dịch mục hiển thị sang phải. Con trỏ theo dịch theo hiển thị |
Display On/Off Control (Điều khiển tắt/mở hiển thị):
D: Bật hiển thị khi D=1 và tắt khi D=0. Khi tắt, dữ liệu hiển thị vẫn nằm trong DDRAM, khi muốn hiển thị dữ liệu này ta chỉ cần thiết lập D=1.
C: Con trỏ được hiển thị khi C=1 và không hiển thị khi C=0. Thậm chí khi con trỏ không xuất hiện, chức năng I/D và thông số khác sẽ không thay đổi khi hiển thị dữ liệu được viết. Con trỏ được hiển thị sử dụng 5 dấu chấm của hàng thứ 8 (ký tự 5x8).
B: Ký tự được chỉ thị bởi con trỏ nhấp nháy khi b=1
Set DDRAM Address: lệnh này sẽ set địa chỉ DDRAM AAAAAAA vào bộ đếm địa chỉ
Dữ liệu DDRAM khi đó có thể viết hoặc đọc bởi vi điều khiển
Read Busy Flag and Address (lệnh đọc cờ bận và địa chỉ)
Cờ bận báo LCD đang xử lý lệnh trước đó, và nó sẽ không chấp nhận lệnh tiếp theo cho đến khi BF=0, do vậy phải kiểm tra cờ BF trước khi viết đến LCD. cùng lúc này giá trị của bộ đếm địa chỉ cũng được đọc. Bộ đếm địa chỉ này được sử dụng cho cả hai địa chỉ CG và DDRAM, và giá trị của nó được xác định bởi lệnh trước đó.
Write Data to CG or DDRAM (ghi dữ liệu đến CG hoặc DDRAM)
Các lệnh thường dùng trong giao tiếp với LCD
Các lệnh thường dùng trong giao tiếp với LCD
01H: Xóa toàn bộ nội dung đang hiển thị trên màn hình
02H: Dịch chuyển con trỏ về vị trí đầu màn hình
04H: Dịch con trỏ sang trái màn hình
05H: Dịch màn hình sang phải
06H: Tự động dịch con trỏ sang phải 1 vị trí mỗi khi xuất xong 1 ký tự ra màn hình
07H Dịch màn hình sang trái
08H: Tắt con trỏ, tắt hiển thị
0AH:Tắt hiển thị, bật con trỏ
0CH: Bật hiển thị và tắt cong trỏ
0EH: Bật hiển thị, nhấp nháy con trỏ
0FH: Tắt hiển thị, nhấp nháy con trỏ
10H: Dịch vị trí con trỏ sang trái
14H: Dịch vị trí con trỏ sang phải
18H: Dịch toàn bộ màn hình sang trái
1CH:Dịch toàn bộ màn hình sang phải
0E0H: Bật hiển thị và bật con trỏ
80H: Di chuyển con trỏ về đầu dòng 1
C0H: Di chuyển con trỏ về đầu dòng 2
38H: Giao tiếp 8 bit hiển thị 2 dòng với kích thước font 5x7
28H: Giao tiếp 4 bit hiển thị 2 dòng với kích thước font 5x7
Kết nối với LCD ở chế độ 4 bit:
02H: Dịch chuyển con trỏ về vị trí đầu màn hình
04H: Dịch con trỏ sang trái màn hình
05H: Dịch màn hình sang phải
06H: Tự động dịch con trỏ sang phải 1 vị trí mỗi khi xuất xong 1 ký tự ra màn hình
07H Dịch màn hình sang trái
08H: Tắt con trỏ, tắt hiển thị
0AH:Tắt hiển thị, bật con trỏ
0CH: Bật hiển thị và tắt cong trỏ
0EH: Bật hiển thị, nhấp nháy con trỏ
0FH: Tắt hiển thị, nhấp nháy con trỏ
10H: Dịch vị trí con trỏ sang trái
14H: Dịch vị trí con trỏ sang phải
18H: Dịch toàn bộ màn hình sang trái
1CH:Dịch toàn bộ màn hình sang phải
0E0H: Bật hiển thị và bật con trỏ
80H: Di chuyển con trỏ về đầu dòng 1
C0H: Di chuyển con trỏ về đầu dòng 2
38H: Giao tiếp 8 bit hiển thị 2 dòng với kích thước font 5x7
28H: Giao tiếp 4 bit hiển thị 2 dòng với kích thước font 5x7
Kết nối với LCD ở chế độ 4 bit:
HD44780U có thể nhận dữ liệu ở chế độ vận hành 4 bit hoặc 8 bit khi giao tiếp với vi điều khiển.
Khi sử dụng dao diện dữ liệu 4 bit, chỉ có 4 chân (DB4 đến DB7) được sử dụng để truyền. Các chân DB0 đến BD3 không sử dụng. Dữ liệu truyền giữa HD4478U và vi điều khiển được chia làm hai lần để hoàn thành truyền dữ liệu. Thứ tự truyền là 4 bit cao truyền trước, 4 bit thấp truyền sau .
Chế độ dữ liệu 8 bit, cả 8 đường dữ liệu (DB0 - DB7) được sử dụng
Trước khi sử dụng LCD ta phải khởi tạo nó theo lưu đồ sau
Trong CCS được tích hợp sẵn thư viện LCD. Để thực hiện giao tiếp các bạn chỉ cần gọi
#include <lcd.c>
Thư viện hỗ trợ các hàm:
lcd_init() Hàm khởi tạo LCD
lcd_putc(c) Xuất kí tự lên LCD
lcd_gotoxy(x,y) Đặt ví trí con trỏ( vị trí cần xuất ký tự) tại x của dong y(y=1 hoặc y=2)
lcd_getc(x,y) Đọc về giá trị tại x của dong y
lcd_cursor_on(int1 on) Bật vị trí con trỏ
lcd_set_cgram_char(w, *p) Hàm này dùng khi bạn xuất kí tự đặc biệt. Ví dụ chứ có dấu vào CGRAM.
Để xóa nội dung và đưa con trỏ về đầu dòng bạn xuất ký tự ‘f’.
Để về đầu dòng của dòng 2: ‘n’.
Về đầu dong của dòng hiện tại: ‘a’.
Để lùi về con trỏ về 1 ví trí so với vị trí hiện tại: ‘b’
Chú ý trước khi sử dụng bạn phải định nghĩa lại các chân sau cho thư viện:
LCD_ENABLE_PIN
LCD_RS_PIN
LCD_RW_PIN
LCD_DATA4
LCD_DATA5
LCD_DATA6
LCD_DATA7
#include <lcd.c>
Thư viện hỗ trợ các hàm:
lcd_init() Hàm khởi tạo LCD
lcd_putc(c) Xuất kí tự lên LCD
lcd_gotoxy(x,y) Đặt ví trí con trỏ( vị trí cần xuất ký tự) tại x của dong y(y=1 hoặc y=2)
lcd_getc(x,y) Đọc về giá trị tại x của dong y
lcd_cursor_on(int1 on) Bật vị trí con trỏ
lcd_set_cgram_char(w, *p) Hàm này dùng khi bạn xuất kí tự đặc biệt. Ví dụ chứ có dấu vào CGRAM.
Để xóa nội dung và đưa con trỏ về đầu dòng bạn xuất ký tự ‘f’.
Để về đầu dòng của dòng 2: ‘n’.
Về đầu dong của dòng hiện tại: ‘a’.
Để lùi về con trỏ về 1 ví trí so với vị trí hiện tại: ‘b’
Chú ý trước khi sử dụng bạn phải định nghĩa lại các chân sau cho thư viện:
LCD_ENABLE_PIN
LCD_RS_PIN
LCD_RW_PIN
LCD_DATA4
LCD_DATA5
LCD_DATA6
LCD_DATA7
4. Tạo một ký tự riêng hoặc hiển có dấu với text LCD bằng cách sử dụng vùng nhớ CGRAM
#include <16f877a.h> #device *=16 ADC=10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=12000000) #define LCD_ENABLE_PIN PIN_C2 #define LCD_RS_PIN PIN_C0 #define LCD_RW_PIN PIN_C1 #define LCD_DATA4 PIN_C3 #define LCD_DATA5 PIN_C4 #define LCD_DATA6 PIN_C5 #define LCD_DATA7 PIN_C6 #include <lcd.c> void lcd_load_custom_chars(void); //========================== void main() { lcd_init(); lcd_load_custom_chars(); lcd_gotoxy(1,1); lcd_putc(0); //HIEN THI MAT CUOI lcd_gotoxy(2,1); // hang 1 cot 2 printf(lcd_putc, "YTUONGNHANH.VN"); lcd_putc(0); // HIEN THI MAT CUOI lcd_gotoxy(1,2); // hàng 2 cot 1 lcd_putc(3); // hien thi cay hoa lcd_putc(3); // hien thi cay hoa lcd_putc(3); // hien thi cay hoa lcd_putc(3); // hien thi cay hoa lcd_gotoxy(9,2); // hàng 2 cot 9 lcd_putc(2); // hien thi trái tim lcd_gotoxy(13,2); // hàng 2 cot 1 lcd_putc(3); // hien thi cay hoa lcd_putc(3); // hien thi cay hoa lcd_putc(3); // hien thi cay hoa lcd_putc(3); // hien thi cay hoa while(1); } /* Bạn chèn đoạn ký tự tạo tại đây, tối đa là 8 ký tự */ /* Gọi ký tự tự tạo bằng hàm lcd_putc(char number) , ví dụ lcd_putc(number0)..... */ const int8 lcd_custom_chars[] = { // Char Number 0 mat cuoi 0b00000000, 0b00001010, 0b00000000, 0b00000100, 0b00010001, 0b00001110, 0b00000000, 0b00000000, //Char Number 1 mat buon 0b00000000, 0b00001010, 0b00000000, 0b00000100, 0b00000000, 0b00001110, 0b00010001, 0b00000000, // Char Number 2 : Trai tim 0b00001010, 0b00011111, 0b00011111, 0b00001110, 0b00000100, 0b00000000, 0b00000000, 0b00000000, // Char Number 3 :Cay hoa 0b00001110, 0b00010001, 0b00001110, 0b00000100, 0b00011111, 0b00000100, 0b00011011, 0b00000000, // Char Number 4 -- Mui ten len 0b00000100, // .....O.. 0b00001110, // ....OOO. 0b00011111, // ...OOOOO 0b00000100, // .....O.. 0b00000100, // .....O.. 0b00000100, // .....O.. 0b00000100, // .....O.. 0b00000000, // ........ // Char Number 5 -- Mui ten xuong 0b00000100, // .....O.. 0b00000100, // .....O.. 0b00000100, // .....O.. 0b00000100, // .....O.. 0b00011111, // ...OOOOO 0b00001110, // ....OOO. 0b00000100, // .....O.. 0b00000000, // ........ // Char Number 6 -- Do C 0b00001100, // ....OO.. 0b00010010, // ...O..O. 0b00010010, // ...O..O. 0b00001100, // ....OO.. 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ // Char Number 7 -- Khoang Trang 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ 0b00000000, // ........ }; void lcd_load_custom_chars(void) { int8 i; //Thiết lập địa chỉ con trỏ về CGRAM lcd_send_byte(0, 0x40); // Nạp dữ liệu ký tự tự tạo vào CGRAM . // Bộ nhớ chỉ chứa tối đa 8 ký tự . for(i = 0; i < sizeof(lcd_custom_chars); i++) { lcd_send_byte(1, lcd_custom_chars[i]); } //Thiết lập địa chỉ con trỏ về DDRAM lcd_send_byte(0, 0x80); } |
Hướng dẫn phần mềm xuất số nhị phân cho các ký tự tự tạo cho màn hình LCD
Vẽ ký tự riêng muốn hiển thị lên LCD (Lưu ý do màn hình là 5 x7 dot, nên chỉ vẽ trong phần 5 cột (tính từ phải qua) và 7 hàng (tính từ trên xuống)
Nhấn nút Tạo code.
Nhấn nút Ký tự tiếp.
Lặp lại vậy cho đến hoàn thành 8 ký tự (tối đa) hoặc ít hơn.
Copy mảng ký tự vừa tạo vào đoạn code của chúng ta.
Gọi ký tự hiện thị ra LCD và kiểm tra.
Không có nhận xét nào:
Đăng nhận xét