在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于EMP78P156單片機(jī)的RC測(cè)溫的實(shí)現(xiàn)

            基于EMP78P156單片機(jī)的RC測(cè)溫的實(shí)現(xiàn)

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

            一、總體控制電路:

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

            圖 1

            二、RC測(cè)溫原理:

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

            圖中:

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

            RK為100K精密電阻;

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

            R1為100 的普通電阻;

            C1為瓷介電容。

            工作原理:

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

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

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

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

            5. 電容電壓計(jì)算公式:

            所以 ,這樣我們可以通過計(jì)算來得到熱敏電阻的阻值,通過查表來得到測(cè)量的溫度值。

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

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

            /******RC測(cè)溫程序********/

            /*單片機(jī):EM78P156*/

            /*晶振:4MHZ*/

            /*編者:鄭文*/

            /*日期:2007.01.31*/

            /*功能:RC測(cè)溫*/

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

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

            /*熱敏電阻充電時(shí)間計(jì)數(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;溫度設(shè)置值寄存器

            T_MEASEQU 0X20;當(dāng)前測(cè)得溫度值

            AD_DATA1EQU 0X21;存放AD采樣過來的數(shù)值

            AD_DATA2EQU 0X22

            RF_DATA1EQU 0X23;存放基準(zhǔn)電阻采樣過來的數(shù)值,存放低位

            RF_DATA2EQU 0X24;存放高位

            RS_DATA1EQU 0X25;存放傳感器電阻采樣過來的數(shù)值

            RS_DATA2EQU 0X26

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

            BACCEQU 0X2D;ACC備份寄存器

            BSTATUSEQU 0X2E;STATUS備份寄存器

            LA_CNT1EQU 0X2F

            FLAG1EQU 0X30

            LPEQU 0;LP放電標(biāo)志位

            HAVEDISEQU 1;放電時(shí)間計(jì)數(shù)標(biāo)志位

            RS_OVEREQU 4

            REF_OVEREQU 5

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

            AD_TYPEEQU 7;采樣類型,是參考電阻采樣還是傳感器電阻采樣

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

            ORG00H

            JMPSTART

            ORG08H

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

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

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

            START:

            CALL INITAITE ;程序初始化

            MAIN:

            MAIN2:

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

            JMPMAIN

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

            INITAITE:

            MOVA,@0B00000000;BIT6特殊,預(yù)分頻器分給計(jì)數(shù)器,分頻比為1:2,

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

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

            IOWIOC5

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

            IOWIOC6

            MOVA,@0B00000000

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

            MOVA,@0B00000001

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

            ENI;開中斷,整個(gè)程序執(zhí)行過程,中斷一直是起用的

            RET

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

            *程序名稱:AD程序

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

            ;---------

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

            ;||____|

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

            ;||___/|

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

            ;||/---

            ;||--- c

            ;|||

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

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

            ;;;;;;;;;;;;;;;;;;;RC轉(zhuǎn)換測(cè)量;;;;;;;;;;;;;;;;;;;;;;;;;

            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采樣做好準(zhǔn)備

            ANDA,@0B11000111

            IOWIOC6

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

            BSPORT6,4

            BSPORT6,5

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

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

            BSFLAG1,LP; LP置高表示放電結(jié)束

            BSFLAG1,AD_E;使能AD采樣

            RET

            REF_SENSOR:

            BCFLAG1,HAVEDIS

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

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

            ;對(duì)傳感器電阻進(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;置正在采樣標(biāo)志位

            JMPADQUIT

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

            MOVA,AD_DATA1;將AD采樣過來的數(shù)據(jù)放入?yún)⒖茧娮璧臄?shù)據(jù)寄存器

            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;保護(hù)ACC和STATUS

            SWAPASTATUS

            MOVBSTATUS,A

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

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

            JMPINTQUIT

            MOVA,@231;賦初始值給TCC

            MOVTCC,A

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

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

            LAPSE_TIMER:

            JBSFLAG1,LP;放電0.1S計(jì)時(shí)(LP放電標(biāo)志位)

            JMPTCC_1;如果放電沒結(jié)束則跳轉(zhuǎn)到TCC_1

            INCLA_CNT1;如果放電結(jié)束了,執(zhí)行

            MOVA,@255

            XORA,LA_CNT1

            JBSSTATUS,Z

            MPTCC_1;如果不等于255則跳轉(zhuǎn)到TCC_1

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

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

            BCFLAG1,LP;放電結(jié)束,放電標(biāo)志位清零

            TCC_1:

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

            JMPINTQUIT;不使能就跳出中斷

            JBCFLAG1,LP;判斷放電標(biāo)志位使能?

            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;檢測(cè)P51口電平是否變化

            JMPINTQUIT;沒有變化就跳出中斷

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

            INTQUIT:

            SWAPABSTATUS;恢復(fù)寄存器

            MOVSTATUS,A

            SWAPBACC

            SWAPABACC

            RETI

            END



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉