PIC24FJ128GC010开发LCD无显示、LCDPSbits标红问题求助
PIC24FJ128GC010 LCD标红及无显示问题解决方案
1 IDE中LCDPSbits/LCDREFbits标红问题解决
该现象是MPLAB X代码索引器的已知bug,不影响实际编译运行,因为编译无报错说明XC16编译器已经正确识别了PIC24FJ128GC010的寄存器定义,仅索引器未加载到对应器件的头文件信息,修复步骤:
- 右键项目选择
Properties,进入Conf:[当前配置名] -> XC16 Global Options -> XC16 Compiler,确认Device选择的是PIC24FJ128GC010 - 执行项目清理:菜单栏
Run -> Clean Project - 重新解析代码索引:右键项目选择
Code Assistance -> Reparse Project,标红提示会自动消失
2 LCD无显示问题解决
按优先级排查以下问题:
2.1 主函数逻辑错误
当前主函数仅做了初始化,既没有实际调用LCD输出函数,也没有保持程序运行,直接return 0退出,程序执行完初始化就终止了,自然无显示。
需要修改主函数为循环运行模式,示例修改如下:
#include <stdio.h> // 新增头文件,用于字符串格式化 int main(void) { // Disable nested interrupts _NSTDIS = 1; char adc_display_buf[16] = {0}; ADC_SD_Init(); LCDInit(); while(1) { // 添加死循环保持程序运行 // 读取校准后的ADC结果 int16_t calibrated_adc = ADC_SD_GetCalibratedResult(); // 格式化为字符串 sprintf(adc_display_buf, "ADC:%6d", calibrated_adc); // 实际调用LCD输出函数,删除原无效的函数声明行 lcd_printf(adc_display_buf); // 添加适当延时避免刷新过快 for(uint32_t delay = 0; delay < 200000; delay++); } }
2.2 LCD引脚配置缺失
当前LCDInit函数未配置对应IO口的功能模式,PIC24的LCD相关引脚默认是普通GPIO,需要先将LCD的COM口、SEG口对应的ANSEL位清0(关闭模拟功能)、TRIS位清0(设置为输出),并将引脚映射为LCD功能,可直接参考开发板官方示例中的IO配置部分补充代码。
2.3 时钟源异常
你定义了USE_SOSC使用外部32.768kHz晶振作为LCD时钟,若外部晶振未起振会导致LCD模块无工作时钟,可临时注释#define USE_SOSC宏,切换为内部LPRC时钟测试LCD是否可以点亮。
2.4 对比度设置过低
当前LCDREFbits.LCDCST = 2仅设置了2/7的最大对比度,大部分段码LCD在该配置下无法看到显示内容,可先将该值修改为5或6提高对比度,确认显示正常后再调整到合适值。
2.5 显存未写入
初始化LCD后你从未往LCD显存寄存器中写入显示数据,需要确保你调用的lcd_printf函数内部会将字符串转换为对应段码,写入LCD的显存寄存器中。
内容的提问来源于stack exchange,提问作者VGDS
相关产品推荐
相关产品推荐

