标题:
单片机lcd1602第二行滚动是哪条语句?
[打印本页]
作者:
yjd2799
时间:
2021-1-30 07:48
标题:
单片机lcd1602第二行滚动是哪条语句?
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit rs=P2^6;
sbit rw=P2^5;
sbit e=P2^7;
uint8 a[16]="perchin designed";
uint8 b[27]="welcome to the world of mcu";
void delay(uint16 i) //1us
{
while(i--);
}
void wrc(uint8 c)
{
delay(1000);
rs=0;
rw=0;
e=0;
P0=c;
e=1;
delay(10);
e=0;
/*
P0=c<<4;
e=1;
e=0;*/ //四位的LCD要加上
}
void wrd(uint8 dat)
{
delay(1000);
rs=1;
rw=0;
e=0;
P0=dat;
e=1;
delay(10);
e=0;
/*
P0=dat<<4;
e=1;
e=0;*/ //四位的LCD要加上
rs=0;
}
void init()
{
delay(1000);
/*wrc(0x32);
wrc(0x28);
wrc(0x28); */ //四位的LCD要加上
wrc(0x38);
wrc(0x38);
wrc(0x38);
wrc(0x0c);
wrc(0x01);
}
void display()
{
uint8 i;
wrc(0x00+0x80);
for(i=0;i<16;i++)
{
wrd(a);
}
wrc(0x40+0x80);
for(i=0;i<27;i++)
{
wrd(b);
}
wrc(0x07); //每写一个数据屏幕就要右移一位,就相对于数据来说就是左移了;
while(1)
{
wrc(0x00+0x80);
for(i=0;i<16;i++)
{
wrd(a);
delay(30000); //如果不加这条延时语句的话滚动会非常快。
}
}
}
void main()
{
init();
while(1)
{
display();
}
}
请问下面这一段语句是干什么的,看不懂,有知道的吗?
while(1)
{
wrc(0x00+0x80);
for(i=0;i<16;i++)
{
wrd(a);
delay(30000); //如果不加这条延时语句的话滚动会非常快。
}
}
作者:
amandv
时间:
2021-1-30 20:58
wrc(0x00+0x80);//第一行
wrc(0x40+0x80);//第二行
作者:
rayin
时间:
2021-1-31 09:17
while(1)
{
wrc(0x00+0x80); // 这句更改为wrc(0x40+0x80);就是在第二行显示了
for(i=0;i<16;i++)
{
wrd(a);
delay(30000); //如果不加这条延时语句的话滚动会非常快。
}
}
作者:
zsyzdx
时间:
2021-2-4 10:09
wrd是写数据,同时不停的写数据,写一个就后移一位,然后需要延时等待,不然就是你说的滚动会非常快。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1