《第19章stc单片机比较器原理及实现资料》由会员分享,可在线阅读,更多相关《第19章stc单片机比较器原理及实现资料(20页珍藏版)》请在金锄头文库上搜索。
1、STC单片机比较器原理及实现 主主 讲:何宾讲:何宾 Email:hebin 2016.03 STC15W系列单片机内置了模拟比较器。对于STC15W201S、 STC15W404S,以及STC15W1K16S系列单片机的比较器内部结 构 STC单片机比较器结构 从图中可以看出,比较器正端输入CMP+的输入电压来自单片机的 P5.5引脚,而比较器的负端输入CMP的输入电压来自单片机的 P5.4引脚或者是内部的BandGap参考电压(1.27V)。当: VCMP+VCMP时,比较器输出逻辑高(1)。 VCMP+VCMP时,比较器输出逻辑高(1)。 VCMP+VCMP;当该 位为0时,VCMP+V
2、CMP。 STC单片机比较器寄存器组 -比较控制寄存器1 本节介绍比较控制寄存器CMPCR2,该寄存器位于特殊功能寄存器 地址为0xE7的位置。当复位后,该寄存器的值为“00001001”。 STC单片机比较器寄存器 - 比较控制寄存器2 比特B7B6B5B4B3B2B1B0 名字 INVCM PO DISFLTLCDTY5:0 其中: INVCMPO 比较器输出取反控制位。当该位为1时,将比较器的输出取反后 再输出到单片机的P1.2引脚;当该位为0时,比较器正常输出。 注:比较器输出,采用经过ENLCCTL控制后的结果,而不是模拟比较器直接的 输出结果。 DISFLT 去除比较器输出的0.1
3、S过滤器控制位。当该位为1时,关掉比较 器输出的0.1S过滤器;当该位为0时,比较器的输出经过0.1S过 滤器。 STC单片机比较器寄存器 - 比较控制寄存器2 LCDTY5:0 比较器输出端用于控制电平变化过滤器长度的设置位。当比较器 的输出结果变化的脉宽时间小于LCDTY5:0所设置的时钟周期的 值,则该脉冲的变化不能被输出,也就是被过滤掉 STC单片机比较器寄存器 - 比较控制寄存器2 在STC学习板上提供了标记为W1的可变电位器,用于将单片机 供电电压分压后,通过单片机的P5.5引脚送到比较器的正端CMP+。 在该设计中,将CMP+的电压和STC15系列单片机内的BandGap电 压(
4、大约为+1.27V)进行比较。 STC单片机比较器应用 当不断调整STC学习板上的可变电位器W1时,送到P5.5引脚。 当VP5.5VBandGap时,标记为LED10的灯会闪烁一下,表示VP5.5 当前电压高于VBandGap。 STC单片机比较器应用 【例19-1】低电压比较检测C语言描述的例子 代码清单19-1 main.c文件 #include “reg51.h“ sfr CMPCR1 =0xE6; /声明CMPCR1寄存器的地址0xE6 sfr CMPCR2 =0xE7; /声明CMPCR2寄存器的地址0xE7 #define CMPEN 0x80 /定义CMPEN的值为0x80,使
5、能位 #define CMPIF 0x40 /定义CMPIF的值为0x40,中断标志位 STC单片机比较器应用 #define PIE 0x20 /定义PIE的值为0x20,上升沿中断使能位 #define NIE 0x10 /定义NIE的值为0x10,下降沿中断使能位 #define PIS 0x08 /定义PIS的值为0x08,比较器正端选择位 #define NIS 0x04 /定义NIS的值为0x04,比较器负端选择位 #define CMPOE 0x02 /定义CMPOE的值为0x02,比较器结果输出控制位 #define CMPRES 0x01 /定义CMPRES的值为0x01,比
6、较器比较结果标志位 STC单片机比较器应用 #define INVCMPO 0x80 /定义INVCMPO的值为0x80,比较结果反向输出控制 位 #define DISFLT 0x40 /定义DISFLT的值为0x40,比较器输出端滤波使能控制 位 #define LCDTY 0x3F /定义LCDTY的值为0x3F,比较器输出区抖时间控制 void cmp_int() interrupt 21 /定义比较器中断服务程序cmp_int P46=!P46; /单片机引脚P4.6取反 CMPCR1 /清除比较器中断标志位 STC单片机比较器应用 void main() unsigned int
7、j=0; P46=0; /引脚P4.6初值为0 CMPCR1=0; /CMPCR1寄存器清零 CMPCR2=0; /CMPCR2寄存器清零 CMPCR1 /选择外部引脚P5.5作为比较器的正端输入 CMPCR1 /选择单片机内的BandGap电压作为比较器的负端输入 CMPCR1 /禁止输出比较器的比较结果 CMPCR2 /比较器的比较结果正常输出到单片机引脚P1.2 STC单片机比较器应用 CMPCR2 /使能比较器输出端的0.1S滤波电路 CMPCR2 /比较器结果不去抖动直接输出 CMPCR2|=(DISFLT /比较器结果在经过16个时钟周期后输出 CMPCR1|=PIE; /使能比较
8、器的上升沿中断 CMPCR1|=CMPEN; /使能比较器 EA=1; /CPU允许响应中断请求 while(1) if(CMPCR1 j30000;j+); /延迟一段时间 P47=!P47; /P4.7引脚取反 else P46=1; /否则当比较结果为高时,将P4.6引脚拉高 注:读者可以进入本书所提供资料的stc_program_example例子19-1目录下, 打开并参考该设计。 STC单片机比较器应用 下载和分析设计的步骤主要包括: 打开STC-ISP软件,在该界面内,选择硬件选项。将“输入用户 程序运行时的IRC频率设置为12.0000MHz。 单击“下载/编程”按钮,将设计下载设计到STC单片机。 用小螺丝刀旋转STC学习板上标记为W1的电位器旋钮。 STC单片机比较器应用