Bạn chưa hiểu chỗ nào? Theo mình trong chương trình này có 2 chương trình con, cái thứ nhất
Code:
void LCD_CMD(unsigned char CMD)
{
// LCDdelayms(1);
unsigned char TempData;
LCD_RS = 0; //Dat che do xuat lenh
TempData = LCD_DATA & 0xFFF0; //Lay trang thai hien thoi cua LCD_DATA
LCD_DATA = TempData | (CMD>>4); //Xuat 4 bit cao
LCD_EN = 1; ShortDelay(); LCD_EN = 0; //Xung Enable
TempData = LCD_DATA & 0xFFF0; //Lay trang thai hien thoi cua LCD_DATA
LCD_DATA = TempData| (CMD & 0x0F); //Xuat 4 bit thap
LCD_EN = 1; ShortDelay(); LCD_EN = 0; //Xung Enable
}
dùng để gửi một lệnh lên LCD, mã lệnh được truyền vào bằng tham số CMD, LCD hoạt động ở chế độ 4 bit
Dòng LCD_RS = 0; là đặt chế độ xuất lệnh
Dòng TempData = LCD_DATA & 0xFFF0; là đọc trạng thái của LCD và đồng thời xóa 4 bít thấp của trạng thái đọc về bằng phép &
Dòng LCD_DATA = TempData | (CMD>>4); là xuất 4 bít cao của lệnh bằng cách sử dụng lệnh OR bit và lệnh dịch bít để thu được 4 bít cao vào vị trí của 4 bít thấp trong TempData đã xóa ở lệnh trước
Hàm ShortDelay(); là để tạo thời gian trễ đảm bảo đủ thời gian đáp ứng của LCD
các lệnh và hàm còn lại cũng tuơng tự thế thôi