基于EMP78P156单片机的RC测温的实现
一、总体控制电路:
图 1
二、RC测温原理:
利用单片机I/O口来实现RC测温,电路很简单,而且也不难实现,最主要的是要有个概念,如何实RC测温,也就是RC测温的原理。这里具体的介绍一下,可以在这个原理基础上进行修改很扩展为多路的测温。如下图(2)
图中:
P1.0、P1.1和P1.2是单片机的3个I/O口;
RK为100K精密电阻;
RT为100K—精度为1%的热敏电阻;
R1为100 的普通电阻;
C1为瓷介电容。
工作原理:
1. 先将P1.0、P1.1和P1.2设为低电平输出,延时0.5s ,使C1放电完。
2. 将P1.1和P1.2设置为输入状态,P1.0输出高电平,通过RK电阻给C1充电,单片机内部的计数器开始计时,并且不断的检测P1.2状态,当P1.2为高电平时,即当C1的电压达到了单片机高电平输入的门限电压时,根据计数的值来确定从开始充电到P1.2转变为高电平的时间T1。
3. 将P1.0、P1.1和P1.2设为低电平输出,延时0.5s ,使C1放电完。
4. 再将P1.0和P1.2设置为输入状态,P1.1输出高电平,通过RT电阻给C1充电,单片机内部的计数器开始计时,并且不断的检测P1.2状态,当P1.2为高电平时,即当C1的电压达到了单片机高电平输入的门限电压时,根据计数的值来确定从开始充电到P1.2转变为高电平的时间T2。
5. 电容电压计算公式:
所以 ,这样我们可以通过计算来得到热敏电阻的阻值,通过查表来得到测量的温度值。
注:我们可以根据需要把R1也换成热敏电阻,来实现两路温度的检测,理论上N个I/O口可以测量N-1个温度。也可以把电容一端接VCC,那么当C1充满的时候检测端口电压就是低电平。
三、实际程序举例
/******RC测温程序********/
/*单片机:EM78P156*/
/*晶振:4MHZ*/
/*编者:郑文*/
/*日期:2007.01.31*/
/*功能:RC测温*/
/************************/
/*说明:精密电阻充电时间计数值存放地址:RF_DA
/*热敏电阻充电时间计数值存放地址:RS_DA
/*寄存器及变量定义*/
R0EQU 0X00
TCCEQU 0X01
CONTEQU 0X01
PCEQU 0X02
STATUSEQU 0X03
CEQU 0
DCEQU 1
ZEQU 2
R4EQU 0X04
RSREQU 0X04
IOC5EQU 0X05
PORT5EQU 0x05
IOC6EQU 0X06
PORT6EQU 0x06
;***************************
;***************************
IOCAEQU 0X0A
IOCBEQU 0X0B
IOCCEQU 0X0C
IOCDEQU 0X0D
IOCEEQU 0X0E
RFEQU 0X0F
IOCFEQU 0X0F
;**************************
;**************************
T_SETEQU 0X1F;温度设置值寄存器
T_MEASEQU 0X20;当前测得温度值
AD_DA
AD_DA
RF_DA
RF_DA
RS_DA
RS_DA
XSWEQU 0X2A;显示位,判断哪位可以正在点亮
BACCEQU 0X2D;ACC备份寄存器
BSTATUSEQU 0X2E;STATUS备份寄存器
LA_CNT1EQU 0X2F
FLAG1EQU 0X30
LPEQU 0;LP放电标志位
HAVEDISEQU 1;放电时间计数标志位
RS_OVEREQU 4
REF_OVEREQU 5
AD_EEQU 6;采样正在进行标志位
AD_TYPEEQU 7;采样类型,是参考电阻采样还是传感器电阻采样
/********************************************/
ORG00H
JMPSTART
ORG08H
JMPINT_TCC ;进入中断程序
;*******************************************
;=================================================
START:
CALL INITAITE ;程序初始化
MAIN:
MAIN2:
CALL ADCONVER ;RC测温RC时间测量
JMPMAIN
;**************************************************
INITAITE:
MOVA,@0B00000000;BIT6特殊,预分频器分给计数器,分频比为1:2,
CONTW;上升沿触发,内部时钟源,中断屏蔽。
MOVA,@0B00000000;5口定义为输出口
IOWIOC5
MOVA,@0B00000000;6口定义为输出口
IOWIOC6
MOVA,@0B00000000
IOWIOCE;WITE=0禁止WDT,EIS=0定义P60口为双向IO口而不是中断口;
MOVA,@0B00000001
IOWIOCF;定时器中断允许
ENI;开中断,整个程序执行过程,中断一直是起用的
RET
/**********************************************************
*程序名称:AD程序
************************************************************/
;---------
;|P6.3|----------P5.1
;||____|
;|P6.5|--|____|--|P5.2
;||___/|
;|P5.4|--|__/_|--|P5.0
;||/---
;||--- c
;|||
;---------+5v
;**********************
EMP78P156单片机RC测 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)