




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
RC 充放电的原理和硬体分类: 松翰单片机程序原理 发布: sonixic 浏览: 70日期: 2010年4月15日 1、RC 充放电的原理和硬体我们知道,电阻R 与电容C 充电时间的关系如下图:注:Rs 为标准电阻Rt 为热敏电阻由上图可以看出在RC 充电开始阶段,我们可以认为是近似线性的。那么:Tt=K*Rt*C (1)Ts=K*Rs*C (2)其中: K 为常数由(1)、(2)可知充电时间的比例与R 有关,而C 无关。Rt=(Rs*Tt)/Ts当然,随环境温度的变化电容C 变化比较大,我们完成标准电阻和热敏电阻对同一电容的充放电在很短的时间内,因而电容C 变化引起的误差可以消除。为了提高精度,对电容C 的选取也有关系,电容容量不能太小,也不能太大,与传感器的标称值有关。下面是我自己写的程序,仅着参考:/RC充放电-得到NTC的阻值电路:p2.3(IOntc)接NTC,P2.4(IOrs)接一个1k的电阻,二电阻一端连接一个10uf的电容到地 思路:;放电:;二个端口是都输出0,;充电:(NTC);让 IOrs 输入检测 0 当 IOrs 为高,继续检测直到为0为止;IOntc 输出 1 ,进行充电,并开始计时, ;时刻检测IOrs的电平,当 IOrs 端口为高电平的时候,说明充电已经完成,并停止计时,把时间保持给t_ntc_middle和t_ntc_low;放电:同上;充电:(RS);让 IOntc 输入检测 0 当 IOntc 为高,继续检测直到为0为止;IOrs 输出 1 ,进行充电,并开始计时, ;时刻检测 IOntc 的电平,当 IOntc 端口为高电平的时候,说明充电已经完成,并停止计时,把时间保持给t_rs_middle和t_rs_low;注:这里所说的计时是根据指令的长短计时的,比如我这里一条指令为0.25US,一周为7跳指令/.DATAt_ntc_middleds 1; t_ntc_lowds 1; t_rs_middleds 1; t_rs_lowds 1; /.CODE/rc:/;放电/rc_sub: bsetIOntcm bsetIOrsm bclrIOntc ;输出 0 bclrIOrs/bclrIOrsm;输入检测 0,为0 说明放电完全bts0IOrsjmp$-1/ bts0f_turn;为谁充电 jmprc_rs_add/;充电:(NTC)/rc_ntc_add:clrt_ntc_lowclrt_ntc_middlebsetIOntcm;输出 1,充电bsetIOntcincmst_ntc_lowjmp$+2incmst_ntc_middlebclrIOrsmbts1IOrs;检测1,为1 说明充电完成jmp$-5bsetf_turnjmprc_pro90/;充电:(RS)/rc_rs_add:bsetIOrsm;输出 1,充电bsetIOrsincmst_rs_lowjmp$+2incmst_rs_middlebclrIOntcmbts1 IOntc;检测1,为1 说明充电完成jmp$-5bclrf_turnjmprc_pro90/rc_pro90:RetRC 测温的实现方法是利用电阻R 给电容C 充放电时间来测量温度的(此处的温度感测器为热敏电阻)。用不同的电阻给电容充放电时间不一样,对RC 测量温度的精度与电阻R 和电容C 的选取有关。我们通常是选用一个标准电阻(随温度变化其阻值变化很小,可忽略不计,通常为高精度的金属膜电阻),它的阻值Rs 与温度传感器在标准大气压下、25时的阻值相同。当温度发生变化时,热敏电阻的阻值Rt 发生变化,那么热敏电阻Rt 给电容C 的充放电时间也发生变化。而标准电阻Rs 给电容C 的充放电时间则不发生变化。 以下介绍的这个方法是用没有ADC功能的芯片来检测模拟量,如采集温度。 1.温度检测电路图 2.温度检测步骤 z第一步:放电P85和P86设置为高阻态,P87输出1,电容放电 z第二步:测标准电阻P85和P87设置为高阻态,P86输出0,电容充电,并对充电时间计时计时功能说明:计时最小时基为30US,用定时器中断来实现。每30US中断一次,计时器+1。计时器长度=16BIT,高字节的BIT4代表溢出位。所以实际有效长度为12位超出则判为溢出,可能是被测电阻开路和电容短路等故障引起的。z第三步:放电P85和P86设置为高阻态,P87输出1,电容放电z第四步:测温度电阻P86和P87设置为高阻态,P85输出0,电容充电,并对充电时间计时计时功能说明:(同第二步) z第五步:计算电阻比率计算公式:电阻比率温度电阻AD中的顺序查表分类: 松翰单片机 发布: sonixic 浏览: 57日期: 2010年3月6日 说明:在做温度检测并由数码管显示的时候由于一个温度对应一个 AD值,而我们的 AD 值是在一段时间的平均值,很大一部分 AD 在表中是不能够一对一对应的,所以我们只能取隔他最近的 AD,此为 AD 转换后用于查表的顺序程序,这样查表很容易理解,但是也存在很多不足,比如 CPU 在此程序运行周期长等等,当然我会在以后会添加输入:高位 AD_Data_high,低位 AD_Data_low,输出:数码管显示的数值 b_room_temp.data/把 AD 值转换成数值,ad_new_tabds1;查表的地址给A(如 0 1 2 74 99 105之类的,比如99就对应的是99度)ad_old_tabds1;旧ad_old_hds1;旧值的高位ad_old_lds1;旧值的低位ad_new_hds1;新值的高位 ad_new_lds1;新值的低位 ad_mean_hds1;平均值的高位ad_mean_lds1;平均值的低位 b_room_tempds1;显示的数值,是十进制的/.codead_change:/;这里可以单独检查其他程序的错误性/* MOV a,#0x0f;B0MOV AD_Data_High,a;ad数据存放 MOV a,#0x00b; B0MOV AD_Data_low,a ;ad数据存放 */ MOV_ad_old_tab,#0check_tab:b0movy,#temp_tab$m;b0movz,#temp_tab$l;mova,ad_old_tab;查表的地址给A(如 0 1 2 74 99 105之类的,比如99就对应的是99度)b0addz,a;b0bts0fc;incmsy;nop;movc;movad_old_l,a;低8位存放在temp_l中mova,r;高4位存放在temp_h中movad_old_h,a;/;把旧值赋给新值,这里是为平均那里作准备mov a,ad_old_lmov ad_new_l,a mov a,ad_old_hmov ad_new_h,a mov a,ad_old_tabmov ad_new_tab,a /cjne_ AD_Data_high,ad_new_h,ad_change10;判断高位是否相等,不等跳转到 ad_change10 继续查找cjne_ AD_Data_low,ad_new_l,ad_change10;如果高位相等,那比较低位,如果不等,跳转到ad_change10 mov_b_room_temp,ad_new_tab jmpad_change_exit ;如果刚好 等于 则把 b_ad_tab 给 b_room_temp, 然后跳出程序/ ;如果不等ad_change10:cjae2AD_Data_High,AD_Data_Low,ad_new_h,ad_new_l,ad_change30/ 当小 ad_change20: incmsad_old_tab jmpcheck_tab/ 当大 ad_change30:;先判断是否超出范围(00-99),如果在的话查出上一次的值cjae2AD_Data_High,AD_Data_Low,#0x0f,#0x17,ad_change70;0度的 AD 值为0xf16,防止下于 0度cjbe2AD_Data_High,AD_Data_Low,#0x3,#0xd2,ad_change80;100 度的AD 值为0x3d3,防止超过 99度decmsad_old_tab b0movy,#temp_tab$m;b0movz,#temp_tab$l;mova,ad_old_tab;查表的地址给A(如 0 1 2 74 99 105之类的,比如99就对应的是99度)b0addz,a;b0bts0fc;incmsy;nop;movc;movad_old_l,a;低8位存放在temp_l中mova,r;高4位存放在temp_h中movad_old_h,a/上次(大)的减去这次(小)的值,得的值再平均一下,再加上现在 Ad 的低位mova,ad_old_h;平均值的高位suba,ad_new_hmovx,ab0bclrfc rrcm xadd_x,ad_new_h mov_ad_mean_h,xmova,ad_old_l;平均值的低位suba,ad_new_lmovx,ab0bclrfc rrcm xadd_x,ad_new_l mov_ad_mean_l,x/看采样的 AD 值更靠那一边,那个距离短 就取那个值cjae2AD_Data_High,AD_Data_Low,ad_mean_h,ad_mean_l,ad_change60 /取新值,比如一个AD为86,80和90的平均值为85,8685,则选择90 ad_change50:;(AD大的,温度小的)mov_b_room_temp,ad_new_tab jmpad_change_exit /取旧值ad_change60:;(AD大的,温度小的)mov_b_room_temp,ad_old_tab jmpad_change_exit/ 小于 00ad_change70:mov_b_room_temp,#0 jmpad_change_exit/ 大于 99ad_change80:mov_b_room_temp,#99 jmpad_change_exit/ad_change_exit:ret松翰中时常碰到口线不够用的时候,我们会采用口线复用的方法,将io口同时既作为输入口驱动led灯,同时又作驱动数码管,又将按键也复用下面看下这个图 当我们需要同时点亮led灯,数码管,同时需要判断按键的时候我们就必需合理处理它们之间的关系,在扫描led灯的时候我们可以设定扫描周期为1ms扫描一次,每次扫描led灯的时候,需要初始化led灯的口线状态,扫描完led灯再扫描数码管,设定数码管的扫描周期为3m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆代驾委托协议合同
- 转让合同货品协议书范本
- 农村全域旅游开发与资源整合协议
- 道路铺砖渣合同协议
- 医疗设备采购及维修保养服务协议
- 建筑安装专业施工合同
- 转让履带吊车合同协议
- 景区游玩协议书
- 运输水车合同协议书范本
- 道路工程围板合同协议
- 年人教版英语中考总复习专题(非谓语动词)动词不定式和动名词课件
- 2025-2030全球及中国电动和混合动力汽车动力传动系统行业市场现状供需分析及投资评估规划分析研究报告
- 科学控糖与健康体重管理
- 柑橘采后处理技术优化-全面剖析
- 浙江省镇海市镇海中学2025届高考考前提分英语仿真卷含答案
- 2025年江苏省常州市中考英语一模试卷
- 某煤矿项目申请报告(知识研究版本)
- 2025年广东省高三高考模拟测试二生物试卷(有答案)
- 2024年银行从业资格考试(中级)《风险管理》试题及答案指导
- 法律职业资格(主观题)题库附答案2025
- 2024年琼海市城市投资运营有限公司招聘笔试真题
评论
0/150
提交评论