#include #include #define LCDdata P2sbit RS=P1^0;sbit RW=P1^1;sbit E=P1^2;sbit BF=0xA7;void delay(long time)long n;for(n=0;n;void lcd_wait()long n=0;E=1;RS=0; //ghi lenhRW=1; // doc dlLCDdata=0xff;while(BF) // bit bann++;if(n>100)break;E=0;RW=0;void lcd_control(unsigned char x)E=1;RS=0;RW=0;LCDdata=x;E=0;lcd_wait();void lcd_init()lcd_control(0x30);lcd_control(0x30);lcd_control(0x30);lcd_control(0x38);lcd_control(0x0c);lcd_control(0x06);lcd_control(0x01);void lcd_writedata(unsigned char c) RS=1; RS=0; LCDdata=c; E=1; E=0; delay(1000);void lcd_write()unsigned char i;E=1;RS=1;RW=0;LCDdata=i;E=0;lcd_wait();void lcd_puts(unsigned char *s) while (*s) lcd_writedata(*s); s++;
// CAC CHUONG TRINH GIANH cho LCD// đắm đuối kiem tra banvoid ban() P0=0xFF; Rs=0; Rw=1; while(Bf) En=0;delay(1);En=1; // mê mệt ghi lenhvoid lenh(unsigned char x) ban(); P0=x; Rs=0; Rw=0; delay_us(50); En=1; delay_us(50); En=0;// tê mê ghi du lieuvoid kitu(unsigned char x) ban(); P0=x; Rs=1; Rw=0; delay_us(50); En=1; delay_us(50); En=0;// mê man ghi chuoivoid chuoi(unsigned char *s) char i; for(i=0;i kitu(s); // đắm đuối ghi cham 1 chuoivoid chuoi_cham(unsigned char *s) char i; for(i=0;i kitu(s);delay(75); // say mê khoi tao LCDvoid khoitao() lenh(0x38); lenh(0x0c); lenh(0x01); lenh(0x80);
Cho bản thân hỏi nguyên nhân bạn viboyth.haui lại xen vào giữa lệnh chốt hàm delay_us(50); delay_us(50);En=1;delay_us(50);En=0;
Mọi bạn xem góp em đoạn code em từ viết bao gồm sai sót gì k? sao mà cắm mạch thực tiễn k chạy, nhưng mà mô rộp thì ngon lành#include#include//==========================#define LCDdata P2#define DB7 P2_7#define RS P1_0#define RW P1_1#define E P1_2#define sensor P3_2//============================unsigned char pi=3.14;unsigned char l,S,j,fi,R,n;unsigned int i;void delay(unsigned int ms) for(i=0;i for(j=0;j //=================================void wait(void) RS=0;RW=1;LCDdata=0xff;while(DB7) E=0; E=1;//================================void LCDcontrol(unsigned char x) RS=0; RW=0; LCDdata=x; E=1; E=0; wait();//===============================void LCDinit(void) LCDcontrol(0x38); LCDcontrol(0x0e); LCDcontrol(0x01);//=====================================void LCDwrite(unsigned char y) RS=1; RW=0; LCDdata=y; E=1; E=0; wait();//=====================================void LCDwrites(unsigned char *z) unsigned char data dai,dem; dai=strlen(z); for(dem=0;dem LCDwrite(*(z+dem)); //===============================void ngat_INT0(void) interrupt 0 l=1;//(2*pi*R*n)/360 // n: so goc giua 2 khe; R:ban ghê dia sensorS+=l;LCDcontrol(0xc0); LCDwrites("S=");LCDwrite((S/1000000)+48);LCDwrite(((S%1000000)/100000)+48);LCDwrite((((S%1000000)%100000)/10000)+48);LCDwrite(((((S%1000000)%100000)%10000)/1000)+48);LCDwrite((((((S%1000000)%100000)%10000)% 1000)/100)+48);LCDwrite(((((((S%1000000)%100000)%10000)%1000)%100 )/10)+48);LCDwrite(((((((S%1000000)%100000)%10000)%1 000)%100)%10)+48);LCDwrites(" centimet ");//========================void main(void) EA=1; EX0=1; IT0=1; LCDinit(); LCDcontrol(0x82); LCDwrites("Welcome"); LCDcontrol(0xc0); LCDwrites("S="); while(1);trên kelc nó k báo lỗi, nhưng tất cả cảnh báo tại vị trí code e bôi màu đỏ, hình bít ạ!
_Và đây là phần cứng năm nối k biết không đúng đâu k cơ mà lắp thiệt k chạy:
+/Chân Vee bên trên LCD của e là V0 và e nối V0 --> chân thân của VR 10k còn 1 trong 2 chân tê e nối mass +/E sử dụng TA 12Mhz +/ IC 89C52_ À trong đoạn code gồm CT delay đáng ra là để phục vụ hiện thị chạy chữ, mà lại e quên mất k xóa! tuy thế nó vẫn cứ lưu ý ở chiếc 15, có khi nào hàm wait LCD e sai k! hic hic_ E nạp CT vào IC bật LCD thì cơ hội thì hiện nay 1 hàng, lúc thì k hiện nay gì luôn, cơ hội thì chỉ hiện 1 nửa phía trái màn hình, được dụy tốt nhất 1 lần hiện thị đúng cơ mà là k nhận dấu hiệu vào coi như cũng k đựoc luôn! K biết vì phần cứng nối không đúng hay bởi vì code! hic hic! Thanks đông đảo ng vẫn quan tâm!
Bạn đang xem: Lcd 16x2 không hiển thị
bạn xem thử của bản thân nhé// CAC CHUONG TRINH GIANH cho LCD// đắm đuối kiem tra banvoid ban() P0=0xFF; Rs=0; Rw=1; while(Bf) En=0;delay(1);En=1; // mê mệt ghi lenhvoid lenh(unsigned char x) ban(); P0=x; Rs=0; Rw=0; delay_us(50); En=1; delay_us(50); En=0;// tê mê ghi du lieuvoid kitu(unsigned char x) ban(); P0=x; Rs=1; Rw=0; delay_us(50); En=1; delay_us(50); En=0;// mê man ghi chuoivoid chuoi(unsigned char *s) char i; for(i=0;i kitu(s); // đắm đuối ghi cham 1 chuoivoid chuoi_cham(unsigned char *s) char i; for(i=0;i kitu(s);delay(75); // say mê khoi tao LCDvoid khoitao() lenh(0x38); lenh(0x0c); lenh(0x01); lenh(0x80);
Xem thêm: Top 8 Cửa Hàng Nón Bảo Hiểm Asia Giá Rẻ, Uy Tín, Chất Lượng Nhất
bạn xem thử của mình nhéCho mình hỏi tại sao bạn lại xen vào thân lệnh chốt hàm delay_us(50); delay_us(50);En=1;delay_us(50);En=0;Cho bản thân hỏi nguyên nhân bạn viboyth.haui lại xen vào giữa lệnh chốt hàm delay_us(50); delay_us(50);En=1;delay_us(50);En=0;
Mọi bạn xem góp em đoạn code em từ viết bao gồm sai sót gì k? sao mà cắm mạch thực tiễn k chạy, nhưng mà mô rộp thì ngon lành#include#include//==========================#define LCDdata P2#define DB7 P2_7#define RS P1_0#define RW P1_1#define E P1_2#define sensor P3_2//============================unsigned char pi=3.14;unsigned char l,S,j,fi,R,n;unsigned int i;void delay(unsigned int ms) for(i=0;i for(j=0;j //=================================void wait(void) RS=0;RW=1;LCDdata=0xff;while(DB7) E=0; E=1;//================================void LCDcontrol(unsigned char x) RS=0; RW=0; LCDdata=x; E=1; E=0; wait();//===============================void LCDinit(void) LCDcontrol(0x38); LCDcontrol(0x0e); LCDcontrol(0x01);//=====================================void LCDwrite(unsigned char y) RS=1; RW=0; LCDdata=y; E=1; E=0; wait();//=====================================void LCDwrites(unsigned char *z) unsigned char data dai,dem; dai=strlen(z); for(dem=0;dem LCDwrite(*(z+dem)); //===============================void ngat_INT0(void) interrupt 0 l=1;//(2*pi*R*n)/360 // n: so goc giua 2 khe; R:ban ghê dia sensorS+=l;LCDcontrol(0xc0); LCDwrites("S=");LCDwrite((S/1000000)+48);LCDwrite(((S%1000000)/100000)+48);LCDwrite((((S%1000000)%100000)/10000)+48);LCDwrite(((((S%1000000)%100000)%10000)/1000)+48);LCDwrite((((((S%1000000)%100000)%10000)% 1000)/100)+48);LCDwrite(((((((S%1000000)%100000)%10000)%1000)%100 )/10)+48);LCDwrite(((((((S%1000000)%100000)%10000)%1 000)%100)%10)+48);LCDwrites(" centimet ");//========================void main(void) EA=1; EX0=1; IT0=1; LCDinit(); LCDcontrol(0x82); LCDwrites("Welcome"); LCDcontrol(0xc0); LCDwrites("S="); while(1);trên kelc nó k báo lỗi, nhưng tất cả cảnh báo tại vị trí code e bôi màu đỏ, hình bít ạ!

