微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于EMP78P156单片机的RC测温的实现

基于EMP78P156单片机的RC测温的实现

时间:11-13 来源:互联网 点击:
以前做一个电熨斗的项目,其中要使用到温度的测量,但是为了节省成本,要用不带AD的单片机来控制。测温部分是利用RC来测温,就是利用热敏电阻结合RC电路来实现温度的测量,可以精确到1℃。本电路采用了台湾义隆单片机EM78P156来实现温度的测量和控制。

一、总体控制电路:

图 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_DATA2(24H) RF_DATA1(23H)

/*热敏电阻充电时间计数值存放地址:RS_DATA2(26H) RS_DATA1(25H)

/*寄存器及变量定义*/

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_DATA1EQU 0X21;存放AD采样过来的数值

AD_DATA2EQU 0X22

RF_DATA1EQU 0X23;存放基准电阻采样过来的数值,存放低位

RF_DATA2EQU 0X24;存放高位

RS_DATA1EQU 0X25;存放传感器电阻采样过来的数值

RS_DATA2EQU 0X26

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

;**********************

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top