Hướng dẫn hiển thị LCD dùng ccs cho người mới bắt đầu

Thảo luận trong 'Họ PIC -> dsPIC'

Đang xem chủ đề này ( Thành viên: 0, Khách: 1)

  1. mta_cdt

    mta_cdt Super Moderator Staff Member

    Tham gia ngày:
    10/8/12
    Bài viết:
    2,887
    Đã được thích:
    3,582
    Điểm thành tích:
    113
    Giới tính:
    Nam
    trước hết tìm hiểu 1 chút về LCD.
    LCD là màn hình dùng để hiển thị ký tự phổ biến hiện nay.
    lcd1.
    lcd dạng text gồm 16 chân thứ tự và chức năng từng chân được ma tả bảng dưới
    lcd2.
    LCD có 2 chế độ hiển thị là 4 bit và 8 bit. Trong ccs có hỗ trợ sẵn thư viện 4 bít khá hay.
    Sơ đồ kết nối LCD với vi điều khiển
    lcd6.
    ở chế độ 4 bit chỉ cần dùng 3 chân điều khiển là RS,RW,EN và 4 chân dữ liệu D4,D5,D6,D7. Nếu dùng để hiển thị lên lcd có thể nối chân RW với GND.
    - CCS hỗ trợ thư viện LCD 4 bit khá hay bạn có thể xem ở thư mục sau khi cài đặt xong. Mặc định là
    C:\Program Files\PICC\Drivers chọn tệp LCD.c

    các hàm điều khiển lcd
    -lcd_init(): Khởitạo LCD, gọi 1 lần trong hàm main
    - lcd_gotoxy(int8 x, int8 y) : Hiển thị tại vị trí cột x , hàng y bắt đầu ở x=1, y=1
    - lcd_send_byte(BYTE address, BYTE n) Gửi 1 byte n đến lcd, address=0: thao tác lệnh, address=1: thao tác dữ liệu
    -BYTE lcd_read_byte(void) : đọc về 1 byte
    -lcd_putc(char c) : Gửi các ký tựl ên lcd
    -char lcd_getc(int8 x, int8 y) : Đọc ký tự tại cột x, hàng y

    Viết chương trình phải định nghĩa các pin sử dụng lcd và gọi hàm thư viện lcd.c
    cụ thể bạn có thể xem code mình làm.
    Mã:
    #include <16F877a.h>
    #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
    #use delay(clock=20000000)
    
    #define LCD_ENABLE_PIN PIN_B2 // chan E noi voi B2
    #define LCD_RS_PIN PIN_B0    // RS noi voi B0
    #define LCD_RW_PIN PIN_B1
    #define LCD_DATA4 PIN_B4    //D4 noi voi B4
    #define LCD_DATA5 PIN_B5
    #define LCD_DATA6 PIN_B6
    #define LCD_DATA7 PIN_B7
    
    #include <lcd.c>// su dung thu vien lcd.c
    
    void main(void)
    {
    lcd_init();
    while(1)
    {
    lcd_gotoxy(3,1); // cot 3 hang 1
    lcd_putc("MTA_CDT"); // hien thi test lcd
    lcd_gotoxy(1,2);            // cot 1 hang 2
    lcd_putc(1+48);              // hien thi so 1
    }
    
    }
    2013-09-28_214022.
     

    Các file đính kèm:

    Last edited: 28/9/13
    An Hoàng Văn, nguyentich, porco_rosso9 others thích bài này.
  2. vietan111

    vietan111 Kỹ sư

    Tham gia ngày:
    15/8/13
    Bài viết:
    391
    Đã được thích:
    82
    Điểm thành tích:
    28
    Giới tính:
    Nam
    like mạnh cho anh lành
     
  3. tiennam191

    tiennam191 Kỹ sư

    Tham gia ngày:
    24/8/12
    Bài viết:
    277
    Đã được thích:
    424
    Điểm thành tích:
    63
    Giới tính:
    Nam
    Nghề nghiệp:
    Viện Công Nghệ Điện Tử
    Nơi ở:
    LINH KIỆN ĐIỆN TỬ E - GROUP
    cái thư viện lcd.c này tùy phiên bản của pic ccs thôi anh ak, điển hình là bản PIC CCS 4.104 thì hỗ trợ. còn phiên bản thấp hơn thì không có phần khai báo chân LCD, nó mặc định là EN,RW,RS ở PORTE, còn D4->D7 ở portD.
     
    An Hoàng Văn, danhnha, yokatta3 others thích bài này.
  4. mta_cdt

    mta_cdt Super Moderator Staff Member

    Tham gia ngày:
    10/8/12
    Bài viết:
    2,887
    Đã được thích:
    3,582
    Điểm thành tích:
    113
    Giới tính:
    Nam
    tập lệnh cho LCD
    lcd4.
    đây là bảng 1 số lệnh của lcd.
    vd để xóa màn hình gọi lệnh
    lcd_send_byte(0,0x01);
     
    An Hoàng Văn, yokattathuy1811 thích bài này.
  5. phungduchiep

    phungduchiep Kỹ sư

    Tham gia ngày:
    8/5/13
    Bài viết:
    286
    Đã được thích:
    130
    Điểm thành tích:
    43
    Giới tính:
    Nam
    vd để trở về đầu dòng ,ta gọi lệnh :
    lcd_send_byte(0,0x02); có phải ko ạ :-(||>
     
  6. mta_cdt

    mta_cdt Super Moderator Staff Member

    Tham gia ngày:
    10/8/12
    Bài viết:
    2,887
    Đã được thích:
    3,582
    Điểm thành tích:
    113
    Giới tính:
    Nam
    đúng rồi đấy bạn ah
     
    yokatta thích bài này.
  7. phungduchiep

    phungduchiep Kỹ sư

    Tham gia ngày:
    8/5/13
    Bài viết:
    286
    Đã được thích:
    130
    Điểm thành tích:
    43
    Giới tính:
    Nam
    tắt hiển thị ,gọi con trỏ ,ta dùng lệnh :
    lcd_send_byte(0,0x0a);
    ép con trỏ về đầu dòng thứ 2 :
    lcd_send_byte(0,0xC0);
    có đúng ko ạ #:-s
     
  8. mta_cdt

    mta_cdt Super Moderator Staff Member

    Tham gia ngày:
    10/8/12
    Bài viết:
    2,887
    Đã được thích:
    3,582
    Điểm thành tích:
    113
    Giới tính:
    Nam
    cái này bạn cứ thử đi xem đúng không?
     
  9. phungduchiep

    phungduchiep Kỹ sư

    Tham gia ngày:
    8/5/13
    Bài viết:
    286
    Đã được thích:
    130
    Điểm thành tích:
    43
    Giới tính:
    Nam
    :)) em hóng chút rồi đi ôn bài ko mai thi rồi ,để thi xong emvex thử coi sao , mà chương trình bên trên em thấy giống code avr ạ , còn cái câu lệnh này thì cũng nhét vào như mấy câu lệnh trong chương trình trên ạ ?
     
  10. mta_cdt

    mta_cdt Super Moderator Staff Member

    Tham gia ngày:
    10/8/12
    Bài viết:
    2,887
    Đã được thích:
    3,582
    Điểm thành tích:
    113
    Giới tính:
    Nam
    cũng nhét vào như vậy thôi mà. Anh viết cho pic đấy chứ có phải avr đâu
    .
     
    yokatta thích bài này.

Chia sẻ trang này