最近在忙毕业论文的事,所以没有发表试用帖子了,今天继续。
今天操作LCD1602液晶,这个时序比较简单。首先上原理图。
从原理图中可以看到是PO口操作,其中
rs ====> P2^6
rw====> P2^5
e ====> P2^7
到底LCD1602应该插在那里呢?上图:
图中,左边的小电位器是用来调节文字的清晰度的,如果运行没有文字或者文字显示的很暗的时候就可以使用这个电位器调节。
知道了连线,接下来就是时序了,对于LCD1602还是有一个比较简单的时序的
写时序:
首先要对寄存器的选择和读、写操作选择进行配置。
RS是寄存器选择,rs = 1对数据进行操作;rs = 0对指令进行操作。
接着对读写操作选择进行配置,rw = 0 写操作。
打开使能端,输入使能信号 e = 1。
数据总线,对DB0~DB7(就是P0)赋值,进行数据的传输。
读时序:
理解方式与上面是是一样的。
知道了时序就可以看是写程序了。如下所示:
#include
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit e=P2^7;
uchar xs1=" hello,welcome you! ";
uchar xs2=" I am happy! ";
uchar table={0x01,0x03,0x07,0x08,0x1f,0x3f,0x7f,0xff};
void yan(uint ms)
{
uint w;
for(;ms>0;ms--)
for(w=110;w>0;w--);
}
void xzl(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
yan(1);
e=1;
yan(2);
e=0;
}
void xsj(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
yan(1);
e=1;
yan(2);
e=0;
}
void init()
{
xzl(0x38);
xzl(0x08);
xzl(0x01);
xzl(0x06);
xzl(0x0c);
}
void main()
{
uchar i;
init();
xzl(0x80+0x16);
for(i=0;i<16;i++)
{
xsj(xs1); //显示第一行数据
yan(30);
}
xzl(0x80+0x40+0x16);
for(i=0;i<16;i++)
{
xsj(xs2); //显示第二行数据
yan(30);
}
while(1)
{
for(i=0;i<40;i++)
{
xzl(0x1c); //右移命令
yan(300);
}
}
}
展示运行后的结果,如下动图所示:
由于使用了右移命令,所以文字连续向右移动,感兴趣的小伙伴可以试一下,很简单
其中的各种命令操作我会放在最后的附件中。
1602液晶操作命令:
程序:
最后,提供附件,感谢支持:)
最近在忙毕业论文的事,所以没有发表试用帖子了,今天继续。
今天操作LCD1602液晶,这个时序比较简单。首先上原理图。
从原理图中可以看到是PO口操作,其中
rs ====> P2^6
rw====> P2^5
e ====> P2^7
到底LCD1602应该插在那里呢?上图:
图中,左边的小电位器是用来调节文字的清晰度的,如果运行没有文字或者文字显示的很暗的时候就可以使用这个电位器调节。
知道了连线,接下来就是时序了,对于LCD1602还是有一个比较简单的时序的
写时序:
首先要对寄存器的选择和读、写操作选择进行配置。
RS是寄存器选择,rs = 1对数据进行操作;rs = 0对指令进行操作。
接着对读写操作选择进行配置,rw = 0 写操作。
打开使能端,输入使能信号 e = 1。
数据总线,对DB0~DB7(就是P0)赋值,进行数据的传输。
读时序:
理解方式与上面是是一样的。
知道了时序就可以看是写程序了。如下所示:
#include
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit e=P2^7;
uchar xs1=" hello,welcome you! ";
uchar xs2=" I am happy! ";
uchar table={0x01,0x03,0x07,0x08,0x1f,0x3f,0x7f,0xff};
void yan(uint ms)
{
uint w;
for(;ms>0;ms--)
for(w=110;w>0;w--);
}
void xzl(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
yan(1);
e=1;
yan(2);
e=0;
}
void xsj(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
yan(1);
e=1;
yan(2);
e=0;
}
void init()
{
xzl(0x38);
xzl(0x08);
xzl(0x01);
xzl(0x06);
xzl(0x0c);
}
void main()
{
uchar i;
init();
xzl(0x80+0x16);
for(i=0;i<16;i++)
{
xsj(xs1); //显示第一行数据
yan(30);
}
xzl(0x80+0x40+0x16);
for(i=0;i<16;i++)
{
xsj(xs2); //显示第二行数据
yan(30);
}
while(1)
{
for(i=0;i<40;i++)
{
xzl(0x1c); //右移命令
yan(300);
}
}
}
展示运行后的结果,如下动图所示:
由于使用了右移命令,所以文字连续向右移动,感兴趣的小伙伴可以试一下,很简单
其中的各种命令操作我会放在最后的附件中。
1602液晶操作命令:
程序:
最后,提供附件,感谢支持:)