找回密码
 注册
关于网站域名变更的通知
查看: 259|回复: 2
打印 上一主题 下一主题

使用ch552 ADC采集电压,为什么没有显示ADC的数值

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-10 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
主函数8 Q: M% E  P. }0 v% j
#include "CH554.H"                                                   
# X9 j) `& Z& F1 l#include "Debug.H"2 W7 S/ _0 {9 e! e% u
#include "GPIO.H"1 |" N# v; I& `: |, G% g/ C
#include "HT1621.H"
0 n% g5 u4 }7 V3 p5 o' R3 ^- X9 T#include "ADC.H", I. f( V% z4 U+ M
#include "stdio.h": \9 C, F/ \$ C
#include <string.h>4 [+ A0 j) Q  h, X6 C
#include <intrins.h>
# d- u; n* J. i! j  B; ?#define uchar unsigned char0 ]5 [; `/ ^$ R8 _
#define uint  unsigned int' R! Q- T7 I4 e! l/ b

7 K/ c+ `8 E" O" `9 a, r5 Ruchar code tabe1[11] = {0xF0,0x00,0xD0,0x90,0x20,0xB0,0xF0,0x10,0xF0,0xB0};
7 ?2 E& Q; p  g4 ?: c8 E0 Buchar code tabe2[11] = {0xA0,0xA0,0x60,0xE0,0xE0,0xC0,0xC0,0xA0,0xE0,0xE0};% o6 t) A6 a. N
; E7 Z, `& R+ g! X# e
uchar a0,a1,a2,num;. ?6 `1 Z. O+ b' w7 V2 B
. v, T8 V+ E/ J/ R: A) [4 ]: H
/*******************************************************************************  u$ w8 o8 |+ K( E4 x
* Function Name  : Show_Init()' M8 W9 g( @8 G! C8 B, _! v2 L1 n
* Description    : 显示对应的电压0 ?5 x; U8 e* C7 x: R0 \2 Y# w
*******************************************************************************/9 \0 v& g7 k: x+ E" b
void Show_Init(uchar a0,uchar a1,uchar a2)1 o9 m' D/ y0 a9 l3 ~; W
{
! @( a4 c( p% X$ X        Write_1621(15,tabe1[a0],4);
& D/ X. D) f8 I5 {, M/ S% g" k5 W( A* @        Write_1621(16,tabe2[a0],4);  @% _% O6 {" y1 G9 U- ]
        Write_1621(17,tabe1[a1],4);
% b7 Y0 X( Y+ M# E2 ^( Q6 B7 [        Write_1621(18,tabe2[a1],4);
  Z+ j' T: l/ A/ w        Write_1621(19,tabe1[a2],4);. Y- D2 a/ y$ Z
        Write_1621(20,tabe2[a2],4);9 N/ x3 |2 H! c3 w& d' n: u* y
}void main( )
) R9 O, X* N0 u8 L: X{2 Y8 Y" Y3 X  A2 f1 B0 y1 H" n" {5 v) `
        UINT16 i;6 G& h- \! c" S% S
        ADCInit(0);
$ G  C" Z! A9 C6 p% f3 u& t& {        EA=1;              //开启全局中断
& C- I5 S8 R/ g+ J/ @8 m- N        Init_1621();       //初始化HT1621  m, w& P: m! O9 m
        HT1621_all_off();  //清空LCD显示
/ P7 d, P3 M; |: k' l" w) G  r* @# D5 J        while(1)' ?( p" o3 b3 H: @6 M1 s
        {
  P1 N" O* h% W                for(i=0;i<4;i++)
1 w3 I9 Y' P, o7 Q: {. d                {( @' k& x' {- N2 r9 k
                        ADC_ChannelSelect(3);         //ADC采样电源开启和通道设置,采样通道AIN3
( K- z# f, c# N4 t, ^( f* D                        ADC_START = 1;                //开启采样,等待采样完成进入中断
# l0 D+ f: l! w, G! B                        while(ADC_START);             //采样完成,ADC_START=0- P: v. }7 |# a  r6 v
                        num=ADC_DATA;
8 y  j) B" R1 G0 W+ L                        mDelaymS(100);                //等待,进入下通道采集数据
* [/ O6 c9 C' u  A: e* K5 h) o                }        4 H- |  v, R+ f! f
                a0=num/100;2 B, D/ b& {+ N/ g
                a1=num%100/10;" |  V9 {/ k2 d% W4 h/ B3 [
                a2=num%10;
5 c1 X. d- p7 x                Show_Init(a0,a1,a2);
; j' x* n8 h0 R% _        }4 }$ {: n# [% r' s
}3 k8 k/ @/ A% I" }% W" s* i! n# r
6 t4 H- ?" z" G" G: V0 _

) M) _4 n1 S9 }# \7 x/ n/ g

该用户从未签到

2#
发表于 2021-12-10 11:26 | 只看该作者

/ u/ O) }; E& H$ l9 e& p这个需要从3个方面找原因:; @0 F  m- N( c2 O" Q6 w' D
1. 显示功能是否正常;2 V* M. e( k- p  w  @
2. ADC工作是否正常;
! I" e* t+ Z3 o; A0 l$ Y5 v0 g' W4 @" T3. 采集的数据是否送到了LCD上。$ V4 t2 q& y& w5 J  r) F1 r& x( j
   三个环节缺一不可。

该用户从未签到

3#
发表于 2021-12-10 18:12 | 只看该作者
以下几点,核对一下:
- U0 e; o8 U5 u/ M1 t9 B& S3 u7 Q1 k# Y1 ~% \8 C) e
ADC 采样模式配置步骤:) A# p; d6 j8 L4 {4 r) k7 ]
(1)、设置 ADC_CFG 寄存器中的 ADC_EN 位为 1,开启 ADC 模块,设置 bADC_CLK 选择频率。+ Y1 g  K0 b0 D9 ~* l8 o, q
(2)、设置 ADC_CTRL 寄存器中的 ADC_CHAN1/0,选择输入通道。: k; L7 e, U% j
(3)、可选的,清零中断标志 ADC_IF。可选的,如果使用中断模式,还需要在此使能中断。/ f  _$ v' x6 `2 s. e
(4)、设置 ADC_CTRL 寄存器中的 ADC_START,启动一次 ADC 转换。3 S$ _2 f0 {* Y& V) p; Y
(5)、等待 ADC_START 变为 0,或者 ADC_IF 被置 1(如果之前已清零),表示 ADC 转换结束,可通过% @. v7 }5 j6 B, N2 d( w  \& p6 s
ADC_DATA 读取结果数据。该数据是输入电压相对于 VCC 电源电压的 255 等份的值,例如,结 果数据是 47,说明输入电压接近 VCC 电压的 47/255。如果 VCC 电源电压也不确定,那么可以 另测一个确定的参考电压值,再按比例计算出被测的输入电压值和 VCC 电源电压值。
% @) j, w; y$ c! T, X) \(6)、如果再次设置 ADC_START 则可启动下一次 ADC 转换。) D2 @$ p' k$ |  F, i/ M
0 H: B1 \' y% ]! u8 v
另外,重点:7 O9 }! N. x4 H& C, ~) R9 y0 r, x
端口模式,必须设置为输入并且处于输出 1 的状态(相当于高阻输入),Pn_DIR_PU[x]=0,并且建议关闭上拉电阻和下拉电阻。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-6 21:24 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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