lcd1602液晶屏换行为什么是0xb0,而不是0xC0,写过1602的大虾帮...
void writecode(uchar ins) //向液晶控制模块写命令
{
uchar xdata t;
uint xdata j;
for(j=0;j<500;j++);
virt_port|=ins&0xf0; //取高字节向1602写数据
writelcd(virt_port); //先写高4位后再写低4位 这是在选择四个数据线的时候
virt_port|=0x08;
writelcd(virt_port); //使能E脚为高电平
virt_port&=~0x08;
writelcd(virt_port); //使能E脚为低电平
t=ins<<4;
virt_port|=t&0xf0; //取低字节向1602写数据
writelcd(virt_port);
virt_port|=0x08; //使能E脚为高电平
writelcd(virt_port);
virt_port&=~0x08; //使能E脚为低电平
writelcd(virt_port);
virt_port=0;
writelcd(virt_port);
}
void lcdchar (void)
{
uint i,j,k;
writedata(tab1);
for(j=0;j<1000;j++);
for(k=0;k<1000;k++);
for(k=0;k<5000;k++);
for(k=0;k<1000;k++);
writecode(0xb0); // 换行
for(j=0;j<5000;j++);
for(k=0;k<5000;k++);
} 又是个不看资料的。。。 你的1602是否是hd44780以及兼容芯片吗?如果不是的话你的度娘一下相应的控制芯片的指令。 我开发板上是一个液晶模块,GDM1602A,我看1602上面的指令0xC0才是换行的呀? 刚学习液晶模块,大家多多指教{:shy:} 看数据手册!!! 看了呀,所有的手册上都说第一行DDRAM地址为0x00-0x0F,第二行地址为0x40-0x4F,写的时候最高位要设置为1,所以第二行第一个应该是0x40|0x80=0xC0,这样才对呀????求解为啥是0xb0呢?我在我板子上试过了,只有0xB0才能换行到第二行第一个,0xC0换到第二行但不是第一个,具体是第几个没仔细算过
结合时序图,,资料很总要,必要的延时!!
页:
[1]