/*
字符从最右边往左移动16次,最后停止在屏幕上
*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code display[]="talk is cheap";
uchar code display1[]="show me code";
sbit lcde=P2^7; //定义P2^7口为液晶使能端
sbit rs=P2^6; //数据/命令选择端(H/L)
sbit rw=P2^5; //读/写选择端(H/L)
void delay(uint z); //延时函数的声明
void inint(); //初始化函数声明
void lcdwritecom(uchar com);//写命令函数声明
void lcdwritedata(uchar dat);//写数据函数声明
void inint() //lcd初始化设置(这些设置都是连在一起的)
{
lcde=0;
lcdwritecom(0x38); //显示模式设置
lcdwritecom(0x0c); //开显示不显示光标
// lcdwritecom(0x06); //写一个字符后地址指针加1
lcdwritecom(0x01); //清屏
// lcdwritecom(0x80); //设置数据地址指针起点
//此处设置 150页参考6、7、8三种设置
}
void lcdwritecom(uchar com) //写命令函数
{
lcde=0; //先置0,等待上升沿
rs=0; //选择命令
rw=0; //写操作
P0=com; //放入命令 (数据输入端接的是P0口)
delay(5); //延时5ms,等待数据稳定
lcde=1; //写入时序,上升沿开始写入
delay(5); //延时5毫秒,等待命令写入并稳定
lcde=0; //等待下个命令写入
}
void lcdwritedata(uchar date) //写数据函数
{
lcde=0;
rs=1; //选择数据
rw=0; //选择写入
P0=date; //写入数据
delay(5); //等待数据稳定
lcde=1; //写入时序
delay(5); //保持时间,等待数据写入并稳定
lcde=0; //等待下个命令写入
}
void main()
{
uint i;
inint();//初始化
lcdwritecom(0x80+0x10); //写命令(第一行),最右边
for(i=0;i<13;i++) //因为10个字符,所以循环写入10次
{
lcdwritedata(display[i]); //写一个数据(此数据为数组)
delay(5); //延时稳定
}
lcdwritecom(0x80+0x50); //写命令(第二行),最右边
for(i=0;i<12;i++) //7个字符(空格也算一个字符)
{
lcdwritedata(display1[i]);
delay(5);
}
for(i=0;i<29;i++)
{
lcdwritecom(0x18); //整屏左移命令
delay(1000);
}
while(1);
}
void delay(uint z)//延时Zms函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*
希望达成的功能是字符的滚动显示*/
/*
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code display[]="talk is cheap";
uchar code display1[]="show me code";
sbit lcde=P2^7; //定义P2^7口为液晶使能端
sbit rs=P2^6; //数据/命令选择端(H/L)
sbit rw=P2^5; //读/写选择端(H/L)
void delay(uint z); //延时函数的声明
void inint(); //初始化函数声明
void lcdwritecom(uchar com);//写命令函数声明
void lcdwritedata(uchar dat);//写数据函数声明
void inint() //lcd初始化设置(这些设置都是连在一起的)
{
lcde=0;
lcdwritecom(0x38); //显示模式设置
lcdwritecom(0x0c); //开显示不显示光标
lcdwritecom(0x06); //写一个字符后地址指针加1
lcdwritecom(0x01); //清屏
// lcdwritecom(0x80); //设置数据地址指针起点
//此处设置 150页参考6、7、8三种设置
}
void lcdwritecom(uchar com) //写命令函数
{
lcde=0; //先置0,等待上升沿
rs=0; //选择命令
rw=0; //写操作
P0=com; //放入命令 (数据输入端接的是P0口)
delay(5); //延时5ms,等待数据稳定
lcde=1; //写入时序,上升沿开始写入
delay(5); //延时5毫秒,等待命令写入并稳定
lcde=0; //等待下个命令写入
}
void lcdwritedata(uchar date) //写数据函数
{
lcde=0;
rs=1; //选择数据
rw=0; //选择写入
P0=date; //写入数据
delay(5); //等待数据稳定
lcde=1; //写入时序
delay(5); //保持时间,等待数据写入并稳定
lcde=0; //等待下个命令写入
}
void main()
{
uint i;
while(1)
{
inint();//初始化
lcdwritecom(0x80+0x10); //写命令(第一行),最右边
for(i=0;i<13;i++) //因为10个字符,所以循环写入10次
{
lcdwritedata(display[i]); //写一个数据(此数据为数组)
delay(5); //延时稳定
}
lcdwritecom(0x80+0x50); //写命令(第二行),最右边
for(i=0;i<12;i++) //7个字符(空格也算一个字符)
{
lcdwritedata(display1[i]);
delay(5);
}
// lcdwritecom(0x07);//整屏移动指令,与lcdwritecom(0x18)一样的作用
}
while(1)
{
lcdwritecom(0x80);
for(i=0;i<10;i++)
{
lcdwritedata(display1[i]);
delay(1000); //如果不加这条延时语句的话滚动会非常快。
}
lcdwritecom(0x80+0x40); //写命令(第二行),最右边
for(i=0;i<7;i++) //7个字符(空格也算一个字符)
{
lcdwritedata(display1[i]);
delay(1000);
}
}
}
void delay(uint z)//延时Zms函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
*/
字符从最右边往左移动16次,最后停止在屏幕上
*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code display[]="talk is cheap";
uchar code display1[]="show me code";
sbit lcde=P2^7; //定义P2^7口为液晶使能端
sbit rs=P2^6; //数据/命令选择端(H/L)
sbit rw=P2^5; //读/写选择端(H/L)
void delay(uint z); //延时函数的声明
void inint(); //初始化函数声明
void lcdwritecom(uchar com);//写命令函数声明
void lcdwritedata(uchar dat);//写数据函数声明
void inint() //lcd初始化设置(这些设置都是连在一起的)
{
lcde=0;
lcdwritecom(0x38); //显示模式设置
lcdwritecom(0x0c); //开显示不显示光标
// lcdwritecom(0x06); //写一个字符后地址指针加1
lcdwritecom(0x01); //清屏
// lcdwritecom(0x80); //设置数据地址指针起点
//此处设置 150页参考6、7、8三种设置
}
void lcdwritecom(uchar com) //写命令函数
{
lcde=0; //先置0,等待上升沿
rs=0; //选择命令
rw=0; //写操作
P0=com; //放入命令 (数据输入端接的是P0口)
delay(5); //延时5ms,等待数据稳定
lcde=1; //写入时序,上升沿开始写入
delay(5); //延时5毫秒,等待命令写入并稳定
lcde=0; //等待下个命令写入
}
void lcdwritedata(uchar date) //写数据函数
{
lcde=0;
rs=1; //选择数据
rw=0; //选择写入
P0=date; //写入数据
delay(5); //等待数据稳定
lcde=1; //写入时序
delay(5); //保持时间,等待数据写入并稳定
lcde=0; //等待下个命令写入
}
void main()
{
uint i;
inint();//初始化
lcdwritecom(0x80+0x10); //写命令(第一行),最右边
for(i=0;i<13;i++) //因为10个字符,所以循环写入10次
{
lcdwritedata(display[i]); //写一个数据(此数据为数组)
delay(5); //延时稳定
}
lcdwritecom(0x80+0x50); //写命令(第二行),最右边
for(i=0;i<12;i++) //7个字符(空格也算一个字符)
{
lcdwritedata(display1[i]);
delay(5);
}
for(i=0;i<29;i++)
{
lcdwritecom(0x18); //整屏左移命令
delay(1000);
}
while(1);
}
void delay(uint z)//延时Zms函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/*
希望达成的功能是字符的滚动显示*/
/*
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code display[]="talk is cheap";
uchar code display1[]="show me code";
sbit lcde=P2^7; //定义P2^7口为液晶使能端
sbit rs=P2^6; //数据/命令选择端(H/L)
sbit rw=P2^5; //读/写选择端(H/L)
void delay(uint z); //延时函数的声明
void inint(); //初始化函数声明
void lcdwritecom(uchar com);//写命令函数声明
void lcdwritedata(uchar dat);//写数据函数声明
void inint() //lcd初始化设置(这些设置都是连在一起的)
{
lcde=0;
lcdwritecom(0x38); //显示模式设置
lcdwritecom(0x0c); //开显示不显示光标
lcdwritecom(0x06); //写一个字符后地址指针加1
lcdwritecom(0x01); //清屏
// lcdwritecom(0x80); //设置数据地址指针起点
//此处设置 150页参考6、7、8三种设置
}
void lcdwritecom(uchar com) //写命令函数
{
lcde=0; //先置0,等待上升沿
rs=0; //选择命令
rw=0; //写操作
P0=com; //放入命令 (数据输入端接的是P0口)
delay(5); //延时5ms,等待数据稳定
lcde=1; //写入时序,上升沿开始写入
delay(5); //延时5毫秒,等待命令写入并稳定
lcde=0; //等待下个命令写入
}
void lcdwritedata(uchar date) //写数据函数
{
lcde=0;
rs=1; //选择数据
rw=0; //选择写入
P0=date; //写入数据
delay(5); //等待数据稳定
lcde=1; //写入时序
delay(5); //保持时间,等待数据写入并稳定
lcde=0; //等待下个命令写入
}
void main()
{
uint i;
while(1)
{
inint();//初始化
lcdwritecom(0x80+0x10); //写命令(第一行),最右边
for(i=0;i<13;i++) //因为10个字符,所以循环写入10次
{
lcdwritedata(display[i]); //写一个数据(此数据为数组)
delay(5); //延时稳定
}
lcdwritecom(0x80+0x50); //写命令(第二行),最右边
for(i=0;i<12;i++) //7个字符(空格也算一个字符)
{
lcdwritedata(display1[i]);
delay(5);
}
// lcdwritecom(0x07);//整屏移动指令,与lcdwritecom(0x18)一样的作用
}
while(1)
{
lcdwritecom(0x80);
for(i=0;i<10;i++)
{
lcdwritedata(display1[i]);
delay(1000); //如果不加这条延时语句的话滚动会非常快。
}
lcdwritecom(0x80+0x40); //写命令(第二行),最右边
for(i=0;i<7;i++) //7个字符(空格也算一个字符)
{
lcdwritedata(display1[i]);
delay(1000);
}
}
}
void delay(uint z)//延时Zms函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
*/