有关51单片机Lcd1602的问题

/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 实 验 名 : LCD1602显示试验
* 实验说明 : LCD1602显示Pechin Science
* 连接方式 : 见连接图
* 注 意 :
*******************************************************************************/
#include<reg51.h>
#include"lcd1.h"
//--定义全局变量--//
unsigned char PuZh[]=" Pechin Science ";
unsigned char CnCh[27] = "Welcome to the world of MCU";
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
unsigned char i;
LcdInit();
//--写第一行--//
for(i=0; i<16; i++)
{
LcdWriteData(PuZh[i]);
}
//--写第二行
LcdWriteCom(0xC0); //设置坐标在第二行
for(i=0; i<27; i++)
{
LcdWriteData(CnCh[i]);
}
LcdWriteCom(0x07); //设置每写一次整屏右移
while(1) //为什么循环里面要再写一次第二行的内容??
{
/* LcdWriteCom(0xC0); //设置坐标在第二行
for(i=0; i<27; i++)
{
LcdWriteData(CnCh[i]);
Delay10ms(50);
}
*/
for(i=0; i<16; i++) //为什么重复写第一行的内容,它就全部是第一行的内容了???
{
LcdWriteData(PuZh[i]);
Delay10ms(50);
}
}
}
求解释????

根据我的理解,移位方式设定寄存器的D4位的复位状态为1,此时允许移位操作,如果设置为0x07那么,D4被强行置0,就一定没有移位操作了,而后是S/C(D3)、R/L(D2)这两位,复位状态为0、0;此时为默认的光标左移(AC-1操作),这也是常用的工作模式,所以一般初始化时都不进行移位方式的格式化,此时默认为0x10即“光标左移方式”;而你的0x18模式为“整个显示屏左移方式”,0x1c为“整个显示屏右移方式;找本书或找些资料看看,很简单的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-08
因为lcd光标是自动转到下1个地址,你只要不更改光标,他就一直往下写到地址jieshu本回答被网友采纳
第2个回答  2014-09-08
你是什么问题,只看到程序?