基于COP820CJ单片机的动态输入范围PWMA/D转换器设计

0 下载量 32 浏览量 更新于2024-09-04 收藏 238KB PDF 举报
用单片机设计动态输入范围的PWMA/D转换器 本文介绍了一种基于脉宽调制的A/D变换器的设计方案,该方案利用COP820CJ片上比较器实现动态输入范围的PWMA/D转换。该设计方案包括硬件电路和软件程序两部分,硬件电路部分主要由COP820CJ单片机、比较器和外围电路组成,而软件程序部分则负责控制A/D转换器的输入电压和脉宽调制。 知识点1:COP820CJ单片机介绍 COP820CJ是美国国家半导体公司生产的一款8位单片机,它具有64字节RAM和1k字节ROM,24个I/O口,时钟频率为10MHz,工作电压为2.5~6.0V。COP820CJ具有多输入唤醒(MIWU)、低压复位保护、片上模拟比较器和低电磁辐射设计等功能。 知识点2:COP820CJ的端口介绍 COP820CJ的端口分为L/I/D/G四类。其中I口为4位输入端口,D口为4位输出端口,G口有6位I/O口和2位输入口,L口为8位I/O口。L口也是芯片的唤醒端口,其中L1和L2又是比较器输入口,L3又是比较器输出口。L口配有数据寄存器(LDATA[0DOH])和配置寄存器(LCONF[0D1H]),两寄存器可共同决定该端口的状态。 知识点3:COP820CJ的工作原理 COP820CJ的工作原理是利用片上模拟比较器和脉冲宽度调制方式可以构成由软件调控且输入范围可变的A/D转换器。比较器输入端口L1和L2,电容电压小于输入电压时,L3端输出高电平脉冲。反之,L3输出低脉冲,并对低脉冲减1计数。电路中的输入电压可通过L1、L2之间并联的两个背向二极管对电容C1快速充放电,以使两者电位迅速接近。 知识点4:A/D转换器的设计方案 A/D转换器的设计方案是利用COP820CJ的片上比较器和脉冲宽度调制方式来实现动态输入范围的A/D转换。该设计方案包括硬件电路和软件程序两部分,硬件电路部分主要由COP820CJ单片机、比较器和外围电路组成,而软件程序部分则负责控制A/D转换器的输入电压和脉宽调制。 知识点5:输入电压范围的调整 通过设定高低脉冲的参数可以使电容电压始终保持在测量范围之内。例如,若电源为5V,时钟频率为10MHz,脉冲周期为24个,即2.4μs,输入电压范围是1.0V~3.3V。

解释以下代码:#include "stc32g.h" #include "intrins.h " #define uchar unsigned char void main() { char CY1,CY2,CY3; EAXFR=1; CKCON=0x00; WTST=0x00; CKCON =0x00; WTST= 0x00; P0M0 = 0x00; P0M1 = 0x00; P1M0= 0x00; P1M1= 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1= 0x00; while (1){ P33=1; _nop_(); _nop_(); CY1=P33; P14=1; _nop_(); _nop_(); CY2=P14; P15=1; _nop_(); _nop_(); CY3=P15; if(CY1==1&&CY2==0&&CY3==1){ PWMA_CCER1=0x00; PWMA_CCMR1 =0x60; PWMA_CCMR2 =0x60; PWMA_CCER1= 0x11; PWMA_CCR1H = 0x17; PWMA_CCR1L= 0x00; PWMA_CCR2H = 0x17; PWMA_CCR2L= 0x00; PWMA_ARRH= 0x6f; PWMA_ARRL= 0x00; PWMA_ENO=0x05; PWMA_PS=0x0A; PWMA_BKR= 0x80; PWMA_CR1=0x01; } if(CY1==0&&CY2==1&&CY3==1){ PWMA_CCER1=0x00; PWMA_CCMR1 =0x60; PWMA_CCMR2 =0x60; PWMA_CCER1= 0x11; PWMA_CCR1H = 0x10; PWMA_CCR1L= 0x00; PWMA_CCR2H = 0x17; PWMA_CCR2L= 0x00; PWMA_ARRH= 0x6f; PWMA_ARRL= 0x00; PWMA_ENO=0x05; PWMA_PS=0x0A; PWMA_BKR= 0x80; PWMA_CR1=0x01; } if(CY1==1&&CY2==1&&CY3==0){ PWMA_CCER1=0x00; PWMA_CCMR1 =0x60; PWMA_CCMR2 =0x60; PWMA_CCER1= 0x11; PWMA_CCR1H = 0x17; PWMA_CCR1L= 0x00; PWMA_CCR2H = 0x10; PWMA_CCR2L= 0x00; PWMA_ARRH= 0x6f; PWMA_ARRL= 0x00; PWMA_ENO=0x05; PWMA_PS=0x0A; PWMA_BKR= 0x80; PWMA_CR1=0x01; } if(CY1==0&&CY2==0&&CY3==0){ PWMA_CCER1=0x00; PWMA_CCMR1 =0x60; PWMA_CCMR2 =0x60; PWMA_CCER1= 0x11; PWMA_CCR1H = 0x00; PWMA_CCR1L= 0x00; PWMA_CCR2H = 0x00; PWMA_CCR2L= 0x00; PWMA_ARRH= 0x6f; PWMA_ARRL= 0x00; PWMA_ENO=0x05; PWMA_PS=0x0A; PWMA_BKR= 0x80; PWMA_CR1=0x01; } if(CY1==1&&CY2==1&&CY3==1){ PWMA_CCER1=0x00; PWMA_CCMR1 =0x60; PWMA_CCMR2 =0x60; PWMA_CCER1= 0x11; PWMA_CCR1H = 0x17; PWMA_CCR1L= 0x00; PWMA_CCR2H = 0x17; PWMA_CCR2L= 0x00; PWMA_ARRH= 0x6f; PWMA_ARRL= 0x00; PWMA_ENO=0x05; PWMA_PS=0x0A; PWMA_BKR= 0x80; PWMA_CR1=0x01; } }}

2023-07-11 上传