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...
  • Mạch LED pháo hoa WIFI

    Mạch LED pháo hoa WIFI

    Hỗ trợ nhiều loại IC LED, hiệu ứng đồng bộ âm thanh, cập nhật phần mềm không dây...

  • Mạch LED pháo hoa WIFI

    Mạch LED pháo hoa WIFI

    Hỗ trợ nhiều loại IC LED, hiệu ứng đồng bộ âm thanh, cập nhật phần mềm không dây...

  • Hướng dẫn làm LED trái tim V2 phát nhạc đơn âm

    Hướng dẫn làm LED trái tim V2 phát nhạc - Click here!

    LED trái tim sử dụng công nghệ mới, phát nhạc đơn âm, nhiều hiệu ứng đẹp mắt, hỗ trợ điều khiển chữ I-L-U và đường viền 3bit, có hiệu ứng sáng dần và tắt dần PWM...

  • Đồng hồ vạn niên viền 60 LED nháy theo giây

    Đồng hồ vạn niên viền 60 LED nháy theo giây

    Phiên bản đồng hồ sáng tạo nhất, tích hợp rất nhiều tính năng vào trong một chiếc đồng hồ. Hiển thị ngày theo dương lịch, hiển thị giờ, hiển thị nhiệt độ, 8 hiệu ứng viền nháy theo giây, hẹn giờ đa chức năng, báo giờ,...

  • Robot khiêu vũ theo nhịp nhạc

    Robot khiêu vũ theo nhịp nhạc

    Sản phẩm sáng tạo đã đạt giải sáng tạo trẻ do tỉnh Bắc Giang tổ chức và giải Festival sáng tạo trẻ toàn quốc năm 2012

  • Mạch bảo vệ thông minh qua điện thoại

    Mạch bảo vệ thông minh qua điện thoại

    Thiết bị chống trộm và điều khiển thông minh qua mạng GSM bằng tin nhắn và gọi điện. Sản phẩm đã đạt giải nhất cuộc thi sáng tạo năm 2012 do tỉnh Bắc Giang tổ chức.

  • LED DANCE PRO - LED nháy theo nhạc

    LED DANCE PRO - LED nháy theo nhạc

    Nháy 24 cột bằng Matrix 8x24, chạy chữ khi không có nhạc, thay đổi nội dung qua giao tiếp RS232. Sản phẩm đang trong quá trình phát triển...

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: 322/322
  • Thành viên: 9.972
  • Đang online: 3
  • Khách hôm nay: 2.026
  • Khách hôm qua: 3.506
  • Tổng khách: 12.572.232
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: 17.706

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: 190
    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: 8.959
    [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: 15.021
    [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: 47.919
    [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: 18.994
    [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: 16.972
    [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: 6.997
    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: 16.915
    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: 17.141
    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: 13.642
    
    Chào mừng Tuanguitarbass đã 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 nguyenvanvinh, tungk1, bachnh83, nhokyb, hieuhuhong28, Kimhetona, nhokcady, kunbuon9x, huyhoang9494, thienhoa, nfs28794, danguang, sangtaohiha_08, smileyhb, dinhvuong20134674, supperleo, huypham, cojQT2k1, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 3.235.120.150 ***** Status: Cache Update thành công!