在写初始化液晶的时候,在设置数据指针的时候为什么要加个延时,不加延时数据指针设不了,是不是我时序顺序没弄好,最近才开始学习的,不太懂这个
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define Data P0 //数据端口
sbit RS = P2^1;//Pin4
sbit RW = P1^5; //Pin5
sbit E = P1^6;//Pin6
sbit dula=P2^6; //锁存器控制端定义
sbit wela=P2^7;
void delay(uchar t)
{
uchar i,j;
for(i=t;i>0;i--)
for(j=120;j>0;j--);
}
void write_com(uchar c)
{
delay(5);
E=0;
RS=0;
E=1;
Data=c;
E=0;
}
/****************************************************************/
void writedata(uchar c)
{
delay(5);
E=0;
RS=1;
E=1;
Data=c;
E=0;
RS=0;
}
void init()
{
wela=1;P0=0X00;wela=0;//关闭数码管
RW=0; //只显不读 。
delay(15);
write_com(0x38); //显示模式设置 :000111000,设置16*2显示,5*77点阵,八位数据 。
write_com(0x0f); //显示开关及光际设置:00001DCB D=1开显示;D=0关显示,C=1显示光标;C=0不显示光标,B=1光标闪烁:B=00光标闪烁
write_com(0x06); //显示开及光标设置 :000001NS N=1当读或写一个字符后地址加1,且光标加1,S相反 。
write_com(0x01); //显示清屏
delay(5); //必须要延时 不延时数据指针没法设置 。。
write_com(0x80+0x02);//设置数据指针 。。 }
/////////////////////////////////////////////////////////////////
void main(void)
{//uint num;
init(); //器件初始化 。
writedata('A');
while(1);
}
此帖出自
小平头技术问答
一般来说,51这速度,是不用加延迟的,难道你这1602的速度更慢?
可以换快1602看看······
一周热门 更多>