sbit SID=P2^1//12864数据
sbit SCLK=P2^2//12864时钟
init()
{
write(0,0x30) //8 位介面,基本指令集
write(0,0x0c) //显示打开,光标关,反白关
write(0,0x01) //清屏,将DDRAM的地址计数器归零
delaynms(10)
write(0,0x80)for(i=0i<16i++) write(1,datas11[i])
write(0,0x90)for(i=0i<16i++) write(1,datas2[i])
write(0,0x88)for(i=0i<16i++) write(1,datas3[i])
write(0,0x98)for(i=0i<16i++) write(1,datas4[i])
}
/**********************12864*************************/
void delaynms(unsigned int di) //延时
{
unsigned int da,db
for(da=0da<dida++)
for(db=0db<10db++)
}
void sendbyte(unsigned char bbyte) //发送一个字节
{
unsigned char i
for(i=0i<8i++)
{
SID=bbyte&0x80//取出最高位
SCLK=1
SCLK=0
bbyte<<=1//左移
}
}
void write(bit start, unsigned char ddata) //写指令或数据
{
unsigned char start_data,Hdata,Ldata
if(start==0) start_data=0xf8 //写指令
else start_data=0xfa //写数据
Hdata=ddata&0xf0 //取高四位
Ldata=(ddata<<4)&0xf0 //取低四位
sendbyte(start_data) //发送起始信号
delaynms(5)//延时是必须的
sendbyte(Hdata) //发送高四位
delaynms(1) //延时是必须的
sendbyte(Ldata) //发送低四位
delaynms(1) //延时是必须的
}
/*void lcdinit(void) //初始化LCD
{
delaynms(10)//启动等待,等LCM讲入工作状态
//PSB=0//串口驱动模式
// RESET=0delaynms(1)RESET=1// 复位LCD
// CS=1
write(0,0x30) //8 位介面,基本指令集
write(0,0x0c) //显示打开,光标关,反白关
write(0,0x01) //清屏,将DDRAM的地址计数器归零
}*/
原本显示指令为 "1" 不显示为"0"改反过来就好了呀!
12864的控制器一般是0108的,只能这样
如果是6963的控制 这颗IC就有直接控制功能
即字空 底黑 切换!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)