我想在12864液晶屏上显示字符FLASHMAN,这是我代码,液晶屏为什么什么也显示不出来?求高手~~
#include <iom128v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
const uchar cs=0;
const uchar sid=1;
const uchar sclk=2;
const uchar psb=3;
const uchar rst=5;
const uchar table[]="FLASHMAN";
void LcdIni(void);
void WrOp(uchar dat);
void WrDat(uchar dat);
void SndByte(uchar dat);
void delay(void);
void main()
{
uchar i;
LcdIni();
WrOp(0X80+0X00);
for(i=0;i<8;i++)
{
WrDat(table[i]);
delay();
}
while(1);
}
void LcdIni(void)
{
DDRC=0XFF;
PORTC=0XFF; //PORTC输出全部为1
PORTC &=~BIT(psb); //psb为低,选择串口方式
PORTC |=BIT(cs); //片选有效
PORTC &=~BIT(rst);
delay(); //延时以复位
PORTC |=BIT(rst);
PORTC &=~BIT(cs); //片选无效
WrOp(0X20);
WrOp(0X01);
//WrOp(0X02);
WrOp(0X06);
WrOp(0X0C);
}
void WrOp(uchar dat)
{
PORTC |=BIT(cs);
SndByte(0XF8); //命令字1111 1000
SndByte(dat & 0XF0);//高四位0000
SndByte(dat<<4);
PORTC &=~BIT(cs);
delay();
}
void WrDat(uchar dat)
{
PORTC |=BIT(cs);
SndByte(0XFA);
SndByte(dat & 0XF0);
SndByte(dat<<4);
PORTC &=~BIT(cs);
delay();
}
void SndByte(uchar dat)
{
uchar i;
for(i=8;i>0;i--)
{
if(dat & BIT(i-1)) PORTC |=BIT(sid); //置1
else PORTC &=~BIT(sid); //置0
PORTC |=BIT(sclk);
NOP();
PORTC &=~BIT(sclk);
}
}
void delay(void)
{
uchar i,j;
for(i=0;i<200;i++)
for(j=0;j<200;j++);
} |