Lập Trình Giao Tiếp LCD16x2 Cho AVR Trên CodeVisionAVR

Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR

Chào các bạn, hôm nay chúng ta tìm hiểu về LCD16x2 và làm thế nào để giao tiếp với nó. LCD được cấu tạo theo kiểu module có chip driver và màn hình LCD, đèn nền... Việc giao tiếp với chip driver là giao tiếp song song, có 2 chế độ giao tiếp là 8bit và 4bit, ta sử dụng kiểu 4bit vì ít chân giao tiếp hơn. Tại sao nó là LCD16x2 là vì màn hình LCD hiển thị được 16 ký tự trên một dòng và có 2 dòng, tương tự 16x4... lưu ý LCD12864 là màn hình sử dụng điểm ảnh pix có 128 điểm hàng ngang và 64 điểm hàng dọc dạng matrix. Có rất nhiều loại LCD nhưng bài hôm nay sẽ nói về LCD16x2.

Trong CodeVisionAVR được tích hợp sẵn thư viện cho LCD, chúng ta chỉ việc khai báo các hàm và sử dụng chúng. Ngoài ra CVAVR còn cho ta thay đổi cũng như cài đặt chân giao tiếp trong Setting của Project, việc cài đặt các bạn làm như sau:

B1: Vào Project chọn Configure trên thanh trình đơn của phần mềm

B2: Chọn các Tab tương ứng như hình:

Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR - SangTaoClub.Net

Các bạn chọn các chân giao tiếp với LCD tươg ứng, chú ý là không được sử dụng các chân đã set cho các kết nối khác, ở trên sử dụng PORTD của ATmega8 làm ví dụ.

B3: Cuối cùng bấm OK để hoàn tất thay đổi, rồi các bạn chuyển sang phần code.

Ngoài thư viện của chip ta sẽ chèn thêm 2 thư viện là alcd.h và delay.h cả hai thư viện này đều dùng cho giao tiếp LCD.

Các hàm giao tiếp LCD trong thư viện alcd.h:

lcd_init(16); //Hàm khởi tạo LCD, ta truyền tham số 16 nghĩa là khởi tạo cho LCD16x2

lcd_puts("Nội dung"); //Hàm truyền chuỗi nội dung lên LCD

lcd_putchar(ký_tự); //Hàm truyền 1 ký tự lên LCD

lcd_gotoxy(X,Y); //Hàm chọn vị trí hiển thị, trong đó X là vị trí từ 0-15, Y là dòng 0-1

lcd_clear(); //Hàm xóa trắng màn hình

Code mẫu sẽ như sau:

#include <mega8.h> //Thu vien chip ATmega8#include <delay.h> //Thu vien ham delay#include <alcd.h> //Thu vien ham LCDvoid main() //Chuong trinh chinh{ lcd_init(16); //Khoi tao LCD 16x2 delay_ms(500); //Tao tre lcd_puts("SangTaoClub.Net"); //Gui chuoi len LCD delay_ms(1000); lcd_clear(); //Xoa man hinh lcd_puts("Test LCD for AVR"); delay_ms(500); lcd_gotoxy(0,1);//Tro toi vi tri dau tien dong 2 lcd_puts("0123456789"); delay_ms(500); lcd_gotoxy(13,1); lcd_puts("OK!"); while(1); //CPU stop}

Mạch mô phỏng ví dụ:

Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR - SangTaoClub.Net

OK! Các bạn tải code và mô phỏng ví dụ trên về trong File đính kèm cuối bài viết.

Tải về đính kèm: AVR_LCD16x2.zipKích thước: 62.22 KB

Từ khóa » Thư Viện Avr