




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目 錄1 前言12 溫度控制器的技術(shù)參數(shù)23 系統(tǒng)設(shè)計方案的論證33.1 方案比選33.2 方案說明44 控制系統(tǒng)設(shè)計54.1 系統(tǒng)的工作原理54.2 硬件電路設(shè)計64.3 系統(tǒng)軟件設(shè)計165 調(diào)試,安裝,運行305.1 系統(tǒng)硬件調(diào)試305.2 系統(tǒng)軟件調(diào)試306 小結(jié)3132 / 33MCS51單片機機應(yīng)用于溫度控制器摘要: 本文論述了采用單片機控制的智能溫度控制器,使用AT89C4051單片機、ADS7844E A/D轉(zhuǎn)換芯片、HT1621B液晶顯示驅(qū)動芯片與液晶顯示器,實現(xiàn)溫度的測量、輸出控制與顯示功能。關(guān)鍵字:單片機、A/D轉(zhuǎn)換,液晶顯示與其驅(qū)動1 前 言模擬電路溫度控制器存在電路復(fù)雜
2、、功能簡單和調(diào)試不方便的問題,隨著電子技術(shù)的快速發(fā)展,超大規(guī)模集成電路的技術(shù)越來越成熟,制造成本越來越低,單片機在軍事、工業(yè)、通訊、家用電器、智能儀表等領(lǐng)域的應(yīng)用越來越廣泛,使產(chǎn)品的功能、精度和質(zhì)量大幅度提高;同時,電路的設(shè)計更簡單、故障率低、可靠性高、成本低;特別是近幾年來Flash技術(shù)的發(fā)展,使單片機系統(tǒng)的開發(fā)周期大大縮短,開發(fā)成本大幅降低,使用單片機控制的智能儀表是儀表領(lǐng)域發(fā)展的必然趨勢。本文論述了采用ATMEL公司的AT89C4051單片機和美國Burr-Brown公司的ADS7844E模-數(shù)轉(zhuǎn)換芯片以與HOLTEK公司的HT1621B液晶顯示驅(qū)動芯片設(shè)計的LCD顯示智能溫度控制器。本
3、系統(tǒng)實現(xiàn)了模擬溫度數(shù)據(jù)采集、模擬量到數(shù)字量轉(zhuǎn)換、軟件對溫度信號進(jìn)行非線性校正,單片機數(shù)據(jù)運算與邏輯處理、LCD顯示、鍵盤處理與繼電器輸出控制功能。本文主要介紹了智能溫度控制器的功能和設(shè)計的過程。重點說明電路設(shè)計、軟件設(shè)計。2 溫度控制器的技術(shù)參數(shù)本系統(tǒng)采用ATMEL公司的AT89C4051單片機和美國Burr-Brown公司的ADS7844E模-數(shù)轉(zhuǎn)換芯片以與HOLTEK公司的HT1621B液晶顯示驅(qū)動芯片設(shè)計,實現(xiàn)了模擬溫度數(shù)據(jù)采集、模擬量到數(shù)字量轉(zhuǎn)換、單片機數(shù)據(jù)運算與邏輯處理、LCD顯示、鍵盤處理與繼電器輸出控制功能,主要技術(shù)參數(shù)見表1表1 主要技術(shù)參數(shù)表測量精度:0.5量程0400顯示分
4、辨率:0.1采樣速度:500毫秒調(diào)節(jié)算法:開關(guān)調(diào)節(jié) (ON/OFF) 輸入:熱電阻:Pt100輸出:繼電器,常開觸點(max.250VAC, 1A)報警:繼電器,常開觸點(max.250VAC,3A)電源:220VAC10% ; 50Hz環(huán)境:工作溫度:0 50,相對濕度85%3 系統(tǒng)設(shè)計方案的論證本章主要敘述溫度控制器的設(shè)計方案。3.1 方案比選隨著電子技術(shù)的發(fā)展,溫度控制器的設(shè)計方案經(jīng)歷了模擬電路溫度控制器、模擬量測量加數(shù)字顯示、單片機溫度控制器的發(fā)展過程;在單片機溫度控制器的設(shè)計方案中,又發(fā)展出各種智能型的溫度控制器方案,如:高AD轉(zhuǎn)換的精度,PID調(diào)節(jié)控制輸出、PID + 模糊控制等。
5、本次設(shè)計著重鍛煉自己的動手能力,熟悉單片機的使用,具體提出如下設(shè)計方案:方案一:采用8031單片機作為控制核心,以最普通的器件ADC0809作數(shù)/模轉(zhuǎn)換,以繼電器作為控制輸出。此方案簡單可行,造價低廉,但由于8031沒有片ROM,需要擴展程序存儲器,增加了電路的復(fù)雜性,并且由于0809是8位的數(shù)/模轉(zhuǎn)換電路,在溫度測量圍很小時,測量精度還能滿足要求,當(dāng)測量溫度圍稍寬時,測量的精度就不能實際應(yīng)用的要求。方案二:采用片帶Flash存儲器MCS51系列單片機作為控制核心,采用12位數(shù)/模轉(zhuǎn)換電路,以繼電器作為控制輸出。由于采用了12位的ADC轉(zhuǎn)換芯片,轉(zhuǎn)換圍從0到4096,當(dāng)溫度圍要求為0-1000
6、時,每一位表示約為0.25,考慮到ADC轉(zhuǎn)換芯片的轉(zhuǎn)換精度1LSB與運算放大器的誤差,測量精度理論上可到0.5,可以滿足一般的控制要求。方案三:目前許多單片機生產(chǎn)商推出了自帶ADC轉(zhuǎn)換,F(xiàn)LASH存儲器、EEPROM的產(chǎn)品,如美國Analog Devices公司AduC812部帶12位的ADC轉(zhuǎn)換,如果采用AduC812單片機作為控制核心,則系統(tǒng)外圍電路比較簡單且能夠達(dá)到控制精度要求,但是成本較高。本系統(tǒng)采用方案二,溫度控制器所需要的I/O數(shù)量不多,程序量不是很大(不考慮PID調(diào)節(jié)控制輸出),為了節(jié)省單片機的I/O口,選用12位串行口數(shù)/模芯片ADS7844E,單片機使用AT89C4051,片
7、程序存儲器空間為4K,15條I/O。3.2 方案說明系統(tǒng)中設(shè)計了一個EEPROM存儲器來保存設(shè)置參數(shù),目前市面上常用的EEPROM芯片主要有兩種接口類型:I2C接口與SPI接口,主要的代表芯片有AT24C02/04/08/16系列和AT25010/020/040系列,由于ADS7844E轉(zhuǎn)換芯片采用的是SPI接口,所以選用AT25010存儲器可以節(jié)省I/O端口。顯示器件常用的有LED數(shù)碼管顯示器件、LCD顯示器件。LED數(shù)碼管顯示器件具有亮度大,壽命長等特點,但需要較大的驅(qū)動電流;LCD顯示器件成本低、功耗小,但需要專用的驅(qū)動電路以與亮度低;本方案的顯示器件采用6位字符液晶顯示器,驅(qū)動芯片采用
8、HOTELK公司的HT1621B。4 控制系統(tǒng)設(shè)計控制系統(tǒng)設(shè)計主要包括系統(tǒng)工作原理、系統(tǒng)硬件設(shè)計和系統(tǒng)軟件設(shè)計。系統(tǒng)軟件設(shè)計主要包括軟件結(jié)構(gòu)、各子程序流程與具體代碼設(shè)計;下面分別介紹各部分的設(shè)計過程4.1 系統(tǒng)的工作原理單片機AT89C4051A/D存儲器顯示驅(qū)動液晶顯示器鍵盤與控制輸出圖 1 系統(tǒng)功能框圖溫度測量放大電源電路系統(tǒng)功能框圖如圖1所示系統(tǒng)的工作原理是:電橋?qū)囟葌鞲衅鱌t100的溫度信號轉(zhuǎn)換為與溫度相關(guān)的電壓信號,經(jīng)過兩級運算放大后進(jìn)入ADC轉(zhuǎn)換;CPU讀取ADC轉(zhuǎn)換結(jié)果,經(jīng)過運算轉(zhuǎn)換為顯示的溫度字符,控制LCD驅(qū)動器來顯示溫度值,另外,CPU將測量出的溫度值與系統(tǒng)設(shè)定的溫度值相
9、比較,根據(jù)不同的控制模式來控制繼電器的輸出,系統(tǒng)中的按鍵用來設(shè)定系統(tǒng)工作參數(shù),電源電路主要為各電路提供工作電源。系統(tǒng)中需要保存的參數(shù)有:設(shè)定溫度值、回程差值(防止溫度到達(dá)設(shè)定值時輸出振蕩)、加熱或制冷工作模式(0表示加熱模式,1表示制冷工作模式)、溫度測量圍、溫度校正值、溫度校正符號等。由于溫度測量圍、溫度校正值、溫度校正符號用于系統(tǒng)調(diào)試校正,此參數(shù)不能由用戶隨便修改,所以在修改這些參數(shù)前必須先輸入一個密碼(默認(rèn)為1234)后系統(tǒng)才顯示這些參數(shù),建議用戶不要修改此類參數(shù)。本系統(tǒng)采用了四個按鍵,功能分別為:加鍵、移位鍵、功能鍵、保存鍵。按下功能鍵可循環(huán)顯示系統(tǒng)各項參數(shù),通過加鍵和移位鍵組合可對各
10、項參數(shù)進(jìn)行修改,按下保存鍵后,CPU將修改后的參數(shù)寫到EEPROM中,系統(tǒng)重新上電后CPU將調(diào)用EEPROM中的參數(shù)(如果不對數(shù)據(jù)進(jìn)行保存時,系統(tǒng)重新上電后將調(diào)用以前設(shè)置的參數(shù))。4.2 硬件電路設(shè)計溫度控制器電路主要包括:CPU電路、溫度信號調(diào)理電路、ADC轉(zhuǎn)換電路、液晶顯示與驅(qū)動電路、電源電路與控制輸出電路;4.2.1CPU電路圖2 AT89C4051管腳圖CPU電路主要是CPU、數(shù)據(jù)存儲器與晶振電路。CPU采用美國ATMEL公司的MCS51系列單片機AT89C4051,管腳圖如圖2所示,它具有以下標(biāo)準(zhǔn)功能:4K字節(jié)FLASH閃速存儲器,128字節(jié)部RAM,15個I/O口,兩個16位定時/
11、計數(shù)器,5個中斷向量(兩種優(yōu)先級),一個全雙工串行通信接口,置一個精密模擬比較器,片振蕩器與時鐘電路。AT89C4051的功能框圖如圖3所示。CPU的端口資源分配見表2:圖3 AT89C4051功能框圖表2:CPU的端口資源分配表引腳名稱功能引腳名稱功能P1.0AT25010片選信號P3.0功能鍵P1.1HT1621B片選信號P3.1加鍵P1.2ADS7844E片選信號P3.2保存鍵P1.3HT1621B讀控制信號P3.3移位鍵P1.4HT1621B寫控制信號P3.4P1.5串行口時鐘P3.5繼電器控制輸出P1.6串行數(shù)據(jù)輸入P3.6P1.7串行數(shù)據(jù)輸出P3.7看門狗復(fù)位注:由于P1.0與P1
12、.1部不帶上拉電阻,使用時在此兩腳上需要接上拉電阻,電阻阻值按10K選取數(shù)據(jù)存儲器采用美國ATMEL公司AT25010 EEPROM。AT25010通過SPI接口與CPU進(jìn)行數(shù)據(jù)交換,端口連接見表1。時鐘采用12M晶體振蕩器,負(fù)載電容按22p選取。4.2.2溫度信號調(diào)理電路本設(shè)計溫度傳感器采用Pt100,溫度信號由電橋電路輸出后,經(jīng)過兩級放大后進(jìn)入ADC轉(zhuǎn)換。1、Pt100傳感器介紹Pt100傳感器是利用鉑電阻的阻值隨溫度變化而變化、并呈一定函數(shù)關(guān)系的特性來進(jìn)行測溫,其溫度/阻值對應(yīng)關(guān)系為:0t850時,Rt=R0(1+At+Bt2) 式中,A=3.9080210-3;B=-5.8010-7;
13、R0=100。Pt100溫度傳感器的主要技術(shù)參數(shù)如下:測量圍:-200+850;熱響應(yīng)時間30s;允通電流5mA。另外,Pt100溫度傳感器還具有抗振動、穩(wěn)定性好、準(zhǔn)確度高、耐高壓等優(yōu)點。2、電橋采集數(shù)據(jù)的電路圖與原理Pt100電橋電路如圖4、圖5所示。其中,R10R11R14Rt組成電橋,R10=R11= 10R0, R14=R0。電橋采用TL431組成恒流源供電,為了避免流過Pt100傳感器的電流過大使其發(fā)熱進(jìn)而導(dǎo)致非線性失真增大,取Im=1mA。R10R14R11Rt-+1mA-+Vo圖4 信號調(diào)理電路設(shè)流過R14的電流為I1,流過Rt的電流為I2,由于恒流源的電流為1mA,所以有:I1
14、+I2 = 1; (1)I1/I2=(10R0+Rt)/11R0 (2)Rt=R0(1+At+Bt2) (3) A=3.9080210-3;B=-5.8010-7;R0=100當(dāng)溫度較低時,I1/I21,所以有:Vi=I2Rt-I1R00.5(Rt-R0) (4)又因為R= Rt-R0 = R0(At+Bt2),所以:Vi0.5*R0(At+Bt2)0.5*R0*A*t =0.195*t (mV) (5)由公式(5)可知,溫度較低時,Pt100傳感器的線性度良好;當(dāng)溫度較高時,Pt100傳感器的線性度變差,此時有Vi= 10R0(At+Bt2)/(22+At+Bt2)(mV) (6)軟件校正采
15、用最小二分法分段校正:將整個測量圍按每50為一段,共分為8段,求出每一段的校正函數(shù)分別為:(求解方法采用Excel中的SLOPE函數(shù)與INTERCEPT函數(shù))050 : T0 = 0.89*T 0.1050100 : T0 = 0.92*T 1.44100150 : T0 = 0.95*T 4.28150200 : T0 = 0.98*T 8.80200250 : T0 = 1.01*T 15.11250300 : T0 = 1.04*T 23.45300350 : T0 = 1.08*T 34.16350400 : T0 = 1.12*T 47.65溫度的計算方法:T=ADC轉(zhuǎn)換結(jié)果*量程/
16、4096,將T的值代入校正函數(shù)中,求出校正后的溫度值T0。 圖5 信號調(diào)理電路3、誤差分析(1)Pt100傳感器的非線性產(chǎn)生的誤差Pt100的溫度函數(shù)為Rt=R0(1+At+Bt2),由此可見Pt100的阻值與溫度的函數(shù)不是線性關(guān)系,不考慮其它因素帶來的誤差,由于Pt100傳感器的非線性,在0-400的圍,可產(chǎn)生約12的誤差,在實際測量中,用非線性校正程序可以減少由此帶來的誤差。(2)A/D轉(zhuǎn)換器非線性帶來的誤差在實際應(yīng)用中會發(fā)現(xiàn),對同一模擬輸入信號Vi,經(jīng)A/D轉(zhuǎn)換得出的數(shù)字量會有1位的跳變,這是由A/D轉(zhuǎn)換器的判斷誤差造成的。A/D轉(zhuǎn)換器的一位跳變對應(yīng)的電壓值,即為該12位A/D轉(zhuǎn)換器的分
17、辨率0.00122V=1.22mV,將會產(chǎn)生溫度誤差。(3)A/D轉(zhuǎn)換器參考電壓Vref帶來的誤差在比較轉(zhuǎn)換過程中,Vref的變化會對輸出的二進(jìn)制代碼有影響。在模擬輸入信號不變的情況下,若Vref變大,會導(dǎo)致輸出的二進(jìn)制代碼變?。环粗?,則變大,從而導(dǎo)致了溫度誤差。4、注意事項與結(jié)論由上面的分析可得,為了提高溫度測量的準(zhǔn)確性, A/D轉(zhuǎn)換器的5V參考電源要穩(wěn)定在mV級;在價格允許的情況下,Pt100傳感器A/D轉(zhuǎn)換器和運放的線性度要高。同時,利用軟件矯正其誤差,可以使測得溫度的精度在0.5。4.2.3 ADC轉(zhuǎn)換電路本方案的ADC轉(zhuǎn)換采用BurrBrown公司的ADS7844E,它是推出的一種高
18、性能、寬電壓、低功耗的12bit串行模數(shù)轉(zhuǎn)換器。它有8個模擬輸入端,可用軟件編程為8通道單端輸入A/D轉(zhuǎn)換器或4通道差分輸入A/D轉(zhuǎn)換器,其轉(zhuǎn)換率高達(dá)200KHz,而線性誤差和差分誤差最大僅為1LSB。ADS7844在電源電壓為2.7V5V之間均能正常工作,最大工作電流為1mA,進(jìn)入低功耗狀態(tài)后的耗電僅3A。ADS7844通過串行接口與CPU進(jìn)行通信,而且接口簡單方便。ADS7844E的引腳排列如圖6所示,引腳與其它電路的連接見表3。ADS7844E的引腳功能:CH0CH7:模擬輸入端,當(dāng)器件被設(shè)置為單端輸入時,這些引腳可分別與信號地COM構(gòu)成通道單端輸入A/D轉(zhuǎn)換器;當(dāng)器件被設(shè)置為差分輸入時
19、,利用CHCH1、CH2CH3、CH4CH5和CH6CH7可構(gòu)成4通道差分輸入A/D轉(zhuǎn)換器COM:信號地VREF:參考電壓輸入端,最大值為電源電壓CS:片選端,低電平有效,該腳為高電平時,其它數(shù)字接口線呈三態(tài)DCLK:外部時鐘輸入端,在時鐘作用下,CPU將控制字寫入ADS7844E,并將轉(zhuǎn)換結(jié)果從中讀出DIN:串行數(shù)據(jù)輸入端,在片選有效時,控制字在DCLK上升沿被逐位鎖入ADS7844EDOUT:串行數(shù)據(jù)輸出端,在片選有效時,轉(zhuǎn)換結(jié)果在DCLK的下降沿開始被逐位從ADS7844E移出BUSY:“忙”信號輸出端,在接收到控制字的第一位數(shù)據(jù)后變低,只有在轉(zhuǎn)換結(jié)束且片選有效時,該腳才輸出一個高脈沖S
20、HDN:電源關(guān)閉端,低電平有效。當(dāng)SHDN為低電平時,ADS7844E進(jìn)入低功耗狀態(tài)VCC,GND:分別為電源端和數(shù)字地。圖6 ADS7844引腳圖表3: ADS7844E引腳連接表序號引腳名稱功能與其它電路的連接備注13CH0CH2模擬輸入通道溫度信號放大輸出47CH3CH7模擬輸入通道未連接9COM模擬輸入公共端模擬地11VREF參考電壓端工作電源VCC采用5V的參考電壓12、20VCC工作電源工作電源+5V接10uF和0.1uF的退耦電容13、14GND電源地電源地15DOUT串行數(shù)據(jù)輸出CPU P1.616BUSY“忙”信號輸出端未連接17DIN串行數(shù)據(jù)輸入CPU P1.718CSAD
21、S7844E片選信號CPU P1.219DCLK串行口時鐘CPU P1.54.2.4液晶顯示與驅(qū)動電路HT1621B是128 點存映象和多功能的LCD驅(qū)動器,HT1621B的軟件配置特性使它適用于多種LCD應(yīng)用場合,包括LCD模塊和顯示子系統(tǒng),用于連接主控制器和HT1621的管腳只有4 或5 條,HT1621 還有一個節(jié)電命令用于降低系統(tǒng)功耗。HT1621B的引腳功能與與其它電路的連接見表4:表4: HT1621B的引腳功能與與其它電路的連接表序號引腳名稱功能與其它電路的連接備注1CSHt1621B 片選CPU P1.1低電平有效2RD讀控制P1.33WR寫控制P1.44DATA數(shù)據(jù)線P1.7
22、5Vss電源地電源地6/7OSCI/OSCO時鐘未連接使用片RC振蕩器8VLCDLCD電源+5V選用5VLCD9VDD電源+5V10IRQ看門狗輸出未連接11、12BZ聲音頻率輸出未連接1316COM0COM3LCD 公共輸出口LCD 公共輸出口1748SEG0SEG31LCD 段輸出口LCD 段輸出口只用到其中12位4.2.5 電源電路圖5 電源電路4.3 系統(tǒng)軟件設(shè)計4.3.1 軟件結(jié)構(gòu)設(shè)計溫控器軟件主要包括主程序模塊、定時器中斷處理模塊、LCD顯示處理模塊、ADC轉(zhuǎn)換模塊和鍵盤處理模塊。定時器中斷處理模塊主要產(chǎn)生時間事件,其中200ms事件用于讀取鍵盤的健值,500ms為ADC轉(zhuǎn)換事件。
23、主程序模塊循環(huán)判斷系統(tǒng)是否有事件發(fā)生,當(dāng)發(fā)生200ms事件時,調(diào)用鍵盤處理子程序、LCD顯示刷新子程序。當(dāng)發(fā)生500ms事件時,調(diào)用ADC轉(zhuǎn)換子程序與LCD顯示刷新子程序。主要模塊調(diào)用關(guān)系如圖6所示LCD顯示刷新定時器中斷程序讀取鍵值圖6 主要模塊調(diào)用關(guān)系圖頁面處理保存處理移位處理加鍵處理閃爍處理顯示轉(zhuǎn)換寫顯示數(shù)據(jù)啟動ADC轉(zhuǎn)換讀ADC數(shù)據(jù)求溫度平均值溫度比較溫度校正二進(jìn)制轉(zhuǎn)換BCD碼溫度主程序模塊鍵盤處理系統(tǒng)初始化程序ADC轉(zhuǎn)換模塊4.3.2 系統(tǒng)程序流程圖設(shè)計圖7 主程序流程圖看門狗復(fù)位主循環(huán)開始判斷是否有鍵盤事件YN上電或復(fù)位,程序開始設(shè)置堆棧,清內(nèi)存調(diào)用設(shè)備初始化子程序開中斷NNN清鍵
24、盤事件標(biāo)志判斷上次鍵盤事件處理是否完成判斷鍵盤值是否為0鍵盤處理子程序判斷是否有ADC轉(zhuǎn)換事件清ADC轉(zhuǎn)換事件標(biāo)志ADC處理子程序顯示刷新處理子程序1、主程序流程圖2、鍵盤處理流程功能:顯示相應(yīng)頁面以與修改系統(tǒng)參數(shù)輸入:鍵值輸出:修改顯示緩沖器數(shù)據(jù)與系統(tǒng)參數(shù)寄存器分配:寄存器組1,各子程序具體分配情況見子程序說明。調(diào)用子程序:頁面處理子程序(Pagehandle)、加鍵處程序(Uphandle)、保存數(shù)據(jù)子程序(Savehandle)、移位處理子程序(Shifthandle)父函數(shù):主程序圖8 鍵盤處理程序流程圖壓堆棧,設(shè)置寄存器組置鍵盤未處理完標(biāo)志是否有為功能鍵YN是否為加鍵YN是否為保存鍵
25、YN是否為移位鍵YN調(diào)用頁面處理子程序調(diào)用加鍵處理子程序調(diào)用移位處理子程序調(diào)用保存數(shù)據(jù)處理子程序恢復(fù)堆棧3、ADC轉(zhuǎn)換處理流程功能:啟動ADC轉(zhuǎn)換、讀取ADC轉(zhuǎn)換結(jié)果、進(jìn)行溫度校正、比較、繼電器控制輸出輸入:無輸出:溫度值顯示值、繼電器控制輸出寄存器分配:寄存器組3,各子程序具體分配情況見子程序說明。調(diào)用子程序:啟動ADC轉(zhuǎn)換子程序(Start_Adc)、讀轉(zhuǎn)換結(jié)果程序(ReadADC)、求平均值子程序(Average)、二進(jìn)制溫度轉(zhuǎn)BCD碼子程序(Bin_Temp_BCD)、溫度校正子程序(TempAdjust)、溫度比較子程序(TempCopmare)父函數(shù):主程序圖9 ADC轉(zhuǎn)換程序流程
26、圖壓堆棧,設(shè)置寄存器組調(diào)用ADC啟動子程序延時等待ADC轉(zhuǎn)換結(jié)束調(diào)用讀ADC結(jié)果子程序調(diào)用二進(jìn)制溫度轉(zhuǎn)換子程序調(diào)用求平均值子程序恢復(fù)堆棧調(diào)用溫度校正子程序調(diào)用溫度比較子程序4、定時器中斷處理程序流程功能:產(chǎn)生定時事件輸入:無輸出:時間事件寄存器分配:寄存器組1。調(diào)用子程序:讀取鍵值子程序(Getkeyvalume)、定時器初始化子程序父函數(shù):無YN圖10 定時器中斷處理子程序流程圖判斷是否為200ms判斷是否為500ms置200ms事件標(biāo)志置500ms事件標(biāo)志YYNN恢復(fù)堆棧清超時標(biāo)志,恢復(fù)正常顯示判斷是否為1000ms判斷鍵盤是否超時NYYN壓堆棧,設(shè)置寄存器組重裝定時計數(shù)器(調(diào)用定時器初始
27、化子程序)ms計數(shù)單元加1調(diào)用取鍵值子程序判斷是否為100ms鍵盤事件處理是否完成4.3.3 系統(tǒng)程序設(shè)計目前許多公司在生產(chǎn)單片機的同時,都會推出自己的編譯系統(tǒng),并且許多編譯系統(tǒng)都會支持C語言、匯編語言或兩種語言的混合編程;本系統(tǒng)采用匯編語言編程,使用Keil C51編譯。由于程序的篇幅較長,下面主要介紹主程序與二進(jìn)制溫度轉(zhuǎn)換為BCD溫度值子程序,其它程序請查閱附錄中的程序清單。1、主程序清單ORG 0000H ; 復(fù)位入口JMP PROGRAME_STAR ; 程序開始ORG 0003H ; 外部中斷0入口RETI ;ORG 000BH ; 定時0中斷入口AJMP TIME0_INT ; O
28、RG 0013H ; 外部中斷1入口RETI ;ORG 001BH ; 定時1中斷入口RETI ; ORG 0023H ; 串口中斷入口RETI ; ORG 0060H ; 程序起點PROGRAME_STAR: MOV SP , #STACK ; 設(shè)置堆棧 MOV PSW , #(0 SHL 3) ; 使用寄存器組0 MOV R0 , #10H ; 清存的開始地址 MOV R1 , #50H -1 ; 設(shè)置清除存計數(shù) MOV A , #00H ;MAIN0: MOV R0 , A ; 存清零 INC R0 ; DJNZ R1 , MAIN0 ; ACALL DEVICE_INIT ; 設(shè)備初始
29、化 MOV IE ,#82H ; 開中斷MAINLOOP: ACALL WDRESET ; 看門狗復(fù)位 MOV A , TIMEEVENT ; 200ms事件標(biāo)志, 處理鍵盤事件 ANL A , #EVT_MS200 ; A和#EVT_MS200做與運算,取出200ms事件標(biāo)志位 JZ MAIN1 ; 200ms事件標(biāo)志位為0時跳到MAIN1 MOV A , #EVT_MS200 ; CPL A ; ANL TIMEEVENT , A ; 清除200ms事件標(biāo)志 MOV A , KEYOVER ; 鍵盤處理完標(biāo)志 JNZ MAIN3 ; * MOV A , KEY_VALUE ; 取鍵值 JZ
30、 MAIN3 ; 鍵盤值為0時跳出* ACALL KEYHANDLE ; 處理鍵盤事件 AJMP MAIN3 ; *MAIN1: MOV A , TIMEEVENT ; 500ms事件標(biāo)志 處理ADC轉(zhuǎn)換 ANL A , #EVT_MS500 ; A和#EVT_MS500做與運算,取出500ms事件標(biāo)志位 JZ MAIN4 ; 500ms事件標(biāo)志位為0時跳到MAIN4 MOV A , #EVT_MS500 ; CPL A ; ANL TIMEEVENT , A ; 清除500ms事件標(biāo)志 LCALL ADCCONVERT ; 調(diào)用ADC轉(zhuǎn)換子程序MAIN3: ACALL REFESHLCD ;
31、 刷新LCDMAIN4: SETB CSLCD ; LCD控制芯片片選信號拉高 SETB CSADC ; 置位AD7844E 片選 SETB CSE2ROM ; 置位AT25010 片選 AJMP MAINLOOP ; 主循環(huán)2、二進(jìn)制溫度轉(zhuǎn)換為BCD溫度值子程序;二進(jìn)制溫度轉(zhuǎn)換為BCD溫度值子程序;輸出:無;輸入:無;寄存器組: 第 3 組; 溫度值=ADC轉(zhuǎn)換結(jié)果(BIN) * 量程值/4096BIN_TEMP_BCD: MOV PSW , #(3 SHL 3) ; 使用寄存器組3 MOV R6 , RANGE ; 將BCD碼量程值轉(zhuǎn)換為二進(jìn)制數(shù) MOV R7 , RANGE+1 ; LC
32、ALL BCDTOBIN ; MOV R0 , #TEMP_VALUE ; 溫度轉(zhuǎn)換后的存儲地址 MOV R6 , TEMP_BINL ; 取二進(jìn)制溫度低位 MOV R7 , TEMP_BINH ; 取二進(jìn)制溫度高位 LCALL MUL16 ; 調(diào)用16進(jìn)制乘法;以下程序根據(jù)第一次轉(zhuǎn)換的結(jié)果查表取出校正函數(shù) MOV A , TEMP_VALUE+1 ; 取二進(jìn)制溫度高位 ANL A , #0F0H ; SWAP A ; MOV R6 , A ; MOV A , TEMP_VALUE+2 ; 取二進(jìn)制溫度高位 ANL A , #0F0H ; SWAP A ; MOV R7 , A ; MOV A
33、 , TEMP_VALUE+2 ; 取二進(jìn)制溫度高位 ANL A , #0FH ; SWAP A ; ADD A , R6 ; MOV R6 , A ;R6,R7分別存放二進(jìn)制溫度的低位和高位 LCALL BINTOBCD ; 調(diào)用二進(jìn)制轉(zhuǎn)換為BCD碼 MOV A , R5 ; 去掉轉(zhuǎn)換結(jié)果的千位 ANL A , #0FH ; TEMP_BCDH 存放結(jié)果的百位和十位 SWAP A ; MOV R5 , A ; MOV A , R4 ; ANL A , #0F0H ; SWAP A ; ADD A , R5 ; MOV R6 , A ; MOV R7 , #00H ; LCALL BCDTOB
34、IN ; MOV DPTR , #DIVCODE00 ; 查表地址 MOV A , R4 ; 偏移地址 MOVC A , A+DPTR ; MOV R5 , A ; RL A ; 偏移地址*2 MOV DPTR , #INTERCEPT0 ; 查表地址 MOVC A , A+DPTR ; MOV BINRANGE+1 , A ; 校正值高位 INC DPTR ; MOV A , R5 ; RL A ; MOVC A , A+DPTR ; MOV BINRANGE , A ; 校正值低位 MOV DPTR , #DIVCODE00 ; 查表地址 MOV A , R4 ; 偏移地址 MOVC A
35、, A+DPTR ; MOV DPTR , #SLOPECODE ; 查表地址 MOVC A , A+DPTR ; 斜率值 ;以下是將(ADC轉(zhuǎn)換結(jié)果(BIN) * 量程值 ) *斜率 MOV R4 , A ; MOV B , TEMP_VALUE ; MUL AB ; TEMP_VALUE*斜率 MOV TEMP_VALUE , A ; MOV R3 , B ; R3 乘積的高位暫存 CLR C ; MOV A , R4 ; MOV B , TEMP_VALUE+1 ; MUL AB ; (TEMP_VALUE+1)*斜率 ADD A , R3 ; MOV TEMP_VALUE+1 , A
36、; MOV A , B ; ADDC A , #00H ; MOV R3 , A ; CLR C ; MOV A , R4 ; MOV B , TEMP_VALUE+2 ; MUL AB ; (TEMP_VALUE+2)*斜率 ADD A , R3 ; MOV TEMP_VALUE+2 , A ; MOV A , B ; ADDC A , #00H ; MOV R3 , A ; CLR C ; MOV A , R4 ; MOV B , TEMP_VALUE+3 ; MUL AB ; (TEMP_VALUE+3)*斜率 ADD A , R3 ; MOV TEMP_VALUE+3 , A ; MO
37、V A , B ; ADDC A , #00H ; MOV R3 , A ; 進(jìn)位標(biāo)志 ACALL DIV4096 ; MOV R6 , TEMP_VALUE+2 ; 取二進(jìn)制溫度低位 MOV R7 , TEMP_VALUE+3 ; 取二進(jìn)制溫度高位 LCALL BINTOBCD ; 調(diào)用二進(jìn)制轉(zhuǎn)換為BCD碼 MOV A , R3 ; MOV R0 , A ;MOV A , R5 ; MOV R7 , A ;MOV A , R4 ; MOV R6 , A ; MOV R5 , BINRANGE+1 ; MOV R4 , BINRANGE ; ACALL BCDSUBB ; BCD減截距 CLR
38、 C ; MOV A , R0 ; SUBB A , R3 ; MOV R3 , A ; CLR C ; 清標(biāo)志 MOV A , R6 ; ANL A , #0FH ; CJNE A , #05H , BIN_TEMP_BCD0 ; 四舍五入 BIN_TEMP_BCD0: ;小數(shù)點后第二位大于或等于5時需要進(jìn)行位 JC BIN_TEMP_BCD1 ; MOV A , R6 ; ADD A , #10H ; DA A ; MOV R6 , A ; MOV A , R7 ; ADDC A , #00H ; DA A ; MOV R7 , A ; MOV A , R3 ; ADDC A , #00H
39、 ; DA A ; MOV R3 , A ;BIN_TEMP_BCD1: ;小數(shù)點后第二位小于4時需要舍掉 MOV A , R6 ; ANL A , #0F0H ; SWAP A ; MOV TEMP_BCDL , A ; MOV A , R7 ; ANL A , #0FH ; SWAP A ; ADD A , TEMP_BCDL ; MOV TEMP_BCDL , A ; MOV A , R7 ; ANL A , #0F0H ; SWAP A ; MOV TEMP_BCDH , A ; MOV A , R3 ; ANL A , #0FH ; SWAP A ; ADD A , TEMP_BCD
40、H ; MOV TEMP_BCDH , A ; RET DIV4096:;以下程序是將ADC轉(zhuǎn)換值 * 量程 后的結(jié)果除4096;由于除4096 實際上就是將數(shù)據(jù)右移12位;所以乘法結(jié)果的高20位就是除4096后的整數(shù)部分;乘法結(jié)果的低12位就是除4096后的余數(shù)部分 ;將余數(shù)*10后再除4096即可得到一位小數(shù) MOV TEMP_VALUE+0 , TEMP_VALUE+1 ; MOV TEMP_VALUE+1 , TEMP_VALUE+2 ; MOV TEMP_VALUE+2 , TEMP_VALUE+3 ; MOV A , TEMP_VALUE+2 ; ANL A ,#0FH ; SWAP A ; MOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版采礦權(quán)出讓合同
- 2025年小學(xué)心理健康教育家長參與計劃
- 中介介紹費合同范例
- 景區(qū)導(dǎo)游勞動合同書二零二五年
- 可研報告咨詢合同二零二五年
- 零售業(yè)2025年度市場營銷理論學(xué)習(xí)計劃
- 國際貿(mào)易合作協(xié)議書范例
- 二零二五廚師聘用合同模板
- 二零二五版聘任大學(xué)教授協(xié)議書
- 財務(wù)人員心理素質(zhì)培養(yǎng)的心得體會范文
- 2023學(xué)年完整公開課版編制團號
- 申請撤銷限高申請書范文
- (4.9)-第八章生物酶工程
- 層小高層施工組織設(shè)計
- 建筑施工企業(yè)負(fù)責(zé)人帶班檢查記錄表
- 工程機械設(shè)計-陳海虹課件第6章-制動系
- MT/T 323-1993中雙鏈刮板輸送機用刮板
- GB 40165-2021固定式電子設(shè)備用鋰離子電池和電池組安全技術(shù)規(guī)范
- 工程質(zhì)保期滿驗收報告模板
- 滬科版初中物理:實驗匯總
- 召回產(chǎn)品處理記錄表
評論
0/150
提交評論