giao tiếp LCD với 8951giao tiếp LCD với 8951vgiao tiếp LCD với 8951giao tiếp LCD với 8951giao tiếp LCDgiao tiếp LCD với 8951 với 8951 giao tiếp LCD với 8951giao tiếp LCD với 8951giao tiếp LCD với 8951giao tiếp LCD với 8951
1 Sơ đồ chân LCD Nguyên lí hoạt động LCD Sơ đồ chân 89C51 Lưu đồ tuật toán Code Bảng mô tả sơ đồ chân LCD 16x2: Chân Ký hiệu I/O Mô tả Vss - Mass Vcc - Dương nguồn 5v VEE - Cấp nguồn điều khiển tương phản RS I RS=0 chon ghi lệnh RS=1 chon ghi liệu R/W I R/W=1 đọc liệu, R/W=1 ghi E I/O Cho phép DB0 I/O Bit liệu DB1 I/O Nt DB2 I/O Nt 10 DB3 I/O Nt 11 DB4 I/O Nt 12 DB5 I/O Nt 13 DB6 I/O Nt 14 DB7 I/O Nt Chân 15 16 A K Nó nối với chân Led dùng để sáng LCD bóng tối không sử dụng - Sơ đồ ghép nối LCD với vi điều khiển: Nguyên lí hoạt động LCD : - Chân VCC, Vss, VEE: chân VCC VSS cáp dương nguồn 5v mass tương ứng Chân VEE dùng để điều khiển độ tương phản - Chân chọn ghi RS(Register Select): có ghi LCD chân RS dùng để chọn ghi RS=0 ghi mã lệnh chọn phép người dùng gửi lệnh lên chẳng hạn xoá hình, đưa trỏ đầu dòng… Nếu RS=1 ghi liệu chọn cho phép người dùng gửi liệu cần hiển thị lên LCD - Chân đọc/ghi (R/W): đầu vào đọc/ghi cho phép người dùng đọc thông tin từ LCD R/W=1 ghi thông tin lên LCD - Chân cho phép E(Enable): chân cho phép sử dụng LCD để chốt liệu Khi liệu cấp đến chân liệu xung mức cao xuống thấp phải áp đến chân để LCD chốt liệu chân liệu Xung có độ rộng tối thiểu 450ns - Chân DB0-DB7: đường liệu bít, dùng để gửi thông tin lên LCD đọc nội dung ghi LCD Để hiển thị chữ số, gửi mã ASCII chữ từ A đến Z , a đến z chữ số từ đến đến chân bật - Bảng mã lệnh LCD: Mã (HEX) Lệnh đến ghi LCD 01 Xoá hình hiển thị 02 Trở đầu dòng 04 Giảm trỏ(dịch trỏ sang trái ) 06 Tăng trỏ(dịch trỏ sang phải) 05 Dịch hiển thị sang phải 07 Dịch hiển thị sang trái 08 Tắt trỏ, tắt hiển thị 0a Tắt hiển thị, bật trỏ 0c Bật hiển thi, tắt trỏ 0e Bật hiển thị, nhấp nháy trỏ 0f Tắt trỏ, nhấp nháy trỏ 10 Dịch vị trí trỏ sang trái 14 Dịch vị trí trỏ sang phải 18 Dịch toàn hiển thị sang trái 1c Dịch toàn hiển thị sang phải 80 Ép trỏ đầu dòng thứ 0c0 Ép trỏ đầu dòng thứ SƠ ĐỒ, CHỨC NĂNG LIÊN KẾT CÁC CHÂN CỦA LCD Chân Kí hiệu I/O VSS - VCC - Mô tả Đất Chân cấp nguồn cho LCD, thiết kế mạch ta nối chân với VCC=5V mạch điều khiển VEE - RS I Cấp nguồn điều khiển độ tương phản Chân chọn ghi (Register select) Nối chân RS với logic “0” (GND) logic “1” (VCC) để chọn ghi + Logic “0”: Bus DB0-DB7 nối với ghi lệnh IR LCD (ở chế độ “ghi” - write) nối với đếm địa LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 nối với ghi liệu DR bên LCD R/W I Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động chế độ ghi, nối với logic “1” để LCD chế độ đọc E I/O Chân cho phép (Enable) Sau tín hiệu đặt lên bus DB0-DB7, lệnh chấp nhận có xung cho phép chân E + Ở chế độ ghi: Dữ liệu bus LCD chuyển vào(chấp nhận) ghi bên phát xung (high-to- low transition) tín hiệu chân E + Ở chế độ đọc: Dữ liệu LCD xuất DB0-DB7 phát cạnh lên (lowto- high transition) chân E LCD giữ bus đến chân E xuống mức thấp 7÷14 DB0÷DB I/O 14 Tám đường bus liệu dùng để trao đổi thông tin với MPU Có chế độ sử dụng đường bus : + Chế độ bit : Dữ liệu truyền đường, với bit MSB bit DB7 + Chế độ bit : Dữ liệu truyền đường từ DB4 tới DB7, bit MSB DB7 SƠ ĐỒ CHÂN CỦA AT89C51 LƯU ĐỒ GIẢI THUẬT BẮT ĐẦU CHƯƠNG TRÌNH DELAY KHỞI TẠO CÁC PORT VÀO RA CHO AT89C51 THIẾT LẬP CÁC LỆNH KẾT NỐI CHO LCD CHƯƠNG TRÌNH CHÍNH CHƯƠNG TRÌNH CHO LCD XỬ LÝ DỮ LIỆU HIỂN THỊ LÊN LCD KẾT THÚC NHẤN PHÍM 5.Chương trình: /*=========bo tien xu li===============*/ #include #include /*===========khai bao bien toan cuc============*/ sfr LCDdata = 0xA0; // cong P2, bit du lieu sbit BF = 0xA7; // co ban, bit DB7 sbit RS = P3^0; // chon ghi sbit RW = P3^1; // doc/ghi sbit EN = P3^2; //cho phep chot du lieu /* kiem tra su san sang cua LCD */ void wait(void) { RS=0; //chon ghi lenh RW=1; //đoc tu LCD LCDdata=0xff; //gia tri 0xff while(BF) //kiem tra co ban { EN=0; //dua xung cao xuong thap đe chot EN=1; //dua chan cho phep len cao } } /* thiet lap lenh cho LCD */ void LCDcontrol(unsigned char x) { RS=0;//chon ghi lenh RW=0;//ghi len LCD LCDdata=x ;// gia tri x EN=1;//cho phep muc cao EN=0;//xung cao xuong thap wait();//đoi LCD san sang } /* Khoi tao LCD -*/ void LCDinit(void) { LCDcontrol(0x38);//2 dong va ma tran 5x7 LCDcontrol(0x0e);//bat man hinh, bat tro LCDcontrol(0x01);//xoa man hinh } /* -thiet lap du lieu cho LCD -*/ void LCDwrite(unsigned char c) { RS=1;//ghi du lieu RW=0;//ghi du lieu len LCD LCDdata=c;//gia tri C EN=1;//cho phep muc cao EN=0;//xung cao xuong thap wait();//cho } void LCDwrites(unsigned char *s) { unsigned char data lens,count; lens=strlen(s); for(count=0;count[...]... for(count=0;count