<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于EMP78P156單片機的RC測溫的實(shí)現

基于EMP78P156單片機的RC測溫的實(shí)現

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏
以前做一個(gè)電熨斗的項目,其中要使用到溫度的測量,但是為了節省成本,要用不帶AD的單片機來(lái)控制。測溫部分是利用RC來(lái)測溫,就是利用熱敏電阻結合RC電路來(lái)實(shí)現溫度的測量,可以精確到1℃。本電路采用了臺灣義隆單片機EM78P156來(lái)實(shí)現溫度的測量和控制。

一、總體控制電路:

本文引用地址:http://dyxdggzs.com/article/201611/316077.htm

圖 1

二、RC測溫原理:

利用單片機I/O口來(lái)實(shí)現RC測溫,電路很簡(jiǎn)單,而且也不難實(shí)現,最主要的是要有個(gè)概念,如何實(shí)RC測溫,也就是RC測溫的原理。這里具體的介紹一下,可以在這個(gè)原理基礎上進(jìn)行修改很擴展為多路的測溫。如下圖(2)

圖中:

P1.0、P1.1和P1.2是單片機的3個(gè)I/O口;

RK為100K精密電阻;

RT為100K—精度為1%的熱敏電阻;

R1為100 的普通電阻;

C1為瓷介電容。

工作原理:

1. 先將P1.0、P1.1和P1.2設為低電平輸出,延時(shí)0.5s ,使C1放電完。

2. 將P1.1和P1.2設置為輸入狀態(tài),P1.0輸出高電平,通過(guò)RK電阻給C1充電,單片機內部的計數器開(kāi)始計時(shí),并且不斷的檢測P1.2狀態(tài),當P1.2為高電平時(shí),即當C1的電壓達到了單片機高電平輸入的門(mén)限電壓時(shí),根據計數的值來(lái)確定從開(kāi)始充電到P1.2轉變?yōu)楦唠娖降臅r(shí)間T1。

3. 將P1.0、P1.1和P1.2設為低電平輸出,延時(shí)0.5s ,使C1放電完。

4. 再將P1.0和P1.2設置為輸入狀態(tài),P1.1輸出高電平,通過(guò)RT電阻給C1充電,單片機內部的計數器開(kāi)始計時(shí),并且不斷的檢測P1.2狀態(tài),當P1.2為高電平時(shí),即當C1的電壓達到了單片機高電平輸入的門(mén)限電壓時(shí),根據計數的值來(lái)確定從開(kāi)始充電到P1.2轉變?yōu)楦唠娖降臅r(shí)間T2。

5. 電容電壓計算公式:

所以 ,這樣我們可以通過(guò)計算來(lái)得到熱敏電阻的阻值,通過(guò)查表來(lái)得到測量的溫度值。

注:我們可以根據需要把R1也換成熱敏電阻,來(lái)實(shí)現兩路溫度的檢測,理論上N個(gè)I/O口可以測量N-1個(gè)溫度。也可以把電容一端接VCC,那么當C1充滿(mǎn)的時(shí)候檢測端口電壓就是低電平。

三、實(shí)際程序舉例

/******RC測溫程序********/

/*單片機:EM78P156*/

/*晶振:4MHZ*/

/*編者:鄭文*/

/*日期:2007.01.31*/

/*功能:RC測溫*/

/************************/

/*說(shuō)明:精密電阻充電時(shí)間計數值存放地址:RF_DATA2(24H) RF_DATA1(23H)

/*熱敏電阻充電時(shí)間計數值存放地址: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采樣過(guò)來(lái)的數值

AD_DATA2EQU 0X22

RF_DATA1EQU 0X23;存放基準電阻采樣過(guò)來(lái)的數值,存放低位

RF_DATA2EQU 0X24;存放高位

RS_DATA1EQU 0X25;存放傳感器電阻采樣過(guò)來(lái)的數值

RS_DATA2EQU 0X26

XSWEQU 0X2A;顯示位,判斷哪位可以正在點(diǎn)亮

BACCEQU 0X2D;ACC備份寄存器

BSTATUSEQU 0X2E;STATUS備份寄存器

LA_CNT1EQU 0X2F

FLAG1EQU 0X30

LPEQU 0;LP放電標志位

HAVEDISEQU 1;放電時(shí)間計數標志位

RS_OVEREQU 4

REF_OVEREQU 5

AD_EEQU 6;采樣正在進(jìn)行標志位

AD_TYPEEQU 7;采樣類(lèi)型,是參考電阻采樣還是傳感器電阻采樣

/********************************************/

ORG00H

JMPSTART

ORG08H

JMPINT_TCC ;進(jìn)入中斷程序

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

;=================================================

START:

CALL INITAITE ;程序初始化

MAIN:

MAIN2:

CALL ADCONVER ;RC測溫RC時(shí)間測量

JMPMAIN

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

INITAITE:

MOVA,@0B00000000;BIT6特殊,預分頻器分給計數器,分頻比為1:2,

CONTW;上升沿觸發(fā),內部時(shí)鐘源,中斷屏蔽。

MOVA,@0B00000000;5口定義為輸出口

IOWIOC5

MOVA,@0B00000000;6口定義為輸出口

IOWIOC6

MOVA,@0B00000000

IOWIOCE;WITE=0禁止WDT,EIS=0定義P60口為雙向IO口而不是中斷口;

MOVA,@0B00000001

IOWIOCF;定時(shí)器中斷允許

ENI;開(kāi)中斷,整個(gè)程序執行過(guò)程,中斷一直是起用的

RET

/**********************************************************

*程序名稱(chēng):AD程序

************************************************************/

;---------

;|P6.3|----------P5.1

;||____|

;|P6.5|--|____|--|P5.2

;||___/|

;|P5.4|--|__/_|--|P5.0

;||/---

;||--- c

;|||

;---------+5v

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

;;;;;;;;;;;;;;;;;;;RC轉換測量;;;;;;;;;;;;;;;;;;;;;;;;;

ADCONVER:

JBCFLAG1,AD_E;是否正在進(jìn)行AD采樣,1 EN, 0 DIS

JMPADQUIT

JBCFLAG1,HAVEDIS;放電時(shí)間是否到

JMPREF_SENSOR

;;;;;;;;;;;;;;;;;;;;;;;;

IORIOC6;置P6.3,P6.4,P6.5輸出,為AD采樣做好準備

ANDA,@0B11000111

IOWIOC6

BSPORT6,3;P5.0,P5.1,P5.2輸出為1,對電容進(jìn)行放電

BSPORT6,4

BSPORT6,5

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CLRLA_CNT1;清放電時(shí)間計數

BSFLAG1,LP; LP置高表示放電結束

BSFLAG1,AD_E;使能AD采樣

RET

REF_SENSOR:

BCFLAG1,HAVEDIS

BCFLAG1,AD_TYPE;正在采樣的是參考電阻還是傳感器:1 REF REGISTER, 0 SENSOR

MPAD_1;正在對參考電阻進(jìn)行采樣

;對傳感器電阻進(jìn)行采樣

MOVA,AD_DATA1

MOVRS_DATA1,A

MOVA,AD_DATA2

MOVRS_DATA2,A

BSFLAG1,RS_OVER

BSFLAG1,AD_TYPE

IORIOC6;SET port6.3,port6.4 INPORT,port6.5 EXPORT

ORA,@0B00011000

ANDA,@0B11011111

IOWIOC6

MOVA,@231;REF START COUNT

MOVTCC,A

MOVA,@0

MOVAD_DATA1,A

MOVAD_DATA2,A

BCPORT6,5

BSFLAG1,AD_E;置正在采樣標志位

JMPADQUIT

AD_1:;對參考電阻進(jìn)行采樣

MOVA,AD_DATA1;將AD采樣過(guò)來(lái)的數據放入參考電阻的數據寄存器

MOVRF_DATA1,A

MOVA,AD_DATA2

MOVRF_DATA2,A

BSFLAG1,REF_OVER

BCFLAG1,AD_TYPE;清零AD_TYPE

IORIOC6

ORA,@0B00101000

ANDA,@0b11101111;port6.3,port6.5 INPORT,port6.4 EXPORT

IOWIOC6

MOVA,@231;SENSOR START COUNT

MOVTCC,A

MOVA,@0

MOVAD_DATA1,A

MOVAD_DATA2,A

BCPORT6,4

BSFLAG1,AD_E

ADQUIT:

RET

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

INT_TCC:

MOVBACC,A;保護ACC和STATUS

SWAPASTATUS

MOVBSTATUS,A

JBSRF,0;判斷是否為計數器中斷,如果是得話(huà)進(jìn)入

;計數器中斷服務(wù)程序,不是則退出

JMPINTQUIT

MOVA,@231;賦初始值給TCC

MOVTCC,A

BCRF,0;RF可以指令清零,但不能置1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LAPSE_TIMER:

JBSFLAG1,LP;放電0.1S計時(shí)(LP放電標志位)

JMPTCC_1;如果放電沒(méi)結束則跳轉到TCC_1

INCLA_CNT1;如果放電結束了,執行

MOVA,@255

XORA,LA_CNT1

JBSSTATUS,Z

MPTCC_1;如果不等于255則跳轉到TCC_1

BCFLAG1,AD_E;采樣正在進(jìn)行的標志位清0(AD采樣不使能)

BSFLAG1,HAVEDIS ;放電時(shí)間標志位為1(表示已經(jīng)計時(shí)0.5秒,足夠放完電)

BCFLAG1,LP;放電結束,放電標志位清零

TCC_1:

JBSFLAG1,AD_E;判斷AD采樣使能?

JMPINTQUIT;不使能就跳出中斷

JBCFLAG1,LP;判斷放電標志位使能?

JMPINTQUIT;不使能就跳出中斷

INCAD_DATA1;SAMPLE COUNT

JBSSTATUS,Z

JMPTCC_0

INCAD_DATA2

MOVA,AD_DATA2

XORA,@120

JBSSTATUS,Z

JMPTCC_0

BCFLAG1,AD_E;AD采樣不使能

JMPINTQUIT

TCC_0:

JBCPORT6,3;檢測P51口電平是否變化

JMPINTQUIT;沒(méi)有變化就跳出中斷

BCFLAG1,AD_E;如果P51為0則停止采樣

INTQUIT:

SWAPABSTATUS;恢復寄存器

MOVSTATUS,A

SWAPBACC

SWAPABACC

RETI

END



關(guān)鍵詞: EMP78P156單片機RC測

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>