logo资料库

和泰单片机ADC用法说明.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 文件编码:HA0234S 简介简介简介简介 具备处理外部模拟信号功能是很多电子设备的基本要求。为了将模拟信号转换为数字信号, 就需要借助 A/D 转换器。将 A/D 功能和 MCU 整合在一起,就可减少电路的元件数量和电 路板的空间使用。 HT45F23 单片机内建 6 通道,12 位分辨率的 A/D 转换器。在本应用说明中,将介绍如何使 用 HT45F23 单片机的 A/D 功能。 工作原理 工作原理 工作原理 工作原理 HT45F23 单片机 A/D 模块的核心是一个内嵌的 12-Bit A/D 转换器,具体结构如下图所示: A/D 转换器结构图 转换器结构图 转换器结构图 转换器结构图 A/D 转换器的电源供应通过 VRSEL 位控制,由 VDD 或外部输入引脚 VREF 提供。数据寄 存器 ADRH 和 ADRL 用来保存 12-bit 的 A/D 转换结果,高 8 位放在 ADRH,而低 4 位则放 在 ADRL 的高 4 位。ADCR 和 ACSR 两个控制寄存器控制 A/D 的相关设定和操作。ACSR 寄存器的 ADCS0~ADCS2 位用来设定 A/D 时钟,为了保证 A/D 转换精度,A/D 时钟周期应 不小于 0.5µs。ACSR 中的 ADONB 位控制 A/D 模块功能的开关。在 ADPCR 寄存器中, PCR0~PCR5 控制共用 IO 引脚作为 A/D 输入脚还是普通 I/O 脚。而 ACS0~ACS2 控制哪个 引脚为 A/D 转换器的输入。START 为 A/D 转换过程启动位,当该位由 0→1→0,A/D 即开 始转换。EOCB 为转换结束标志位。当该位为 0,则表示 A/D 转换完成,反之,为 A/D 转 换过程正在进行中。 1 )  ,  +   L A H J A H )     H  1    )  #   H  1   )  ,  4 A B A H A  ? A  8   J = C A ) , 4  ) , 4 0 )  ,  , = J = 4 A C E I J A H I 5 6 ) 4 6 -  + * ) ,  . . 8 5 5 2 + "  8 4 - . ) , + 5  ) , + 5  B 5 ; 5 2 + 4 #  2 + 4  ) + 5  ) + 5  )  ,  +   ?  8 , , ) ,   * * E J 8 4 5 -  * E J ) , 4 . 5 > E J +   ?  , E L E @ A H  2 )    K J F K J  2 )   K J F K J
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 A/D 转换时序图见下图: A/D 转换时序图 转换时序图 转换时序图 转换时序图 注意: 当 ADPCR 中的 PCR5~PCR0 不都为“0”,即有选择转换通道,且 ADONB 为“0”,即 A/D 功能使能,A/D 模块才会被开启。读者可通过将 ADONB 设定“1”,关闭 A/D 模块。ADC 模块会增加系统功耗,当不用 ADC 时,建议设定 ADONB 位 (ACSR.6) 为“1”来减少系 统功耗。 A/D 的工作时钟和输入通道选择分别由 ACSR 寄存器的 ADCS0~ADCS2 和 ACSR 寄存器的 ACS0~ACS2 控制,如下所示: A/D 共用 I/O 通道如下图所示: 2 J ) , + )  ,  ?   L A H I E    J E  A      *      * 5 6 ) 4 6 -  + * ) + 5  ) + 5  2  M A H    4 A I A J -  @   B  )  , ?   L A H I E      , A B E  A  F  H J  ?   B E C K H = J E     5 A  A ? J  =  =   C  ? D =   A  5 J = H J   B  )  , ?   L A H I E   4 A I A J  )  , ?   L A H J A H )  ,  I =  F  E  C  J E  A   J ) , 5       * 5 J = H J   B  )  , ?   L A H I E   4 A I A J  )  , ?   L A H J A H      * 5 J = H J   B  )  , ?   L A H I E   4 A I A J  )  , ?   L A H J A H -  @   B  )  , ?   L A H I E   )  ,  I =  F  E  C  J E  A   J ) , 5   B B     J   5 6 J ) , + )  ,  ?   L A H I E    J E  A  B B ) ,   * ) , +    @ K  A  
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 A/D 使用步骤: 步骤 1:通过设定 ACSR 控制寄存器中的 ADCS2~ADCS0,选择 A/D 转换时钟。 步骤 2:通过设定 ADPCR 中的 PCR0~PCR5 的值,选择相应的 I/O 作为 A/D 输入引脚。 步骤 3:清除 ACSR 控制寄存器的 ADONB 位为零,使能 A/D 功能。 步骤 4:通过设定 ADCR 控制寄存器的 ACS2~ACS0,选择相应 A/D 转换通道与 A/D 转换 模块连接。 步骤 5:如果使用 A/D 中断,需要正确设定中断使能位。确保总中断使能位 EMI、多功能 中断使能位 EMFI 和 A/D 中断使能位 EADI 都设定为“1”。 (注意:执行 A/D 中断处理返回后,系统会自动清除 MFF,但不会自动清除 ADF, 需要手动清除 ADF)。 步骤 6:通过将 ADCR 控制寄存器的 START 位由 0→1→0,启动 A/D 转换。 步骤 7:如果使用查询法,可以通过检测 ADCR 控制寄存器的 EOCB 位是否为“0”,来判 断 A/D 转换是否完毕。若 EOCB 为“0”,A/D 转换完毕,这时 A/D 数据寄存器 ADRH/ADRL 可以读取。如果使用中断法,中断使能,堆栈未满,A/D 中断即可响 应。 注意: • 如果使用查询法,检测 ADCR 控制寄存器的 EOCB 位,来判断 A/D 转换是否完成。以上 中断方法就可以省略。 • ADC 模块会增加系统功耗,当不用 ADC 时,建议设定 ADONB 位(ACSR.6)为“1”,来 减少系统功耗。 3 " !    '  &  %  $  #  "  !  ! " # $ % & '      2 + $  2 9    + 2  5 +   ! 2 + #  2 9    +    5 +   2 + "  8 4 - .  8 + ) 2  5 +    2 )   +  2  5 +    2 + !  : 6 2 +  : 6  2 +   )  #   5 + 2 +   )  "   5 +  2 * $  )  !  4 - 5 2 * #  )   2 1  6 2 * "  )    ) 7 ,  2 +   2 * !  )    5 + 5 2 )   +   7 6  6 +  8 , , 8 5 5 2 )  )  2  +  7 6 2 ) !  )    1  6  2 ) "  )  -  6 +  2 ) #  ) 2  2 . , 2 ) $  )   *  2 ) %  ) -  *  2 *   5 ,   1  6  2 *   5 , 1  5 , ) 2 *  5 +   5 +  0 6 " # . ! "  5 5  2  )   '  &  %  $  #  "  !     ! " # $ % & '   2 )   +   7 6  6 +  2 )   +  2  5 +    2 + !  : 6 2 +  : 6  2 +   )  #   5 + 2 +   )  "   5 +  2 * $  )  !  4 - 5 2 * "  )    ) 7 ,  2 +   2 * !  )    5 + 5 2 *  5 +   5 +  8 , , 8 5 5 2 )  )  2  +  7 6 2 ) !  )    1  6  2 ) "  )  -  6 +  2 ) #  ) 2  2 . , 2 ) $  )   *  2 ) %  ) -  *  2 *   5 ,   1  6  2 *   5 , 1  5 , ) 0 6 " # . !   5 5  2  ) 0 6 " # . !  $   5  2  )  $  #  "  !      '  ! " # $ % & 8 , , 2 )   +   7 6  6 +  2 )   +  2  5 +    2 + !  : 6 2 +  : 6  2 +   )  #   5 + 2 +   )  "   5 +  2 * $  )  !  4 - 5 8 5 5 2 )  )  2  +  7 6 2 ) !  )    1  6  2 ) "  )  -  6 +  2 ) #  ) 2  2 . , 2 ) $  )   *  2 ) %  ) -  *  2 * !  )    5 + 5
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 应用电路 应用电路 应用电路 应用电路 VDD C1 0.1uF GND com4 key Vref a AN5 AN4 AN3 AN2 AN1 AN0 1 2 3 4 5 6 7 8 9 10 11 12 PC6/PWM1/C2P/SCOM3 PC5/PWM0/C1N/SCOM2 PC4/VREF/VCAP/SCOM1 PA0/CNP/SCOM0 PC3/XT2 PC2/XT1 PC1/AN5/OSC2 PC0/AN4/OSC1 PB6/AN3/RES PB5/AN2/PINT PB4/AN1/AUD/PCLK PB3/AN0/SCS PA1/CIOUT/TC0 VDD VSS PA2/A1P/C2OUT PA3/A1N/INT0 PA4/A1E/TC1 PA5/A2P/PFD PA6/A2N/BZ PA7/A2E/BZ PB0/SD0/INT1 PB1/SDI/SDA PB2/SCK/SCL 24 23 22 21 20 19 18 17 16 15 14 13 b VDD GND c d e f g dt com1 com2 com3 Key HT45F23 24 SSOP-A R11 330 Key A N 0 A N 1 A N 2 A N 3 A N 4 A N 5 VDD VDD VDD VDD VDD VDD c o m 4 c o m 3 c o m 2 c o m 1 R5 10K R6 R7 R8 R9 R10 10K 10K 10K 10K 10K GND GND GND GND GND GND GND 说明: dt g f e d c b a R1 1K a b c d e f g t d 1 m o c 2 m o c 3 m o c 4 m o c Q1 Q2 Q3 Q4 GND GND GND GND R2 R3 R4 1K 1K 1K 本次范例程序有两个,一个为查询法,一个为中断法。通过这两个简单的应用,介绍如何 通过查询标志位和中断两种方法使用 HT45F23 的 A/D 功能,实现多通道 A/D 采样。 按键 Key 可以切换 A/D 采样通道。在数码管 1 显示当前采样通道值,数码管 2、3、4 显示 该通道电压值。 本范例中,A/D 模块的电压接电源 VDD。当不用 ADC 时,设定 ADONB 位(ACSR.6)为“1”, 用于减少系统功耗。读者可根据实际情况,设定 VRSEL=1,由 VREF 输入,提供 A/D 模 块的参考电压。 4
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 S/W 流程图流程图流程图流程图(查询法查询法查询法查询法) 主程序流程 开始 RAM及程序 状态初始化 有键按下 Y N A/D转换 A/D处理 数码管显示 N 切换A/D 输入通道 A/D转换流程 设定ADCR、ACSR、 ADPCR寄存器 START=0 START=1 START=0 EOCB=0 Y A/D转换完成, 进入转换处理 128次A/D 转换完成 Y 返回 N 程序说明 程序说明 (查询法查询法查询法查询法) 程序说明程序说明 程序首先初始化变量,设定数码管 SEG、COM 输出模式,按键输入模式,上拉电阻。关闭 A/D 中断。 设定 ACSR,即设定 ADONB 位,是否使能 A/D 功能及设定 ADCS2~ADCS0,选择 A/D 转换 时钟。 设定 ADPCR,即设定 PCR5~PCR0,使能共用 I/O 为 A/D 输入引脚。 设定 ADCR 寄存器中 ACS2~ACS0,选择相应的 A/D 转换通道与内部转换模块相连。 START=0→1→0,启动 A/D 转换。判断 EOCB 是否为“0”,不为“0”,说明 A/D 转换还没 完毕;一直查询 EOCB 为“0”,说明 A/D 转换已经完毕。进行 128 次 A/D 转换,通过简单 四则运算,将 128 次 A/D 转换结果求平均值并转为 BCD 码,最后将结果通过数码管显示 程序将其显示出来。判断是否有按键,有按键改变 A/D 转换通道。无则返回,重新启动 A/D 转换。 程序范例 程序范例 (查询法查询法查询法查询法) 程序范例程序范例 Configuration Option: OSC: Internal RC: PB6/RES: WDT: ;other option select by user. 程序代码及说明:见附件 HIRC, Filter OFF 4M@Vdd= 5V PB6 Enable 5
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 S/W 流程图流程图流程图流程图(中断法中断法中断法中断法) 程序说明 程序说明 (中断法中断法中断法中断法) 程序说明程序说明 • 主程序: 程序首先初始化变量,设定数码管 SEG、COM 输出模式,按键输入模式,上拉电阻。关闭 A/D 中断。 设定 ACSR,即设定 ADONB 位,是否使能 A/D 功能及设定 ADCS2~ADCS0,选择 A/D 转 换时钟。 设定 ADPCR,即设定 PCR5~PCR0,使能共用 I/O 为 A/D 输入引脚。 设定 ADCR 寄存器中 ACS2~ACS0,选择相应的 A/D 转换通道与内部转换模块相连。 EMI=1,开启总中断。EMFI=1,使能多功能中断。EADI=1,开启 A/D 中断。 START=0→1→0,启动 A/D 转换。通过判断 ADF 是否为“1”,等待 A/D 转换中断。进 行 128 次 A/D 转换,通过简单四则运算,将 128 次 A/D 转换结果求平均值并转为 BCD 码,最后将结果通过数码管显示程序将其显示出来。判断是否有按键,有按键改变 A/D 转换通道。无则返回,重新启动 A/D 转换。 • 中断服务程序: 判断 ADF 是否为“1”,若为“0”,说明不是 A/D 中断,退出中断;若 ADF 为“1”,说 明为 A/D 中断,进入 A/D 中断处理子程序。执行 A/D 中断处理子程序返回后,系统会自 动清除 MFF 但不会自动清除 ADF,需要手动清除 ADF,以保证下次 A/D 转换完成后能 再次进入 A/D 中断子程序处理。 6
HT45F23 ADC 功能应用实例 功能应用实例 功能应用实例 功能应用实例 程序范例 程序范例 (中断法中断法中断法中断法) 程序范例程序范例 Configuration Option: OSC: Internal RC: PB6/RES: WDT: HIRC, Filter OFF 4M@Vdd= 5V PB6 Enabl ;other option select by user. 程序代码及说明:见附件。 总结总结总结总结 本文通过上面应用实例,对如何使用两种方式进行 HT45F23 的 A/D 采样进行介绍,读者可 根据相应的使用情况进行选择。 7
分享到:
收藏