- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用宏晶科技的IAP单片机开发自己的ISP程序-STC宏晶科技
技术支持:(86第 PAGE 1 页 共 NUMPAGES 10 页传真:86-755话:86-755方网站:www.STCMCU.com宏晶科技STC15F系列单片机用RC充放电实现检测外部电压日期:2012-2-24版本:V1.0对于没有ADC的MCU,而又要测量外部的一个电压时,使用RC充放电的方式是比较容易实现并且低成本的方法。STC15F系列是1T的MCU,其IO口有OPEN-DRAIN模式,此模式可以很容易用一个IO口配合一个定时器实现RC充放电来测量外部未知电压。如果没有空余的定时器,也可以使用指令循环的方式实现。本例使用定时器。本范例使用P3.2(INT0)来做RC测量,电路和波形示意图如下:操作流程:初始化程序将P3.2设置成OPEN-DRAIN模式, 并将P3.2输出0给电容放电。INT0设置成上升沿中断。Timer 0设置成16位自动重装定时器模式,时钟源为12T,允许中断。测量时,先清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。假设输入电压为Ux,IO口门限电压为2V,则RC充电时间为: T = - R * C * ln ( 1 – 2 / Ux )按图示参数,当输入为10V时,RC时间大约为446uS,附录1中实测为447uS。由于RC时间跟R和C有关,而R的温漂一般较小,但普通电容的温漂较大,所以要使用温漂小并且漏电也小的电容。由充电公式或曲线图可知,Ux和RC值的关系是非线性的,所以实际项目使用时,要根据自己的实际电路做一些标定,这样可以得到比较准确的值。本方法适用于对测量精度要求不是很高的场合。附录1:测量结果和曲线输入电压(V)Timer 0读数时间uS(18.432MHZ)4210013674.2196612804.4184612024.6174011334.8164610725156010165.214879685.414169225.613548825.81297844612458116.211967796.411507496.611107236.81070697710336737.21000651769386117.891059288845768483654488793516977250394736479987024571068644710.267143710.465642710.664241810.86294101161640111.260439311.459238511.658137811.85703711256036512.255035812.4540352附录2:C语言程序/**//* STC MCU International Limited *//* STC 1T Series MCU RC Demo *//* Mobile: (86*//* Fax: 86-755*//* Tel: 86-755*//* Web: www.STCMCU.com *//* If you want to use the program or the program referenced in the *//* article, please specify in which data and procedures from STC *//**//*功能描述: 使用STC15F系列C版本做的RC测量电压的例子.*/#include reg51.h#define MAIN_Fosc //定义主时钟#define uchar unsigned char#define uint unsigned intsfr AUXR = 0x8e; //Auxiliary registersfr P3M1 = 0xB1; //P3M1.N,P3M0.N =00Standard, 01push-pullsfr P3M0 = 0xB2; // =10pure input, 11open drainsbit P_TXD1 = P3^1; /
文档评论(0)