You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:45:03