![]() |
Carbon1 發表于 2020-3-6 12:45 樓主的程序沒有什么明顯毛病,出現這種現象應該是LCD初始化失敗。要仔細檢查硬件! VCC是電壓否正常、紋波是否過大、晶振頻率是否合適、振蕩電容大小是否合適、復位電路是否正常。特別是要檢查面包板接觸不良。 初始化程序稍微調整一下: void init() { lcden=0; delay_ms(20); write_com(0x38); write_com(0x38); write_com(0x38); delay_ms(20); write_com(0x01); delay_ms(20); write_com(0x0C); delay_ms(20); write_com(0x06); delay_ms(20); } |
下載一個沒有問題的程序進去就可以判斷是不是液晶屏的問題了 |
你可以看看是不是接口接錯了 LCD接線都很重要 |
應該是程序有問題, |
屏里導電層接觸不良,拆下重裝一下 |
東寧 發表于 2020-3-5 16:56 應該不是程序問題,換了好幾個程序都不行 |
秋易老 發表于 2020-3-5 10:18 感謝回復,接線檢查過很多次了,也試過其他程序,沒有解決 |
之一知足 發表于 2020-3-5 10:15 謝謝回答,我試過別人的代碼,也有改接線,區別在于右邊黑的多少 |
這是程序 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit lcdrs=P2^2; sbit lcdrw=P2^1; sbit lcden=P2^0; uchar table1[]="AT89C51"; uchar table2[]="STC89C52RC"; void delay_ms(uint z) { uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } void write_com(uchar com) //寫指令 { lcdrw=0; lcdrs=0; P0=com; //將指令賦給P0 lcden=1; //高脈沖 delay_ms(5); lcden=0; } void write_dat(uchar dat) //寫數據 { lcdrs=1; lcdrw=0; P0=dat; //數據賦給P0 lcden=1; //高脈沖 delay_ms(5); lcden=0; } void init() { lcden=0; write_com(0x01); delay_ms(20); write_com(0x06); delay_ms(20); write_com(0x0C); delay_ms(20); write_com(0x38); delay_ms(20); } void main() { uchar i; init(); write_com(0x80); for(i=0;i<7;i++) write_dat(table1[i]); delay_ms(10000); write_com(0x80); for(i=0;i<10;i++) write_dat(table2[i]); while(1); } |
看起來沒問題能亮,像素也點亮了 |
應該是程序有問題,以前也遇到過這樣的情況,如果屏幕是亮的,就沒有壞 |
程序貼上來看看才知道是不是程序問題。如果程序沒問題接線也沒問題那就是壞了。 |
放到好的開發板和正確的例程上去試 |
感覺應該是線接錯了,要么就是程序定義的口和你實際接的口不一樣 |
最簡單快捷的方法就是,隨便下載個歷程,照著別人的代碼接下線,如果不能正常的執行,就是LCD壞了,反之檢查你的代碼。 |