LCD bị lỗi lệnh

cái lcd nó bị gì ấy, 3 lệnh hiển thị đúng, lệnh thứ 3 thế này, mong ae chỉ giáo. Mà có cách nào chèn ảnh vào câu hỏi không

Nút thứ 7 trên cái thanh nằm trên phần cmt của bạn chính là chỗ up ảnh đó =))

Delay có đủ thời gian không, có thể nó ko kịp nhận lệnh
Bạn post mỗi cái hình thế này code lcd không có, hình thì không full thì giúp cũng không đc

code ạ

#include <REGX52.H>
/*
0x01  xoa toan bo hien thi
0x02 di chuyen con to ve vi tri dau
0x03 tu dong chuyen con tro den vi tri tiep theo
0x0c bat hien thi va tat con tro
0x0e bat hien thi va con tro
0x80 di chuyen con tro ve dong 1 
0xc0 di chuyen con tro ve dong 2
0x38 giao tiep 8 bit
0x28 giao tiep 4 bit 
 */

 #define RS P2_0
 #define E P2_1

 #define data P3

 // delay
 void delay(int time){
 int x,y;
 for(x=0;x<time;x++) for(
 y=0;y<123;y++
 );
  }
  // lenh
 void lenh(char byte){
 RS=0;
 data =byte;
 E=0;
 E=1;
 delay(2);
 }
 // ky tu
 void kytu(char bytekytu){
 RS=1;
 data=bytekytu;
 E=0;
 E=1;
 delay(1);
 }
 // mang ky tu
 void mangkytu(char * mangkytu){
 int i;
while(mangkytu[i] != 0){
kytu(mangkytu[i]);
i++;
}
}
// main


 void main(){
 lenh(0x0E);		
 kytu('a');
 delay(2000);
lenh(0x01);
mangkytu("sao vay nhi  ");
delay(3000);
lenh(0x01);
mangkytu("sao vay troi");
delay(1000);

 while (1); 
 }

Trước khi sử dụng LCD phải khởi tạo đã

void LCD_Init() {
	LCD_Cmd(0x30);
	Delay_ms(5);
	LCD_Cmd(0x30);
	Delay_ms(1);
	LCD_Cmd(0x30);
	LCD_Cmd(0x38); // 0x2# la 4 bit 0x38 la 8 bit, 2 dong 5x8

	LCD_Cmd(0x01); //Xoa man hinh

	LCD_Cmd(0x0C); //Bat hien thi va tat con tro
}

Sao lại delay 5ms :stuck_out_tongue:

1 Like

thanks các anh. Mà em đâu có lập trình pic đâu

Vấn đề là thuật toán điều khiển.
Lập trình bằng gì không quan trọng.

1 Like

hihi em lap trình cho 8051.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?