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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
主函数
; D3 z. Y8 D% G( k3 Q- d+ }#include "CH554.H"                                                   8 ]; y, `  s+ s/ Q7 F4 s& T
#include "Debug.H". c" N; @) j8 J" |% k
#include "GPIO.H"" |# y3 U' h. k# c: b
#include "HT1621.H"# F# o5 r1 I, o  \  ^0 z
#include "ADC.H"' @' l% U( m) U4 ~4 i$ b" i  R
#include "stdio.h"' _  ^- A7 j6 `7 H: Y, p. v
#include <string.h>8 R0 O6 @- R% t. P( C) `* k, c' [: ~
#include <intrins.h>
( G+ D8 j8 k& q7 Y$ N# h' _  `( }( ^#define uchar unsigned char
" N! ]% T1 @. b3 K& X$ L$ O( x#define uint  unsigned int5 q1 W" w9 I/ H7 M6 x
! r& x( k- ?/ o( d
uchar code tabe1[11] = {0xF0,0x00,0xD0,0x90,0x20,0xB0,0xF0,0x10,0xF0,0xB0};
6 \; Z$ V% q) z7 d) F2 Z. e2 ?uchar code tabe2[11] = {0xA0,0xA0,0x60,0xE0,0xE0,0xC0,0xC0,0xA0,0xE0,0xE0};
8 g* j* m+ K- O8 u$ q( h/ X0 N" I- E, ]! B
uchar a0,a1,a2,num;
  q1 P9 I  ^" Z* \+ K4 v4 ]# j' [0 u1 V
/*******************************************************************************
3 k- I  m+ Z. _( u0 J( {1 a9 _; D* Function Name  : Show_Init()
4 ?. t. l- M& A8 a* Description    : 显示对应的电压
3 ~9 G( _" a+ C*******************************************************************************/
% n0 c" I2 I( y1 U, v) z' Hvoid Show_Init(uchar a0,uchar a1,uchar a2)
( d! O* ^# Q- H, J. x, S{$ I9 J; l- o* P! Y$ V' H4 Z& ?  U
        Write_1621(15,tabe1[a0],4);7 c1 N( p) c8 X9 o" B
        Write_1621(16,tabe2[a0],4);
* N( A; K4 \1 B) u+ n  j        Write_1621(17,tabe1[a1],4);! {5 K, N1 p9 a6 `, J6 u
        Write_1621(18,tabe2[a1],4);
: V9 f6 C% k! F: l        Write_1621(19,tabe1[a2],4);
0 ^- b/ A9 Y8 K        Write_1621(20,tabe2[a2],4);5 \! ~$ G7 A: e3 n# k
}void main( )
6 _, D4 ?9 Y% o{
5 k1 C9 Q: z7 p  D4 ?, e( t0 Q+ O2 c        UINT16 i;' }+ T+ B9 U5 }# g  ~
        ADCInit(0);
$ L% P0 F' }% }3 X# I, `        EA=1;              //开启全局中断
6 o" Z' d+ H+ W  n/ r! x6 ]        Init_1621();       //初始化HT1621
# K& V+ F7 w# k  _2 y4 N3 E; D        HT1621_all_off();  //清空LCD显示
, n9 r' K$ U2 {. H$ B5 D& @        while(1)0 ^8 l$ e" s( a" [& F) S! ^% r
        {
; i' N6 q* _; J- L; U% e                for(i=0;i<4;i++)
. Q% z" V* ^; L/ g0 {  t, e' k                {4 V) s5 c% J; ?7 U( [) y
                        ADC_ChannelSelect(3);         //ADC采样电源开启和通道设置,采样通道AIN3
) Z  w* W/ i1 x* z& @/ r                        ADC_START = 1;                //开启采样,等待采样完成进入中断5 a4 r& Q+ r5 O2 a' d+ h2 r6 h
                        while(ADC_START);             //采样完成,ADC_START=0* H; y7 I+ D% x& T
                        num=ADC_DATA;
2 d* b% Y2 o( A+ D2 r: ?! X                        mDelaymS(100);                //等待,进入下通道采集数据; u  X6 y1 n; N! `2 s
                }        
+ q- m1 i4 W  o, T                a0=num/100;% D9 ^$ {7 K# P! m0 f) I
                a1=num%100/10;
+ J6 L; ]! H1 T                a2=num%10;
( ~( E7 s1 o2 V5 o& }1 y) Q  }                Show_Init(a0,a1,a2);
7 ?" k" K/ n3 d7 t6 z8 g        }9 J0 j. O: g4 M
}
$ z0 C8 _$ f$ G
( Q4 S" f/ o+ C- V: @/ Y: T: Z1 d4 a6 i' C) @& V

该用户从未签到

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

5 v0 z2 J" j, |$ L+ v) [0 i这个需要从3个方面找原因:
1 j9 _, r" S2 ^" @( K1. 显示功能是否正常;
" D! ]# M2 \8 w2. ADC工作是否正常;
9 X& o% [+ g6 W/ I- G( J3. 采集的数据是否送到了LCD上。
: n! I6 p- B/ e' G: f3 L   三个环节缺一不可。

该用户从未签到

3#
发表于 2021-12-10 18:12 | 只看该作者
以下几点,核对一下:
2 ^/ c" Y- @. C
8 N9 u8 G" q" p/ H4 K6 rADC 采样模式配置步骤:3 i( U; M6 K. L/ Y
(1)、设置 ADC_CFG 寄存器中的 ADC_EN 位为 1,开启 ADC 模块,设置 bADC_CLK 选择频率。* `( e( e# X" s! m7 j4 i; ~! u
(2)、设置 ADC_CTRL 寄存器中的 ADC_CHAN1/0,选择输入通道。
. c/ F1 c+ ]5 B3 o+ T6 O(3)、可选的,清零中断标志 ADC_IF。可选的,如果使用中断模式,还需要在此使能中断。
/ W$ U' {5 R: ]. j(4)、设置 ADC_CTRL 寄存器中的 ADC_START,启动一次 ADC 转换。
- S2 u" q( L- T(5)、等待 ADC_START 变为 0,或者 ADC_IF 被置 1(如果之前已清零),表示 ADC 转换结束,可通过
/ S$ b; l5 l, {ADC_DATA 读取结果数据。该数据是输入电压相对于 VCC 电源电压的 255 等份的值,例如,结 果数据是 47,说明输入电压接近 VCC 电压的 47/255。如果 VCC 电源电压也不确定,那么可以 另测一个确定的参考电压值,再按比例计算出被测的输入电压值和 VCC 电源电压值。
0 c4 Z  j  @; x" ?8 W(6)、如果再次设置 ADC_START 则可启动下一次 ADC 转换。5 A" n. t# r+ Z; {
3 D- W, ~, v# v# ]
另外,重点:4 A  t: Y0 ?5 d) L2 \3 x
端口模式,必须设置为输入并且处于输出 1 的状态(相当于高阻输入),Pn_DIR_PU[x]=0,并且建议关闭上拉电阻和下拉电阻。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-23 08:07 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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