找回密码
 立即注册
查看: 173|回复: 23

STC32G显示电压一直不变求教

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-30 10:19:38
已绑定手机

1

主题

10

回帖

27

积分

新手上路

积分
27
发表于 3 天前 | 显示全部楼层 |阅读模式
void main()
{

        /********************************************************/
        P0M1=0x00;
        P0M0=0xfe;
        P1M1=0x01;
        P1M0=0x00;
        P3M1=0x00;//0000 0000
        P3M0=0xf3;//1111 1011
        P2M1=0x00;
        P2M0=0xff;
        P5M1=0x00;
        P5M0=0x00;
        P1IE=0xfe;
        /*********************************************************/
        /**************************************************************/
        fan=0;
        usb_OUT=1;
        Light=255;
        //OUTAC=255;
Ht1621_Init(); //上电初始化LCD
//pwm_init();
kj=0;
kj1=0;
kj2=0;
BG=0;
USBOUT=0;
key1=1;
PCON &= ~LVDF;                  //上电后需要清LVD中断标志位
ELVD = 1;                       //使能LVD中断
/******************************************************************/       
ADCTIM = 0x3f;                //设置 ADC 内部时序,ADC采样时间建议设最大值
    ADCCFG = 0x2f;                //设置 ADC 时钟为系统时钟/2/16/16
    ADC_CONTR = 0x80;   //使能 ADC 模块
    ADCCFG = 0x0f;                             //设置ADC时钟为系统时钟/2/16/16,zuo对齐
        /*****************************************************************/
_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();
DelayMS(200);               
IapEraseSector(0x0400);       
Light&=0x00;       
//Light&=0xbd;//1011 1101
/*********************************************************************************************/

while(1)
{       

        ADC_RES=0;                                                                //寄存器清零
        ADC_RESL=0;

        ADC_CONTR |= 0x40;                      //启动AD转换
    _nop_();
        _nop_();
        _nop_();
    _nop_();
  while (!(ADC_CONTR & 0x20));            //查询ADC完成标志
    ADC_CONTR = ADC_CONTR & 0x9f;                        //清除ADC完成标志
        ADCH_Value=ADC_RES;                                                //保存ADC转换的值
        ADCL_Value=ADC_RESL;


        //adc_v=Get_ADC12bitResult(1);
        adc_v=ADCH_Value*256;
        adc_v+=ADCL_Value<<4;

        a=adc_v/1000;
bb=adc_v%1000/100;
e=adc_v%100/10;
d=adc_v%10;
        /*************************************************************/
下面是LCD显示... 3504.jpg


我把输入电压从5V变到15V这个显示数值就是没反应,不知道什么问题?P1.0/ADC0通道。



回复

使用道具 举报 送花

3

主题

1928

回帖

704

积分

等待验证会员

积分
704
发表于 3 天前 | 显示全部楼层
您好,根据您提供的代码和问题描述“STC32G显示电压一直不变”,我来分析可能的原因以及建议的排查方法。

一、问题描述

您使用的是 STC32G 系列单片机,在使用 ADC 采集电压信号后,通过 LCD 显示,但发现电压显示值 一直不变,无论输入电压如何变化。

二、代码分析

从您的代码片段中,可以看到以下几点:

1. 端口配置部分:
对 P0~P5 端口进行了模式配置(推挽/开漏等),这部分配置是否正确,将影响 ADC 引脚是否能正常输入。
特别注意是否将 ADC 对应的引脚设置为 模拟输入模式(即 PnM1 和 PnM0 设置为 0x01)。

2. ADC 初始化部分:
ADCTIM = 0x3f; 设置了 ADC 采样时间,建议设为最大值,这在低频或高精度场合是合理的。
ADCCFG = 0x2f; 和 ADCCFG = 0x0f; 设置了 ADC 时钟分频,需要注意是否与系统时钟匹配。
ADCCONTR = 0x80; 启用了 ADC 模块。

3. 未看到 ADC 采样启动与读取部分:
从代码中没有看到 ADC 转换的启动(如设置 ADCCONTR 的 CHS 位)和读取结果(读取 ADCRES 和 ADCRESL)的逻辑。
如果没有实际执行 ADC 采样并读取数值,那么电压值自然不会变化。

4. LCD 显示部分:
Ht1621Init(); 是 LCD 初始化函数,但没有看到后续的数据显示逻辑。
如果显示逻辑没有根据 ADC 采集结果更新,也会导致显示不变。

三、常见问题排查方向

1. ADC 引脚配置是否正确?

STC32G 的 ADC 引脚需要设置为 模拟输入模式,即:

```c
PnM1 |= (1

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 3 天前 | 显示全部楼层
使用屠龙刀例程包-“08-16路ADC轮询-每路16次ADC转换取中间8次求平均值-串口1返回结果”测试

示波器观察VREF和ADC引脚实际波形

https://www.stcaimcu.com/data/do ... DIP64-DEMO-CODE.zip
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-30 10:19:38
已绑定手机

1

主题

10

回帖

27

积分

新手上路

积分
27
发表于 3 天前 | 显示全部楼层
代码我压缩打包发上来了,主要ADC看看少了哪个寄存器没配置
回复里怎么不能上传图片?

晕啊,要发布后编辑才有上传图片功能
启动显示.png
线路板.png

        P1M1=0x01;
        P1M0=0x00;

这两个配置不能对ADC0/P1.0通道有效?

STC32G.rar

83.18 KB, 下载次数: 2

点评

先使用例程测试下,至少例程测过的,上传的这个代码看着基本扩展使能都没开呢 EAXFR = 1; //扩展寄存器(XFR)访问使能 [attachimg]116504[/attachimg] 新手必读!新手必读!新手必读!新手必读!新手必读!新手  详情 回复 发表于 3 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 3 天前 | 显示全部楼层
fzh*** 发表于 2025-9-30 10:44
代码我压缩打包发上来了,主要ADC看看少了哪个寄存器没配置
回复里怎么不能上传图片?

先使用例程测试下,至少例程测过的,上传的这个代码看着基本扩展使能都没开呢

    EAXFR = 1; //扩展寄存器(XFR)访问使能

截图202509301102052829.jpg
新手必读!新手必读!新手必读!新手必读!新手必读!新手必读!新手必读!新手必读! - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯人工智能技术交流网站 - AI32位8051交流社区
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-30 10:19:38
已绑定手机

1

主题

10

回帖

27

积分

新手上路

积分
27
发表于 3 天前 | 显示全部楼层
erci*** 发表于 2025-9-30 11:02
先使用例程测试下,至少例程测过的,上传的这个代码看着基本扩展使能都没开呢

    EAXFR = 1; //扩展寄 ...

EAXFR = 1; 我试过了,这句不管放哪里下载就进行不了,一直下载不了程序

点评

下载不了提示什么截图看看  详情 回复 发表于 3 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 3 天前 | 显示全部楼层
fzh*** 发表于 2025-9-30 11:24
EAXFR = 1; 我试过了,这句不管放哪里下载就进行不了,一直下载不了程序


下载不了提示什么截图看看

三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:192
  • 最近打卡:2025-10-02 16:25:18

76

主题

6747

回帖

1万

积分

超级版主

积分
14273
发表于 3 天前 | 显示全部楼层
先用一个自行改变的变量代替ADC值显示,看数字是否变化,然后再改回显示ADC值。主循环取反一个IO,示波器观察主循环是否正常执行。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-30 10:19:38
已绑定手机

1

主题

10

回帖

27

积分

新手上路

积分
27
发表于 3 天前 | 显示全部楼层
erci*** 发表于 2025-9-30 11:26
下载不了提示什么截图看看

这句不能加.png 用的下载线.png

点评

这两没直接关系,可以上传这个问题工程我试下,下载例程包里带EAXFR操作的例程也不行? 普通串口工具下载要注意手动上下电。  详情 回复 发表于 3 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:315
  • 最近打卡:2025-10-02 12:32:59
已绑定手机

83

主题

3209

回帖

7092

积分

荣誉版主

无情的代码机器

积分
7092
发表于 3 天前 | 显示全部楼层

这两没直接关系,可以上传这个问题工程我试下,下载例程包里带EAXFR操作的例程也不行?

普通串口工具下载要注意手动上下电。
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-3 08:52 , Processed in 0.126346 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表