1602液晶中代码0x07整屏左移的用法,求助!
时间:10-02
整理:3721RD
点击:
/*************************
编程者:
编程时间:
替代版本:
编程环境:尅了uV4 9.0
*************************/
/******************包含头文件**********************/
#include<reg52.h>
/******************宏定义**********************/
#define uchar unsigned char
#define uint unsigned int
/******************定义引脚**********************/
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcdrw=P1^1;
sbit lcdrs=P1^0;
sbit lcden=P2^5;
/******************定义变量、数组**********************/
uchar code table[]="Hello everyone!";
uchar code table1[]="Welcome to here!";
/*************************
函数功能:延时函数
输入参数:xms
输出参数:
*************************/
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/*************************
函数功能:写命令函数
输入参数:come
输出参数:
*************************/
void write_come(uchar come)
{
lcdrs=0;
P0=come;
lcden=1;
delay(5);
lcden=0;
}
/*************************
函数功能:写数据函数
输入参数:data0
输出参数:
*************************/
void write_data(uchar data0)
{
lcdrs=1;
P0=data0;
lcden=1;
delay(5);
lcden=0;
}
/*************************
函数功能:初始化函数
输入参数:
输出参数:
*************************/
void initial()
{
lcdrw=0;
dula=0;
wela=0;
lcden=0;
write_come(0x38);
write_come(0x0f);
write_come(0x07);//整屏左移,移动速度太快,光标跟在后面 ?
write_come(0x01);
}
/*************************
函数功能:主函数
输入参数:
输出参数:
*************************/
void main()
{
uchar num;
initial();
write_come(0x80+0x10); //?+0x10在屏幕中间?
for(num=0;num<15;num++)
{
write_data(table[num]);
//delay(5);
delay(200);
}
write_come(0x80+0x50); //指针和光标在什么位置?
for(num=0;num<24;num++)
{
write_data(table1[num]);
//delay(5);
delay(200);
}
while(1);
}
问题:第一行显示与第二行的显示有冲突,第一行的显示没有问题,二第二行数据只在第一个地址位一个一个字符的出现,只有在把显示第一行数据的代码【屏蔽掉,第二行才会正常显示,求助!
编程者:
编程时间:
替代版本:
编程环境:尅了uV4 9.0
*************************/
/******************包含头文件**********************/
#include<reg52.h>
/******************宏定义**********************/
#define uchar unsigned char
#define uint unsigned int
/******************定义引脚**********************/
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcdrw=P1^1;
sbit lcdrs=P1^0;
sbit lcden=P2^5;
/******************定义变量、数组**********************/
uchar code table[]="Hello everyone!";
uchar code table1[]="Welcome to here!";
/*************************
函数功能:延时函数
输入参数:xms
输出参数:
*************************/
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/*************************
函数功能:写命令函数
输入参数:come
输出参数:
*************************/
void write_come(uchar come)
{
lcdrs=0;
P0=come;
lcden=1;
delay(5);
lcden=0;
}
/*************************
函数功能:写数据函数
输入参数:data0
输出参数:
*************************/
void write_data(uchar data0)
{
lcdrs=1;
P0=data0;
lcden=1;
delay(5);
lcden=0;
}
/*************************
函数功能:初始化函数
输入参数:
输出参数:
*************************/
void initial()
{
lcdrw=0;
dula=0;
wela=0;
lcden=0;
write_come(0x38);
write_come(0x0f);
write_come(0x07);//整屏左移,移动速度太快,光标跟在后面 ?
write_come(0x01);
}
/*************************
函数功能:主函数
输入参数:
输出参数:
*************************/
void main()
{
uchar num;
initial();
write_come(0x80+0x10); //?+0x10在屏幕中间?
for(num=0;num<15;num++)
{
write_data(table[num]);
//delay(5);
delay(200);
}
write_come(0x80+0x50); //指针和光标在什么位置?
for(num=0;num<24;num++)
{
write_data(table1[num]);
//delay(5);
delay(200);
}
while(1);
}
问题:第一行显示与第二行的显示有冲突,第一行的显示没有问题,二第二行数据只在第一个地址位一个一个字符的出现,只有在把显示第一行数据的代码【屏蔽掉,第二行才会正常显示,求助!
这样肯定有问题呀!
整屏左移的代码是0x18吧,你是不是复制别人的程序
整屏左移也是命令,用一次移动一下
整屏左移有两种方式的
哇,13年的帖子,不知道我现在回答你还能不能看得见,两年时间可以改变很多!
write_come(0x80+0x50); 在这行语句之前加一句,write_come(0x02);
去年回的帖子 我想知道这是为什么 人还在吗
0x07 是自动左移,写入数据时,在前面写一次命令就够了;
0x18 一次左移,每一次写数据前,都要配一次
0x01 吧