是28pin引线的那种COG,MCU通过一个74HC164进行传并转换,连接LCD。我是用示波器检测的。<br />以下是读写:<br />void write_LCD_command(uchar dat){<br /> uchar i;<br /> LCD_WR=0;<br /> LCD_RS=0;//command write.<br /> LCD_CS=0;<br /> LCD_RD=1;<br /> for(i=0; i<8; i++)<br /> {<br /> LCD_SCLK=0;<br /> _nop_();<br /> if(dat&0x80) LCD_DATA=1;<br /> else LCD_DATA=0;<br /> dat<<=1;<br /> _nop_();<br /> _nop_();<br /> LCD_SCLK=1;<br /> }<br /> LCD_RD=0; //WRITE NOW!<br /> _nop_();<br /> LCD_CS=1;<br /> LCD_RS=1;<br />}void write_LCD_data(uchar dat){<br /> uchar i;<br /> LCD_WR=0;<br /> LCD_RS=1;//DATA write.<br /> LCD_CS=0;<br /> LCD_RD=1;<br /> for(i=0; i<8; i++)<br /> {<br /> LCD_SCLK=0;<br /> _nop_();<br /> if(dat&0x80) LCD_DATA=1;<br /> else LCD_DATA=0;<br /> dat<<=1;<br /> _nop_();<br /> _nop_();<br /> LCD_SCLK=1;<br /> }<br /> LCD_RD=0; //WRITE NOW!<br /> _nop_();<br /> LCD_CS=1;<br /> LCD_RS=0;<br />}<br /><br />以下是初始化代码<br />void iniLCD(void){<br /> LCD_RES=1;<br /> delay_ms(500);<br /> LCD_RES= 0 ; <br /> delay_ms(500);<br /> LCD_RES=1;<br /> delay_ms(500);<br /> write_LCD_command(0xe2); /*reset by software*/<br /> delay_ms(500);<br /> write_LCD_command(0x48); //SET DUTY <br /> write_LCD_command(0x50); <br /> write_LCD_command(0xA0); /* ADC SELECT A0:NORMAL A1:REVERSE */<br /> write_LCD_command(0xC0); //SHL SELECT C0:NORMAL C1:REVERSE <br /> write_LCD_command(0xAB); //OSC START <br /> write_LCD_command(0x67); /* SELECT DC-DC STEP-UP 0x64~0x67 */ <br /> write_LCD_command(0x27); /* Regulator Select 0x20-0x27 */<br /> write_LCD_command(0x81); /*Set Reference Voltage Select Mode */<br /> write_LCD_command(0x3F); //Set Reference Voltage Register 0x00-0x3F <br /> write_LCD_command(0x54); /* lcd bias */ write_LCD_command(0x2c); /* V/C on, V/R on, V/F on */<br /> delay_ms(500);//Delay 1S<br /> write_LCD_command(0x2e); /* V/C on, V/R on, V/F on */<br /> delay_ms(500);<br /> write_LCD_command(0x2f); /* V/C on, V/R on, V/F on */ ——问题1:到这句屏会全黑,正常??<br /> delay_ms(500);<br /> write_LCD_command(0x40); /* display start first line */<br /> write_LCD_command(0x00);<br /> delay_ms(500);<br /> write_LCD_command(0x44); /* COM0 */<br /> write_LCD_command(0x00);<br /> delay_ms(500);<br /> write_LCD_command(0xaf); /* display on */ ——问题2:到这句上部1/4熄灭,其余全亮(黑)<br /> } <br />下面是清屏函数,但运行没任何效果。<br />void clear_disp(void)<br /> { uchar page=0xb0,column; <br /> for (page=0xb0;page<0xbe;page++)<br /> { write_LCD_command(page); //set page adress<br /> write_LCD_command(0x00); //set start column adress<br /> write_LCD_command(0x10); <br /> <br /> for(column=0;column<=160;column++)<br /> { write_LCD_data(0x0);<br /> write_LCD_data(0x0);<br /> }<br /> }<br /> } |
|