STC15F104W单片机利用RC充放电测量外部电压

需积分: 20 2 下载量 121 浏览量 更新于2024-09-09 收藏 146KB DOC 举报
"STC15F104W利用RC充放电使用IO口测量外部电压" 本文档介绍了使用STC15F104W单片机利用RC充放电方式测量外部电压的方法。该方法适用于没有ADC的MCU,同时也可以实现低成本的电压测量。 首先,STC15F系列单片机具有OPEN-DRAIN模式的IO口,可以用来实现RC充放电。RC充放电是一种常用的电压测量方法,将电压信号转换为时间信号,通过测量时间来计算电压值。 在本例中,我们使用P3.2(INT0)作为RC测量口,电路和波形示意图如下: [pic] [pic] 操作流程如下: 1. 初始化程序将P3.2设置成OPEN-DRAIN模式,并将P3.2输出0给电容放电。INT0设置成上升沿中断。Timer 0设置成16位自动重装定时器模式,时钟源为12T,允许中断。 2. 测量时,先清Timer 0的TH0、TL0,然后将P3.2输出1开始对电容充电,接着设置TR0=1来启动Timer 0,然后在INT0中断里设置TR0=0来停止计数,并将P3.2输出0对电容放电。读出TH0、TL0的值就是RC充电时间。 由于MCU工作在5V时,IO口读到“1”的门限电压大约为2V,所以要求输入的电压高于2V。本例的测试数据从4~12.4V,测试结果参考后面的附录1。 RC充电时间的计算公式为: T=-R*C*ln(1–2/Ux) 其中,Ux是输入电压,R和C是电阻和电容的值。根据公式可以计算出RC充电时间。 在实际项目中,需要根据自己的实际电路做一些标定,以取得比较准确的值。同时,也需要选择温漂小并且漏电也小的电容,以确保测量结果的准确性。 本方法适用于对测量精度要求不是很高的场合,能够实现低成本的电压测量。 附录1:测量结果和曲线 | 输入电压(V) | Timer0读数 | 时间uS(18.432MHZ) | | --- | --- | --- | | 4 | 2100 | 1367 | | 4.2 | 1966 | 1280 | | 4.4 | 1846 | 1202 | | 4.6 | 1740 | 1133 | | 4.8 | 1646 | 1072 | | 5 | 1560 | 1016 | | 5.2 | 1487 | 968 | | 5.4 | 1416 | 922 | | 5.6 | 1354 | 882 | | 5.8 | 1297 | 844 | | 6 | 1245 | | 通过该方法可以实现对外部电压的测量,并且能够满足低成本和小型化的要求。