Chào mừng đến với Câu Lạc Bộ Sáng Tạo
Chia sẻ kinh nghiệm
Kết nối đam mê
Đang cập nhật thời gian...
BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Chia sẻ trang




Chuyên mục
Bài mới
Xem nhiều
Thống kê
  • Bài viết: 334/334
  • Thành viên: 10.085
  • Đang online: 9
  • Khách hôm nay: 173
  • Khách hôm qua: 3.625
  • Tổng khách: 16.183.129
Bài viết
[Bài 4] Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR - SangTaoClub.Net
[Bài 4] Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR
Đăng bởi: Vũ Văn Thái - Thời gian: 22-06-2014, 10:42
Chuyên mục: Học lập trình AVR - Lượt xem: 24.147

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 LCD
void 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.zip
Kích thước: 62.22 KB
  • Bạn chưa đăng nhập, không thể viết bình luận!
    Bấm vào đây để Đăng nhập hoặc Đăng ký!
  • giusetung71 lúc 11-08-2017, 21:32
    Cảm ơn bạn mình sẽ xem tất. Cả lại dẻ xem nó thế nào
  • Vũ Văn Thái lúc 11-08-2017, 18:18
    Không có chuyện set low mà nó có áp 1.5V đâu bạn nha, bạn kiểm tra lại phàn cứng xem có bị hở mạch hay chập mạch k, rồi mới kiển tra tới code xem câú hình đã đúng chưa (thanh ghi điều hướng).
  • giusetung71 lúc 10-08-2017, 19:32
    Chào các bạn,các bạn vui lòng cho minh hỏi khi minh kết nối các chân EN,RW,RS với vi điều khiển thì mình đo điện ở các chân trên như sau
    EN=1.5v,chân RW=5v,chân RS=0v, trong khi viết chương trình thi tất cả 3 chân này đều là 0v
    Như vậy là nó bị làm sao,các bạn biết chỉ dùm mình với, mình cảm ơn rất nhiều
  • Trang 1/1: 1

    Bài viết cùng chuyên mục
    ATMG16 giao tiếp với LCD ATMG16 giao tiếp với LCD
    Đăng bởi: haydayanh - Thời gian: 04-06-2021, 22:33
    Chuyên mục: Học lập trình AVR - Lượt xem: 2.680
    Hướng dẫn làm KIT AVR đơn giản Hướng dẫn làm KIT AVR đơn giản
    Đăng bởi: Vũ Văn Thái - Thời gian: 25-10-2014, 09:39
    Chuyên mục: Học lập trình AVR - Lượt xem: 11.061
    [Bài 6] Lập trình giao tiếp USART và RS232 với AVR [Bài 6] Lập trình giao tiếp USART và RS232 với AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 15-08-2014, 15:25
    Chuyên mục: Học lập trình AVR - Lượt xem: 19.125
    [Bài 5] Lập trình ADC - Đo nhiệt độ dùng LM35 hiển thị LCD với AVR [Bài 5] Lập trình ADC - Đo nhiệt độ dùng LM35 hiển thị LCD với AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 25-06-2014, 10:17
    Chuyên mục: Học lập trình AVR - Lượt xem: 57.818
    [Bài 3] Lập trình ngắt cho AVR trên CodeVisionAVR [Bài 3] Lập trình ngắt cho AVR trên CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 16-06-2014, 14:06
    Chuyên mục: Học lập trình AVR - Lượt xem: 23.176
    [Bài 2] Tìm hiểu bộ Timer-Counter trên AVR [Bài 2] Tìm hiểu bộ Timer-Counter trên AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 15-06-2014, 11:55
    Chuyên mục: Học lập trình AVR - Lượt xem: 20.607
    [Bài 1] Xuất nhập Port đơn giản cho AVR [Bài 1] Xuất nhập Port đơn giản cho AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 29-05-2014, 21:22
    Chuyên mục: Học lập trình AVR - Lượt xem: 9.828
    Hướng dẫn set fuse bit cho AVR Hướng dẫn set fuse bit cho AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 16-05-2014, 22:09
    Chuyên mục: Học lập trình AVR - Lượt xem: 22.630
    Mạch nạp ISP cho vi điều khiển AVR và 89S Mạch nạp ISP cho vi điều khiển AVR và 89S
    Đăng bởi: Vũ Văn Thái - Thời gian: 10-05-2014, 12:22
    Chuyên mục: Học lập trình AVR - Lượt xem: 20.752
    Lập trình C trong CodeVisionAVR Lập trình C trong CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 28-04-2014, 19:30
    Chuyên mục: Học lập trình AVR - Lượt xem: 17.138
    
    Chào mừng hieutrang đã tham gia câu lạc bộ sáng tạo!
    Vũ Văn Thái - vuthai
    Hôm nay là sinh nhật của thien_tai_bk, nguyenvanly10153023, congnam1994, Tubaden, phamvanle, tranhung_09, kakaricardo, kakuta827, minhtrieudtv, tranconganhtu, ngochoanvfone, vantung2004, huynhngoctan_04dhdt, superprofessorA30, ntt762001, huynhngoctan95, phamnhatcuongddt, quangthang25, nguyenhuuphuoc2096, tan00123, gauxam, hvhieu, music1234, huynhngoctan, malacuda, NguyenCuong, caotrungtruc2041996, Quachdaik, Nhattanfc, minhk45, hoangthuong052, trancaoson181945, tuphuong, sangtaoclup_96, khaiptc2, Ngoctram27, no1bestrivenpt, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 18.217.116.183 ***** Status: Cache Update thành công!