单片机编程控制LCD1602的问题

一下是一段程序控制LCD数据的,里面有些地方本人初学者不知道什么意思,请高手指点!
库和声明就省略了,以下只是一个片段,如果不明请留言,我再补全
/*忙检测函数*/
Void Read_Status_LCM(void)
{
unsigned char read=0;
LCM_RW=1;//这里的LCM为定义的LCD的引脚类型,这个表示R/W,为高电平
LCM_RS=0;
LCM_E=1;
LCM_Data=0xff;/*这里不明白,为什么要把状态字全部定义为1,在LCD下面判断的时候LCM_data会不断改变么?*/
do
read=LCM_Data;
while(read&0x80);//这里是判断读写使能位是否为1
LCM_E=0;

/*对1602写数据*/
Read_status_LCM();//调用了上面的忙检测,这里明白
LCM_RS=1;
LCM_RW=0;
LCM_Data &= 0x0f;/*这里不明白,这里的“&=”是什么意思,是不是LCM_Data = LCM_Data&0x0f */
LCM_Data|=WDLCM&0xf0;/*为什么这里要用之前的LCM_Data来或上WDLCM&0xf0*,这里用4位接口,先传送高4位,但是为什么不能用WDLCM&0xf0就好,还要用前面的LCM_Data来与上*/
下面就传送高四为的程序,省略了,就上面的程序不知道为什么这样!

1、LCM_Data=0xff,为防止之前写入的数据有可能会使最高一位为0而致使忙闲检验出错
2、LCM_Data &= 0x0f;——LCM_Data =(0x0f&LCM_Data),即取低四位,屏蔽高四位
3、不必要太深究了,都是为了分先后传高低四位而已,而且也不必非得检验忙闲、加一小段延时即可
温馨提示:内容为网友见解,仅供参考
无其他回答

lcd1602有时候单片机下程序能显示有时不能显示是什么原因?求助!谢谢...
1.硬件连接接触不良、虚焊。2.LCD初始化函数写的不好,偶尔上电后初始化失败,就不能显示。建议上电延时一段时间,待LCD稳定后在执行初始化函数。3.程序上要注意读写时序,加入适当的延时时间。4.调节LCD第三脚V0的电压,调节到一个合适的值才可以显示。先查硬件,确定没问题再在软件上找原因,只...

单片机控制的LCD1602数字钟的C语言编程
你好:lcd1602的响应速度相对于单片机的速度来说是偏慢的。举个简单的例子,把一桶油通过漏斗向一个瓶子里倒,倒油的速度,即流量必须维持在一定范围之内,倒得太快油会从漏斗顶部溢出来,这样就浪费掉了。我们通过眼睛可以判断并使油面保持在顶面以下,以漏斗的额定流量来倒油,这样效率最高。而对于单...

单片机中 LCD1602不能显示字符
有光标闪烁表明显示正常阿,你想想,光标要闪烁,显示器初始化没问题,传输的数据也就没问题,显示也就没有问题了。因为其闪烁是由命令控制的。现在你可以根据闪烁光标查下看是不是对比度或亮度问题。先从硬件上查,不行就量下两块板的接口电压,对比找 ...

51单片机 LCD1602只亮不显示东西
对于LCD1602不显示字符,一是先检查仿真电路对不对,再检查程序中定义的控制引脚与仿真图是否相符。因很多人都是从网上找的程序,与自己的仿真图并不相符,需要改程序的引脚定义,但没有改。二就是检查程序是不是写错了,虽然引脚定义对,但显示字符的程序不对。你没有发仿真图,所以,看程序是找不到...

单片机和LCD1602显示时间时,久了会出现乱码
很大的可能是1302的问题,比如1302的32K晶振停振(运行的时候不要用手触摸晶振引脚,出现乱码的时候用示波器观察下晶振的波形),1302读取错误等等,先试试不用1302,只用单片机让1602显示字符,看看有没有问题,然后再检查程序和1302

51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号_百...
1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。2、导入51单片机的头文件以及LCD1602的头文件。3、创建一个延时函数,可以传入想要具体延时的时长,...

有关51单片机1602的问题
上面第一个图中,1602液晶屏的16脚应该是接地的,你把背光LED的阴极和阳极都接到电源上了,怎么可能把LED点亮。1602的对比度控制VO引脚尽量不要使用固定电阻来控制,因为当电源电压有变化或者1602的批次不同,可能会导致VO的电压不同,这时用固定电阻的话难以消除这种离散的差异。尽量使用电位器来控制VO...

在线等51单片机关于LCD1602光标闪烁的问题
sbit LCD_EN=P2^2;sbit LCD_RW=P2^1;sbit LCD_RS=P2^0;sbit s1 =P2^5;sbit s2 =P2^6;sbit s3 =P2^7;uchar t0n; \/\/定时器T0中断计数,定时50ms,中断20次为1秒 uchar hour,minute,second; \/\/声明小时,分,秒变量 void delay(){ uint y;for(y=0;y<100;y++);} void...

关于单片机的LCD显示问题
1.LCD1602是并行数据接口,就要D0~D7同时输入8位数,不可以只送一位数。所以,接单片机的四个并行口P0,P1,P2,P3的任一个都行,只是习惯上都接在P0口上,但不是固定这样的。2.必须同时给8位数,如果只给一位,LCD1602也会按8位数接收的,其余7位就是未知的,也就没有意了。3.D0~D7送出的...

一段51单片机控制LCD1602,第二行怎么不显示,附上代码..
void main(void){ P3=0x00;LCD_init();LCD_write_command(0x80);\/\/第一行 for (num=0;num<10;num++){ LCD_write_data(tabel[num]);} LCD_write_command(0x80+0x40);\/\/第二行 for (num=0;num<7;num++){ LCD_write_data(tabel1[num]);} while(1){ } } 第一行能显示?

相似回答