LCD1602不亮且L298N的IN口都处于高电平,可能有以下几种可能的原因: 供电问题:确保LCD1602和L298N都接收到正确的电源供电。检查它们的电源连接,确保电压稳定且符合规格要求。 引脚连接问题:检查LCD1602和L298N的引脚连接是否正确。确保连接正确地与单片机相连,并且对应的引脚设置正确。 初始化问题:确保LCD1602在程序中正确初始化。确保正确设置LCD1602的工作模式、行数、字符大小等,并发送正确的初始化命令。 程序逻辑错误:检查程序中有关LCD1602和L298N的代码逻辑。确保发送正确的数据和命令到LCD1602,以及正确设置L298N的IN口状态。 |
LDC1602初始化程序有问题 |
应该是你的电路引脚设定的有问题 |
你的程序卡在下边的读LCD状态函数里了,建议把LCD_E = 0;两句都删除,按手册不应该有。 如果你不使用这个函数,那在使用这个函数的位置要加延迟函数,特别在清屏的时候。好多人不用它是因为实际用时,经常出现通过率低,但你是模拟啊,还是尽量用呗。 建议改成下边这样,函数是忙就等待到不忙,所以没必要返回值。 /**************************读状态函数***************************/ void ReadStatusLCD(void) //读液晶状态函数 { LCD_Data = 0xFF; //给液晶1602的数据口置0xff LCD_RS = 0; //控制液晶的RS管脚为低电平 LCD_RW = 1; //控制液晶的RW管脚为高电平 LCD_E = 1; while (LCD_Data & Busy); //检测忙信号 LCD_E = 0; } |
然后在写名令和数据后加些延时 ![]() ![]() ![]() |
各端口都是高位,显示刚开机,默认高位,一定是你初始化的程序出现死循环,我通过搜索while,发现应该发生在79行。别的没仔细看啊。 |
lkc8210 发表于 2022-4-20 11:06 注释了以后L298N甚至低电了 |
lkc8210 发表于 2022-4-20 11:06 还是不对 |
把85和97行注释掉看看 |
电路没有问题,修改液晶驱动代码吧,看仿真图,RW为高,这肯定不对的。 |
程序是借鉴的话,程序问题不大,主要检查硬件和接线问题。 |