解释这段代码:void LCD_Write(unsigned char cmd,unsigned char isData) { delay_us(2000); //Hardcoding delay, keep waiting while the LCD is busy lcd1602_RS = isData; lcd1602_EN = 0; if(cmd&0x80)lcd1602_D7=1;else lcd1602_D7=0; if(cmd&0x40)lcd1602_D6=1;else lcd1602_D6=0; if(cmd&0x20)lcd1602_D5=1;else lcd1602_D5=0; if(cmd&0x10)lcd1602_D4=1;else lcd1602_D4=0; delay_us(2); lcd1602_EN=1; delay_us(2); lcd1602_EN=0; if(cmd&0x08)lcd1602_D7=1;else lcd1602_D7=0; if(cmd&0x04)lcd1602_D6=1;else lcd1602_D6=0; if(cmd&0x02)lcd1602_D5=1;else lcd1602_D5=0; if(cmd&0x01)lcd1602_D4=1;else lcd1602_D4=0; delay_us(2); lcd1602_EN=1; delay_us(2); lcd1602_EN=0;
时间: 2023-06-13 12:09:07 浏览: 57
这段代码是用于在LCD1602显示屏上写入指令或数据的函数。参数cmd指定要写入的指令或数据,参数isData指定是写入数据还是指令(isData=1表示写入数据,isData=0表示写入指令)。具体解释如下:
1. 延迟2ms,等待LCD1602显示屏准备好接收指令或数据。
2. 根据isData的值,设置RS引脚为高电平(写入数据)或低电平(写入指令)。
3. 根据cmd的高4位(即cmd&0x80、cmd&0x40、cmd&0x20、cmd&0x10),设置D7~D4引脚的状态。
4. 延迟2us。
5. 将EN引脚设为高电平,表示开始写入指令或数据。
6. 延迟2us。
7. 将EN引脚设为低电平,表示写入完成。
8. 根据cmd的低4位(即cmd&0x08、cmd&0x04、cmd&0x02、cmd&0x01),设置D7~D4引脚的状态。
9. 延迟2us。
10. 将EN引脚设为高电平,表示开始写入指令或数据。
11. 延迟2us。
12. 将EN引脚设为低电平,表示写入完成。
相关问题
解释这段代码:void LCD_WrCmd(unsigned char dat) { LCD_Write(dat,COMMAND); } void LCD_WrDat(unsigned char dat) { LCD_Write(dat,DATA); } void LCD_WrNUM(unsigned char dat) { LCD_WrDat(dat+'0'); }
这段代码定义了三个函数,分别为LCD_WrCmd、LCD_WrDat和LCD_WrNUM。
函数LCD_WrCmd的作用是向液晶屏写入指令,参数dat为一个字节的无符号整数。该函数调用了另外一个函数LCD_Write,将dat和COMMAND作为参数传入。其中,COMMAND是一个常量,表示写入的是指令而不是数据。
函数LCD_WrDat的作用是向液晶屏写入数据,参数dat为一个字节的无符号整数。该函数调用了LCD_Write函数,将dat和DATA作为参数传入。其中,DATA是一个常量,表示写入的是数据而不是指令。
函数LCD_WrNUM的作用是向液晶屏写入数字,参数dat为一个字节的无符号整数,表示要写入的数字。该函数先将数字转换为字符,然后调用LCD_WrDat函数写入字符。具体来说,它将dat加上字符'0',得到对应的ASCII码,然后调用LCD_WrDat函数写入该字符。
解释这段代码:void LCD_GotoXY(unsigned char _X,unsigned char _Y) { unsigned char temp; if(_Y)temp=0xC0+(_X&0x0F);//这里高位非零即是第1行 else temp=0x80+(_X&0x0F); LCD_WrCmd(temp); }
这段代码是一个用于 LCD 显示屏控制的函数。它的作用是设置下一次在屏幕上显示字符时的位置。
函数接受两个参数 _X 和 _Y,表示要设置的字符位置的列和行。在这个函数中,列数从 0 开始计数。_Y 参数的值为 0 表示要设置的字符位置在第一行,为 1 表示要设置的字符位置在第二行。
在函数中,首先定义了一个变量 temp,用于存储要发送到 LCD 显示屏上的命令。
然后根据传入的 _Y 参数,计算出要发送到 LCD 显示屏上的命令。如果 _Y 参数为非零值,说明要设置的字符位置在第二行,此时将 temp 设为 0xC0 加上 _X 参数的低 4 位(_X&0x0F);否则,将 temp 设为 0x80 加上 _X 参数的低 4 位。
最后,通过调用 LCD_WrCmd 函数向 LCD 显示屏发送命令,以设置下一次要显示字符的位置。