|
单片机用的是ATmega64,
void SDCmd(uchar Command) //向LCD发送命令
{
uchar i;
SBIT(PORTC,CD);
__asm("nop");
CBIT(PORTC,CS1);
__asm("nop");
CBIT(PORTC,CS2);
while((BUSY1==0)&&(BUSY2==0));//Wait for BUSY2 0->1
for(i=8;i>0;i--)
{
CBIT(PORTC,SCLK);
if(Command & 0x80)
SBIT(PORTC,SI);
else
CBIT(PORTC,SI);
__asm("nop");
SBIT(PORTC,SCLK);
Command =Command<<1;
}
Delayms(2);
SBIT(PORTC,CD);
__asm("nop");
SBIT(PORTC,CS2);
__asm("nop");
SBIT(PORTC,CS1);
}
void LCD_init(void)
{
SDCmd(MODSET);//Mode Set
SDCmd(SYSTRAN);// SYNCHRONIZED TRANSFER
SDCmd(WSD); //Segment Decoder WSD
SDCmd(BLINKOFF);// 关闭闪烁
SDCmd(CDM);//Clear Data MEMERY
SDCmd(CBD);//CLEAR BLINKING DATA MEMORY
SDCmd(DISON);//开显示
}
上面是LCD相关程序,
DDRC=0x3f; PORTC=0xff;电阻上不上拉,均无效。
上午能点亮LCD,但线路晃动后,灭了。调了一天,无果。原因是:BUSY1、2 一直为0. CS为0,BUSY为0,不会变为1。
哪位前辈指点下。感激不尽!
|
|